Component · Power
Robot Battery & Power Pack
How to power a robot car: why a 9V block sags under motors, choosing an AA or 18650 pack, and keeping the motor and logic rails from resetting the board.
What it is
The power pack is the part beginners think least about and get wrong most often. It is simply the battery that feeds current to the motors and the electronics—but choose it badly and the robot twitches, resets, or refuses to move, no matter how good the code is. Getting power right is often the difference between a robot that runs and one that keeps rebooting.
The key idea is that a robot has two very different appetites for current: the motors gulp it in surges, and the logic sips it steadily. One battery can feed both, but they must be arranged so the greedy motors don’t starve the sensitive brain.
How it works
Follow the current from the pack:
- The battery supplies raw voltage—6 V from four AAs, 7.4 V from two 18650s.
- The motor rail runs straight from the pack into the L298N driver’s Vin. This is where the heavy, surging motor current comes from—kept off the Arduino entirely.
- The logic rail is a regulated 5 V (from the driver’s onboard regulator or over USB) that powers the Arduino and sensors with a clean, steady voltage.
- A common ground ties everything together. Every rail must share the same ground line, or the logic signals have no shared reference and readings become meaningless.
Split this way, a motor drawing a sudden amp can sag its own rail without dragging the Arduino’s 5 V down with it.
Why a 9 V block fails
The single most common first-robot mistake is powering the motors from a rectangular 9 V PP3 battery. It looks convenient, but it holds very little energy and has high internal resistance. The instant the motors draw current, its voltage collapses—the Arduino dips below its minimum and resets, so the robot lurches and reboots in a loop. A 9 V block is fine for a breadboard sipping milliamps; it is the wrong choice for anything that drives wheels.
Choosing and wiring
- Match voltage to the motors. 3–6 V motors are happy on a 6 V or 7.4 V pack; use PWM to tame the speed rather than under-volting the pack.
- Capacity is runtime. Higher mAh means longer between charges; 18650 cells last far longer than AAs but need a protected holder.
- One switch, correct polarity. Add a master switch on the pack and double-check polarity before first power-up—reversed power can kill a board instantly.
- Don’t back-feed. Avoid powering the Arduino from USB and the battery at the same time unless the board is designed for it.
- Add a bulk capacitor across the motor supply to soak up the start-up surge and steady the rail.
Explore the graph
Used in these builds
Projects, learning paths, and simulators that include the Robot Battery & Power Pack.
- ProjectBuild a 4-DOF Robot Arm: PCA9685, Servos, and Kinematics
- ProjectBuild a Line Follower Robot: From Simulator to Real Track
- ProjectBuild a Line Maze Solver Robot With LSRB Route Memory
- ProjectBuild a Micromouse: A Flood-Fill Maze-Solving Robot
- ProjectBuild a Phone-Controlled Robot Car Over Bluetooth or Wi-Fi
- ProjectBuild a ROS 2 Robot That Sees and Drives to a Marker
- ProjectBuild a Self-Balancing Robot With an MPU6050 and PID
- ProjectBuild an Obstacle-Avoiding Robot: Sense, Scan, and Steer
Questions
Robot Battery & Power Pack FAQ
What battery should I use for an Arduino robot car?
A 4×AA pack (6 V) or a 2×18650 pack (7.4 V) feeding the motor driver is the standard choice. Both deliver the current the motors need without collapsing under load. Power the Arduino from the driver's regulated 5 V output or over USB while you develop.
Can I power a robot's motors with a 9 V battery?
Not well. A 9 V PP3 block has very little capacity and high internal resistance, so the moment the motors draw current its voltage sags and the Arduino browns out and resets. Use an AA or 18650 pack for anything with motors; save the 9 V block for a breadboard.
Do the Arduino and motors share the same battery?
They usually share one pack, but on separate rails. The motors draw from the pack through the driver's Vin terminal; the logic runs on a regulated 5 V. Critically, every supply must share a common ground, or your signals have no shared reference and nothing reads correctly.
Why does my robot reset when the motors start?
Because starting motors briefly pull a big surge of current, dipping the shared voltage below what the Arduino needs, so it reboots. Fixes are a stiffer battery, separate motor and logic rails from the same pack, and a capacitor across the motor supply to absorb the surge.
Further reading