Difference between revisions of "DRV8825 Motor Driver Board"
(→Document) |
(→Document) |
||
Line 36: | Line 36: | ||
==Document== | ==Document== | ||
− | [ | + | [http://www.geeetech.com/wiki/images/6/6d/DVR8825_datasheet.pdf DVR8825 datasheet] |
==Arduino Example Code== | ==Arduino Example Code== |
Revision as of 03:40, 26 February 2015
Contents
Overview
The DRV8825 stepper motor driver carrier is a breakout board for TI’s DRV8825 microstepping bipolar stepper motor driver. The module has a pinout and interface that are nearly identical to those of our A4988 stepper motor driver board, so it can be used as a higher-performance drop-in replacement for those boards in many applications. The DRV8825 features adjustable current limiting, overcurrent and overtemperature protection, and six microstep resolutions (down to 1/32-step). It operates from 8.2 – 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).
Features
- Simple step and direction control interface
- Six different step resolutions: full-step, half-step, 1/4-step, 1/8-step, 1/16-step, and 1/32-step
- Adjustable current control lets you set the maximum current output with a potentiometer, which lets you use voltages above your stepper motor’s rated voltage to achieve higher step rates
- 45 V maximum supply voltage
- Built-in regulator (no external logic voltage supply needed)
- Can interface directly with 3.3 V and 5 V systems
- Over-temperature thermal shutdown, over-current shutdown, and under-voltage lockout
- Short-to-ground and shorted-load protection
- 4-layer, 2 oz copper PCB for improved heat dissipation
- Exposed solderable ground pad below the driver IC on the bottom of the PCB
- Module size, pinout, and interface match those of our A4988 stepper motor driver carriers in most respects (see the bottom of this page for more information)
Usage
Connection
The driver requires a motor supply voltage of 8.2 – 45 V to be connected across VMOT and GND. This supply should have appropriate decoupling capacitors close to the board, and it should be capable of delivering the expected stepper motor current.
Stepper motors typically have a step size specification (e.g. 1.8° or 200 steps per revolution), which applies to full steps. A microstepping driver such as the DRV8825 allows higher resolutions by allowing intermediate step locations, which are achieved by energizing the coils with intermediate current levels. For instance, driving a motor in quarter-step mode will give the 200-step-per-revolution motor 800 microsteps per revolution by using four different current levels.
The resolution (step size) selector inputs (MODE0, MODE1, and MODE2) enable selection from the six step resolutions according to the table below. All three selector inputs have internal 100kΩ pull-down resistors, so leaving these three microstep selection pins disconnected results in full-step mode. For the microstep modes to function correctly, the current limit must be set low enough (see below) so that current limiting gets engaged. Otherwise, the intermediate current levels will not be correctly maintained, and the motor will skip microsteps.
Control inputs
Each pulse to the STEP input corresponds to one microstep of the stepper motor in the direction selected by the DIR pin. These inputs are both pulled low by default through internal 100kΩ pull-down resistors. If you just want rotation in a single direction, you can leave DIR disconnected.
The chip has three different inputs for controlling its power states: RESET, SLEEP, and ENBL. For details about these power states, see the datasheet.
Current limiting
The way to set the current limit is to measure the voltage on the “ref” pin and to calculate the resulting current limit (the current sense resistors are 0.100Ω). The ref pin voltage is accessible on a via that is circled on the bottom silkscreen of the circuit board. The current limit relates to the reference voltage as follows:
Current Limit = VREF × 2
Document
Arduino Example Code
int dirPin = 8; int stepperPin = 7; void setup() { pinMode(dirPin, OUTPUT); pinMode(stepperPin, OUTPUT); } void step(boolean dir,int steps){ digitalWrite(dirPin,dir); delay(50); for(int i=0;i<steps;i++){ digitalWrite(stepperPin, HIGH); delayMicroseconds(800); digitalWrite(stepperPin, LOW); delayMicroseconds(800); } } void loop(){ step(true,1600); delay(500); step(false,1600*5); delay(500); }