I recently build myself a mostly printed CNC (MPCNC) but without a controller the stepper motors don’t do a lot. When I started researching my options I fell into a deep rabbit hole about different options. Fortunately the options are at least a little bit limited if you are looking for cheap solutions. In this blog I want to document a variety of different options you can use to make your life this little bit easier.
Hardware
Something you will absolutely need is some sort of controller actually driving the stepper motors and potentially reading the end stops or the mill itself. There are the “off the shelve”-solutions which usually come with some kind of interface to control the CNC and a finished board where you just need to connect your stepper motors to. Prices range from 50-100€ for simple solutions like the Pokeys57E which probably aren’t enough for a MPCNC already up to enterprise solutions for a couple thousand Euros. These boards will almost always be the least customizable options with the worst price to performance ratio.
Arduino or Raspberry Pi?
If you are somewhat familiar with the DIY community you probably heard of Raspberry Pis and Arduinos. On a budget, your CNC controller will probably use at least one of these two. My personal solution will probably take both of them in combination. As the actual controller though you probably want an Arduino based solution. Unless you have a RaspbPi already, the Arduino can do pretty much all the same stuff for cheaper and in addition to that you get more options for CNC shields and more learning resources.
Finding the best Arduino based CNC controller
| Ramps | CNC Shield | Jackpot CNC | |
|---|---|---|---|
| MCU | Arduino Mega | Arduino Mega | ESP32-wroom-32 |
| Voltage | 12V | 12V-36V | 9-24V |
| no. drivers | 5 | 4 | 6 |
| comp. drivers | A4988, DRV8825 | A4988, DRV8825 | TMC2209 |
| no. Inputs | 6 endstops + 3 temp | 6 endstops | 7 |
| no. outputs | 3 PWM | 0 | 7 |
| autosquaring1 | YES | NO | YES |
| approx. price | ~10€ | ~10€ | 65US$ includes MCU and 5 drivers |
For me in Europe there seems to be only two real options to consider. Of course there are other boards you can get. They usually are more niche or have the chip directly soldered on to them. Replacing/upgrading them gets more expensive that way which is why I’m not considering them. Also I already have an Arduino Mega lying around which I would like to use for this project.
On the other side of the ocean in the US there a couple more options. Namely the Ultimachine boards RAMBo and Archim, the SKR Pro and the Jackpot CNC Controller. Especially the Jackpot Controller looks interesting to me. It ticks pretty much all the boxes for a good beginner CNC controller and with its various expandability options you will be settled for quite a while.
Which controller did I choose?
Since I’m not in the US and don’t want to spend 40$ on top of a 60$ controller for shipping I will have to choose between the Ramps 1.6 and the Arduino CNC Shield. Both of them cost about the same and spec wise the Ramps Controller is just better. It supports up to 5 drivers for stepper motors. 2 of which were intended for Extruders, since this board was generally designed for 3D printers, but there a custom firmwares and configs which allow them to be used for a second x-axis stepper motor for example like on the MPCNC. This enables the option to have autosquaring which the CNC Shield does not support.
Stepper drivers
Stepper drivers are little modules in the “StepStick” form factor used to control individual stepper motors. They are placed right on top of your control board and the stepper motors are wired directly to them. As always there are mutliple options of driver modules you can buy. The main difference between them ist the amount of Amperage they support and the number of microsteps they can drive a stepper motor with. Amperage is pretty easy to understand and pretty much all of them can support your standard NEMA 17 stepper motors. Microsteps on the other hand needs some more explanation.
A standard NEMA 17 stepper motor can by default be turned exactly one step which corresponds to 1,8°. The so called microstepping means that the driver can turn and hold the stepper motor in smaller increments. The A4988 driver supports 16 Microsteps for example which means it can turn the stepper motor in 1/16th of a step increments or just 0,1125°. This is obviously important for the precision of your machine. As a reference: With a 16 tooth gear and a 2mm belt pitch you have 0,01mm of precision per Microstep.
Three chips are commonly used for stepper drivers. A4988, DRV8825 and TMC2xxx (2100/2130/2208). Some less commonly used ones are MP6500 with less precision and the TB67S249FTG which is relatively expensive.
A4988
The A4988 is the least expensive one of the three with also the least precision with just 16 Microsteps. It can handle up to 2Amps per Phase with a heatsink.
DRV8825
Double the amount of Microsteps can you get with the DRV8825. 32 Microsteps and a maximum of 2,5Amps is what you get for nearly double the price.
TMC2xxx (2100/2130/2209)
The pricey option of the three are definitely the TMC2xxx chips. They should generally be compatible to all boards supporting the A4988 and DRV8825 chips but they cost way more than both of them. Their exact amperage depends on the specific model but they are usually around the 2-2,5Amps max as well. It’s starting to get interesting when you look at the number of Microsteps though. They are all driver by just 16 Microsteps but they upsample the Microsteps to 256. So for the highest precision you’ll want these bad boys.
When choosing the right driver for your needs keep in mind that you don’t need the same driver for all your stepper motors. You could get some more precise TMC ones for your X and Y-axis and get a cheaper one for your Z-Axis. Also the amount of noise your machine produces depends on the drivers. If you later find out that the drivers you bought are not right for you, you can still always replace them fairly easily. Just remember to disconnect everything from electricity before doing any maintenance and you are good to go.
The finished cnc controller I will be using
My trusty Arduino Mega at the bottom. A Ramps 1.6 board on top and five A4988s on top of it. The cost for the stepper drivers and the Ramps was about 20€ on Amazon.


Further references
German site comparing different Arduino based control boards.
- German site comparing different Arduino based control boards
- Another German site with a lot of information about stepper drivers
- Autosquaring uses the ability to run two stepper motors on the same axis independently from each other to ensure all the axis are square to each other and the frame. ↩︎