This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com).
With that in mind, the end result of this project is a CNC that is completely capable of being run off of GRBL, but to satisfy the requirements of the course I was required to write what amounted to my own G-code interpreter and LCD menu. Once I have completed the course I will be reading a few instructables myself and setting up my Name Drawing CNC as a regular old Desktop CNC. Until then, lets dive into this instructable!
The Name Drawing CNC is capable of building any 6 letter word on a LCD menu through an arcade style selection process. Once the Word is built the CNC runs the modified G-code to draw each letter of the word. The CNC is a standard 2 Axis gantry, with X and Z riding on the bridge and the bed moving the workpiece in the Y direction. With an expo marker mounted to the Z axis and a dry erase board mounted to the bed we can easily reset for demonstrating the Name Drawing CNC's ability to draw any (6 letter) word you feed it. At the completion of this project however anything that you would like to control with the percision of a computer can be mounted to the Z sled, be it a dremel, a laser or a 3D printer extruder; you are not limited to a marker
A word of caution: Be prepared to improvise. For example, the tolerances in the gantry are super tight, a lot of tweaking had to happen, and the belt tensioner was fashioned from parts I had left over from other projects. You have been warned .
Step 1: Tools and Materials
The following is everything you need to build your very own Name Drawing CNC. Links to the parts are not included because the parts were actually just stuff i had on hand from a variety of other projects. They were bought at different times from various sources. all of the parts should be available off Amazon, but If this instructable page ends up getting some hits I will spend the time to rebuild a Bill of Materials
2.5mm allen wrench
2ct 6.5" x 8mm linear rod
2ct 10" x 8mm linear rod
2ct 305mm x 8mm linear rod
12ct LM8UU linear bearings
3ct Nema 17 Stepper motor
3ct Easy Driver
3ct Limit switch
3ct GT2 16T aluminum pulley
5ft GT2 x 6mm timing belt
2ct 625ZZ ball bearings (16mm OD x 5mm ID x 5mm thick)
2ct 623ZZ ball bearings ( 10mm X 3mm X 4mm)
100ct M3 x 16mm socket head cap screw
25ct M3 x 35mm socket head cap screw
100ct M3 nut
1ct 20x4 LCD with I2C breakout board
1ct SD Card Module Slot Socket Reader for (For Arduino) ARM MCU
1ct PS2 Joystick Game Controller JoyStick Breakout Module For Arduino
1ct Arduino Mega
1ct 12v Power source (at least 3A)
1ct 1/4" Plywood (files supplied assume 5.35mm actual material thickness)
1ct Pack of zipties
Parts like the linear rod were things I had on hand from upgrading my Printrbot simple, so they are not Standard lengths. If you get Rods that are longer than specified however there are through holes in the wooden enclosure and there will just be overhang.
Like I said before, be prepared to improvise, get creative, and maybe even take it apart and put it back together a couple times on the first setup to get it really right.
Step 2: Raw CAD Files
In this step I am providing the raw CAD files in two of the more generic file formats. I am providing this so you can edit and view my design at your own leisure on your own CAD package of choice.
Step 3: Manufacture Your Parts
This should be all of the parts you need to make your Name Drawing CNC. Some of the 3D printed parts, like the main carriage, are a bunch of parts all in one file, so your slicer will need the ability to separate the bodies in to different parts to arrange them on the print bed. From what I remember all of the parts print without support, because I hate removing support material.
All of the laser cut parts are in a PDF. The lase cutter that I use takes microsoft XPS files that are made from printing the PDF using the "microsoft XPS document" option when printing the file. If this is an issue for anyone I can export to DXF instead later on. The file is split in pieces instead of all on one because i had 2ct 2' x 2' panels to cut on that I had to try pretty hard to get it all to fit. Play with different combinations to get it to fit.
Once you have everything printed and cut you can start assembling!
Step 4: Build the Base
The first step in the build is to assemble the base of the CNC.
Note: I found it easiest to insert the M3 nuts into their slots on all the parts BEFORE I went to assemble. They are a tight fit which helps hold them in place but for installation it is best to push them in place on a flat surface
The long spine and Y motor mount attach to the mask looking back panel accompanied by a stabilizer. the stabilizer is a tight squeeze and you will have to flex the parts to get it to slide in its slots. Once it is all together this piece slides into the holes in the large bottom plate and all of the screws can be inserted.
Step 5: Add the Y Rods
In this step the Y rods need to be assembled with the bearings in place and their printed rod holders on each end. Each 300mm rod gets 2 LM8UU bearings and is mounted as depicted. Not depicted: mounting the plate in the final picture to the front of the case and screwing the rod holders in place.
Step 6: The Gantry Guard and Left Side
The Gantry is shielded by 2 pieces bolted in an L shape. This also stiffens up the system by adding a beam other than the linear rail running across the CNC. These pieces also stick through the side panel and hold up the X axis motor mount. Once the L section is attached to the side panel and the motor mount is built this sub assembly can be mounted to the base of the CNC
Step 7: Build the X Carriage
At this point in the build we set asside the main case and start building the X-Z carriage.
The 623ZZ bearings are mounted to the inner face using M3 screws threaded into the holes shown.
LM8UU bearings are clamped in place using the printed plates. The inner screws are left off until the Z stepper is in place, as the screws for clamping the bearings threads into the face of the stepper.
Be sure that the wires on the stepper point up (at this point the assembly is symmetric so as long as it points toward one of the bearings you will be ok).
NOTE: Read step 8. In hindsight I should have added the GT2 16T pulley to the stepper beforehand to save myself a lot of grief turning the set screw.
Step 8: Build (the Start Of) the Z Carriage
Now the Z carriage gets attention. Attach both of the 6.5" linear rods to one of the Z rod holders. insert both of the rods through the linear bearings on the X carriage we just build.
Note: Pay attention to the through hole on the carriage (see picture). it has to line up with the bearings so the belt can be ran properly.
Next there are some rod clamps that are placed over the exposed section of the rod. Nuts need to be inserted into the Z rod holder in their special slots.
Step 9: Adding the Z Belt
Here I added the GT2 16T pulley, when in reality I should have added it a few steps back. either way, it should be lined up so the belt will ride on the bearings.
In theory you will only need about 11 inches of GT2 belt but in practice it may be different. I used zipties and blocks of laser cut wood from a previous project to tighten the belt so this is where you'll have to get creative. See the pictures for how to run the belt over the bearings and around the pulley.
Step 10: Adding X Rods and Belt
The X axis bearings get mounted above and below the Z stepper. The lower bearing holder (opposite the side of the Z stepper with the wires coming out of it) is larger and has a belt clamp that couples with it.
Don't tighten the lower bearing clamp down totally since the belt clamp uses the same bolts.
The 10" linear rod goes through the newly installed bearings and the X rod clamps go on their ends. There are 2 versions of these clamps so be sure to match the orientation in the picture so that they fit in the side panel when we go to install the carriage.
The length of the loop of belt that drives the X axis is tough to get right. It took me 3 tries taking the axis completely apart a few times from a couple steps down the road but I THINK the golden number was 27". Be sure the loop is with the teeth on the inside!
Step 11: Add Gantry to the Case
Just as the title says this step simply brings the two assemblies we have been working on together. once the rods are in place the right side of the case can be screwed in place and the rod holders can be screwed down as well.
Step 12: Adding X Stepper and Belt Tensioner
The X stepper screws in to the face of the mount from step 5. I must have forgotten to take a picture but you will need to add a GT2 16T pulley to the shaft of the stepper as well. the loop of the GT2 belt from the X carriage can be looped around the pulley in preparation for the tensioner.
Following the pictures the 625ZZ bearing can be captured in the printed tensioner block and the laser cut plate. When assembling the belt is pushed through the block and the bearing is put inside of the loop with a M5 bolt keeping the bearing from pulling through.
On the back side of the plate is 2 M3 nuts that the 2 M3 bolts thread into. Turning the bolts clockwise tightens the nut and therefore the belt.
Step 13: Adding Y Stepper,Belt and Belt Tensioner
The stepper and tensioner for the Y axis are very similar. The stepper mounts through the holes in the back of the CNC and the tensioner captured the bearing using a M5 bolt. The only difference is there is no pre made loop of GT2 to tension.
Once the stepper is in place with the GT2 16T pulley zip tie one end of GT2 belt to the Laser cut part as shown. Assemble the belt tensioner and run the belt around the pulley and capture the bearing. snug up the belt as tight as you can without the tensioning bolts inserted and ziptie the other side of the belt to the laser cut part. now the tensioning bolts can be turned to ensure the belt is tight.
Step 14: The Bed (Y Carriage)
there are 4 Printed parts for zip tying the LM8UU bearings to the Y carriage. the first step is to ziptie all of these to one of the bearings. Then the x-shaped plate can be bolted to each of the printed parts. there are 4 laser cut spacers that can be used to offset the sacrificial bed that you cut out from the top of the bolts we just used to mount the x-shaped plate.
Step 15: Z Carriage Mounting Face and the Endstops
I forgot to take a picture of the mounting face being installed but you can see in the first picture where it goes. it bolts to the front of the Z carriage. It has a bunch of holes down the center for the addition of whatever tools you want to strap to the CNC.
The endstops are critical for letting the Name Drawing CNC know where it is by homing the individual axis (less important when you run GRBL).
The Z endstop is a printed file. The idea is that the pen is held in place by the spring and rides in a tube. When the z axis bottoms out the pen pushes against the spring until the bolt that tesnions the spring pushes against the endstop.
The X endstop is on the X carriage. It has a mount that is printed separate and clips on behind the left side bearing clamp. it engages the side of the case.
The Y endstop is mounted inside the case at the back of the case. This endstop didnt get mounting holes in the laser cut file so it is another oportunity to get creative. It has to engage the Y carriage when it is at the back of the CNC.
Step 16: Wiring the CNC
My breadboard and in the end, my box full of wires, is incredibly hard to follow. almost just as difficult will be following my Fritzing diagram for the circuit.
The basis of the circuit is having the 3 steppers controlled by the easy drivers that are powered by an external 12V power source. The easy drivers Step and Direction pins connect to the arduino in pins 2-3 , 5-6, 7-8. The endstops take up pins 9, A3 and A2 with a pull down resistor bridging to ground. The LCD takes the SDA and SCL pins for I2C communication, and the SD card takes pins 4, 50, 51, and 52 for SPI communication (https://www.arduino.cc/en/Reference/SPI <-this link will help with determining which output on the SD card reader goes to which pin). And finally the joystick connects to A0 and A1. There are a lot of connections and even if your axis don't match up with mine you can edit the pin definitions in the program to match your hardware.
Step 17: Box Up Your Hardware
I wouldn't recommend it but if you feel so inclined there is a box that I was required to implement in my design. It mounts to the back side of the CNC and houses all the electronics as well as a fan to cool the easy drivers. Honestly the box is overkill if you are going to go with a GRBL shield but for running all the wires that there are in this project it is a nice addition.
The 3D file for the box and the lid are attached. I used some custom hardware for the on off switch that Ii had on hand but the links for the amazon order can be included with the BOM if someone really wants to build this box the same way.
Step 18: The Program
I'm not very conventional in my commenting style, and my formatting isnt the best but hopefully my train of thought when programming the CNC is apparent.
The basics of the program is the LCD menu where someone uses the joystick inputs to navigate the menu, editing the word to draw. When done that person activates the "DrawWord" function that starts drawing the letters and building words.
When the program goes to draw a word it checks what the first letter is and opens the matching *Letter*.txt file off the SD card. Each of these files contain the code to draw a letter starting in the bottom left hand corner (green arrow) and ending in the bottom right hand corner (red arrow). once the program finishes one letter it begins the next letter from the red arrow and so on until all the letter are drawn. this essentially makes each letter like a scrabble tile, allowing the machine to build any 6 letter word.
There is also the feature to run any program that is saved using the naming convention "Gcode.txt". The coordinates to be drawn must be in the form X000Y000Z000* with 000 being in millimeters*50 (the steppers have 50 steps per millimeter).
The Program uses the pre-loaded SD card library and the Liquid Crystal and AccelStepper libraries from somewhere on the web. I've included these two libraries in a zip folder as well. Copy the contents into the location that your IDE stores the libraries.
Step 19: Finished!
Here's a video of the Name Drawing CNC in action, following a path to draw out the logo for the University of South Florida.
Now that I have completed the MAKE course I will be installing GRBL on an UNO with the CNC shield V3.0 and some pololu drivers and use the CNC I have built to control a dermal model 395 with a flex shaft. I don't expect to mill to .005" or anything crazy like that, but I do expect this to be an exciting first step into CNC programming and eventually designing a much more robust machine.
Here are the links that i found most helpful in setting up GRBL:
*you will have to put jumpers on the M1 and M2 slots of the CNC shield under the plugins for the drivers in order to enable x8 microstepping and achieve the 50 steps/mm that the name drawing CNC needs.
Soon I will add some video of the Name drawing CNC being controlled by GRBL and Universal Gcode Sender and cutting some foam at first, then hopefully wood and maybe acrylic if the testing goes well.
Step 20: Progress Pictures
I managed to get GRBL set up on my NameDrawing CNC, which isn't limited to names any more! The process is slow, I only ever mill at 300mm/min with a 2mm Depth of Cut with a 1/8" 2 flute endmill. The wood I used is Basswood that came from amazon, normally used for widdling, which i chose because it is fairly soft and I figured it would cut easy and still be a nice finished product, but its edges come off extra furry and need some cleaning up.
I didnt attach any video since i would have to run it through youtube but the pictures are just as good. The green material is Dry Foam, popular for making floral arrangements. it cuts extremely easily and holds an alright edge, but it is super delicate and after milling it twice I found some articles online that say "its super sketchy...", "probably contains Formaldehyde..." , "definatly gives you cancer..." so i'm not gonna be using that any more.
The last cut I did was a stand for my apple watch. It required milling a slot and a hole for the cord then flipping the work piece and milling the hole for the charger pad and a recess for the watch body. The hole in first operation did not come out super round and I could visibly see the end mill deflecting so on the second side i opted to do a roughing pass leaving .25mm on the walls of all surfaces, then going over with a finishing pass twice. This left a rounder edge but still wasn't perfect.
I did attempt acrylic and the same problem occurred, I could visibly see the bit traveling all over, and in the final piece there were random sections of material milled out from the deflection of the tool.
Final thoughts: While I wouldn't say this machine handles wood well I will say it handles it okay enough to get your hands dirty with CNC. I am lucky enough to still have a student copy of Solidworks and with it HSMxpress, a CAM plugin that makes generating tool paths very easy for an informed beginner that is willing to do some research into CAM. Otherwise MakerCAM is a good free resource.
That's all for now! Unless something new and exciting happens to this machine I probably wont post anything else. Hopefully this instructable inspires you to do some making of your own!