# Chopper based Stepper Motor Driver for CNC

By Youssef EdwardFebruary 12, 2019

CNC machines require heavy duty stepper drivers to operate the CNC motors. In large machines, those motors tend to have high inductance. On the other hand, more loads are required for those motors at high speeds. This leads to the use of current choppers to drive those motors. One example of those choppers is the L298+L297 IC based drivers.

To understand the idea of choppers, you must understand the basic principle of inductors. The inductor or simply the coil is a passive electric element that composed of a number of turns along a core (air or ferrite). When a voltage pulse is applied across the inductor, the current flowing will not rise at the same time of the applied pulse. If you measure the resistance of the coil with ohmmeter, you will see almost zero resistance. This means it is expected the current will be too high according to Ohm law which states that

I=V/R

The smaller the resistance of the coil, the higher the current. In the case if inductor, what happens when the voltage is applied? The current flowing will actually rise to very high value according to Ohm law but in a finite time. This time may be in the range of milliseconds or even in the range of seconds according to the value of the inductor in uH.

**Inductor Current Vs Time**

**In the diagram above, you see that the current rise in exponential fashion when voltage is applied. The lower the inductance, the smaller the rise time.**

Applying those concepts in stepper motor driving, you see that in each step upon applying the pulse, the motor coils will not respond instantaneously. Instead, the current will rise in exponential fashion and will take a finite time to reach the peak current. If the motor inductance is too high as in the case of high torque motors, this will be a huge problem for high speed operation. This is because the torque is dependent upon current. So if the peak current is not reached, the torque will fall and the motor will stall.

*So what is the solution?*

Simply to raise the voltage to the top value the transistors of the driver can withstand. But stop here! Raising the voltage will raise the current in the motor and break the coil in few seconds.

The second step in the solution is to implement current chopper. It simply involves measuring the current in the coil continuously using sense resistor. Sense resistor is a mean to convert the current flowing through the coil of the stepper motor to voltage that could be passed to the control circuit. For instance assuming the sense resistor is 0.5 Ohms. If the current flowing is 4 A, the voltage will be 4*0.5 = 2V.

The output of the sense resistor is applied to voltage comparator where the other line is to to reference voltage to compare the voltage on the sense resistor against the reference voltage set by the use by potentiometer.

When the output voltage is high (which means the current in the motor is high than the reference current) the chopper circuit will get in service. This is to choke the current in the motor to avoid heating and break. The chopper circuit will output low level which is applied to AND gate. This low voltage shut down the transistors of the phase under control and so the current step to increase.

At this point, the stepper coil tends to decrease but not instantaneously but also in exponential fashion. This is because coils are energy saving elements (like Capacitors). *If the chopper will not take action here, the coil current of the phase under control will reach zero.*

To avoid diminishing of the coil current the chopper circuit will output high pulse again to the AND gate that drive the transistors of the driver for one phase. They will be ON again and the current will increase again until the current reach the set point, then the chopper shut down the transistors. The chopper must contain an oscillator to regulate the ON and OFF time. This is controlled usually by external RC circuit. The following is block diagram of standard chopper circuit.