Power a DIY robot safely by matching the pack to the robot's peak current draw, not its average, and by never letting cell voltage, charge rate, or temperature leave the chemistry's stated limits. Most "fried" batteries in hobby robotics are not defective — they were over-discharged by a stalled motor, drained past their cutoff voltage because the controller kept running, or charged on the wrong setting. The practical approach is a three-part one: size the pack from stall current rather than running current, protect it with a low-voltage cutoff or a battery management system, and separate the motor supply from the logic supply so brownouts cannot cascade. Get those three right and a lithium pack will last hundreds of cycles in a robot that drives, lifts, and occasionally jams.
Table of Contents
- Size the pack from stall current, not running current
- What actually kills a battery pack
- Separate the motor rail from the logic rail
- The protection hardware worth fitting
- Detect a stall before the pack pays for it
- Charging and storage habits
- Frequently Asked Questions
Size the pack from stall current, not running current
A DC motor draws its highest current at zero speed. When a wheel hits a wall or an arm reaches the end of its travel, back-EMF collapses and the motor pulls its stall current, which is routinely five to ten times its free-running draw. A gearmotor that sips 300 mA while rolling can ask for 2-3 A the instant it jams. Add the stall figures for every actuator that could plausibly bind at once, then compare that to the pack's continuous current rating.
For lithium polymer (LiPo) and lithium-ion packs, that rating is the capacity multiplied by the C-rating: a 2,000 mAh pack rated 10C can deliver roughly 20 A continuously, in principle. Treat the printed C-rating on cheap cells as optimistic and leave headroom. Headroom is not just about avoiding damage. A pack run near its limit sags in voltage under load, and voltage sag is what resets microcontrollers mid-task and makes a robot look like it has a software bug.
What actually kills a battery pack
Four failure modes cover most of it, and they are all avoidable with hardware you can buy for a few dollars: Puffing, a hot pack after a light run, or a pack whose cells read very different voltages are all signals to retire it rather than investigate further.
- **Over-discharge.** Lithium cells are nominally 3.7 V and fully charged at about 4.2 V. Taken below roughly 3.0 V per cell they lose capacity permanently; taken far lower they can plate copper internally and become a short-circuit risk. Your robot keeps running long after the pack has crossed that line.
- **Sustained over-current.** Pulling more than the cells can supply heats them internally. The damage is cumulative and invisible until the pack puffs or its runtime collapses.
- **Wrong-chemistry charging.** A charger set for the wrong cell count or chemistry is the single most dangerous mistake in the hobby. Lithium iron phosphate (LiFePO4) cells top out near 3.65 V, not 4.2 V.
- **Heat.** Charging a cold pack or storing a hot one accelerates aging. Lithium cells should not be charged below freezing.
Separate the motor rail from the logic rail
Motors are electrically noisy loads. They inject voltage spikes and droops onto whatever rail they share, and a microcontroller brownout detector will trip on a dip a motor driver shrugs off. The fix is to give the logic its own regulated supply rather than borrowing the motor rail. Two common arrangements work.
One pack feeding two paths — motors direct, logic through a buck converter sized for the microcontroller and sensors — is simplest and keeps a single charging routine. Two packs, one per rail, gives better isolation but means two things to charge and two states of charge to track. With either arrangement, tie the grounds together at one point so signals have a common reference, and put bulk capacitance across the motor driver's supply terminals to absorb switching transients. Never power a servo from a microcontroller board's onboard regulator; those regulators are specified for milliamps, and a servo under load wants amps.
The protection hardware worth fitting
A battery management system (BMS) is a small board that sits between the cells and the load. It cuts off on over-discharge, over-charge, and over-current, and on multi-cell packs it balances the cells so one weak cell cannot be dragged below its floor while the pack voltage still reads fine.
Most commercial lithium-ion packs include one; bare LiPo packs sold for RC use generally do not. Fit these, in rough order of value for the money: Firmware-level protection is the one that preserves capacity. A hardware cutoff is a last resort that stops the robot dead; a software check can slow down, retract an arm, and shut down cleanly at a cell voltage well above the damage threshold.
- A BMS or a low-voltage cutoff module matched to the cell count and chemistry.
- A fuse or resettable polyfuse sized just above your worst-case legitimate draw, so a short does not become a fire.
- A main power switch rated for the stall current, not the running current.
- A voltage divider into a spare analog input, so the robot's own firmware can stop and park before the hardware cutoff fires.
Detect a stall before the pack pays for it
A current sensor on the motor rail turns a stall from a slow-burn problem into an event your code can handle. Inline sensing modules report current as an analog voltage or over I2C, and a simple threshold-plus-timer rule catches the case that matters: current above the running range for longer than a motor's normal acceleration takes. The response should be to cut drive, not to push harder.
Reverse briefly, then report the fault. Firmware that retries a stalled motion indefinitely will cook both the motor and the pack, and burnt motor windings are often the first symptom rather than the battery. If a current sensor is out of scope, a timeout is a reasonable substitute. Give every commanded motion a maximum duration based on how long it takes when working, and treat an overrun as a stall.
Charging and storage habits
Use a balance charger that knows your chemistry, confirm the cell count before every charge, and charge at 1C or below unless the cells are explicitly rated for more. Charge on a non-flammable surface, away from anything that matters, and stay in the building. Store lithium packs at a partial charge rather than full. Most chemistry guidance puts long-term storage near 3.8 V per cell; a pack left at 4.2 V for months loses capacity faster than one left at storage voltage.
Many balance chargers have a dedicated storage mode that will either charge or discharge a pack to that point. Log runtime informally. A pack that used to give twenty minutes and now gives twelve is telling you its internal resistance has risen, which means more sag under load and a robot that behaves erratically before it behaves badly. Replace it then, rather than after it swells.
Frequently Asked Questions
Can I use alkaline AA batteries for a small robot?
For sensors and a microcontroller, yes. For motors, alkalines have high internal resistance and sag badly under load, so they are a poor fit for anything with a drivetrain. NiMH rechargeables in the same form factor handle motor loads far better.
Is a USB power bank a safe robot battery?
It is safe, but limited. Power banks enforce a current ceiling and often shut off when a motor's inrush trips their protection, and most output 5 V only. They suit sensor-and-compute robots, not motorized ones.
How do I pick between LiPo and LiFePO4?
LiPo gives more energy and current per gram, which matters for anything that flies or has to be light. LiFePO4 is heavier and lower voltage per cell but tolerates abuse better and has a longer cycle life, which suits a stationary or wheeled build where weight is not critical.
Does a brushless motor change the power requirements?
It changes the controller, not the arithmetic. A brushless motor still has a peak draw, and its electronic speed controller has its own current rating that must also exceed your worst case. Match the pack to whichever of the two is lower.



