← Back to Troubleshooting

Why Your Arduino is Resetting (The 5V Motor Power Trap)

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 Problem: Current Draw and the Voltage Regulator

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:

  1. The Voltage Drops (Brownout): The 5V line suddenly sags down to 3V or 2V.
  2. The Brain Dies: The ATmega328P chip on the Arduino needs at least 4.5V to stay alive at 16MHz. When the voltage drops, the chip panics and resets itself.
  3. The Magic Smoke: If the regulator tries to supply too much current for too long, it overheats and literally burns out, taking your $25 board with it.

The Solution: External Power Supplies

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.

Step 1: Get a Beefy Power Supply

Use a dedicated power supply for your motors. This could be:

Step 2: Wire the Power

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.

Step 3: Share the Ground (Crucial!)

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.

Quick Checklist for Motor Wiring

Stop torturing your Arduino’s voltage regulator. Give your motors the juice they deserve, and keep your microcontroller happy and smoke-free.