# Arduino on a 9 V battery dies in hours: why and what to use

> Why a 9 V block battery lasts only a short time on an Arduino with motors or servos, and better supply choices for robots.

Canonical: https://roboticsengineering.in/fix/arduino-9v-battery-drains-fast-use-better-supply/ | Published: 2026-11-03 | Updated: 2026-11-04

**A 9 V block battery has small capacity and high internal resistance.** It suits tiny low-power projects, not motors or servos.

## What the message means

The Arduino regulator turns the extra voltage into heat, and every milliampere you draw comes straight from a small cell. Motors make the voltage sag.

## Fix it in this order

1. Estimate the current of your robot and divide the battery capacity by it. Use the battery runtime calculator.
2. Use a pack of lithium or NiMH cells with a regulator for larger loads.
3. Run motors and servos from their own pack, and the controller from a regulator.
4. Use a buck converter instead of a linear regulator when the supply voltage is much higher than needed.
5. Turn off unused parts and use sleep modes when idle.

## Why it happens

A 9 V block battery stores little charge in a small package, and its internal resistance is high. When a motor or servo draws a burst of current, the voltage sags sharply and the board may reset. The Arduino’s onboard regulator also turns the difference between its input and its 5 V output into heat, so a high input voltage wastes energy as well.

Run time follows from capacity divided by average current, so a few hundred milliamps of load can empty a small cell quickly. The fix is to match the source to the load: separate packs for motors and servos, a regulator or buck converter for the logic, and a supply rated for the peak current. Check the battery’s datasheet for capacity and maximum discharge current before choosing.

## If you see this, do this

| You see | Do this |
| --- | --- |
| Battery hot or voltage collapses | Load too large for the cell. |
| Works for minutes only | Capacity too small. |

## Confirm the fix

1. Measure battery voltage with a multimeter while nothing is connected, then with the motors running. A large drop shows the source cannot supply the load.
2. Measure the 5 V pin while the robot drives. A steady reading means the regulator holds, so the battery is the limit.
3. Divide the battery capacity by the total average current to estimate runtime, then compare the result with a timed test run.

**Common mistake:** Most readers assume that a 9 V battery is a convenient, long-lasting supply for a whole robot, when its small capacity and high resistance make it suitable only for light logic loads.

## Related

[battery runtime calculator](https://roboticsengineering.in/robot-battery-runtime-calculator/), [robot battery guide](https://roboticsengineering.in/robot-battery-guide/), [LM2596 setup](https://roboticsengineering.in/fix/lm2596-buck-converter-set-voltage-before-connecting/).

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.
