Building a basic CNC Machine for a university project, I ended up getting to keep the finished machine and will be upgrading it over the months. Upgrading the small 48step stepper motors for big 200step beasts, I want to really get the best I can out of them so that’s where this new stepper motor controller comes in.
In my searchings of past designs that are around, I got some inspiration and have settled on a linear design that eliminates high frequency switching, constant current which is the way stepper motors love to be driven and micro stepping pretty much fell in by design at the end
I don’t have any progress pictures or information as it has all been pretty much done as I write this up
Starting with the actual driver circuit boxed in the upper right, which consists of 2 MOSFET’s which do all the high current work, an opamp, few switching transistors and current sense resistor. The simple operation of this circuit is to provide an adjustable constant current sink for the stepper motor coils which should be dynamically adjustable. As current flows through the MOSFET and the sensing resistor, a voltage is developed across the resistor which creates a feedback path to the opamp which compares this voltage to the input voltage and will adjust the gate voltage of the MOSFET so that the two voltages on the inputs of the opamp are the same, so we get the relationship, I_motor = V_control / R_sense. The small switching transistors that are shown are to select which of the two MOSFETS is switched on for the pair of coils it drives, as only 2 of the 4 coils on the motor will ever be active, reducing parts required and simplifying the overall design back to the microcontroller.
The heart of the circuit is an Atmel microcontroller, the Mega162, mostly chosen for its large amount of interrupt pins, where 6 is needed for operation, with 3 for step code inputs and another 3 for limit switches. The microcontroller code will all be written in C, which has yet to be started at this point, as I want to have the circuit board finished to use as the direct development platform.