# TB6612FNG motor driver: motors do not spin \(STBY, PWM and supply fixes\)

> Fix a TB6612FNG that does not drive motors: the STBY pin must be high, PWM and direction pins, VM and VCC supplies and common ground.

Canonical: https://roboticsengineering.in/fix/tb6612fng-motor-driver-not-spinning/ | Published: 2026-11-03 | Updated: 2026-11-04

**The TB6612FNG stays off until the STBY pin is high.** After that, check the direction pins, the PWM pin, and the two supplies.

## What the message means

The driver has a standby pin that disables both channels. Each channel needs two direction inputs and a PWM input. The motor supply (VM) and the logic supply (VCC) are separate pins.

## Fix it in this order

1. Set STBY high. Tie it to VCC or drive it from a pin and set it HIGH.
2. Set the two direction inputs for the channel to opposite levels, and send PWM to the PWM pin.
3. Connect VCC to the logic voltage (3.3 V or 5 V) and VM to the motor supply, within the datasheet ranges.
4. Join the grounds of the board, driver and motor battery.
5. Check the supply can give the motor current. Check the datasheet for the continuous current of the driver and keep below it.
6. Check solder joints on the module header pins.

## Why it happens

The TB6612FNG does nothing if STBY is low. Other usual causes are a missing motor supply on VM, a missing common ground, or no PWM signal.

Connect STBY to 3.3 V or 5 V, supply the motor voltage to VM, join the grounds, and check the direction inputs AIN1, AIN2 and the PWM pin. Test one channel at a time with a simple sketch.

## If you see this, do this

| You see | Do this |
| --- | --- |
| Nothing moves on either channel | STBY is low or VM is missing. |
| One channel works | Check that channel direction and PWM pins. |

## Related

[L298N vs TB6612FNG](https://roboticsengineering.in/l298n-vs-tb6612fng/), [L298N not spinning](https://roboticsengineering.in/fix/l298n-motor-not-spinning/), [motor runs one direction](https://roboticsengineering.in/fix/dc-motor-only-runs-one-direction/).

Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.

## Why this happens

The TB6612FNG has two H-bridges and a shared standby pin. Each channel reads two direction inputs, for example AIN1 and AIN2, and one PWM input. The truth table is simple: IN1 high with IN2 low drives one way, IN1 low with IN2 high drives the other, both high is a short brake and both low lets the motor coast. PWM then sets the average voltage. If PWM stays low or STBY is low, the output is off whatever the direction pins say.

The chip has separate supplies. VCC powers the logic, in the range 2.7 to 5.5 V in the datasheet. VM powers the motors, 4.5 to 13.5 V, and the datasheet rates about 1.2 A continuous and 3.2 A peak per channel. A motor that needs a higher voltage than the minimum VM, or draws a large current, will not behave as expected.

## How to confirm the cause

- Measure STBY with a multimeter while the program runs. It should be near the logic voltage. Zero means it is not driven high.
- Measure VM at the module pin with the motor commanded on. It should be the battery voltage, not a lower value.
- Measure the PWM pin with the multimeter on DC volts. At 50 percent duty the reading falls between 0 V and the logic voltage; a reading of 0 V means no signal.
- Measure the motor terminals while commanding the motor. Several volts means the driver works and the motor or its wires are the fault.
- Check that the grounds of the controller, the driver and the motor battery are common.

## Worked example

The smallest test for channel A. The pin numbers are examples for an Arduino Uno; PWMA must be a PWM-capable pin.

```
const int STBY = 7, AIN1 = 8, AIN2 = 9, PWMA = 5;
void setup() {
  pinMode(STBY, OUTPUT); pinMode(AIN1, OUTPUT);
  pinMode(AIN2, OUTPUT); pinMode(PWMA, OUTPUT);
  digitalWrite(STBY, HIGH);    // leave standby
  digitalWrite(AIN1, HIGH);    // direction
  digitalWrite(AIN2, LOW);
  analogWrite(PWMA, 150);      // about 59 percent duty
}
void loop() {}
```

## Common mistakes

- Leaving STBY unconnected, floating or low.
- Swapping VM and VCC, or feeding the motor supply into the logic pin.
- Using a pin that has no PWM for PWMA.
- Setting both direction pins high and getting a brake instead of motion.
- Powering the motor from the Arduino 5 V pin, which cannot supply the current.

## If this did not fix it

- Check the motor wires on the output terminals, A01 and A02, and the soldered header pins on the module.
- Check the battery voltage under load; a weak pack sags and resets the controller.
- Check that the pins chosen on an ESP32 or similar board are not strapping or input-only pins.
