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.

About the author · Sources, testing and AI policy

  • Parts₹1,344
  • Bench time3–5 h
  • LevelIntermediate
  • ReviewedNov 2026

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

PartQtyUnitTotal
Arduino Uno R3 (or compatible)1₹550₹550
L298N motor driver board1₹180₹180
TB6612FNG motor driver breakout1₹200₹200
Gear motor (yellow TT type)1₹90₹90
Battery holder with two 18650 cells1₹210₹210
10 kilohm resistors (divider)2₹2₹4
Breadboard1₹60₹60
Jumper wires1₹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

PWMIdeal at 7.4 VL298N (assumed 2.0 V drop)TB6612 (assumed 0.25 V drop)
64/2551.86 V-0.14 V1.61 V
128/2553.71 V1.71 V3.46 V
192/2555.57 V3.57 V5.32 V
255/2557.40 V5.40 V7.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

PartConnects toNote
Motor voltage dividerMotor + to 10k to A0 to 10k to GNDHalves the voltage
L298N ENA / IN1 / IN2D5 / D7 / D8Used for the L298N test
TB6612 PWMA / AIN1 / AIN2D6 / D9 / D4Used for the TB6612 test; STBY to 5V
Both drivers GNDBattery negative, Uno GNDCommon ground
Battery +Each driver’s motor supply inputOnly 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

SymptomLikely causeFix
Motor does not turn on the TB6612STBY pin lowTie STBY to 5 V
Readings above 5 VDivider missing or wrongCheck the two resistors
L298N very hotHigh current or no heatsinkReduce load and use the heatsink
Different results each runBattery sagUse fresh cells and note the pack voltage
Reading zeroWrong pinsCheck 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 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.

More builds

Next builds to try

Free: the final-year project pack

A shortlist with BOMs, a report outline that matches the usual chapter scheme, a costing sheet and 40 viva questions. Built for the February–April submission season.

The Build Note

One short email when something is worth your bench time.

A new build sheet, a part price that moved, or a mistake worth avoiding. No daily drip, no recycled news.

One short email when a build or a price is worth your time. Unsubscribe in one click.