Getting the robotic arm power supply right is the difference between smooth, repeatable motion and a board that randomly resets every time two joints move together. The single most common beginner mistake is trying to run the servos from the microcontroller’s 5V pin, so let’s fix that first and then size a proper supply.
Never Power Servos From the Arduino or Pi 5V Pin
The 5V pin on an Arduino Uno or a Raspberry Pi is fed by a small onboard regulator meant for logic, sensors, and an LED or two. It can typically source only a few hundred milliamps. A single hobby servo can pull 0.5-2.5A at stall, and a 6-DOF arm with all joints loaded can easily demand 6-10A.
When you exceed what that regulator can provide, the rail collapses. The processor sees its supply dip below the brownout threshold and either resets or behaves erratically. In the worst case you overheat the regulator and damage the board permanently.
Safety tip: The servo power and the logic power should be two separate supplies. The microcontroller powers the brains; a dedicated robotic arm power supply powers the muscle.
If you are still choosing actuators, the servo motors for robotic arms guide covers torque and current ratings you’ll need before sizing anything below.
Estimate Total Current From Stall Draw
Servos are rated by their stall current — the current drawn when the motor is fighting maximum load and not turning. This is the worst case, and it is what you must design for, because gravity loads an arm’s joints whenever it holds a position.
The formula is simple:
Total current = (per-servo stall current) x (number of servos) + 30-50% headroom
Assume all servos can stall at once, even if they rarely do in practice. The headroom covers inrush at startup and keeps your supply from running at 100% continuously.
| Servos | Type (example stall) | Worst-case draw | Recommended supply |
|---|---|---|---|
| 1-2 | Micro SG90 (~0.7A) | ~1.4A | 5V 3A |
| 4 | Standard MG996R (~1.5A) | ~6A | 5-6V 10A |
| 6 | Standard MG996R (~2.5A) | ~15A | 6V 20A |
| 6 | High-torque (~3A) | ~18A | 6V 25-30A |
These are ceilings, not typical operating numbers. A bench supply or UBEC rated to the worst case will simply coast under normal load, which is exactly what you want.
Choose a Voltage and a Supply
Pick voltage first. Most hobby servos are happy on 5-6V; running at 6V gives a noticeable torque and speed boost over 5V, but never exceed your servo’s datasheet maximum. High-voltage (HV) servos accept 7.4V from a 2S LiPo directly.
Then choose a supply that delivers your worst-case current at that voltage:
- Bench power supply — best for a tethered desktop arm. Set it to 5-6V, enable a sensible current limit, and you get adjustable, protected power for testing. See the how to build a robotic arm walkthrough for where this fits in the build.
- UBEC / BEC — a switching regulator that steps a battery down to a clean, high-current 5-6V. A 5A or 8A UBEC is the standard choice for powering servos in an Arduino arm.
- Buck converter — a step-down DC-DC module from a higher-voltage battery. Choose one rated comfortably above your stall total; cheap buck modules overstate their ratings, so derate by half.
The Critical Common-Ground Rule
This trips up nearly everyone. Your servo control signal is referenced to ground, so the servo power supply ground and the microcontroller ground must be connected. If they float independently, the PWM signal has no stable reference and the servos twitch, ignore commands, or jitter.
- Run servo V+ from the dedicated supply to the servo power rail.
- Run the microcontroller’s signal pins to each servo’s signal wire.
- Tie the supply ground, the microcontroller ground, and the servo ground rail together at one point.
Wire the power rail with thick wire (at least 18 AWG for a multi-servo arm). Thin jumper wires add resistance, drop voltage under load, and reintroduce the sag you’re trying to eliminate.
The Arduino robotic arm guide shows this wiring on a breadboard, and the matching Arduino robotic arm code handles sequencing motion so fewer joints stall simultaneously.
Add a Bulk Capacitor to Stop Brownouts
Even a correctly sized supply has wiring inductance and response lag. When several servos start at once, they pull a sudden current spike faster than the supply can react, and the rail dips. A 470-1000uF electrolytic capacitor across the servo power rail (V+ to ground, observing polarity) acts as a local energy reservoir, smoothing those spikes.
Place it as close to the servos as practical — ideally right at the power rail on your driver board or breadboard. This one cheap part eliminates a surprising amount of jitter and many random resets.
Polarity matters: the capacitor’s negative leg (the stripe) goes to ground. Reversing an electrolytic capacitor can make it vent or pop.
Battery Options for Untethered Arms
To cut the cord, the standard recipe is a 2S LiPo (7.4V nominal) feeding a buck converter or UBEC that outputs 5-6V to the servos. The LiPo holds voltage well under heavy current draw, and the converter regulates it down cleanly.
- Size the converter to your worst-case stall total, with headroom.
- Add a battery low-voltage alarm; a 2S LiPo should not be discharged below ~6.0V (3.0V per cell).
- Keep the logic supply separate or tap a small regulator off the same battery — and still tie all grounds together.
For arms built around steppers instead of servos, power sizing differs since stepper current is set by the driver; the robot arm stepper motor guide covers that case.
Troubleshooting: Symptoms to Causes
| Symptom | Likely cause | Fix |
|---|---|---|
| Board randomly resets when servos move | Servos drawing from logic rail, or supply browning out | Separate servo supply; size to stall total + headroom |
| Constant jitter / twitching | Missing common ground, or noisy rail | Tie all grounds together; add 470-1000uF capacitor |
| Servos work alone but fail together | Supply or wiring can’t deliver combined current | Bigger supply, thicker 18 AWG wire |
| Joints sag or feel weak | Voltage sag under load; undersized supply | Raise to 6V (within rating), add headroom |
| Servos buzz and get hot at rest | Voltage too high or mechanical binding | Verify voltage against datasheet; reduce load |
Work the table top to bottom: confirm a separate, correctly sized supply, verify the common ground, then add the bulk capacitor. Those three fixes resolve the overwhelming majority of robotic arm power problems. For issues beyond power — jitter, drift, weak grip, I2C errors — the full troubleshooting guide covers the rest.
Frequently asked questions
Can I power servos directly from the Arduino 5V pin?
No. The onboard regulator can only supply a few hundred milliamps, while a single hobby servo can draw 0.5-2.5A at stall. Multiple servos will brown out the regulator and reset or damage your board. Use a separate 5-6V supply for the servos and only share the ground.
What voltage should a robotic arm power supply be?
Most hobby servos run on 4.8-6V, so a regulated 5V or 6V supply is standard. Higher-torque or HV servos accept 7.4V (2S LiPo). Always check your servo's datasheet before exceeding 6V, since overvoltage will cook the motor and electronics.
Why does my robotic arm jitter or reset when several servos move at once?
That is almost always a power problem: the supply or wiring cannot deliver the combined stall current, so the rail voltage sags. Fix it with a larger supply (sized to total stall current plus 30-50 percent headroom), thicker power wires, a common ground, and a 470-1000uF bulk capacitor across the servo rail.