Will powerful Capacitor between 5v and Gnd damage the voltage regulator?

Hi,
I'm using Arduino Nano with a 2A power supply that provides ~5.5VDC. Its working fine when connected to Vin and GND, but it burns my RTC when connected to 5V. I am using a relay circuit to power a pump that draws 1A from the same power supply. My problem is that the voltage drop when the pump starts is so big that the Arduino restarts making the whole system unusable. So I bought 16V 10 000uF electrolytic capacitor. I want to place it between 5V and GND on the Arduino to support it during pump start. My question is if this is OK or I should add a diode between 5V and Vin?

Other solution is to connect a shotky diode between the power supply and Vin and than connect the cap between Vin and GND.

Appreciate any feedback.

That's gonna cause a large current surge to charge up initially. Might want to check the regulator spec to see if a protection diode from output to input is needed - some regulators aren't happy if there is a large cap on the output and the input is shorted to Gnd, which is what you are setting up with the cap and the pump.

From NCP1117 datasheet used on Unos & Megas:
"Protection Diodes
The NCP1117 family has two internal low impedance
diode paths that normally do not require protection when
used in the typical regulator applications. The first path
connects between Vout and Vin, and it can withstand a peak
surge current of about 15 A. Normal cycling of Vin cannot
generate a current surge of this magnitude. Only when Vin
is shorted or crowbarred to ground and Cout is greater than
50 uF, it becomes possible for device damage to occur.
Under these conditions, diode D1 is required to protect the
device."
I haven't looked to see what regulator the Nano uses.
D1 is 1N4001, anode on 5V output, cathode on input to the regulator - after the reverse polarity protection diode so the cap output is not going into supplying the pump.

Keep supply to a large pump separate from the Arduino supply, its only going to
cause grief to share it. If the 1A is the normal running current the stall current
could be much larger, even 10A, so the 2A supply cannot support it. Try a separate
lower current supply just for the Arduino and the problem should go away and you
have no risks of spikes on the motor supply damaging anything.

With two separate supplies it works with no problem, but I thought it is waste of space and power supplies that can power other projects :slight_smile:

If you want to be 100% safe you can put in a comparator and a P-channel MOSFET.

When the capacitor voltage is high enough it should trigger the comparator and switch on the Arduino via the MOSFET .

I ended up using the mentioned 2A 5.5V power supply connected directly to the relay powering the pump and through a shotky diode to Vin and Gnd. There I have alsa two of these giant caps 16V 10 000uF, backing up the Arduino and its peripherals (two 50kOhm trimmers (logarithmic pots), a 16x2 display, RTC and DS18B20 temp sensor.

I encountered two interesting things:

  1. I thought to connect only the Arduino from the safe side of the shotky and the caps to support only it, not draining power with LCD or the pots. This was a problem because when the pump started the display froze and had artifacts on it instead of the letters I print out. so I moved it.

  2. And more interesting was that the pot measurements were disrupted during pump start . Their values were dropping.

I also made some kind of gentle power on for the pump resembling PWM.

void pwm_pump_on() {

      lcd.setBacklight(LOW);              //save some energy
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(15);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(20);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(30);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(40);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(50);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(60);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(75);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(100);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(3);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(200);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(2);
      digitalWrite(pumpPin, LOW); //turn the pump on
      delay(300);
      digitalWrite(pumpPin, HIGH); //turn the pump off
      delay(1);
      digitalWrite(pumpPin, LOW); //turn the pump on
      lcd.setBacklight(HIGH);

}

It appears that 5ms delay is enough to close the relay, but with 3ms it stays open. I know the coding is awful but this is what I used and it works.

A big problem: Put those 10mF caps on the 5V line, and as CrossRoads says, you need a diode across the regulator Input/Output to prevent the regulator from being damaged by having voltage on the Output when there is less voltage present on the Input.

Do you see the problem? Now the 10mF caps are simply being dumped back into the power supplying the pump.

Better:

Main voltage
Diode
10mF caps
Arduino unregulated voltage input

Then when the pump drags down the power supply voltage, the diode prevents the 10mF caps from being discharged there, while they continue to supply voltage for a short time to the Arduino's voltage regulator.

Yes, polymorph, this is what I did using a shotky diode.