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):
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.