Spannungsüberwachung und Brown-Out Erkennung

Beim Betrieb eines „embedded Systems“ mit einer Batterie ist es sinnvoll, die Batteriespannung zu überwachen. Sei es, um eine Warnung abzusenden (LOW_BAT) , oder um Verbraucher abzuschalten und damit eine längere Laufzeit zu bekommen oder um einen sicheren Zustand herzustellen.

Zum sicheren Betrieb gehört, eine mindest-Spannungsschwelle für den Betrieb des Controllers nicht zu unterschreiten, da unterhalb dieser Schwelle (Brown Out) Aussetzer und Störungen im Prozessor auftreten können. Schwieriger ist es einen vollständigen Spannungsausfall (Black Out) zu erkennen, da nach einem Reset bzw. Neustart alle Speicherinhalte „vergessen“ sind.
Für diese Art der Spannungsmessung kommen der Atmel 328P, der Atmel Mega und der Atmel Mega2560 in Frage, da diese die unten beschriebenene Messmöglichkeiten haben.
Aus der Tabelle „BODLEVEL Fuse Coding“ im Datenblatt für den Atmel 328P ist der kleinste Wert für den Brown Out mit Min: 1.7 Volt, Typisch: 1.8 Volt, Max: 2.0 Volt angegeben. Kleinere Werte würde ich also lieber nicht nehmen. Um noch reagieren zu können, ist es also sinnvoll diese Schwelle etwas höher zu legen. Ich lege also die Spannungsschwellen für meine Überwachung fest:

5 Volt bis 3 Volt für den Normalbetrieb
-> Die Software läuft mit allen Hard- und Softwarekomponenten.

kleiner 3 Volt bis 2 Volt für den eingeschränkten Betrieb
-> Die Software läuft eingeschränkt mit abgeschalteten Verbrauchern, um Strom zu sparen.
-> War noch kein Brown Out, dann gilt der eingeschränkte Betrieb bis zur Brown Out Warnung.

kleiner oder gleich 1.8 Volt für die Brown Out Warnung
-> Die Software läuft nur noch mit der Kommunikationskomponente und sendet ein LOW_BAT Signal.

größer 1.9 Volt für das Verlassen des Brown Out Bereiches
-> Dies ist nötig als Hysterese, damit im Grenzbereich nicht ständig hin und her geschaltet wird.

Die Hardware
Messung und Publisher
– Ein Arduino Mega2560
– Ethernet Shield W5100

Die Software
– mosquitto Server auf einem PC
– mosquitto Subscriber auf selbigem PC

Spannungsueberwachung

Test
Für den Test wird der Mega2560 von einem Labornetzteil gespeist. Und dann von 5.1 Volt langsam heruntergeregelt bis zum Brown Out, dann wieder hoch bis zur Ausgangsspannung. Da hierfür der USB Anschluss nicht nutzbar ist, wegen der Spannungsversorgung darüber, muss auf eine andere Weise getestet werden.
Dafür ist MQTT einsetzbar. Den Publisher teste ich auf eine einfache Weise: Auf dem PC starte ich eine Kommadozeile und aus dem Mosquitto Programmordner starte ich einen einfachen Subscriber jeweils einen der beiden Topics mit mosquitto_sub -t Topic. Hier sehe ich dann tatsächlich die Werte, die der Publisher sendet.
Bei meinem Test, mit den obigen Schwellen, komme ich bis etwa 2700mV. Danach kommt keine weitere Meldung am Server an. Hier müssten also insgesamt, die Schwellwerte für das gesamte System angepasst werden, oder schon vorher ein Kommunikationsabbruchsignal gesendet werden, um dann intern auf den eingeschränkten Betrieb ohne Netzwerkshield umzuschalten. Das hängt dann von der jeweiligen Spezifikation ab.

Links

Spannungsüberwachung
http://physudo.blogspot.de/2014/08/spannung-uberwachen-am-arduino-atmega.html

Datenblatt Atmel 328P

Klicke, um auf Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf zuzugreifen

Datenblatt Atmel Mega2560

Klicke, um auf Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf zuzugreifen

Mosquitto
https://mosquitto.org

Brown Out / Blackout
https://de.wikipedia.org/wiki/Stromausfall#Einteilung

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.