One-sentence summary
To run a robot you need the right voltage, enough current and a suitable battery pack; the motors are usually powered from a separate source, and every part is tied together through a common GND.
Why does it matter?
In the previous lesson we saw how wheels, gears and torque make a robot move. But no wheel turns by itself. The motors, the board and the sensors all need a source of energy, and choosing that source wrongly is one of the most common problems in robotics.
With the wrong power choice, a robot either does not run, stops after a few seconds, or, at worst, overheats a part and breaks it. A correct power plan keeps the robot running smoothly, longer and safely. This lesson teaches the three questions you must answer before you spin a single motor: How many volts? How many amps? For how long?
How much power does a robot need?
We can compare electricity to a water pipe. Voltage is the pressure that pushes the water; current (amps) is how much water flows through the pipe. Every part has its own pressure and flow needs.
Voltage: choosing the right level
Every component has a voltage range it wants in order to work. Think of the number printed on a light bulb: plug in the wrong voltage and it either will not light or it burns out.
- An Arduino Uno usually runs on 5 volts and accepts 7–12 volts through its VIN input.
- A small DC motor turns happily on 3–6 volts.
- A servo motor most often wants 4.8–6 volts.
If you give a part more voltage than it asks for, it can overheat and break. If you give it less, it either will not run or stays weak. That is why, before choosing a battery, you check the label or the maker's document for every part.
Current: supplying enough amps
Even with the right voltage, the robot will not run if the battery cannot supply enough current. Think of a tap: the pressure may be high, but if the pipe is thin, not enough water flows.
Motors, especially the moment they start moving, draw far more current than you might expect. A motor that draws 0.2 amps while idling can climb above 1 amp when its wheel jams against an obstacle and is forced (this is called the stall current).
A simple rule: work out the total current the robot needs, then choose a slightly stronger source with some margin. A battery that is right on the edge will reset the robot the moment a motor is under load.
Two concrete examples:
- Example 1 — a small line-following robot: two mini DC motors + an Arduino + two light sensors. When we measure, the total need comes to about 0.8 amps. Four AA batteries (6 volts, enough current) is a suitable choice.
- Example 2 — a robot with a servo arm: the servo can briefly draw 1 amp as it moves. Instead of AA batteries, a pack that can deliver higher current is preferred; otherwise the Arduino resets while the servo is moving.
Powering the motors separately and the common GND
So far we have talked about a single battery. But good robots usually have two power lines: one for the board and one for the motors.
Why are motors powered separately?
As motors turn, they create sudden dips and noise on the electrical line. Those dips can reset an Arduino fed from the same line, or spoil the sensor readings. On top of that, the Arduino's pins cannot supply enough current to turn a motor; if you try, the pin burns out.
The solution has two parts:
- Use a motor driver: the Arduino does not power the motor directly; it only tells the driver "turn" with a small current, and the driver passes the strong current on to the motor. (We will look at drivers in the next lesson.)
- Give the motors a separate battery pack: the noisy motor power is kept apart from the board's clean power.
Why is a common GND (ground) essential?
When you use two separate batteries, one rule is never forgotten: the GND (minus / ground) terminals of both sources must be joined together. This is called a common ground.
Think of it as two people agreeing on the same sentence. When the Arduino says "5 volts", it measures against a reference point, and the motor driver measures against its own reference too. If you do not join the GNDs, the two sides use different zero points, the command signals become meaningless, and the robot behaves randomly or does not run at all.
A simple wiring sketch:
[Board battery 7–9V] ──> Arduino VIN
Arduino GND ──┐
├── COMMON GND (all joined)
[Motor battery 6V] ──> Driver VMOT │
Driver GND ──────┘
Arduino signal pin ──> Driver input pin
Driver output ──> Motor
The board sends the Arduino a "direction and speed" signal; the motor's actual power comes from the separate battery; the common GND lets the two speak the same language.
Battery types and battery life
Common battery options
- AA battery pack: easy to find, cheap and safe. Four in series give 6 volts. Good for starter projects; it drains quickly under high current.
- 9V block battery: small and handy, but it supplies little current. It can power an Arduino but cannot power motors. This is a common mistake.
- Rechargeable NiMH pack: similar to AA batteries but recharged again and again. It is more economical for longer projects.
- LiPo battery: very powerful, but dangerous if used incorrectly; it heats up and can catch fire. In this academy, LiPo is recommended only with adult supervision and a special charger.
How is battery life worked out?
Batteries have a capacity value printed on them, measured in mAh (milliamp-hours). It tells you how much current the battery can supply and for how long.
Rough estimate: Time (hours) ≈ Capacity (mAh) ÷ Current the robot draws (mA)
Example: you have a battery pack rated at 2000 mAh. Your robot draws about 500 mA (0.5 amps) on average.
Time ≈ 2000 mAh ÷ 500 mA = 4 hours (approximately)
This is only an estimate; as a motor is put under load the current rises and the time shortens. Even so, doing this sum before choosing a battery stops your robot from dying in the middle of a demo.
The robot can also notice a low battery by itself. We can read the battery voltage on an analog pin and give a warning:
// Read the battery voltage and warn with an LED if it is low
int reading = analogRead(A0); // measurement of the battery voltage
float volts = reading * (5.0 / 1023); // convert to a 0–5V value
if (volts < 3.3) { // if the battery is weak
digitalWrite(13, HIGH); // turn on the warning LED
} else {
digitalWrite(13, LOW); // battery is fine
}
Note: if the battery voltage is higher than 5 volts, do not connect it straight to the pin; you must divide the voltage with two resistors (a voltage divider). Otherwise the Arduino pin is damaged.
Mini activity
Goal: design a power plan for your own robot. Do it on paper, without writing any code.
Steps
- List the parts on your robot (board, sensors, motors, servo).
- Write down the voltage each part wants.
- Write down the approximate current need of each part and add them up.
- Draw a separate battery line for the motors.
- Mark the common GND point that joins the GNDs of the two lines.
- Choose a battery capacity and work out the estimated battery life.
Example output
Board line : Arduino + 2 sensors -> 7.4V, ~120 mA
Motor line : 2 DC motors -> 6V, ~800 mA
Common GND : the (-) terminals of both batteries joined
Motor batt.: 2000 mAh -> Time ≈ 2000 ÷ 800 = 2.5 hours
Questions to think about
- If a motor is put under load, does the current rise or fall? How does this affect battery life?
- Why is a 9V block battery a poor choice for powering motors?
- If you forget the common GND, how does the robot behave?
Common mistakes
Giving the wrong voltage
Connecting 12 volts to a 5-volt part can burn it out. Always check the label and the maker's document first.
Powering the motor and the board from one battery
When the motor runs, the voltage dips and the Arduino resets. Use a separate battery and a motor driver for the motors.
Forgetting the common GND
If you use two separate batteries and do not join their GNDs, the robot behaves randomly or does not run at all. A common GND is always required.
Not accounting for current
Even with the right voltage, if the battery cannot supply enough current the robot stays weak or stops. Remember the start-up and stall current too.
Ignoring the short-circuit risk
If a battery's plus and minus terminals touch each other through a bare wire or metal, that is a short circuit; the battery gets very hot. Keep the wiring tidy and insulate any bare ends.
Safety note
When working with moving robots, safety comes first.
- Use only low voltage. Every activity in these lessons uses a battery pack at low voltage. Never touch a socket, mains electricity or exposed wiring.
- Choose the correct voltage. Do not give a part more voltage than its label; it can overheat, break, or even catch fire.
- Avoid short circuits. Do not let a battery's terminals touch each other; insulate bare wires. Disconnect a battery that is heating up right away and tell an adult.
- Clear the test area. Try the robot on a flat, empty surface at low speed; keep fingers, hair and cables away from the wheels and gears.
- Adult supervision. Be with an adult for any work involving batteries, motors, soldering, cutting tools or hot surfaces. If a LiPo battery is used, a special charger and adult supervision are essential.
Lesson summary
- Every robot part has a voltage and a current need; both must be right.
- Motors draw a lot of current at start-up and under load; choose a source with some margin.
- Motors are usually powered from a separate battery and a motor driver, apart from the board.
- When two power sources are used, their GNDs must always be joined together (common GND).
- Battery life is roughly estimated by capacity (mAh) ÷ current drawn (mA).
Check questions
- Explain the difference between voltage and current using the water-pipe example.
- What can happen if we give a motor more voltage than it asks for?
- Why are motors powered from a separate battery, apart from the board?
- What is a common GND (common ground), and why is it needed?
- About how many hours will a 2500 mAh battery run a robot that draws 500 mA?
Answers
- Voltage is like the pressure that pushes the water; current is like how much water flows through the pipe. Voltage says "how hard it pushes", current says "how much flows".
- The part can overheat, break, or even catch fire. That is why we stick to the label value.
- As motors turn they create sudden dips and noise on the line; a board fed from the same line can reset. Also, the board's pins cannot supply the current a motor needs.
- It is the joining of the minus (ground) terminals of two power sources. That way both sides use the same reference point and the signals make sense; without it, the robot behaves randomly.
- Time ≈ 2500 ÷ 500 = about 5 hours (this shortens as the motor is put under load).
Source and verification note
For “Choosing a Power Source”, verification focuses on whether the relationship between How much power does a robot need? and Current: supplying enough amps remains consistent across examples. Robot behaviour cannot be explained by code alone; mechanical structure, power system, sensor placement and surface conditions must be evaluated together. Test results should be recorded over several runs on the same course.
Next lesson
Motors and Drivers — Learn how motors work and how a motor driver lets us guide a strong current safely.