Niedrigstrom-Batterieüberwachung

Ich möchte einen Mikrocontroller von einem 1S-Lipo über einen 3V-Linearregler betreiben. Ich muss aber die Batteriespannung messen. Das Problem bei der Verwendung eines Spannungsteilers besteht darin, dass er die Batterie im Laufe der Zeit entladen würde, in die möglicherweise eine Schutzschaltung eingebaut ist oder nicht. Da der von mir verwendete AVR eine empfohlene Eingangsimpedanz von nicht mehr als 10 K hat, kann ich das nicht machen Teiler auch zu groß.

Kann jemand eine Lösung vorschlagen, die es mir ermöglichen würde, diese Spannung zu überwachen, ohne eine ungeschützte Batterie über ein paar Monate zu zerstören? Die Schaltung kann für einen längeren Zeitraum in den Tiefschlafmodus wechseln, was bedeutet, dass eine Spannungsteilerlösung die meiste Energie verbrauchen würde.


Am Ende habe ich sowohl die Lösung von Hanno als auch von Andy verwendet. Danke für den ganzen Input. Kann leider nur eine Antwort auswählen.

Antworten (3)

Der Spannungsteiler muss dann im Tiefschlafmodus an die MCU angeschlossen werden ... Dies kann beispielsweise mit einem P-Kanal-FET erreicht werden .... Wenn die MCU aufwacht, möchte sie die Batteriespannung messen, na und Es kann eine Schaltung einschalten, die um einen P-Kanal-FET herum gebildet ist, der die Batterie + V mit dem Spannungsteiler verbindet: -

Geben Sie hier die Bildbeschreibung ein

Der ADC-Eingang wird rechts angezeigt und es wird keine Spannung ankommen, es sei denn, die MCU hat den BC547 über den 10k-Widerstand aktiviert. Ohne Aktivierung ist der P-Kanal-FET ausgeschaltet und praktisch offen. Wenn Sie die MCU so programmieren können, dass sie im Ruhezustand einen Pulldown an ihrem Steuerstift hat, sollten Sie andernfalls einen weiteren (z. B.) 10k-Widerstand von diesem Punkt zur Masse hinzufügen - dies stellt sicher, dass der P-Kanal-FET vollständig ausgeschaltet ist.

Ein kleines Wort der Warnung: Wählen Sie einen P-Kanal-FET mit niedrigem Leckstrom, wenn er ausgeschaltet ist, sonst wird die Batterielebensdauer leicht beeinträchtigt, aber die meisten FETs werden unter 100 nA liegen und viele im Bereich von 1 nA.

Eine letzte Sache - wie verhält sich der Spannungsregler mit seinem Standby-Strom, wenn das Mikro ausgeschaltet ist - müssen Sie sich auch darum kümmern?

Ich verwende den MCP1802 mit 25 uA Q-Strom, dieser Teil funktioniert einwandfrei. Danke für den Vorschlag, genau die Art von Lösung, nach der ich gesucht habe.
Warum sollten Sie einen P-Chan mit Transistor und keinen einzelnen N-Kanal-Fet verwenden?
@jme - Der ADC und die MCU sind auf Masse bezogen, daher ist es sinnvoll, die höhere Spannungsversorgung umzuschalten. Wenn ich ein N-Kanal-Gerät verwenden würde, würde es immer noch einen permanenten Drain durch den oberen Widerstand und durch die parasitären Dioden in der MCU geben, wenn sie sich im Ruhemodus befindet.
@Andyaka, was ist, dass der N-Fet umgekehrt wurde, sodass die Diode umgekehrt wurde, damit der Strom nicht zu den ADC-Widerständen fließen konnte?
@jme - warum stellst du das nicht als richtige Frage?
@Andyaka Ich denke, ich kann, aber ich habe einfach nicht das Gefühl, dass es das braucht. Ich wollte nur um Klärung der Designwahl bitten und denke, dass dies für die von Ihnen gegebene Antwort relevant ist.
Es ist übrigens ein P-Kanal-FET
@jme "Warum nicht einen Low-Side-Schalter verwenden (z. B. N-Kanal-FET oder μC-E / A-Pin)?" ist eine gute Frage. Hier ist der Grund. Die Batteriespannung kann größer als Vcc sein. Wenn der Low-Side-Schalter geöffnet wird, erscheint die Batteriespannung am A/D-Pin. Dies könnte zum Durchbrennen des A/D oder zu einem Auslaufen der Batterie durch die Schutzdioden am A/D-Pin führen. Verwandter Thread.
Sollten Sie nicht einen Pulldown-Widerstand an der Basis des BC547 hinzufügen? Andernfalls, wenn die MCU abgeschaltet ist, kann dieser Pin schwimmen und gelegentlich den Stromkreis aktivieren und die Batterie entladen.
Es ist batteriebetrieben und wenn der Op diesen Ausgang floaten oder tristateieren möchte, sollte ein Widerstand hinzugefügt werden.
Ich wandere - welche Auswirkungen hätte es, wenn ich in dieser Schaltung einen Mosfet anstelle von BJT verwenden würde? Leckstrom von Mosfet?
Der Leckstrom des Mosfet, der das Logiksignal empfängt, sollte kein Problem sein @miceuz
Wäre es möglich, die Schaltung ohne den MOSFET aufzubauen und den Spannungsteiler direkt zwischen die Batterie und den Kollektor des BC547 zu schalten? Ich schätze, das würde auf Kosten eines kleinen Fehlers in der Spannungsanzeige gehen, der vielleicht sogar berechnet werden könnte?
@dloeckx sicher, dass es möglich ist, das zu bauen, aber wenn der BJT "aus" ist, wie hoch ist die Spannung am MCU-Pin?
@Andyaka Ich werde den Pin mit der MCU niedrig halten. Ich plane, dieses Schema einem ESP32 hinzuzufügen, der seinen IO-Pin-Status auch im Tiefschlafmodus beibehalten kann.
@dloeckx Ich denke, Sie verfehlen den Sinn dieser Fragen und Antworten. Es geht darum, den Stromverbrauch wirklich niedrig zu halten, wenn der PFET deaktiviert ist. Was Sie vorschlagen, könnte genauso gut mit dem direkt über die Batterie angeschlossenen Potenzialteiler erfolgen. Darf ich vorschlagen, dass Sie dies als neue Frage stellen, da dies nicht der Ort für ausführliche Diskussionen über eine beendete Frage-und-Antwort-Sitzung ist.

Wenn Sie nur herausfinden müssen, wann die Batterie leer ist (oder kurz davor warnen), müssen Sie die Spannung nicht direkt messen. Die Ausgangsspannung des Reglers fällt unter 3 V, bevor die Batterie ihre Mindestspannung erreicht. So könnte man die Versorgungsspannung des Mikrocontrollers messen.

Abhängig von seinen tatsächlichen Fähigkeiten können Sie dies ohne Verwendung eines Spannungsteilers tun. Ein Beispiel finden Sie im ADC-Datenblatt für einen PIC12F1822 (auf Seite 141):ADC-Blockdiagramm

Der PIC hat eine interne Spannungsreferenz und kann seinen Wert messen (der 'FVR-Puffer', der in den Multiplexer geht). Es kann aber auch die Versorgungsspannung als Referenz für ADC-Messungen verwenden (der ADPREF-Wahlschalter auf der Oberseite).

Angesichts dessen kann man einfach die Spannungsreferenz in Bezug auf die Versorgungsspannung messen und als Ergebnis die Versorgungsspannung erhalten. Im Fall des 12F1822 beträgt die interne Referenz 2,048 V, und der ADC hat eine Auflösung von 10 Bit. Wenn also die Versorgungsspannung unter 3,0 V fällt, geht das ADC-Ergebnis über 699:

EIN D C r e s u l t = 1024 v ich n v r e f
was in unserem Fall ist
EIN D C r e s u l t = 1024 2.048 v v s u p p l j

Beachten Sie, dass eine niedrigere Versorgungsspannung höhere ADC-Ergebnisse bedeutet, da Eingangsspannung und Referenzspannung auf die übliche Weise vertauscht werden. Sie können diese Formel umwandeln, um die tatsächliche Versorgungsspannung anhand des ADC-Ergebnisses zu ermitteln.

Benötigen Sie wirklich den Linearregler? Das Betreiben des µC bei voller Batteriespannung macht die Sache viel einfacher. Außerdem verbrauchen der Regler und der µC auch im Energiesparmodus immer Strom, wodurch die Batterie kontinuierlich entladen wird. Schau dir die Datenblätter an und behalte das im Hinterkopf.

Da der ADC-Eingang (eines üblichen Sample-and-Hold-ADC, wie der in einem AVR-µC) nur dann Strom zieht, wenn tatsächlich ein Wert abgetastet wird, kann die transiente niedrige Eingangsimpedanz durch einfaches Hinzufügen eines Kondensators kompensiert werden:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Die maximale Abtastfrequenz wird natürlich auf diese Weise begrenzt, da der Kondensator Zeit braucht, um sich über den großen Widerstand wieder aufzuladen, bevor die nächste Abtastung erfolgt, aber ich gehe davon aus, dass Sie sowieso nicht mehr als beispielsweise einmal pro Sekunde messen werden.

Die zum Wiederaufladen des Kondensators erforderliche Zeit kann durch Variieren seiner Kapazität und/oder R1 eingestellt werden. Größeres R1 = weniger "Energieverlust" + geringere max. Abtastfrequenz. Kleinere Kapazitäten werden für einen gegebenen Widerstand schneller aufgeladen und so weiter.
Sie möchten den Wert von R1 maximieren und müssen dann möglicherweise den Wert von C1 minimieren, um die gewünschte Abtastfrequenz zu erreichen.

Die Mindestkapazität hängt von der Ladungsmenge ab, die der ADC für ein Sample zieht, was wiederum durch die Kapazität des Sample-Puffers des ADC bestimmt wird. Bei AVR-Geräten meine ich mich zu erinnern, dass dieser Wert im Datenblatt angegeben ist. Für andere µCs kann ich das nicht sagen, aber die 1 µF im Diagramm werden wahrscheinlich auf jeden Fall mehr als genug sein und können möglicherweise um den Faktor 10 oder so reduziert werden. Die Spezifikationen des ADC werden es zeigen.

Bearbeiten:

Ich habe dies in Atmels Datenblatt für den ATmega1284p gefunden. Der Kondensator des S&H-Puffers ist auf 14 Picofarad spezifiziert , also sollten ein paar Nanofarad für C1 ausreichen.

Analoge Eingangsschaltung aus dem ATmega1284p-Datenblatt

Siehe zum Beispiel die Diskussion hier .

Der Linearregler wird wiederum von einem Ultra-Low-Current-Spannungsdetektor gesteuert, der effektiv sowohl den uC als auch den Regler aus der Schaltung entfernt, wenn die Batterie unter einen bestimmten Wert entladen wird.
Ok, aber ist der Regler für die µC-Versorgung erforderlich, oder kann der µC direkt von Vbat versorgt werden, in diesem Fall funktioniert es möglicherweise ohne Spannungsteiler.
Ich scheine jetzt zu verstehen, dass Sie nicht wirklich fragen, wie das Gerät gebaut werden kann, um minimale Energie zu verbrauchen, sondern nur, wie sichergestellt werden kann, dass der LiPo nicht zerstört wird. Ist das richtig?
Ja, der Regler wird für die uC-Versorgung benötigt. Die Verwendung von minimaler Leistung wird bevorzugt, ist aber nicht mein Hauptanliegen.
Wie sieht der Ausgang des von Ihnen erwähnten Spannungsdetektors aus?
Ich verwende den MCP112, es ist ein Push-Pull-Spannungsdetektor. (Spannungsregler ist der MCP1802)
Eventuell könnte man dann den Spannungsteiler an dessen Ausgang schalten; aber der Vorschlag von Andy Aka ist wahrscheinlich der bessere Weg.
FYI: Bei der STM32L-Familie beträgt die ADC-Eingangsimpedanz 50 K, sodass ein Spannungsteiler mit Megaohm-Widerständen nicht funktionieren wird.