If you want to control a Stepper you can do this using a micro-controller, this will take up a lot of the processing resources and not leave you a lot of room to do anything else. If you need to control a bunch of stepper motors, this will be a greater problem, unless you use a self-contained dedicated stepper motor driver – DRV8825. And I need a solution for my upcoming project HomeKit Windows Covering System, so let’s have a look at this controller.
This breakout board for Texas instruments DRV8825 micro-stepping bipolar stepper motor driver features adjustable current limiting, over-current and over-temperature protection, and six micro-step resolutions (down to 1/32-step). It operates from 8.2 V to 45 V and can deliver up to approximately 1.5 A per phase without a heat sink or forced air flow (rated for up to 2.2 A per coil with sufficient additional cooling). The driver has a pin-out and interface that are nearly identical to those of our A4988 stepper motor driver carriers, so it can be used as a higher-performance drop-in replacement for those boards in many applications.
How does a stepper motors work
The stepper motors use a cogged wheel and electromagnets to rotate the wheel one ‘step’ at a time. Each HIGH pulse sent, energizes the coil, attracts the nearest teeth of the cogged wheel and drives the motor one step.
The way you pulse these coils greatly affects the behaviour of the motor and the sequence of pulses determines the spinning direction of the motor. The frequency of the pulses determines the speed of the motor and the number of pulses determines how far the motor will turn.
DRV8825 Stepper Motor Driver
At the heart of the module is a Micro-stepping Driver from Texas Instruments – DRV8825. It’s small in stature (only 0.8″ × 0.6″) but still packs a punch. The DRV8825 stepper motor driver has output drive capacity of up to 45V and lets you control one bipolar stepper motor at up to 2.2A output current per coil. The driver has built-in translator for easy operation. This reduces the number of control pins to just 2, one for controlling the steps and other for controlling spinning direction. The driver offers 6 different step resolutions: full-step, half-step, quarter-step, eighth-step, sixteenth-step and thirty-second-step.
DRV8825 Motor Driver Pinout
The DRV8825 driver has total 16 pins that interface it to the outside world. The connections are as follows:
Power Connection Pins
Unlike other typical stepper motor drivers, the DRV8825 has only one power supply connection. VMOT and GND MOT supplies power for the motor which can be 8.2V to 45V. The module does not have any logic supply pin as DRV8825 gets its power from the internal 3V3 voltage regulator. However, you should common your microcontroller’s ground with GND LOGIC pin. According to datasheet, the motor supply requires appropriate decoupling capacitor close to the board, capable of sustaining 4A.
Warning: This driver has low-ESR ceramic capacitors on board, which makes it vulnerable to voltage spikes. In some cases, these spikes can exceed the 45V (maximum voltage rating of DRV8825), potentially permanently damaging the board and even the motor. One way to protect the driver from such spikes is to put a large 100µF (at least 47µF) electrolytic capacitor across motor power supply pins.
Microstep Selection Pins
The DRV8825 driver allows micro-stepping by allowing intermediate step locations. This is achieved by energizing the coils with intermediate current levels. For example, if you choose to drive NEMA 17 having 1.8° or 200 steps per revolution in quarter-step mode, the motor will give 800 micro-steps per revolution.The DRV8825 driver has three step size(resolution) selector inputs: M0, M1 and M2 . By setting appropriate logic levels to these pins we can set the motors to one of the six step resolutions.
These three micro-step selection pins are pulled LOW by internal pull-down resistors, so if we leave them disconnected, the motor will operate in full step mode.
Control Input Pins
The DRV8825 has two control inputs STEP and DIR. STEP input controls the miro-steps of the motor. Each HIGH pulse sent to this pin steps the motor by number of micro-steps set by Micro-step Selection Pins. The faster the pulses, the faster the motor will rotate. DIR input controls the spinning direction of the motor. Pulling it HIGH drives the motor clockwise and pulling it LOW drives the motor counterclockwise. If you just want the motor to rotate in a single direction, you can tie DIR directly to VCC or GND accordingly.
Controlling Power States
The DRV8825 has three different inputs for controlling its power states: EN, RST, and SLP. EN Pin is active low input, when pulled LOW (logic 0) the DRV8825 driver is enabled. By default this pin is pulled low so the driver is always enabled, unless you pull it HIGH. SLP Pin is active low input. Meaning, pulling this pin LOW puts the driver in sleep mode, minimizing the power consumption. You can invoke this especially when the motor is not in use to conserve power. RST is also an active low input. When pulled LOW, all STEP inputs are ignored, until you pull it HIGH. It also resets the driver by setting the internal translator to a predefined Home state. Home state is basically the initial position from where the motor starts and it’s different depending upon the micro-step resolution.
Fault Detection Pin
The DRV8825 also features a FAULT output that drives LOW whenever the H-bridge FETs are disabled as the result of over-current protection or thermal shutdown. Actually the Fault pin is shorted to SLEEP pin so, whenever the Fault pin is driven LOW, the whole chip is disabled. And it remains disabled until either RESET, or Motor Voltage VMOT is removed and reapplied.
The DRV8825 motor driver’s output channels are broken out to the edge of the module with B2, B1, A1 And A2 pins. You can connect any bipolar stepper motor having voltages between 8.2V to 45 V to these pins. Each output pin on the module can deliver up to 2.2A to the motor. However, the amount of current supplied to the motor depends on system’s power supply, cooling system & current limiting setting.
Excessive power dissipation of the DRV8825 driver IC results in the rise of temperature that can go beyond the capacity of IC, probably damaging itself. Even if the DRV8825 driver IC has a maximum current rating of 2.2A per coil, the chip can only supply approximately 1.5A per coil without getting overheated.
Note: For achieving more than 1.5A per coil, a heat sink or other cooling method is required. The DRV8825 driver usually comes with a heat-sink. We advise to install it before you use the driver.
Before using the motor, there’s a small adjustment that we need to make. We need to limit the maximum amount of current flowing through the stepper coils and prevent it from exceeding the motor’s rated current. There’s a small trimmer potentiometer on the DRV8825 driver that can be used to set the current limit. You should set the current limit to be at or lower than the current rating of the motor.
In this method we are going to set the current limit by measuring the voltage (Vref) on the “ref” pin. Take a look at the datasheet for your stepper motor. Note down it’s rated current. In our case we are using NEMA 17 200steps/rev, 12V 350mA. Adjust the Vref voltage using the formula:
VREF = Rated motor current / 2
VREF = 0.350 / 2
VREF = 0.175
It is always a good idea to add a 10% safety margin so that you are not running the stepper motor at the maximum rated current.
VREF with a 10% safety margin = 0.1650 V
Put the driver into full-step mode by leaving the three micro step selection pins disconnected. Hold the motor at a fixed position by not clocking the STEP input. Measure the voltage (Vref) on the metal trimmer pot itself while you adjust it.
Tip: An easy way to make adjustments is to use an alligator clip on the shaft of a metal screwdriver and attach that to your multi meter so that you can measure and adjust the voltage with the screwdriver at the same time.
Texas Instruments, DRV8825 Stepper Motor Controller IC (2021), DRV8825, https://www.ti.com/lit/ds/symlink/drv8825.pdf, Pololu, Stepper Motor Drivers (2021),DRV8825 Stepper Motor Driver Carrier, High Current, https://www.pololu.com , LastMinuteEngineers (2020), Control Stepper Motor with DRV8825 Driver Module & Arduino, https://lastminuteengineers.com/drv8825-stepper-motor-driver-arduino-tutorial