Messen Sie die Lithium-Ionen-Batteriespannung (damit die verbleibende Kapazität)

14

Woran ich arbeite: Ich betreibe mein selbstgemachtes Arduino-Board (in dem Sinne, dass ich den Arduino-Bootloader und den Code-Editor verwende) mit 3,3 V und mit einer Lithium-Ionen-Batterie, die von einem entsprechenden Mikrochip über USB aufgeladen wird Ladegerät IC.

Was ich versuche zu erreichen: Ich möchte die Batteriekapazität ungefähr jede Minute messen. Ich habe einen LCD-Bildschirm angeschlossen, daher möchte ich wissen, wie sich der Akku zu einem bestimmten Zeitpunkt verhält. Das Datenblatt des Akkus enthält eine Kurve zwischen Spannung und Entladezustand. Durch Messen der Spannung des Akkus kann ich die verbleibende Kapazität abschätzen (sehr grob, aber für mich ausreichend!).

Was ich getan habe:

  • (BEARBEITEN: Widerstandswerte aktualisiert und P-MOSFET-Schalter hinzugefügt, basierend auf @ stevenvh und @ Jonnys Vorschlägen).

  • Ich habe einen Spannungsteiler von der Batterie V_plus angeschlossen, wobei der größere "Anteil" an einen Analog-Lesepin (dh ADC) auf dem Arduino / Atmega-Chip geht.

  • Der Teiler ist 33 KOhm-10 KOhm und ermöglicht so die Messung von bis zu 4,1 Volt des Li-Ionen-Akkus von meinem 3,3 V-Mikrocontroller.

  • Außerdem kann ich mit einem der I / O-Pins, die an einen n-Kanal-MOSFET angeschlossen sind, den Strom nur dann durch den Teiler schalten, wenn ich die Messung benötige.

  • Hier ist ein grobes Schema (zum zweiten Mal aktualisiert, basierend auf Vorschlägen von @stevenvh und @Nick):

Bildbeschreibung hier eingeben

Meine Frage:

  • Wie ist mein aktuelles Setup?

  • Meine einzigen Einschränkungen sind: (1) Ich möchte, wie oben beschrieben, eine grobe Messung der Batteriekapazität anhand des Spannungswerts durchführen. (2) Ich möchte verhindern, dass der Spannungsteiler das Ablesen des Akkus durch den IC stört (in meiner ursprünglichen Konfiguration führte der Teiler manchmal dazu, dass der IC das Vorhandensein falsch ablesete, selbst wenn der Akku nicht vorhanden war).

Boardbite
quelle
1
"Ich habe große Widerstandswerte verwendet". Der Eingangsstift kann einen Leckstrom haben, ein typischer Worst-Case-Wert ist 1 uA. Bei geringem Strom durch den Teiler kann dies den Messwert verfälschen.
Stevenvh
Ich möchte also einen geringen Strom durch den Teiler, der aber mindestens eine Größenordnung über dem maximalen Leckstrom liegt.
Boardbite
Oder verwenden Sie einen FET, um den Teiler ein- und auszuschalten, wie ich in dieser Antwort auf eine ähnliche Frage vorgeschlagen habe.
Stevenvh
Ist der FET im ausgeschalteten Zustand des Teilers installiert, könnte dies möglicherweise auch das Problem lösen, dass der IC des Ladegeräts das Vorhandensein der Batterie falsch anzeigt? (Übrigens, was für ein Zufall, dass diese Person die Frage auch heute gestellt hat!)
Boardbite
1
Sie haben den falschen FET auf der falschen Seite. Wenn Sie diesen ausschalten, liegt die volle Spannung am Eingangspin an, da R1 keinen Strom zieht. Sie benötigen einen P-MOSFET auf der High-Seite, damit beim Ausschalten der E / A-Pin auf Masse gezogen wird.
Stevenvh

Antworten:

12

Bildbeschreibung hier eingeben

Dies scheint Nick's Schema sehr ähnlich zu sein, war wahrscheinlich damit beschäftigt, es zu zeichnen, als er gepostet hat :-).

Erstens, warum Sie den N-FET nicht auf der High-Seite verwenden können: Er benötigt eine Gate-Spannung, die ein paar Volt höher ist als die Source, und Sie haben nur 4,2 V, nichts höheres, damit das nicht funktioniert.

Ich habe einen höheren Wert für das Hochziehen, obwohl ein Wert von 100 kΩ auch ausreicht. 10 kΩ verursachen beim Messen einen unnötigen zusätzlichen Strom von 400 µA. Nicht das Ende der Welt, aber in beiden Fällen ist es 1 Widerstand. Warum also nicht einen höheren Wert verwenden?

Für die MOSFETs gibt es eine Vielzahl von Teilen zur Auswahl, da die Anforderungen nicht so streng sind. Sie können preiswerte wie zB in Betracht ziehen, Si2303 für den P-Kanal und BSS138 für den N-Kanal in Betracht ziehen .

stevenvh
quelle
Danke für die formelle Antwort! Ich denke, ich könnte mir für diese spezielle Kombination mehrere Verwendungszwecke vorstellen. Ich habe meinen Schaltplan in der Frage auf dieser Grundlage aktualisiert. Und schätzen Sie die Erklärung des N-FET.
Boardbite
Was würden Sie als Beispiel für einen passenden N-Kanal-MOSFET (idealerweise SMD-Typ) empfehlen, der hier verwendet wird? IRF530 scheint groß und auch nicht zu billig zu sein. (Für den P-Channel sehe ich den Si2303 in SMD, so dass man sich schon darum kümmert.)
Boardbite
1
@Inga - Du brauchst keinen Strom, daher ist der Einschaltwiderstand nicht so wichtig. Schauen Sie sich nur die Schwellenspannung des Gates an: Sie sollte bei 3,3 V an sein, muss aber auch dann keinen Strom verbrauchen, und dann haben Sie eine große Auswahl. Das BSS138 ist eines der billigsten, die ich finden konnte und wird gut tun.
Stevenvh
7

@Inga. Dies ist eher ein Kommentar als eine Antwort. Aber ich würde gerne ein Bild posten, also poste ich es als Antwort.

Ihr Mikrocontroller (uC) wird mit +3,3 V versorgt. Der Drain des vorgeschlagenen P-MOSFET kann bis zu +4,1 V betragen. Ein + 3,3-V-Logiksignal kann den P-MOSFET derzeit nicht vollständig ausschalten. Q6 im folgenden Schema bildet einen Open-Drain-Ausgang, der +4,1 V toleriert.

C14 senkt die Impedanz, die Ihr A / D sehen wird.

Bildbeschreibung hier eingeben

[...] Batteriespannung (damit Restkapazität)

Möglicherweise stellen Sie fest, dass die Erfassung der Batteriespannung keine genaue Methode zur Ermittlung der verbleibenden Kapazität darstellt. In tragbaren Geräten (Handys, Laptops) wird die Batteriekapazität durch Messen des Stroms in und aus der Batterie geschätzt. Es gibt Dutzende von speziellen ICs für die Batteriestandsanzeige ( z. B. bq27200 ), die bei dieser Aufgabe helfen.

Warum nicht ein einziger N-Kanal-MOSFET auf der Low-Seite und die beiden Widerstandsteiler auf der Upper-Seite?
[aus einem Kommentar unten]

Ein Low-Side-Schalter hat Probleme, wenn die Batteriespannung (V bat ) größer ist als die Versorgungsspannung des Mikrocontrollers (V cc ). Wenn der Low-Side-Schalter ausgeschaltet ist, schwimmt das Masseende des Spannungsteilers, der Teiler teilt sich nicht mehr, die volle Batteriespannung erscheint am ADC-Pin des Mikrocontrollers. Dies kann uC beschädigen. Es wird auch ein Leckpfad erzeugt, über den sich die Batterie entladen würde.
Ein High-Side-Schalter ist erforderlich, wenn V bat > V cc ist .

1 Ich werde kurz V cc verwenden , aber diese Diskussion gilt auch für V dd , AV cc , AV dd . Im Zweifelsfall natürlich in einem Datenblatt nachschlagen.

Nick Alexeev
quelle
Danke Nick! Das macht Sinn, und ich habe das Schema aktualisiert (Die Tankanzeige ist eine Option, aber ich versuche auch, einige grundlegende Elektronik zu lernen und zu experimentieren, daher die Idee des Spannungsteilers)
Boardbite
Warum nicht ein einziger N-Mosfet auf der unteren Seite und die beiden Widerstandsteiler auf der oberen Seite? Kann nicht sehen, warum es notwendig ist, einen N-Mosfet zu verwenden, um den P-Mosfet zu fahren
Luis Carlos
1
@ Luis Ich habe die Antwort bearbeitet und Ihrem Kommentar die Antwort hinzugefügt.
Nick Alexeev
4

Zu A: Ich denke, es ist fair genug, einen einfachen Spannungsteiler zu verwenden, um die Batteriespannung zu ermitteln. Sie sollten den Widerstand jedoch sorgfältig auswählen. Die interne Impedanz Ihrer ADC-Eingänge beträgt laut ATmega328-Datenblatt 100 kΩ . Siehe "Abbildung 23-8. Analoge Eingangsschaltung". Wenn Ihr Teiler eine mit dem ADC-Eingang vergleichbare Impedanz hat, verhält sich die ADC-Eingangsschaltung im Grunde wie ein anderer Knoten im Teiler. Es kann zu Offsets bei ADC-Messungen kommen.

Die Verwendung eines Teilers mit bis zu 10 kΩ über die Schienen wäre niedrig genug, um die ADC-Eingangsimpedanz zu ignorieren, während nur 410 µA verbraucht würden. Wenn das zu viel für Ihre Anwendung ist, können Sie natürlich größere Widerstände wählen, aber denken Sie daran, dass der ADC vorhanden ist und an Vcc / 2 angeschlossen ist.

Jonny B Gut
quelle
Diese Erklärung macht Sinn. 0,4 mA ist sicher nicht so viel! Ich habe nur versucht, so idealistisch wie möglich zu sein :) Haben Sie eine Vermutung, warum sich die Tatsache, dass dieser Teiler vorhanden ist, auf die Anzeige meines Ladegerät-IC auswirkt, ob ein Akku vorhanden ist?
Boardbite
Meine Vermutung wäre, dass es immer noch eine Verbindung zwischen dem positiven Batterie-Pin, an dem sich der Teiler befindet, und den + 5V vom USB gibt. Ich kenne Ihre spezielle Schaltung nicht, aber ich bin sicher, dass Sie ableiten können, was wohin geht, wenn Sie sich den Arduino-Schaltplan ansehen .
Jonny B Gut
Ich bin mir sicher, dass, wenn Sie stephenhs Idee folgen, einen FET zu verwenden, um den Teiler bei Bedarf zu verbinden / zu trennen, alles in Ordnung ist. MOSFETs haben Widerstände, die für Ihren Teiler völlig vernachlässigbar sind. Möglicherweise benötigen Sie einen anderen ADC, um zu überwachen, ob der USB-Stick angeschlossen ist oder nicht.
Jonny B Gut
Vielen Dank; Ich habe die Frage basierend auf zwei der Vorschläge aktualisiert und ein Schema hinzugefügt. Auch für die USB-Versorgungsüberwachung verfügt der Lade-IC bereits über einen Statusausgang!
Boardbite