Arduino restarts when DC motors are turned on


My robot's various circuits (sensor arrays, motor controller, indicators+LCD, Arduino, ..) are powered form the single supply point via dedicated voltage regulators -78xx (with decoupling capacitors). When I make Arduino turn on the DC motors, it restarts. (If the Arduino is powered from USB -no problem).

Arduino model: Mega2560
Power supply: 7.5V from a power regulator (Imax > 2A)

Motor controller circuit
IC: L298
V. regulator: L7809CV (Imax = 1.5A)
Decoupling capacitors: 0.47uF & 3.3uF at IN and 0.1uF at OUT
Motors: 2 x DC 9V cassette motors

I think the fairly large current draw from motors at start up makes the Arduino's supply go wonky. Will it help if I added ..maybe a 220uF cap at IN of Motor controller's regulator? Or is it something else?


Try starting them using PWM on the EN pins of the L298.

I do this with my L293D: instead of simply setting EN to high when I want to turn on the motors, I use PWM on the EN pin (that's why I had the L293D EN1 and EN2 pins connected to PWM pins on the Arduino).

I AM using PWM to drive the motors.

Yes try a big capacitor on the motor supply rail.
You say your supply is 7.5V but you use a 7809 regulator, do you have a DC/DC converter somewhere to convert the 7.5V to something greater than 9V to feed the regulator?

Thanks you for the reply! :slight_smile:
What value of cap would you suggest?

No actually, I temporarily lowered voltage down to 7.5V because a couple of 7805s (in different sections) started heating up rather rapidly (@12V and to a lesser extent @9V) and I don't have decent heat-sinks to fit inside the cramped space of the chassis. Could this be the cause of my problem?

try 100 or 220 uF

Well you've got a problem because the 7809 is supposed to regulate a voltage higher than 11V to 9V but you're feeding it 7.5V, you could remove it completely since it's just in the way.

And I dont't think the L298 has flywheel diodes, did you add some?

I'm going to change the supply back to 9V or 12V once I can find heat-sinks that will fit inside the chassis and have decent cooling properties.

Yes, a bunch of 4148s.

Hi, you may also be getting other types of EMI (Electro Magnetic Interference)

There are some hints on the http://ArduinoInfo.Info WIKI here:

Its likely the motor start-up current spike is pulling the supply down to about 0V briefly.

Simplest solution: use a separate supply for the motor(s).

I still haven't got around to fixing it. :stuck_out_tongue:
If adding a cap doesn't work, I'll focus on further reducing EMI. Using two sources though is out of the question.

Thank you for the suggestions!

If adding a cap doesn't work, I'll focus on further reducing EMI. Using two sources though is out of the question.

I doubt that the above will fix your problem. You might consider getting two UBECs on ebay for powering the arduino and motors from the same power source. I use the below setup to prevent the servos from causing a low voltage drop out of the servo chip when the servo motors start.