Let's Make Robots!

CTC CNC Step 2 (Ordered Parts)

Yup, I'm gunna do it. I am building a CNC.

Oh, where do I start? --Seriously, where do I start?

Ok, so of course, I have found a lot of Chinese stuff, mainly this board. Of course, too good to be true --4 motors, drivers, controller all for 220 bucks. A few forums later and of course, I read stories of blue smoke when just testing the board with a meter and a hard time trying to get a replacement from the manufacturer. Then again, that price is wicked tempting and it looks like it will talk nice to mach3. I suppose I would need a USB/parallel cable as well.

If I skip that option, I am in the vast Ebay sea of drivers, individual steppers, packages of steppers, etc. Not to mention, I can also design and solder my own driver boards of course. --Going to be a lot of learning/shopping/forum reading on this one.

The hardware does not look like much of a problem, I of course, can weld and have all of the metal fabrication stuff I need so I am covered there. In terms of glides etc, I am looking at $500-$600 sets (Ebay) including: supported linear bearings (not just the rails but the heavier ones with the full-length T-shaped support below it), the ballscrews and ends and the couplers. $600 gets you a set that will allow a machine around 3' by 3' by 1' on the Z axis. Not too shabby in terms of size. I already have designs and ideas in my head for the frame, etc --this one should not be hard (in terms of my skills) and I am not worried about this at all. --For the record, I am thinking I want to do a sliding table for the Y axis, and a fixed gantry with the X and Z attached.

Now comes the hard part....

Assuming I will not go with one of those "all in one" boards, and assuming I can figure out the drivers, this leaves me with the controller board. My goal here is to build a CNC that can not only mill (I will be using a Porter Cable 690 router) but I also want it to print as well (i.e. reprap). Now, most CNC's sorta have "CNC Brains" in them and RepRaps have an Arduino in them. And that's about as far as I have gotten. I am simply not going to go to all this trouble to build this machine unless it can do both. Period. The question is (and what I am pouring through forums to find) is, can a reprap mill or can a CNC print? 

At this point, I open the floor to any and all folks that have done anything similar to this. Like I said, I am at the "forum reading" stage and have a TON to learn. I will take anything you guys have.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I just ordered motors and glides.

(3) 425oz steppers, 3 "Black Box" controllers and power supply (Man, I will be up at night wondering if I should have dropped the extra 200 bucks to get the 870 oz motors...)
(1) Parallel board
(1) Glide Kit 300mm/700mm/800mm full-support linear bearings, ballscrews to match, end blocks and couplers

Steel will be ordered probably Tuesday.  

I am going to run the mill part via the parallel port and Mach3 and the RepRap part via an Arduino. I am going to manually switch the control wires (going to the motor controllers) from the "parallel board" to the arduino. I am also trying to figure out what the best way to get/make/have made for me the extruder head. 

Chris, this looks really cool.  It makes me want to work on a CNC machine of my own. What I would like is a CNC mill, but it probably won't happen...

Since my energy levels have taken a serious nose-dive with the emergency cancer surgery, I'm not sure what I will feel like working on in the future.   :-)

I did it, I friggin' did it. This has been a marathon of all marathons but I friggin' did it. (Been up for almost 50 hours now, pardon any typing or spelling mistakes)

First off, I built a little CNC model. It is using those silly $5 geared steppers so it is incredibly slow and needs a TON of steps to get anywhere but it is pretty solid (in terms of construction) and as a proof of concept, is dead-nuts.



Now, in terms of software, I sorta got stuck on this whole parallel port thing... I don't have one nor do I want to get another computer with one. I have also heard horror stories about USB/parallel converters and didn't want to go this route. Instead, I figured that the 3D printing aspect of this will be using an Arduino and thus, it would probably be least problematic to see if I could use an Arduino for the milling part. 20 hours later...

I found FreeCNC for a design program, it seems simple and similar to other stuff I have used, screw it --I'm going with it. So now we are up to the DXF file stage. Next, I figured out I needed a G-code convert-a-fier. (again, much forum reading) but I ended up with ACE as a converter. Badda boom, we got our .NC file (or is it .CN?). From there, I found GRBL and zjinked it into a spare Arduino. Lastly, I need a G-code spoon-feeder. GcodeSender did not work for me, but with some more searching I actually found a Processing app (that actually compiled after the cut-and-paste) and too my amazement, it started spitting out Gcode to the Arduino.

Now, right off the bat, this didn't help me much other than the fact that I could see the step pulses on my O-scope. My motors are Unipolar and the Arduino is just spitting out a series of pulses and a digital HIGH/LOW for direction. I went ahead and coded a second Arduino to "translate" these pulses into the UniPolar steps I needed, as well as keeping an eye on the direction pin and changing direction accordingly.

It fucking worked. I fucking worked. It fucking worked.

As I stand now, I don't have much more time before I pass out, but I hope to add some kinda motor to the other axis on my little CNC model and then actually take the time to count threads and steps and then configure everything to work with my steppers and gearing. I can see this guy working, and it is indeed moving, but with the massive gearing of the steppers I am using PLUS the all-thread, It is probably moving about 3mm for what should be a 4" dia circle. --I will be even more happy if I can actually see this guy move proportionally. 

The next step should be the fairly simple task of figuring out how I want to do the brain change when going from milling to printing. My first thought is of course, 2 arduinos and simply swap the motor connections from one to the other. My second thought is to use 3 arduinos, with the third being the slave-motor-driver and listening to the other two for instructions. I dunno --I am not too worried about this one at all, I know it can be done, I know many ways of doing it....   ....just gotta find the right one.

I got some steel to order, boys.

So cool Chris! You may find the perfect recipe for a double setup.

I am wondering, the firmware that runs in your first Arduino spits out steps and direction, right? The firmware that will run in the third Arduino (the second running the convertion for your motors) for 3D printing, will it spit out the same signals (teps and direction)? Then would it be possible to add a switch on the first Arduino to select at start up which firmware to run and have both firmwares into the same Arduino instead of 2? Perhaps there will not be enough program space for both firmwares... Then yeah, use 2 Arduinos and the third for the conversion, or, if you will end up using bipolar motors, directly to the motor drivers. In theory, they can be directly connected in parallel to the same Arduino or drivers, just use diodes in series with the signal lines so the parallel Arduinos don't bother each other. (When one Arduino sends a signal to the driver, the Arduino that is in parallel does not get the signal becouse of the diode.) 

Keep up the extremely good job and keep us posted!

Cheers! Woo-hoo!

I am busy googleing and reading up on everybody's links. Much thanks on that note. I will say that all this talk of $800 AutoCad is a bit hard to swallow --going to have to do some looking for alternatives there... I never really gave any thought to the actual design software... I should have. 

Ok, back to the point: I think I have a fair grasp on the hardware, could someone check my thought-process here?

  • I will be buying a "kit" for the motors. (3) NEMA34 890 oz-in motors, the "black box" controllers (I see these controllers on most of the "professional" DIY machines I have seen, they seem to be the correct ones to use. In the "kit" these will be sized correctly) --and a big ol' power supply (again, sized for the 3 motors)
  • When I get to printing, I will be buying a 4th smaller stepper and the printed doo-dads to make the extruder head
  • Basically, with this "motors kit" I should have everything I need with simply the stepper inputs of the drivers waiting for me to plug something into them.
  • I assume that with this off-the-shelf motor/driver combo, I will be left with a set-up that could say, be connected directly to an Arduino. (forget the cnc for now) I figure, I could plug in the motor to the driver, the driver to the power supply, and the arduino to the driver and then run one of the step examples to make it go. --Is this correct?
  • Assuming the above is true, with the cnc frame, motors, drivers and power supply installed, I would have a ready-to-go system that simply needs a brain attached to go. With some creativity, I could have more than one "brain" here and be able to switch the connections to the motors from brain to brain on-the-fly (if I need to at all)
  • I am pretty clear on the arduino based system, and I think I understand that at some point you need g-code which is actually spitting out the numbers (being sent to the arduino) that is actually making the motors go
  • I am a bit unclear on what these parallel boards are. I mean, it is just a big, wide parallel plug, a bunch of opto-isolators, and a bunch of screw terminals. --First off, I would love some explaination on how this works and what software it would talk to. Also, from a lappy, I would obviously be using a USB-parallel converter --any thoughts?  
  • Ok, bottom line --I think at this point, I am up to getting my head around the design software, getting the tool path out of that software and into whatever software runs the machine. Then of course, it is just the big question (above) about what software to use to print vs mill.


I think that's it for now, thanks in advance.

... yet anyway :)

There are some open source softwares out there doing pretty good on the 2D vectorial drawing side of things most notably:

- LibreCAD - AutoCad like ... a lot like http://librecad.org/cms/home.html

- Inkscape - Really nice SVG and other formats http://inkscape.org/ - but more oriented to DTP stuff

On the 3D side I personally use:

- Blender (http://blender.org) which is great once you get used to it.

- AOI - http://aoi.sourceforge.net/ - is the defacto package RepRap people use. 

- Sketchup - http://sketchup.google.com/ - seems to be used a lot if they would only port it to less costly OS's :/

Regarding paralell port control I would not try with an USB to LPT converter, it will fail for sure. If you want to go that way hit the first fleah market and get an older PC ... everything starting with a CPU better than P3 and at least 512 Mb RAM should do. If you can choose something with as less integrated stuff on the mother board as possible. You can also buy some cheap Atom based motherboard reports are good. On the machine you run EMC2 which takes your G-code and speaks to the triver on the parallel port (http://linuxcnc.org).

On the topic on how the paralell port works, it is pretty simple.It has an 8 bit wide port you can write to to set pins high and low just as with a microcontroller. So you can set the pins high and low ... and you know the rest :) 


I just want to specify one thing, if you ever choose to use a parallel port motor driver, you can't use a laptop with it. Because laptops have power saving schemes they are not recommended. This is actually the setup I wanted to use, an old Dell Latitude laptop that still has a parallel port on it so no USB-parallel thingy is required. Run Ubuntu on it and EMC2, transfer the g-code files through the network or use a stick. But then I heard they are not recommended and it happened I found a desktop computer in the garbage.

I use emc2 to run my homemade mill from a linux based pc.  http://www.linuxcnc.org/ 

My speed is limited by the current of my psu. (18V @ 1A/axis)  The hardware can handle 40V @ 3A/axis


 I have used the rep rap software to create the g-code from .stl files.  http://reprap.org/wiki/RepRap_Options#Software Both reprap and emc  run from g-code files.  (as do most hobby machines.)

Last time i checked the reprap's brain was a version of the adruino megga and erler versions used the adruino uno.  the eagle files are  available so you should be able to build one from stuff you have on hand.  (jugging from your previous posts.)

My last hard drive crash claimed my assortment of freeware to convert almost any drawing to g-code.  But its out there if you look around. 

good luck


I have built my own CNC and I used it 2 or 3 times. The problem is the noise it makes and the fact that I live in a rental apartment. Can't use it inside, it will drive us crazy and can't use it outside in the balcony for the same reason. The noise comes from the Dremel spinning, the noise from the cutter, the noise from the steppers that "sing" (generate sounds of different frequencies depending on the speed they are turning). But I guess you have your own shop in the garage or basement.

Here is my experience in using the software until you actually cut your desing. I have designed in AutoCAD. I used poly-lines, arcs, copyed, trimmed, etc. The design looked nice. Then I exported that design and imported it in Cam-Bam to generate the tool paths. There I got problems. My nice design was a total mess. It needs to be a continuous line for the software to generate continous paths, other way they are broken in small segments with different orientations and the CNC will spend a lot of time running around with the tool risen insted of cutting. Multiply that for 3 passes to cut the needed depth and you have a nice opera singing for a couple of hours. So I had to go back to AutoCAD and think of the best way to optimise the toolpaths and transformed all the lines into a continuous polyline. Then it was easier. (How does this work on the laser cutter?) Also I needed to separate the holes from the lines and change the tools from a drill bit to a straight cutter. Why? The plexy melts when holes are done with a straight cutter. Even if you drill aluminum, use drill bits. After everything was done in Cam-Bam, I exported the file, renamed it to be accepted in EMC2 and opened it there. Position the CNC to the zero point turn on the Dremel, run the machine. The machine will stop to change the tools if instructed to do so, or it will continue and break the tool or damage the material if you don't supervize it. Takes a lot of time to cut, a lot longer than on the laser cutter. A printed part also takes a lot of time to get printed, but a 3D printer will not make so much noise and can be run in the apartment, but an a CNC you can print larger parts. 

So yeah, that was the reason I did not make a plastic chassis for robt kits as I intended. 

I wish you good luck with your endeavour and make sure you write a page about the build, we all could benefit from the gathered knowledge.

The only plus point in favor of a CNC is to be able to machine really tough materials - yes metals, and maybe hardwood. That being said and considering the above the major concern here is the motors and driver combination you choose to use. For NEMA34 7.8 A per coil motors you will need really beefy drivers to get the most of them so the stuff the reprap world has developed so far ... yeah forget it. We are talking of 2A output at most from those drivers. 

So I would look at something like this for the driver http://www.piclist.com/techref/io/stepper/linistep/index.htm this is close to what you will require. 

As for the brain ... well as long as you have the beefy drivers you can control them however you see fit, but I would look into the PC based EMC2 control, it is the best free application I know of running on Linux, I do not know any for Windows. Extra points for it is that people have been using it with repstrap machines so it can do 3d printing with some tweaks here and there.

Arduino based control is also a viable option, but most (all?) control software has been developed for 3d printing and this is true for the firmware running on the brain too except for GRBL https://github.com/simen/grbl which has been designed for CNC machining.

Finally the answer is yes you can have a CNC machine doing printing too but switching between the modes of operation will not be real easy or fast.

If I was CtC and I had your tools & skill & the place I would have a machine for each task to get the best of the three worlds: lasercutter to laser cut, 3d printer to print, CNC to machine tough stuff. Add to that maybe a lathe and you can build everything.