A4988 Stepper Motor Driver Carrier:
Pololu A4988 Stepper Driver --------------------------- (view from top, trim pot on right) connect SLP and RST together 2a,2b to connected coil of stepper (blue-yellow) 1a,1b to connected coil of stepper (white-red) | | | | | | | | Vmt Gnd 2-B 2-A 1-A 1-B Vdd Gnd | | | | | | | | -------------------------------------- | Pololu A4988 Stepper Driver (trim)| -------------------------------------- | | | | | | | | En. Ms1 Ms2 Ms3 Rst Slp Stp Dir | | | | |____| | |How to use this driver.
Got this from Pololu.
To use the SCM-E040 stepper motor with the A4988 driver, leave the center tap (green) wires unconnected. Minimal wiring diagram for connecting a microcontroller to an A4988 stepper motor driver carrier (full-step mode). See this faq for a nice writeup on using unipolar and bipolar stepper motors.
VNH5019 Motor Driver:
- Operating voltage range: 5.5 – 24 V1. Over-voltage shutoff 24 V min. / 27 V typ. (While the overvoltage protection typically kicks in at 27 V, it can trigger at voltages as low as 24 V, so we do not recommend using this motor driver with 24 V batteries, which significantly exceed 24 V when fully charged.
- Output current: 12 A continuous (30 maximum). Typical results using the Pololu motor driver carrier boards with 100% duty cycle at room temperature (with no forced airflow or heat sinking beyond the carrier PCB).
- Time to overheat at 20 A 20 s
- Time to overheat at 15 A 90 s
- Current for infinite run time 12 A
- Current sense (an analog voltage proportional to the motor current) 140 mV/A typ. (210 mV/A for the older boards?)
- Logic input high threshold 2.1 V min, so inputs compatible with both 5V and 3.3V systems
- PWM operation up to 20 kHz, which is ultrasonic and allows for quieter motor operation
- Motor indicator LEDs (indicates what the outputs are doing even when no motor is connected).The LED brightness with increase with motor speed, and the LED color changes with direction.
- Undervoltage and overvoltage shutdown
- High-side and low-side thermal shutdown
- Short-to-ground and short-to-Vcc protection
Simple Arduino code listing to test out using this chip. The test motor was being supplied 20V, and was drawing a couple of amps at least. PWM started humming at 10, and started turning the motor over starting at 20. (Note: PWM was using the builtin analogWrite() which I think runs a t 490Hz?, could probably do smoother pwm by manipulating the chip's timer directly).
#define A_PIN 6 #define B_PIN 7 #define PWM_PIN 3 /* Arduino VNH5019 6 INA 7 INB 3 PWM +5v VDD GND GND Program listens to commands coming over serial. Commands are single characters, sent with no line ending. f : turn forward at curent pwm value r : reverse at current pwm value + : increment current pwm value by 10 - : decrement current pwm value by 10 anything else puts the motor to coast. */ byte pwm_value = 0; void setup() { pinMode(A_PIN, OUTPUT); pinMode(B_PIN, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { char incomingChar = Serial.read(); switch (incomingChar) { case 'f': digitalWrite(A_PIN, HIGH); digitalWrite(B_PIN, LOW); Serial.print(pwm_value); Serial.println(" forward"); break; case 'r': digitalWrite(A_PIN, LOW); digitalWrite(B_PIN, HIGH); Serial.print(pwm_value); Serial.println(" reverse"); break; case '+': pwm_value = pwm_value + 10; analogWrite(PWM_PIN, pwm_value); Serial.print(pwm_value); Serial.println(" pwm_value"); break; case '-': pwm_value = pwm_value - 10; analogWrite(PWM_PIN, pwm_value); Serial.print(pwm_value); Serial.println(" pwm_value"); break; default: digitalWrite(A_PIN, LOW); digitalWrite(B_PIN, LOW); Serial.print(pwm_value); Serial.println("stopped"); break; } } }
DRV8801 Single Brushed DC Motor Driver Carrier:
- Drives a single brushed DC motor
- Motor supply voltage: 8–36 V
- Logic supply voltage: 3.3–6.5 V
- Output current: 1 A continuous (2.8 A peak)
- Simple interface requires only two I/O lines (one for direction and another for speed)
- Current sense output proportional to motor current (approx. 500 mV per A)
- Inputs are 3V- and 5V-compatible
- Under-voltage lockout and protection against over-current and over-temperature
Sample arduino listing:
#define DIR_PIN 2 #define PWM_PIN 3 /* Arduino DRV8801 2 DIR 3 PWM +5v VDD GND GND Program listens to commands coming over serial. Commands are single characters, sent with no line ending. f : turn forward at curent pwm value r : reverse at current pwm value + : increment current pwm value by 10 - : decrement current pwm value by 10 anything else stops motor. */ byte pwm_value = 0; void setup() { pinMode(DIR_PIN, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { char incomingChar = Serial.read(); switch (incomingChar) { case 'f': digitalWrite(DIR_PIN, HIGH); Serial.print(pwm_value); Serial.println(" forward"); break; case 'r': digitalWrite(DIR_PIN, LOW); Serial.print(pwm_value); Serial.println(" reverse"); break; case '+': pwm_value = pwm_value + 10; analogWrite(PWM_PIN, pwm_value); Serial.print(pwm_value); Serial.println(" pwm_value"); break; case '-': pwm_value = pwm_value - 10; analogWrite(PWM_PIN, pwm_value); Serial.print(pwm_value); Serial.println(" pwm_value"); break; default: pwm_value = 0; analogWrite(PWM_PIN, pwm_value); Serial.print(pwm_value); Serial.println("stopped"); break; } } }
Got this from Pololu
Pololu TB6612FNG Dual Motor Driver Carrier:
This tiny board is an easy way to use Toshiba’s TB6612FNG dual motor driver, which can independently control two bidirectional DC motors or one bipolar stepper motor. A recommended motor voltage of 4.5 – 13.5 V and peak current output of 3 A per channel (1 A continuous) make this a great motor driver for low-power motors.Note: Try tying pwmA and pwmB to high, if you don’t want to do pwm. just leaving it open, the motors can’t be controlled.
Got this from Pololu.
//Configure these to fit your design... #define out_STBY 5 #define out_A_IN2 9 #define out_A_IN1 10 #define out_B_IN1 8 #define out_B_IN2 7 #define out_B_PWM 3 #define out_A_PWM 11 #define motor_A 0 #define motor_B 1 int incomingByte; void setup() { pinMode(out_STBY,OUTPUT); pinMode(out_A_IN1,OUTPUT); pinMode(out_A_IN2,OUTPUT); pinMode(out_B_IN1,OUTPUT); pinMode(out_B_IN2,OUTPUT); pinMode(out_A_PWM,OUTPUT); pinMode(out_B_PWM,OUTPUT); motor_standby(false); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { incomingByte = Serial.read(); if (incomingByte == 'q') { motor_coast(motor_A); } else if (incomingByte == 'w') { motor_direction(motor_A, 0); } else if (incomingByte == 'e') { motor_direction(motor_A, 1); } else if (incomingByte == 'p') { motor_coast(motor_B); } else if (incomingByte == 'o') { motor_direction(motor_B, 0); } else if (incomingByte == 'i') { motor_direction(motor_B, 1); } } } void motor_direction(boolean motor, boolean direction) { if (motor == motor_A) { if (direction == 0) { digitalWrite(out_A_IN1,HIGH); digitalWrite(out_A_IN2,LOW); } else { digitalWrite(out_A_IN1,LOW); digitalWrite(out_A_IN2,HIGH); } analogWrite(out_A_PWM,255); } else { if (direction == 0) { digitalWrite(out_B_IN1,HIGH); digitalWrite(out_B_IN2,LOW); } else { digitalWrite(out_B_IN1,LOW); digitalWrite(out_B_IN2,HIGH); } analogWrite(out_B_PWM,255); } } void motor_standby(boolean state) { //low power mode if (state == true) digitalWrite(out_STBY,LOW); else digitalWrite(out_STBY,HIGH); } void motor_coast(boolean motor) { if (motor == motor_A) { digitalWrite(out_A_IN1,LOW); digitalWrite(out_A_IN2,LOW); digitalWrite(out_A_PWM,HIGH); } else { digitalWrite(out_B_IN1,LOW); digitalWrite(out_B_IN2,LOW); digitalWrite(out_B_PWM,HIGH); } }
DRV8834 Low-Voltage Stepper Motor Driver Carrier:
Got this from Pololu.
Pololu Dual Serial Motor Controller:
Got this from Pololu.SN754410:
Pin | Name | H-Bridge Function | Notes |
---|---|---|---|
1 | 1,2EN | Motor 1 Enable | Setting this pint o 0V (LOW) will turn off the motor, setting it to 5V (HIGH) will enable the motor. Connect this pin to the 5V supply, or use as an emergency shutoff. |
2 | 1A | Motor 1 Forward | Set this pin to 5V (HIGH) to turn Motor1 in one direction. Motor Speed can be controlled by using PWM into this pin |
3 | 1Y | Motor 1 Power | Connect to one pin of Motor1 |
4 | Ground | Ground | Connect to ground - required for heat sinking |
5 | Ground | Ground | Connect to ground - required for heat sinking |
6 | 2Y | Motor 1 Power | Connect to other pin of Motor1 |
7 | 2A | Motor 1 Reverse | Set this pin to 5V (HIGH) to turn Motor1 in the opposite direction. Motor Speed can be controlled by using PWM into this pin |
8 | VCC2 | Motor Power Source | Positive power source for your motors. (i.e. connect to battery - max 36V) |
9 | 3,4EN | Motor 2 Enable | Setting this pint o 0V (LOW) will turn off the motor, setting it to 5V (HIGH) will enable the motor. Connect this pin to the 5V supply, or use as an emergency shutoff. |
10 | 3A | Motor 2 Forward | Set this pin to 5V (HIGH) to turn Motor2 in one direction. Motor Speed can be controlled by using PWM into this pin |
11 | 3Y | Motor 2 Power | Connect to one pin of Motor2 |
12 | Ground | Ground | Connect to ground - required for heat sinking |
13 | Ground | Ground | Connect to ground - required for heat sinking |
14 | 4Y | Motor 2 Power | Connect to other pin of Motor2 |
15 | 4A | Motor 2 Reverse | Set this pin to 5V (HIGH) to turn Motor2 in the opposite direction. Motor Speed can be controlled by using PWM into this pin |
16 | VCC1 | IC Logic Power | Regulated +5V (VCC / VDD) |
ULN2803:
FAN8200:
(discontinued)BA62222:
L298:
L298 Keyes Module:
- Uses ST' L298N chip, can directly drive two 3-30V DC motor, and provide a 5V output interface, power for 5V single-chip circuitry, support 3.3VMCU control
- Can easily control the DC motor speed and direction, also control the 2-phase stepper motor
- Driver: L298N Dual H Bridge DC Motor Driver IC
- Driven part of the terminal supply voltage: VMS 5~35V
- Driven part of the peak current Io: 2A per bridge
- The logical part of the terminal supply voltage: 4.5~7V
- The logical part of the operating current range: 0 ~ 36mA
- Control signal input voltage range: 4.5~5.5V (high) / 0V (low)
- Maximum power consumption: 20W
See this for a nice usage writeup.
Got this from dealextreme
Parallel Port Interface:
This is a stepper motor controller that I built a few years ago. It used that array of TIP120 transistors, with an onboard 7805 power supply, and had connections (the orange, green and blue headers) for 3 unipolar stepper motors that could be driven by a parallel port (through the 7244 octal buffer chips). It also could feed 8 inputs (the yellow header) to the parallel port.This project was a first attempt at etching a pcb (using toner transfer from a laser printed printed image onto photo paper of a drawing made using Visio). That was quite easy to do, but I didn't do a clean job. Some of the traces, especially the really skinny ones, had to be built up with solder. Also, it was not an easy task to drill all the holes, even though I etched registration dimples for the holes.