Electronic – arduino – How to buffer an ATMEGA for millisecond-level power interruption without strange behavior

arduinoatmegacapacitorled strippower supply

I have an ATMEGA328p-pu arduino with an LED + shift-register strip circuit attached over SPI. When it turns on, it increases a variable in EEPROM to advance the display mode.

  • We have the brownout detector set to level 1 (2.7V).
  • There is a 1500 uf capacitor attached in parallel to the power leads to, hopefully, keep the arduino from changing modes on a physical impact, since the battery terminals can disconnect slightly for a millisecond (?) or so.
  • There is a diode on the cap's positive lead to prevent the cap from discharging into the LEDs, so it only buffers the arduino.
  • There is also a 1000 ohm resistor in parallel across the cap to drain it since it was holding a voltage, which we assume was behind a problem where the chip wasn't lighting up the LED circuit sometimes on boot.
  • The arduino pro mini and strip are rated at 5v, but we routinely run them at 3.7V so they can be powered with a single Li-Ion cell.

Sometimes after sitting for 10 or 15 seconds, the circuit won't light up. Sometimes after disconnecting the battery and reconnecting it several times in a row, it will then light up.

Could anybody recommend a better way to provide a power buffer to the ATMEGA (but not to the LED strip)? Are we doing it correctly for the most part?

Diagram (sorry if it's messy, I can have my friend redo it in Illustrator if it's unclear, just might take a few hours):
Circuit Diagram

Best Answer

You can use a super capacitor (1F/5.5v) after the diode, connecting it directly to the VCC and GND. This will help you in buffering the power.

Related Topic