I am using a Arduino MKR 1010 Wifi board to control 4 servo (PS-1109MG). All the circuit is powered by 4 AA rechargeable batteries (1.2V * 4). Arduino is powered through the Vin port.

Below is a circuit just to show how they are connected (board type and other details is not correct). circuit

When all the servos move, the arduino's LED oscillates in intensity. I deduced that the servos have a high instantaneous current consumption and the voltage of the batteries drops too much. I measured this with an oscilloscope.

scope image

The voltage drops to around 4V when the servos try to move. When the Arduino MKR is powered from the usb port and the servos from the batteries, everything works fine.

How can I reduce the voltage drop on the batteries, to use them as the only power source? Could I use some electrolytic capacitors to reduce the voltage drop?

  • AA is too little for your current needs. Use more in parallel or get bigger batteries.
    – Abel
    Oct 14, 2022 at 12:14
  • 2
    Why does this question have a down vote?
    – st2000
    Oct 14, 2022 at 21:41

3 Answers 3


You have a 1V drop from about 5V or a 25% load regulation error you know that you have excessive load and for active servos this is a result of the DC coil resistance of the motors that are active.

  • If you knew the motor coil resistance then for a transient servo seek, the surge voltage drop can be predicted from the ratio of the load to total resistance (Load+Rs of batteries)
  • the main Rule of Thumb to learn is the series resistance adds with batteries in series and reduces with batteries in parallel and thus larger capacity. So you expect the product or Rs and Ah to be constant within some family of same chemistry and brand name.

But there may be sources of deviations to test results so the method must be specified or the same to compare.

  • the Rs of batteries rises sharply as state of charge SoC drops below 10% and gradually with repeated sweep tests but lowers gradually with rising temperature.

Let's compare different brands of NiMH (AA vs C) and see how close this is. You can try your own plots to measure the slope of bulk resistance from the VI plots ΔV / ΔI = Rs [Ω]

  1. https://eneloop101.com/batteries/eneloop-test-results/
  2. https://lygte-info.dk/review/batteries2012/Enesense%20C%204300mAh%20%28White%29%20UK.html
  3. http://lygte-info.dk/review/batteries2012/Eneloop%20AA%20BK-3MCCE%201900mAh%20(White)%20UK.html

enter image description here

This means changing these products from AA to C results in 31% Rs which equates to a voltage drop and 226% of the AA's Ah capacity.

Eneloop is known to be a reliable high-performance NiMH brand. Your batteries may have less performance. You can measure your motor resistance and see if upgrading size or quality and/or cost of batteries to get the performance you need.

The LED fluctuation is a different problem from not using a constant current driver.

  • Thank you for suggestions. I will try to use a different battery for Arduino, so signal generated board is not affected by voltage drop. I will also consider to use a 2S LiPo with DC DC step down module.
    – Adrian
    Oct 17, 2022 at 8:51
  • Do not use a SMPS unless it can handle the surge current of X Amps. It is always better to match the battery and motor voltage. Even 2 LiPo in parallel is better than using a buck regulator for burst current with undervoltage cut-out . OR Use better NiMH like Enerloop might be best if your ESR is much higher meaning lower Ah capacity like 800 mAh Oct 17, 2022 at 16:20

Consider several options:

  1. Larger batteries. The type of battery was not specified. For comparison a NiMH AA is on average about 800 mAh where a NiMH D is on average about 6600 mAh.
  2. Use two sets of batteries. Connect both battery grounds, all the servo grounds and the Arduino ground together. Only connect the positive of one set of batteries to the Arduino. Only connect the positive of the other set of batteries to the servos. Do not connect the positive Arduino terminal with the positive servo terminals!
  3. Using software, only operate one servo at a time. Some (most) servos will stop moving if the position pulse is not seen by the servo.
  • Thank you for suggestions. I use GP ReCyko Pro Photoflash 2000mAh.
    – Adrian
    Oct 17, 2022 at 8:45
  • Two Amp Hours does sound good. Still, your problems does sound like you are exceeding the capacity of your power source. At such a point, I usually try to verify this by using a ridiculously large power source. The advantage of going this route ... if the problem still exists ... then you are fairly sure the power source is not the problem.
    – st2000
    Oct 17, 2022 at 20:25

Welcome! You picked a good place to connect the batteries when fully charged but it is the wrong place. You can use the Vin pin to Power your Arduino with an regulated or unregulated 7 to 12-volt power source. Like several AA batteries in series or a wall adapter that is in the range of 7 to 12 volts. Alternatively, you can power your Arduino through the 5V pin with an external regulated 5V power supply. Leave the 9V batteries for the smoke detectors they do not work very well.

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.