Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

How to Use DRV8833 Motor Driver: Examples, Pinouts, and Specs

Image of DRV8833 Motor DriverDesign with DRV8833 Motor Driver in Cirkit Designer

Introduction

The DRV8833 is a dual H-bridge motor driver designed for controlling two DC motors or a single stepper motor. It operates within a voltage range of 2.7V to 10.8V, making it suitable for low-voltage motor control applications. The DRV8833 includes advanced features such as adjustable current limiting, thermal shutdown, and overcurrent protection, ensuring reliable operation and protection for both the driver and the connected motors.

Explore Projects Built with DRV8833 Motor Driver

Use Cirkit Designer to design, explore, and prototype these projects online. Some projects support real-time simulation. Click "Open Project" to start designing instantly!
Image of ESP32 C3 Controlled Robot with VL6180 Time of Flight Sensor: A project utilizing DRV8833 Motor Driver in a practical application
ESP32 C3 Controlled Robot with VL6180 Time of Flight Sensor

This circuit is designed to control a pair of DC gearmotors using a DRV8833 motor driver, with an ESP32 C3 microcontroller as the control unit. The microcontroller also interfaces with an Adafruit VL6180 Time of Flight sensor for distance measurement. The embedded code on the ESP32 C3 facilitates basic motor control (forward and backward) and reads distance data from the sensor, which is likely used for obstacle detection or range finding in a robotic application.

Open Project in Cirkit Designer

Common Applications and Use Cases

Technical Specifications

Key Technical Details

Pin Configuration and Descriptions

The DRV8833 comes in a 16-pin HTSSOP package. Below is the pin configuration:

Pin Number Pin Name Description
1 AOUT1 Output 1 for H-bridge A
2 AOUT2 Output 2 for H-bridge A
3 VM Motor power supply (2.7V to 10.8V)
4 GND Ground connection
5 BOUT1 Output 1 for H-bridge B
6 BOUT2 Output 2 for H-bridge B
7 VCC Logic power supply (typically 3.3V or 5V)
8 ENABLE Enable pin for both H-bridges (active high)
9 AIN1 Input 1 for H-bridge A (controls direction and speed with PWM)
10 AIN2 Input 2 for H-bridge A (controls direction and speed with PWM)
11 BIN1 Input 1 for H-bridge B (controls direction and speed with PWM)
12 BIN2 Input 2 for H-bridge B (controls direction and speed with PWM)
13 NC No connection
14 NC No connection
15 FAULT Fault indicator (active low, indicates overcurrent or thermal shutdown)
16 SLEEP Sleep mode pin (active low, reduces power consumption when not in use)

Usage Instructions

How to Use the DRV8833 in a Circuit

  1. Power Supply:

    • Connect the motor power supply (VM) to the VM pin. Ensure the voltage is within the range of 2.7V to 10.8V.
    • Connect the logic power supply (VCC) to the VCC pin. Typically, this is 3.3V or 5V.
    • Connect the GND pin to the ground of your circuit.
  2. Motor Connections:

    • For DC motors, connect the motor terminals to the AOUT1/AOUT2 pins (H-bridge A) or BOUT1/BOUT2 pins (H-bridge B).
    • For stepper motors, connect the two coils to the AOUT1/AOUT2 and BOUT1/BOUT2 pins.
  3. Control Signals:

    • Use the AIN1/AIN2 and BIN1/BIN2 pins to control the direction and speed of the motors. Apply PWM signals to these pins for speed control.
    • Set the ENABLE pin high to activate the H-bridges. Pull it low to disable the outputs.
  4. Sleep Mode:

    • Pull the SLEEP pin low to put the driver into low-power mode. Pull it high to enable normal operation.
  5. Fault Handling:

    • Monitor the FAULT pin for error conditions. If the pin goes low, check for overcurrent or thermal shutdown issues.

Important Considerations and Best Practices

Example: Using DRV8833 with Arduino UNO

Below is an example of controlling a single DC motor using the DRV8833 and Arduino UNO:

// Define motor control pins
const int AIN1 = 9;  // Connect to AIN1 pin of DRV8833
const int AIN2 = 10; // Connect to AIN2 pin of DRV8833
const int ENABLE = 8; // Connect to ENABLE pin of DRV8833

void setup() {
  // Set motor control pins as outputs
  pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT);
  pinMode(ENABLE, OUTPUT);

  // Enable the motor driver
  digitalWrite(ENABLE, HIGH);
}

void loop() {
  // Rotate motor forward
  digitalWrite(AIN1, HIGH);
  digitalWrite(AIN2, LOW);
  delay(2000); // Run motor for 2 seconds

  // Rotate motor backward
  digitalWrite(AIN1, LOW);
  digitalWrite(AIN2, HIGH);
  delay(2000); // Run motor for 2 seconds

  // Stop motor
  digitalWrite(AIN1, LOW);
  digitalWrite(AIN2, LOW);
  delay(2000); // Stop for 2 seconds
}

Troubleshooting and FAQs

Common Issues and Solutions

  1. Motor Not Spinning:

    • Cause: ENABLE pin is not set high.

    • Solution: Ensure the ENABLE pin is connected to a HIGH signal.

    • Cause: Incorrect wiring of motor terminals.

    • Solution: Verify the motor connections to AOUT1/AOUT2 or BOUT1/BOUT2.

  2. Overheating:

    • Cause: Excessive current draw from the motor.
    • Solution: Check the motor specifications and ensure the current is within the DRV8833's limits. Use current limiting if necessary.
  3. FAULT Pin is Low:

    • Cause: Overcurrent or thermal shutdown.
    • Solution: Reduce the motor load or improve heat dissipation.
  4. No Response to Control Signals:

    • Cause: Logic voltage (VCC) is not supplied or incompatible.
    • Solution: Ensure the VCC pin is connected to a 3.3V or 5V source and matches the control signal levels.

FAQs