# Motor driver voltage drop test: L298N versus TB6612FNG on Arduino, a design worksheet

> A ₹1,344 design worksheet for a small test rig that measures the voltage actually reaching a motor through an L298N and a TB6612FNG, with the worked example using assumed drops and a sketch that logs the readings.

Canonical: https://roboticsengineering.in/projects/motor-driver-voltage-drop-l298n-vs-tb6612-arduino/ | Published: 2026-11-04 | Updated: 2026-11-04

**A ₹1,344 rig that answers a common question with numbers you measure yourself: how much battery voltage do you lose in the motor driver? An L298N is a bipolar part that drops a volt or two, while a TB6612FNG uses MOSFETs and drops far less. The sketch steps through speeds and prints the motor’s terminal voltage for whichever driver is plugged in.**

**Scope:** intermediate. This is a design worksheet with illustrative costs. It has not been bench-tested by this site. The comparison table uses assumed example drops, not measured values: 2.0 V for the L298N and 0.25 V for the TB6612 (a 0.5 Ω on-resistance at 0.5 A) at about 0.5 A. Datasheets give ranges that depend on current and temperature, so the point of the rig is to measure your own parts. Use a motor and battery within both drivers’ ratings, and keep the L298N heatsink in the air flow.

## How it works

A motor at full PWM gets the battery voltage minus the driver’s drop. On a 7.4 V pack, an assumed 2.0 V drop leaves 5.4 V at the motor, which is 73 percent of what was available; an assumed 0.25 V drop leaves 7.15 V, or 97 percent. Because motor speed and torque rise with voltage, the difference is felt as a slower robot with the L298N.

The table subtracts the same assumed drop at each duty, which is a simplification. Rather than trust it, the sketch measures the average motor terminal voltage through a divider and prints it against the PWM value, so you can plot your own curve.

## Bill of materials

| Part | Qty | Unit | Total |
| --- | --- | --- | --- |
| Arduino Uno R3 (or compatible) | 1 | ₹550 | ₹550 |
| L298N motor driver board | 1 | ₹180 | ₹180 |
| TB6612FNG motor driver breakout | 1 | ₹200 | ₹200 |
| Gear motor (yellow TT type) | 1 | ₹90 | ₹90 |
| Battery holder with two 18650 cells | 1 | ₹210 | ₹210 |
| 10 kilohm resistors (divider) | 2 | ₹2 | ₹4 |
| Breadboard | 1 | ₹60 | ₹60 |
| Jumper wires | 1 | ₹50 | ₹50 |
| Parts total | ₹1,344 |  |  |

Scroll the table sideways to see every column.

Prices checked Nov 2026. Shipping and tools are not included.

Prices are illustrative figures for Indian sellers in November 2026, before shipping, and have not been checked against current listings.

## The numbers

| PWM | Ideal at 7.4 V | L298N (assumed 2.0 V drop) | TB6612 (assumed 0.25 V drop) |
| --- | --- | --- | --- |
| 64/255 | 1.86 V | -0.14 V | 1.61 V |
| 128/255 | 3.71 V | 1.71 V | 3.46 V |
| 192/255 | 5.57 V | 3.57 V | 5.32 V |
| 255/255 | 7.40 V | 5.40 V | 7.15 V |

*Simple model: ideal = 7.4 V × duty; driver columns subtract the assumed drop from that. Real chopped waveforms differ; measure to replace these.*

The divider of two 10 kΩ resistors halves the motor voltage, so 7.4 V reads as 3.7 V at the pin, safely under 5 V. Multiply the reading by two to get the motor voltage. Averaging 50 samples smooths the PWM ripple, but a multimeter on the motor terminals is a good cross-check.

## Power and wiring

| Part | Connects to | Note |
| --- | --- | --- |
| Motor voltage divider | Motor + to 10k to A0 to 10k to GND | Halves the voltage |
| L298N ENA / IN1 / IN2 | D5 / D7 / D8 | Used for the L298N test |
| TB6612 PWMA / AIN1 / AIN2 | D6 / D9 / D4 | Used for the TB6612 test; STBY to 5V |
| Both drivers GND | Battery negative, Uno GND | Common ground |
| Battery + | Each driver’s motor supply input | Only one driver connected to the motor at a time |

*Connect the motor to one driver at a time. The TB6612 logic supply (VCC) takes 5 V and the motor supply (VM) the battery.*

## The sketch

```
// Motor driver voltage drop test: Uno + L298N or TB6612FNG + motor + divider
// Design worksheet: run once per driver, with only that driver connected to the motor.

const int PWM_L298 = 5, L298_IN1 = 7, L298_IN2 = 8;
const int PWM_TB = 6, TB_IN1 = 9, TB_IN2 = 4;
const int SENSE = A0;
const float DIVIDER = 2.0;                   // two equal resistors
const bool TEST_L298 = true;                 // set false to test the TB6612

float averageMotorVolts() {
  long sum = 0;
  for (int i = 0; i < 50; i++) { sum += analogRead(SENSE); delayMicroseconds(400); }
  return (sum / 50.0) * 5.0 / 1023.0 * DIVIDER;
}

void setup() {
  Serial.begin(9600);
  int pins[] = {PWM_L298, L298_IN1, L298_IN2, PWM_TB, TB_IN1, TB_IN2};
  for (int p : pins) pinMode(p, OUTPUT);
  Serial.println("pwm,motor_volts");
}

void loop() {
  for (int pwm = 0; pwm <= 255; pwm += 32) {
    if (TEST_L298) {
      digitalWrite(L298_IN1, HIGH); digitalWrite(L298_IN2, LOW);
      analogWrite(PWM_L298, pwm);
    } else {
      digitalWrite(TB_IN1, HIGH); digitalWrite(TB_IN2, LOW);
      analogWrite(PWM_TB, pwm);
    }
    delay(1500);                             // let speed settle
    Serial.print(pwm); Serial.print(",");
    Serial.println(averageMotorVolts(), 2);
  }
  analogWrite(PWM_L298, 0); analogWrite(PWM_TB, 0);
  delay(5000);
}
```

At low PWM values the average at a divider can read oddly because the motor’s back-EMF and the driver’s freewheeling change the waveform; judge the high-duty end first. The battery voltage sags under load, so also measure it at the pack while the motor runs and subtract. The sketch has been proofread but not compiled on this site.

## Test plan

1. **Battery check:** measure the pack at rest and under the motor load.
2. **Drop at full PWM:** compute battery minus motor voltage at 255 for each driver.
3. **Multimeter check:** compare the printed value with a meter on the motor terminals.
4. **Heat:** after a minute at full speed, feel each driver (carefully) and compare.
5. **Stall current:** do not stall the motor on purpose with the L298N without a heatsink.
6. **Result table:** record both curves and keep them with your notes.

## What usually goes wrong

| Symptom | Likely cause | Fix |
| --- | --- | --- |
| Motor does not turn on the TB6612 | STBY pin low | Tie STBY to 5 V |
| Readings above 5 V | Divider missing or wrong | Check the two resistors |
| L298N very hot | High current or no heatsink | Reduce load and use the heatsink |
| Different results each run | Battery sag | Use fresh cells and note the pack voltage |
| Reading zero | Wrong pins | Check which driver is connected |

## Upgrades

- **Current sense:** add an ACS712 to plot drop against current.
- **Two motors:** repeat with both motors running.
- **Run time:** compare how long a pack lasts with each driver.
- **Swap the driver:** change the driver in a 2WD kit and time a lap.

## Cost and parts notes

The ₹1,344 total is an illustration and does not include shipping. Use the [cost calculator](https://roboticsengineering.in/robotics-project-cost-calculator/) to compare sellers.

## Common questions

**Why does the L298N waste voltage?**

It uses bipolar transistors that drop a volt or more, while MOSFET drivers drop far less.

**Is the TB6612 always better?**

It wastes less voltage, but its current ratings are lower, so check your motor’s needs.

**Are the example drops measured?**

No. They are assumptions for the worked example; the rig exists so you can measure your own.

**Why average 50 readings?**

PWM makes the voltage at the pin flicker, and averaging smooths it.

Last reviewed: November 2026. This is a design worksheet with illustrative costs. It has not been bench-tested by this site; library names, pins and limits must be checked against your board and the current library versions, and measurements from your build are welcome.
