Guten Tag zusammen, ich möchte einen Atmega328p mit einem RTC und anderer Peripherie an einem 3,7V LiPo-Akku betreiben. Das Problem hierbei ist, dass dies soweit funktioniert bis der Akku fast leer ist und dann auch der RTC seine Uhrzeit nicht mehr lange halten kann. Jetzt würde ich gerne mit einem STM810 https://www.st.com/resource/en/datasheet/stm810.pdf die Spannung des Akkus messen und bei einem bestimmten Wert den Atmega ausschalten, sodass die Spannung nur noch am RTC anliegt und somit die Uhrzeit länger erhalten bleibt. Dies ist unabhängig von einem DW01 IC der den Akku gegen Überspannung unter Unterspannung absichert. Jetzt stell ich mir die Frage welche Form von Abschaltung am energieeffizientesten ist. Ich könnte den RST Ausgang des IC an einen Eingang des Atmega hängen um dann bei einer "Unterspannung" den Atmega in Deepsleep zu versetzen. Gleichzeitig wird der RST Ausgang an einen Interrupt Eingang gehängt, wenn dann die Spannung durch eine Aufladung des Akkus wieder steigt, dann kann der Interrupt den Atmega aus seinem Schlaf aufwecken. Könnte ich hier auch die beiden Funktionen auf einen Pin packen? Oder wäre es sinnvoller, über den RST Ausgang einen Transistor, welcher die Spannung bzw. Ground vom Arduino abschaltet, einzubauen? oder gibt es noch eine weitere bessere Möglichkeit? Würde mich über Antworten freuen! Marc
Der Atmega328p kann beides intern: - seine VCC überwachen, indem er sie als ADC-Referenz schaltet und damit die internen 1,1V mißt. - mit Uhrenquarz an T2 im Power-Save (~1µA Verbrauch) einen Sekundeninterrupt erzeugen und darin die Zeit zählen.
Marc W. schrieb: > soweit funktioniert bis der Akku fast leer ist Der ATmega328 geht doch runter bis 1.8V. Ergo sollte er funktionieren bis der Akku vollständig ausgelutscht ist und in Tiefentladung fällt. Marc W. schrieb: > und dann auch der RTC > seine Uhrzeit nicht mehr lange halten kann Hat er keine Pufferbatterie? Marc W. schrieb: > sodass die Spannung nur noch am RTC anliegt Dem RTC eine Knopfzelle spendieren/einsetzen. Du erwähnst kein DevBoard, Module oder verwendete Breakouts, nur einen ATmega. Daher gehe ich von einem separaten LDO aus. Wenn du den (gegen einen mit Enable-Pin) tauschst, könntest du den LDO triggern und abschalten. Der ATmega hat leider kein CE (Chip enable) dass man dort ansetzen könnte. Marc W. schrieb: > DW01 IC > der den Akku gegen Überspannung unter Unterspannung absichert. Mythos. Vodp des DW01 liegt bei 2.3-2.4V. Das ist alles andere als gegen Unterspannung sichern.
Peter D. schrieb: > - seine VCC überwachen, indem er sie als ADC-Referenz schaltet und damit > die internen 1,1V mißt. So etwas ähnliches habe ich gemacht, um Strom zu sparen: Der Arduino geht in Sleep, maximal 8s sind machbar (sehr ungenau). Aufwachen, Zähler inkrementieren und alle etwa Viertelstunde eine Spannung messen - Refernz intern 1,1V aktiv. Um Strom zu sparen, wird der Spannungsteiler vor dem Analogeingang per FET nur kurz zugeschaltet - der A* ist etwa 4ms wach. Mit MCP1703-5V und ein paar Elkos drumherum liegt der Durchschnittsverbrauch bei knapp 30µA. Den Schlafmodus habe ich hier abgemalt: http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/ Mister A. schrieb: > Der ATmega328 geht doch runter bis 1.8V. Aber nur, wenn der Takt niedrig genug ist.
Mister A. schrieb: > Marc W. schrieb: >> soweit funktioniert bis der Akku fast leer ist > Der ATmega328 geht doch runter bis 1.8V. Ergo sollte er funktionieren > bis der Akku vollständig ausgelutscht ist und in Tiefentladung fällt. Dann muss der Fehler wohl irgendwie auf dem Board liegen, bei 3V gingen bei mir die LEDs aus, da hatte die Batterie noch 3V, aber der Atmega keine Funktion mehr... > Marc W. schrieb: >> und dann auch der RTC >> seine Uhrzeit nicht mehr lange halten kann > Hat er keine Pufferbatterie? nein, der DS3231MZ+ wird vom Akku gespeist, eine zusätzliche Knopfzelle ist aus Platzgründen nicht möglich. > Marc W. schrieb: >> sodass die Spannung nur noch am RTC anliegt > Dem RTC eine Knopfzelle spendieren/einsetzen. > > Du erwähnst kein DevBoard, Module oder verwendete Breakouts, nur einen > ATmega. > Daher gehe ich von einem separaten LDO aus. Wenn du den (gegen einen mit > Enable-Pin) tauschst, könntest du den LDO triggern und abschalten. Der > ATmega hat leider kein CE (Chip enable) dass man dort ansetzen könnte. Nein, es ist kein zusätzlicher LDO verbaut, die Bauteile: RTC, IO Expander und Atmega werden direkt mit dem Akku versorgt. > Marc W. schrieb: >> DW01 IC >> der den Akku gegen Überspannung unter Unterspannung absichert. > Mythos. Vodp des DW01 liegt bei 2.3-2.4V. Das ist alles andere als gegen > Unterspannung sichern. den DW01 hab ich jetzt gegen einen BQ2970 getauscht. Hier hab ich mich an strinkt an das Datasheet gehalten.
Manfred schrieb: > Peter D. schrieb: >> - seine VCC überwachen, indem er sie als ADC-Referenz schaltet und damit >> die internen 1,1V mißt. Wie muss ich das verstehen? Ich dachte die ADC-Referenz vergleicht die anliegende Spannung am PIN mit der Versorgungsspannung? Hierbei würde ja immer die Versorgungsspannung mit der Versorgungsspannung vergleichen? Wie müsste ich das verschalten? > So etwas ähnliches habe ich gemacht, um Strom zu sparen: Der Arduino > geht in Sleep, maximal 8s sind machbar (sehr ungenau). Aufwachen, Zähler > inkrementieren und alle etwa Viertelstunde eine Spannung messen - > Refernz intern 1,1V aktiv. Um Strom zu sparen, wird der Spannungsteiler > vor dem Analogeingang per FET nur kurz zugeschaltet - der A* ist etwa > 4ms wach. > > Mit MCP1703-5V und ein paar Elkos drumherum liegt der > Durchschnittsverbrauch bei knapp 30µA. > > Den Schlafmodus habe ich hier abgemalt: > http://www.home-automation-community.com/arduino-low-power-how-to-run-atmega328p-for-a-year-on-coin-cell-battery/ > > Mister A. schrieb: >> Der ATmega328 geht doch runter bis 1.8V. > > Aber nur, wenn der Takt niedrig genug ist. Vielen Dank für die Tipps! Aber das passt zu meinem Aufbau nicht ganz so :)
Marc W. schrieb: > Ich dachte die ADC-Referenz vergleicht die > anliegende Spannung am PIN mit der Versorgungsspannung? Hierbei würde ja > immer die Versorgungsspannung mit der Versorgungsspannung vergleichen? > Wie müsste ich das verschalten? Die Referenz nicht mit ADC verwechseln. Die interne Referenz ist das eine, damit fährt man meistens gut. Wie oben bereits erwähnt, Brownout verwenden. Externe Referenz anlegen geht auch, bringt nur mehr Genauigkeit. Die Akkuspanung (über Teiler) an Referenz anlegen würde den Referenzpunkt konstant, mit sinkender Zellspannung, nach unten verlagern. Schlecht. Akkuspannung über Teiler am ADC messen funktioniert soweit gut. Die Sache ist nur, was dann als Aktion folgen soll bzw. abgeschaltet werden soll. Und da wären wir wieder an der Quelle, kein LDO, also den Akku per MOSFET abschalten/unterbrechen. Den RTC könntest du weiter aus der Unterspannung puffern. Der saugt sicherlich nicht in die Tiefentladung.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.