Our last post gave some information about what kind of mechanical hardware we plan to make our axis motion system out of. We picked a stepper-motor + ballscrew combination, so in this post we will give some information about how we will drive the steppers. There are two general routes by which to go about this – either design and build our own driver system from scratch, or adopt an existing design. Since this is a design project, and its purpose is to comprehensively design a CNC machine in detail, it seems logical to design our own. However, since it is much faster to use an existing stepper driver, we’ll opt for that route. The benefit is that, it permits the rest of the design project to move forward much sooner, and begin testing our first full build earlier than if we were to design our own stepper drive from the ground up. We will revisit the design of our motor drive system at a later date. The driver systems we considered are the CNC-shield, the gShield and the tinyg. All are compatible with the grbl embedded system for motion control. Here is the key information we considered when we compared these three choices:
|Cost||Microcontroller||Driver IC||# Axes Driveable||Limit switch inputs|
|CNC-shield||$86.80||No; must stack with Arduino Uno R3||Must plugin Pololu Stepper Driver||4||8|
|gShield||$74.94||No; must stack with Arduino Uno R3||Integrated on board; TI DRV8818||3||6|
|tinyg||$129.99||Yes; integrated ATxmega192||Integrated on board; TI DRV8818||4||8|
For the time being, we have selected the gShield for its low cost, wealth of available resources online, and it satisfies our axis-drive requirements. Since each of these motor drivers will run the grbl Gcode parser onboard, it will need some way of receiving the Gcode that contains the tool path information from a computer. For this purpose we will use the open-source Gcode sender from Otto Hermansson. Of course, there are other systems which also permit control of multiple axes, driven by stepper motors, such as this one, but they are not compatible with grbl. More generally, they also lack the convenience of USB connectivity and the flexibility of being based around a modern micro-controller, like the ones we listed in the table above.