Motor driver, DRV8833
Two small H bridges from 2.7 V up. Both inputs low coasts, both high brakes.
- 12 pins
- In 5 projects
The Motor driver, DRV8833 in brief
What it is, and where it sits on the bench.
The DRV8833 is TI’s small dual H bridge, on the Adafruit and Pololu-style breakouts and the red kit module: two DC motors from a single 2.7 to 10.8 V supply on VM, which runs the chip too. Each motor has two inputs, AIN1 and AIN2 or BIN1 and BIN2, and two outputs; there is no enable pin. The inputs read high at 2 V and low at 0.7 V whatever VM is, so an Uno’s PWM pins or an ESP32’s 3.3 V GPIOs drive them, and each has a 100 k pull-down. Mokxi models TI’s logic table (both low coasts, one high drives, both high brakes), the SLP pin with its 1 ms wake, which the breakout pulls up so it can stay unwired, the 2.6 V undervoltage lockout, and 0.18 ohm a side in each bridge, so a battery on VM really supplies the motor current. The classic mistake is forgetting the ground shared between the battery and the board. Current limiting, overcurrent and thermal shutdown are not modeled, so FLT never goes low.
- Family
- Outputs
- Pins
- 12
12 pins
Named as the editor names them, so a wire lands where you expect it.
How to use the DRV8833 motor driver with an Arduino
AIN1 and AIN2 to pins 5 and 6 for the left motor, BIN1 and BIN2 to pins 9 and 10 for the right, VM to the 6 V of four AA cells, and GND shared with the Uno. The motors go on AOUT1 and AOUT2 and on BOUT1 and BOUT2. SLP is pulled up on the breakout, so it can stay unwired.
There is no enable pin. Hold one input low and analogWrite the other: that is drive and coast in turn, and the duty is the speed. Swap which input gets the PWM to reverse. Both inputs low lets the motor coast, and both high brakes it, which is what the bumper car does for 150 ms before it backs away from a wall.
The inputs read high at 2 V and low at 0.7 V whatever VM is, so an ESP32’s 3.3 V GPIOs drive a DRV8833 as well as an Uno does.
void motor(int in1, int in2, int speed) {
if (speed >= 0) {
digitalWrite(in2, LOW);
analogWrite(in1, speed > 255 ? 255 : speed);
} else {
digitalWrite(in1, LOW);
analogWrite(in2, -speed > 255 ? 255 : -speed);
}
}What is true about the Motor driver, DRV8833, here
In its help article’s own words: what the simulation gets right, and where it stops.
Modeled
- The logic table, including the coast the L9110S does not have.
- The input thresholds and pull-downs, the sleep pin and its 1 ms wake.
- 0.18 ohm a side in each bridge. With a battery on
VMthe bridges join the analog solve, so the motor current comes out of the pack.
Not modeled
- The current limit and overcurrent shutdown, so
FLTnever goes low. - Heat. The real chip shuts down when it gets too hot.
From DRV8833 motor driver, in full.
See the Motor driver, DRV8833 in a project
5 built-in projects use it. Each opens in the editor, already wired.
The boards it is shown on
This board has a built-in project with the Motor driver, DRV8833 in it.
The rest of the bench
Every one of these is drawn and simulated the same way.
Wire up the Motor driver, DRV8833
Open the editor and push it into the breadboard. It is free, and it runs on your own machine.