Wie kann ein ATMEGA für Stromunterbrechungen auf Millisekundenebene ohne seltsames Verhalten gepuffert werden?

8

Ich habe ein ATMEGA328p-pu-Arduino mit einer LED + Schieberegister-Streifenschaltung, die über SPI angeschlossen ist. Beim Einschalten wird eine Variable im EEPROM erhöht, um den Anzeigemodus zu verbessern.

  • Wir haben den Brownout-Detektor auf Stufe 1 (2,7 V) eingestellt.
  • Parallel zu den Stromkabeln ist ein 1500-uf-Kondensator angeschlossen, der hoffentlich verhindert, dass das Arduino bei einem physischen Aufprall den Modus ändert, da sich die Batterieklemmen etwa eine Millisekunde lang leicht trennen können.
  • Auf der positiven Leitung der Kappe befindet sich eine Diode, die verhindert, dass sich die Kappe in die LEDs entlädt, sodass nur das Arduino gepuffert wird.
  • Es gibt auch einen 1000-Ohm-Widerstand parallel über der Kappe, um sie zu entleeren, da sie eine Spannung hielt, von der wir annehmen, dass sie hinter einem Problem steckt, bei dem der Chip die LED-Schaltung manchmal beim Booten nicht aufleuchtete.
  • Der Arduino Pro Mini und der Strip haben eine Nennspannung von 5 V, werden jedoch routinemäßig mit 3,7 V betrieben, damit sie mit einer einzelnen Li-Ion-Zelle betrieben werden können.

Manchmal leuchtet die Schaltung nach 10 oder 15 Sekunden nicht auf. Manchmal leuchtet die Batterie auf, nachdem sie mehrmals hintereinander abgeklemmt und wieder angeschlossen wurde.

Könnte jemand einen besseren Weg empfehlen, um dem ATMEGA einen Strompuffer bereitzustellen (aber nicht dem LED-Streifen)? Tun wir es größtenteils richtig?

Diagramm (Entschuldigung, wenn es unordentlich ist, ich kann es von meinem Freund in Illustrator wiederholen lassen, wenn es unklar ist, kann nur ein paar Stunden dauern): Schaltplan

blkmage
quelle
2
Können Sie einen Schaltplan der Situation mit dem AVR, Netzteil, Widerstand, Kondensator, Diode, ...
Jippie
Ist der einzige Grund, warum Sie diesen "Puffer" benötigen, weil sich die Batterieklemmen leicht lösen können, wenn sie gestoßen werden? Wenn ja, sollten Sie einfach den Stecker entfernen und die Drähte direkt auf die Platine löten.
Garrett Fogerlie
Um Jippie wiederzugeben, haben Sie mit einer guten schriftlichen Beschreibung begonnen. Das Hinzufügen eines Schaltplans wird immens hilfreich sein. Wenn Sie Probleme beim Posten haben, steht Ihnen Hilfe zur Verfügung.
Platzhalter
2
Ihr Entlüftungswiderstand ist eher klein und verbraucht im Vergleich zu typischen Standby-Anforderungen erheblich Strom. Wenn Sie einen Brownout in der Software erkennen können, richten Sie ein Programm ein, das ab dem Brownout auf dem UART-Ausgang "zählt", und überwachen Sie dies, während Sie am Netzteil ziehen, und sehen Sie, wie lange es läuft, und berechnen Sie die Baudrate zurück. Beachten Sie auch die Möglichkeit, Peripheriegeräte versehentlich über Datenleitungen mit Strom zu versorgen.
Chris Stratton
1
Vielleicht können Sie versuchen, dem Arduino eine unabhängige Ausgabe zu geben (seriell, es sind eigene diskrete LEDs), damit Sie dort ein wenig debuggen können, dass das Arduino zurückgesetzt wurde, anders als es erfolgreich mit dem LED-Streifen gesprochen hat. Ich gehe davon aus, dass der LED-Streifen nicht einmal wirklich zurückgesetzt wird, was sich von der normalen Abfolge seiner Zustände bei jedem Zugriff unterscheidet.
Chris Stratton

Antworten:

3

Sie können nach der Diode einen Superkondensator (1F / 5,5 V) verwenden, der direkt an VCC und GND angeschlossen wird. Dies hilft Ihnen beim Puffern der Stromversorgung.

Chetan Bhargava
quelle