Part

Motor driver, DRV8833

Two small H bridges from 2.7 V up. Both inputs low coasts, both high brakes.

See every part
  • 12 pins
  • In 5 projects
Drawn live by the editor's own code, at the size you see it.
At a glance

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
Pins

12 pins

Named as the editor names them, so a wire lands where you expect it.

Pin
What it does
VM
The motor supply, 2.7 V to 10.8 V. The chip runs from it too.
GND
Ground, shared with the board that drives the inputs.
SLP
Sleep, active low. Pulled up on the breakout, so leave it unwired to run.
FLT
The fault output, open drain. Nothing in a Mokxi circuit trips it.
AIN1
Motor A's two inputs.
AIN2
Motor A's two inputs.
BIN1
Motor B's two inputs.
BIN2
Motor B's two inputs.
AOUT1
Motor A.
AOUT2
Motor A.
BOUT1
Motor B.
BOUT2
Motor B.
How to use 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.

Part pin
Board pin
AIN1
Pin 5
AIN2
Pin 6
BIN1
Pin 9
BIN2
Pin 10
VM
6 V battery
GND
GND

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.

Arduino Uno: bumper carlive0.000 s 0.00x
Hold the button
This is the simulator itself, running here. Click anything to open it in the editor.
One motor as a signed speed, from the bumper car
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);
  }
}
How it is modeled

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 VM the bridges join the analog solve, so the motor current comes out of the pack.

Not modeled

  • The current limit and overcurrent shutdown, so FLT never goes low.
  • Heat. The real chip shuts down when it gets too hot.

From DRV8833 motor driver, in full.

Projects

See the Motor driver, DRV8833 in a project

5 built-in projects use it. Each opens in the editor, already wired.

Boards

The boards it is shown on

This board has a built-in project with the Motor driver, DRV8833 in it.

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.