

The Pololu TB6612FNG Motor Driver is a compact and efficient motor driver capable of controlling two DC motors or one stepper motor. It allows for precise control of motor direction and speed using PWM (Pulse Width Modulation) signals. This motor driver is widely used in robotics, automation, and other applications requiring motor control.








The following are the key technical details of the Pololu TB6612FNG motor driver:
| Parameter | Value |
|---|---|
| Operating Voltage | 2.7V to 5.5V |
| Motor Output Voltage | Up to 13.5V |
| Continuous Output Current | 1.2A per channel (3.2A peak) |
| Control Interface | PWM and digital signals |
| Logic Input Voltage | 2.7V to 5.5V |
| Standby Current | 1 µA (typical) |
| Dimensions | 18mm x 18mm x 3mm |
The TB6612FNG motor driver has 16 pins. Below is the pinout and description:
| Pin Name | Type | Description |
|---|---|---|
| VCC | Power Input | Logic voltage supply (2.7V to 5.5V). |
| VM | Power Input | Motor power supply (up to 13.5V). |
| GND | Ground | Ground connection for logic and motor power. |
| AIN1, AIN2 | Input | Control signals for Motor A direction. |
| BIN1, BIN2 | Input | Control signals for Motor B direction. |
| PWMA | PWM Input | Speed control for Motor A (PWM signal). |
| PWMB | PWM Input | Speed control for Motor B (PWM signal). |
| STBY | Input | Standby mode control (active low). |
| AO1, AO2 | Output | Motor A outputs. Connect to Motor A terminals. |
| BO1, BO2 | Output | Motor B outputs. Connect to Motor B terminals. |
| NC | - | No connection. |
| VCC2 | Power Input | Optional secondary logic voltage input (typically tied to VCC). |
Power Connections:
Motor Connections:
Control Signals:
Standby Mode:
Below is an example of how to control two DC motors using the TB6612FNG motor driver and an Arduino UNO:
// Define motor control pins
const int AIN1 = 7; // Motor A direction control pin 1
const int AIN2 = 8; // Motor A direction control pin 2
const int PWMA = 9; // Motor A speed control (PWM)
const int BIN1 = 10; // Motor B direction control pin 1
const int BIN2 = 11; // Motor B direction control pin 2
const int PWMB = 3; // Motor B speed control (PWM)
const int STBY = 12; // Standby control pin
void setup() {
// Set control pins as outputs
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(STBY, OUTPUT);
// Enable the motor driver
digitalWrite(STBY, HIGH);
}
void loop() {
// Example: Run Motor A forward at 50% speed
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
analogWrite(PWMA, 128); // 50% duty cycle (0-255)
// Example: Run Motor B backward at 75% speed
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, HIGH);
analogWrite(PWMB, 192); // 75% duty cycle (0-255)
delay(2000); // Run for 2 seconds
// Stop both motors
analogWrite(PWMA, 0);
analogWrite(PWMB, 0);
delay(2000); // Wait for 2 seconds
}
Motors Not Running:
Overheating:
Erratic Motor Behavior:
Arduino Code Not Working:
Q: Can I use this driver with a 24V motor?
A: No, the maximum motor voltage (VM) is 13.5V. Using a higher voltage may damage the driver.
Q: Can I control a stepper motor with this driver?
A: Yes, the TB6612FNG can control a bipolar stepper motor by using both channels. You will need to generate the appropriate step and direction signals.
Q: What happens if I leave the STBY pin floating?
A: The motor driver will remain in standby mode, and the motors will not operate. Always pull the STBY pin high to enable the driver.