I am driving motors for my line-follower project . The circuit schematic is given below Circuit schematic

The power source is a 11.1V 2200mAh 25C Lipo . Practically the cells give 11.5-12V. I used a switching buck regulator to step down the voltage. However , when i run my robot on track after few seconds,the arduino tends to reset and run again. This problem typically arises when i drive the motors at higher PWM(above 180 on analogWrite function). Since i use PID, limiting the PWM means i have to drive at lower speeds which i do not want.

I am providing links for the items i used for my circuit:

  1. buck converter;

  2. motor driver;

  3. IR sensor module;

  4. DC motors.

The sensor array draws 150mA at peak. Any suggestions as to where the problem might lie would be of great help. Thank you .

EDIT 1: Changed the input voltage Vin to 7.9V through the buck converter . The problem still persists .

  • The buck converter is producing 5.5 V? That may be too low for the VIN input on Arduino, where the voltage regulator needs at least 7 V and is therefore causing brown-out.
    – MichaelT
    Commented Mar 24, 2019 at 22:08

5 Answers 5


The VIN pin goes to a 5V voltage regulator on the Arduino and needs at least about 7V minimum to work properly. If you want to supply 5V to an Arduino do it either on the 5V pin or via the USB connector. The VIN pin should receive 7V to 12V.

  • This is the correct answer. VIN a high enough voltage to be regulated down to 5V. I suggest feeding 5V into your USB connector. That way you don't bypass the source switching and protection circuitry on the Arduino.
    – Duncan C
    Commented Mar 24, 2019 at 21:40
  • @DuncanC Doesn't the USB connector also have a regulator, or does it expect that the USB can consistently provide 5V?
    – MindS1
    Commented Mar 25, 2019 at 4:26
  • @MindS1, read store.arduino.cc/mega-2560-r3
    – Juraj
    Commented Mar 25, 2019 at 5:35
  • No, USB provides regulated 5V, and is fed through some logic and current limiting circuits to the +5V rail. The Arduino uses a linear regulator, which needs a couple of volts more than it's target voltage. (IT works by applying a variable resistance to the input, converting the excess voltage to heat. )
    – Duncan C
    Commented Mar 25, 2019 at 12:24
  • You might get away with feeding 5V into the VIN if you draw VERY low current from it, and if there is no voltage sag, but it's not recommended.
    – Duncan C
    Commented Mar 25, 2019 at 12:25

Resetting is due either to a software bug or voltage sag, and since it correlates with driving the motors harder, it's almost certainly the latter. You probably suspected as much since you mentioned the current draw of the sensor array. A quick experiment - disconnecting the sensors (and possibly a software patch to keep the robot running straight, without them) might help you discover the reason.

Each chip and each of its pin drivers has a current budget. It would be a good idea to look at the max current spec of the Atmega2560 and its pin drivers, and any other current specs mentioned in the datasheet, and make sure you're not trying to run it out of spec. The buck converter will have a limit, too, so make sure you're within its spec. If the output regulation of the buck converter is good enough, you can regulate it to 5v and bypass the Mega's on board regulator, for another saving.


One major drawback to working with motors is the large amounts of electrical noise they produce. This noise can interfere with your sensors and can even impair your microcontroller by causing voltage dips on your regulated power line. Large enough voltage dips can corrupt the data in microcontroller registers or cause the microcontroller to reset. You can avoid this problem by soldering capacitors along your motor terminals. Use 1µF ceramic capacitors for example

  • Why the down-vote? Everything in this answer is good advice. Motors introduce a lot of noise on the power input. Adding filter capacitors is a very good idea. (That said, the biggest problem is likely too low an input voltage to VIN)
    – Duncan C
    Commented Mar 24, 2019 at 22:27
  • I've experienced this myself too. Also vibration causing wires to become loose.
    – Kingsley
    Commented Mar 25, 2019 at 2:39
  • This might be a good idea . I noticed the voltage up/down surge problems on start-up initially or after breaking . On which type of motors do you use these capacitors ? Do they affect the motor performance ?
    – Healer77Om
    Commented Mar 26, 2019 at 3:53
  • @user9999114 On brush motors mostly. They don't have an affect (that I one could notice) on the motor perfomance Commented Mar 26, 2019 at 20:13

This is the common issue when trying to connect power and digital circuits together. Probably, when motor starts, there is a short-time voltage drop in Vin due to high motor start current. Consider to use Schottky diode and capacitor to protect digital power circuit from transitional currents.enter image description here


You should either feed the 5.5v from the buck converter to the 5v pin of the arduino, or the 11.5v to the Vin. The arduino board contains its own 5v converter (and a 3.3v but that's not in question here). That takes the voltage of the Vin pin and converts it to 5v for the board to use. This regulated 5 v is available on the 5v pin for your sensors for example.

You can also power it directly on the 5v pin, but that requires regulated 5v. This is also how it is powered through USB which supplied regulated 5 v.

The 5.5 v from your buck should be fine for this, by you don't need it. Put the "raw" 11.5 to the Vin pin.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.