Electronic – arduino – Inrush current from DC motors causing Arduino to reset

arduinocurrentinrush-current

I've got an Arduino controlling a relay. The relay controls two small DC motors. All of these components are powered through a 9v power regulator. I need the power regulator because the power source is a 16 volt battery, which would fry the motors and arduino if I connected them directly.

When the Arduino powers on the relay is initially open so the motors are powered off. The problem comes when the Arduino switches on the relay and motors start. The inrush current overloads the regulator and as a result, the Arduino loses voltage and resets. I have determined from experimentation that the regulator has enough ampacity to handle the DC motors at steady state, it's just the inrush that is the problem.

I am very inexperienced in this area, so it's not clear to me how to solve this problem. Might I use a capacitor to provide power to the arduino during the inrush period? Or maybe a capacitor could be charged up and provide power to motors on startup? Or maybe capacitors aren't the answer?

Using a voltmeter (on amp mode) it looked like the DC motors pulled about 1.5 amps on startup, and then went down to 0.5 amps on steady state.

Whatever the answer, a detailed explanation of wiring would be helpful, as well as what numbers I need to consider when picking out a capacitor or whatever it is I need to buy.

Best Answer

This comes up a lot.

Yes, it may well be exactly what you say, in which case the answer is another regulator just for the Arduino. It's funny, I once went in backflips trying to find a way to share the reg, and then I found out the regulator was a $4 part... forehead slap

But what also gets people is voltage drop on the wires from the regulator or battery to the motors+Arduino. Usually it's like this (and this is about distribution, so 1 line represents 2 wires)

                                                             /- Arduino
   Batt -- Reg ---------------------------------------------<
                                                             \- Motor

So you see the recipe for disaster. Even if the reg can deliver the current, when the motors are at Locked Rotor Amperage on startup, that's kicking a big voltage drop down whatever piddly 18 AWG wire the hobbyist happened to grab for that long run.

This means, don't do this

                                                        /- Reg -- Arduino    NO
   Batt -----------------------------------------------<                     NO
                                                        \- Reg -- Motor      NO

Do this

          /----------------------------------------------- Reg -- Arduino
   Batt -<
          \----------------------------------------------- Reg -- Motor