We’ve all been there. You just hooked up a nice little DC motor or a beefy servo to your Arduino. You wrote the code, you clicked upload, and you’re ready to watch your creation come to life. You hear a sad little whirrr, the LED on the Arduino dims, the board resets, your USB connection drops, and maybe—just maybe—you smell the faintest scent of burning plastic.
Congratulations! You’ve just discovered the hard way that an Arduino is a brain, not a muscle.
Trying to power a motor directly from the Arduino’s 5V pin is like trying to jump-start a dump truck using a 9V battery and sheer optimism. It doesn’t work, it usually breaks things, and it makes you look foolish in front of your cat. Here’s why it happens and how to actually fix it.
The Arduino Uno uses a tiny onboard linear voltage regulator to step down whatever voltage you feed into the barrel jack (usually 7-12V) down to a stable 5V.
This regulator is designed to power the microcontroller chip itself, some LEDs, and maybe a small sensor or two. It is rated for roughly 500mA to 800mA max (and even less if you are powering it via USB, which often caps out around 500mA).
When a DC motor or a servo starts moving—or worse, when it is stalled or under heavy load—it can easily pull 1 Amp (1000mA) to 2+ Amps.
When your motor asks for 2 Amps and the Arduino can only give 0.5 Amps, physics takes over:
To fix this, you need to separate the logic power (the brain) from the motor power (the muscle). You do this by using an external power supply for the motors and connecting the Grounds.
Use a dedicated power supply for your motors. This could be:
Connect the positive (+) wire of your battery/power supply directly to the positive power input of your motor or motor driver (like the L298N Module). Do not connect this positive wire to the Arduino’s 5V pin.
This is where 90% of beginners mess up. You must connect the Ground (-) of your external battery to the Ground (GND) pin on your Arduino.
If you don’t share the grounds, the control signals from your Arduino to the motor driver won’t have a common reference point, and your motors will just sit there twitching like they’ve had too much coffee.
Stop torturing your Arduino’s voltage regulator. Give your motors the juice they deserve, and keep your microcontroller happy and smoke-free.