What you will need
The first step, as always, is to gather the parts you need to do this project. Surprisingly, there’s very little hardware. Most of it can be scavenged from old computers, and if you can do that, you shouldn’t have to invest any more than $10-$15. Here’s what you need:
Disassembling the Drives
Taking apart Desktop optical drives is really very easy. The first thing to do, that is often overlooked, is to remove the front panel on the drive tray. To do this, force eject the drive tray by sticking a paperclip into the eject hole. Once the tray is pulled out, the front panel should snap off by pulling the bottom of it forward and then pushing it up.When that’s done, you can then unscrew the bottom plate of the drive and remove the metal drive casing as well as the plastic front panel.
Now you should be able to see all of the beautiful guts of the drive: motors, lasers, LED’s, gears…all sorts of cool tech stuff. You can take apart and salvage anything that you think you might have a use for, but for this project, we are specifically interested in the metal motor tray with the stepper motor (the one with the spiral rod) and the laser housing.
The reason we want this specific part of the optical drive is because it offers a motor, track, and housing that can mechanically provide a smooth back and forth movement, which is ideal for a CNC axis. So you will need to disconnect any wires leading to the motor tray and separate it from the rest of the optical drive parts. You can remove the brush-less DC motor from the tray if it is attached. While not used in this project, brush-less motors make great motors for quadcoptors. You’ll also want to remove the laser and any other glass parts, magnets, or stray pieces from the laser sled to make sure that it doesn’t have anything that can hinder movement or mounting of other screws.
You also want to extend the stepper motor wires. On most stepper motors have a ribbon cable that connects to the main board. It’s fine to leave this, but just cut off the extended part of the ribbon cable (see image to the left at the bottom). Solder four new wires to the pin terminals. They should be at least 6″ long. I color coded mine so that I could keep all through motor wires organized.
Repeat this process for all three optical drives so that you have three bare motor trays and are ready for the next step.
Mounting the Motor Trays
We need some type of casing to mount the motor trays onto. I used the optical drive cases themselves. Let’s start with the Y-Axis. The Y-Axis will go back and forth, so take one of the motor trays and mount it parallel to the length of the casing close to one end. Make sure it’s aligned as straight as possible and use some motherboard mounting screws to mount it.
For the X-axis mount it perpendicular to the length of another optical drive case, again making it close to one end and aligning it as straight as possible. Then mount it using motherboard mounting screws as well. As for the Z drive, we will need to mount it to the laser housing sled of the X-drive. In order to do this, we need to find some way to extend and create a platform to mount it to. I used more motherboard mounts and an electrical plate cover. Then I fastened the final motor tray to the electrical plate cover ont he X-Axis. I also mounted another electrical plate cover to the laser housing sled on the Y-axis to provide it a flat platform as well.
Finishing the Hardware
Once you have all of the drives mounted, the final step is to attach the X & Z axis to the Y axis. You want to mount the X axis perpendicular to the Y axis( looks like an “L” shape) and adjust them so that the Z axis is aligned over the Y axis. Scrub through each axis to make sure none of them are overshooting or running into each other. After you have the alignment set, screw everything together. I ended up using an L Bracket, but you may be fine just screwing one case directly into the other case.
Connecting The Electronics
(requires the free Fritzing program to open)
To get everything wired up so that it works, we need 5 components:
- 1 x Arduino
- 3 x Easy Stepper Motor Driver
- 1 x PC Power Supply
You’ll also need various wires and maybe some soldering equipment to connect everything together. To see how everything connects, it’s best to download the Fritzing schematic above. It will show you the ports and pins that everything runs to. Along with that, I’ll try to explain everything here as well. Ok, here we go.
The Arduino Uno is the device that will be controlling everything. It is essentially the “brains” of the device. But by itself, it has issues controlling the stepper motors directly. To resolve all Arduino/Stepper motor issues, we’ll need a “Stepper Motor Driver” for each motor (in this case, we’ll need 3). Use the reference images below to wire up the stepper motor drivers to the motors, the Arduino, and the power supply (which will cover later in this step).
|Y Axis||X Axis||Z Axis|
After you have the motors connected to the stepper motor drivers, and the stepper motor drivers connected to the Arduino, all we need now is power. Since this project focuses on scavenging most of the parts from old computers, I will be using and old computer Power Supply Unit (PSU). PSU’s have a mess of different colored wires coming out of it and you can use the color chart to the left to determine what the voltage is for each wire.
On all ATX power supplies, there is a green wire that senses when the PSU is plugged into a motherboard, and if this green wire is not plugged in or connected to anything, the PSU will not turn on. So to bypass this, we can use a small piece of wire as a jumper to connect the green wire to a black ground wire (use photo below as reference). Then to power the stepper motor drivers, you will also need to run a wire from a 5v (red) wire and one from a GND (black) wire. These wires are the ones that should be split out and connected to all 3 of the stepper motor driver boards. Again, you can use the photo below as reference.
|PSU Wiring Diagram|
The only other thing we need to do in this step is to add some sort of print head to the Z-axis to make the machine do what we want it to do. It could be a motor and drill bit to create a milling machine or a 3d print head and extruder to make a 3D printer, but I’m just going to use a simple marker to turn this into a CNC drawing machine 🙂
At this point, all the hardware should be completed. The only thing that’s left to do now is to install the software that will make it run. The CNC machine runs off of a programming language called G-Code. It essentially tells the X, Y, and Z axis which specific coordinates it needs to go to. By itself, Arduino has a difficult time interpreting G-Code, so we will need to install a G-Code interpreter program called Grbl. Here are the steps you need to take to install Grbl on your Arudion (Uno).
- Download the Grbl Hex file for your specific version of Arduino (I used version 0.8c for my Atmega328 Arduino Uno)
- Download the XLoader software.
- Connect your Arduino to your PC.
- Using the Xloader software, select the Grbl Hex file you downloaded, select your Arduino from the dropdown menu, and select the COM port that the Arduino is connected to.
- Click “Upload” to upload the Grbl software to your Arduino.
Now that the Arduino is prepped and ready to go, we need to install some software that lets us control the CNC machine. A great easy to use program is called Grbl Controller. After downloading and installing it, you can open it up, select your Arduino port and click “Open” to connect. Now you can use the arrows on the lower right to jog through the motors. Make sure that the dropdown box in the lower right corner is set to 1 instead of 10. If any of the platforms are running backwards, you can go to Tools > Options and then invert the axis for the backwards motor.
After you have successfully gotten everything up and running, the last thing to do is import a picture. The Grbl Controller software requires G-Code converted images. If all you want to do is test it out with an image, you can download my Tinkernut logo here:
If you would like to create your own image, you will need to convert your image to SVG first. Then you can go to the website makercam.com and upload it. Alternatively, the MakerCam website also allows you to insert basic shapes by going to “Insert” and then selecting your desired shape. But whether you upload an image or generate one from the menu, these steps will help you convert it to G-Code.
- Using the Arrow tool (from top left toolbar), select your entire image.
- Move it to the bottom leftcorner of the grid.
- You can pan around the grid by selecting the Hand tool from the toolbar. Use it to drag the image back to the center of the screen.
- From the upper right corner of the page, change the measurements to cm.
- Using the scale option from “Edit > Scaled Selected”, scale the object down and move it so that it fits within the single square that is in the corner of the grid (use the picture to the left as reference).
- With the image still selected, go to “Cam > Follow Path Operations”. Change the target depth to -1, the safety height to 1 and the step down to 0.1 and then click OK.
- Then go to “Cam > Calculate Selected” to calculate the path.
- Lastly, go to “Cam > Export Gcode” to save the G-Code of your image.
All you have to do from here is upload that image to the Grbl Controller software and hit begin to start printing! It may take some tweaking to get the Axis adjusted perfectly, but once you have it adjusted, you should easily be able to print any image!