Tag Archives: DIY CNC controller

My low cost three axis CNC controller


three axis CNC controller build - insides

I recently decided that it was high time to upgrade the original electronics I built for my CNC milling machine conversion on a RF7045 style milling machine.  The original electronics, shown below in the mess of wires and full size metal enclosure,  used a unipolar 4 axis control board and huge banks of power resistors to limit current.  It was poorly thought out and an ugly mess, but fully functional  The drawbacks to the original set up were primarily excessive heat generation (overheating in the summer) and an inefficient design.  Unipolar driven stepper motors produce considerably less torque then the same motor driven by a bipolar controller.   It was also a huge ugly mess with wires everywhere and heat sink banks outside the box.  The upgrade to the new CNC control unit was all spawned by Pololu’s black friday super sale on all of their great robotics and motor drivers.  If you haven’t been to Pololu’s website, definitely check out their products. Very good stuff at a good price, and on Black Friday 2011 a very very good price.


original unipolar four axis cnc controller hooked up to the RF 7045

The new low cost three axis CNC controller uses three Pololu A4988 stepper drivers in what I call the “Tie Fighter Configuration”.   I’ve  sandwiched them perpendicular to two larger circuit boards creating a channel for air flow.  With a   high velocity cooling fan and a custom heat sink mounted to Allegro’s A4988 microstepping bipolar stepper motor driver chip I hope to use these at or close to their 2.0 Amp max rating.  Eventually, when my reprap 3D printer is completed, I’ll print out a fan shroud to further increase airflow over the chips.  The data sheet for the A4988 is here,   pdf of the website for the pololu board is here,  current pinouts for board are here.  (data for me in the future)  As I continue to add or improve the CNC controller I will update this post.

million out the control panel for the ver 2.0 cnc controller  I/O board for the low Cost CNC controller

 The first version of my cnc controller had wires coming out of it connecting to the steppers.  This turned out to be terrible in use and was very unclean.   Version 2.0 had to have external mounted plugs for all of the external connections to the stepper motors, limit switches, power supply, and computer.  A bit of research on connector dimensions, a bit of CAD design, converting CAD to g-code (cnc machine program language) and the cnc machine running on the v1.0 cnc controller machined the next generation I/O board you see in the sequence of images above on the left.   In essence my CNC machine built parts to upgrade itself.  I think this is the coolest thing ever!  Having a machine that can make upgrades for itself.  Not quite self replicating like the Reprap 3D printer project but still pretty exciting stuff. As a kid this was the thing of Science fiction and not reality.

Connections to the milling machine and power supply labeled

The connections are labeled in the above photo showing the pre-testing assembled unit.  Post testing I realized I should add an on LED to the top as a main power indicator,  along with an LED indicator for the cooling fan power.  I ended up not being able to scrounge a usable DC/DC power supply chip.  I wanted to use a DC/Dc converter to  internally converting the 33V from the power supply into 12V for the cooling fan.  Instead I ended up using  a wall wort (aka plug in dc transformer) to supply power to the cooling fan and added an external plug jack to the case.   The bad part about this set up is there is no interlock.  In theory,  I could run the controller and not have the cooling fan powered up resulting in some sort of thermal meltdown.  The Ver 1.0 CNC controller had dozens of similar issues.  I had hoped to avoid this situation in this unit.   I plan to order a dc/dc converter  from Digikey in the near future and add the power for the cooling fan internally to prevent the possibility of thermal meltdown.

The above picture is of the “Tie Fighter Configuration” I’ve created.  The three little Pololu A4988’s are stacked in between the top and bottom boards.  This should create a nice cooling duct for the air supplied by the cooling fan to run over them to remove excess heat.  I will also make some copper u style heat sinks and mount them with Akasa double sided heat sink tape.  I’m hopeful that with this set up I can drive these little boards at close to their 2 amp max rating.  The CNC machine also made the aluminum bracket that mounts the boards to the right side of the case. More self upgrading on the machines part.  The Pololu’s are being run in their most basic configuration, ie. full step, with only step and direction imput from the computer to each board.   The three axis CNC controller also has a built in NC (normally closed) chain of limit switches and an E stop.  This set up uses a pull up resistor on the computer side.  When any one of the grounded NC switches is hit the output goes high and the computer instantly shuts off power to the motors sensing a mechanical limit or emergency.   Limit switches and an Emergency stop switch are necessities on any CNC controlled machine.  They keep  those G code programming errors from breaking something.  I’m using pc side controls, rather then the on board enable/disable built into the Pololu A4988 boards.

New three axis CNC controller in place and connected


Here she is, all hooked up and running the machine.  The Akasa heat sink tape has not arrived in the mail yet.  The CNC controller was run at only 0.7 amps for “testing” purposes.  Everything hooked up and worked well.  I was half expecting something to go up in smoke.   I am very pleased with the considerably smaller and less complicated version 2.0 CNC controller.  This new unit will drive the motors with about 40% more oomph which means faster machining time for me.    This is an ongoing project and I’m sure  I will continue to add and evolve in the coming months.  I’ll post more as I make changes.