Spannung des Lithium-Ionen-Akkus messen (also Restkapazität)

Womit ich arbeite: Ich betreibe mein selbstgebautes Arduino-Board (in dem Sinne, dass ich den Arduino-Bootloader und Code-Editor verwende) mit 3,3 V und wird von einem Lithium-Ionen-Akku gespeist, der von einem entsprechenden Mikrochip über USB aufgeladen wird Lade-IC.

Was ich erreichen möchte: Ich möchte die Batteriekapazität etwa einmal pro Minute messen. Ich habe ein LCD angeschlossen, also ist die Idee, dass die Gesamteinrichtung mich wissen lässt, wie sich die Batterie zu einem bestimmten Zeitpunkt verhält. Das Datenblatt der Batterie hat eine Spannungs-Entlade-Level-Kurve, und so kann ich durch Messen der Spannung der Batterie die verbleibende Kapazität abschätzen (sehr grob, aber genug für mich!).

Was ich getan habe:

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

  • Ich habe einen Spannungsteiler von der Batterie V_plus angeschlossen, wobei der größere "Teil" zu einem analogen Lesestift (dh ADC) auf dem Arduino / Atmega-Chip geht.

  • Der Teiler beträgt 33 KOhm bis 10 KOhm und ermöglicht so die Messung von bis zu maximal 4,1 Volt der Li-Ion-Batterie von meinem 3,3-V-Pegel-Mikrocontroller.

  • Außerdem kann ich mit einem der I/O-Pins, die mit einem n-Kanal-MOSFET verbunden 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):

Geben Sie hier die Bildbeschreibung ein

Meine Frage:

  • Wie ist mein aktuelles Setup?

  • Meine einzigen Einschränkungen sind: (1) Ich möchte eine grobe Messung der Batteriekapazität basierend auf der Spannungsmessung vornehmen, wie oben beschrieben. (2) Ich möchte verhindern, dass der Spannungsteiler das Lesen des Vorhandenseins der Batterie durch meinen Lade-IC stört (in meinem ursprünglichen Setup hat der Teiler manchmal dazu geführt, dass der IC das Vorhandensein falsch gelesen hat, selbst wenn die Batterie nicht vorhanden war).

"Ich habe große Widerstandswerte verwendet". Der Eingangspin kann einen Leckstrom haben, ein typischer Worst-Case-Wert ist 1 uA. Bei niedrigem Strom durch den Teiler kann dies die Anzeige verfälschen.
Ich möchte also einen niedrigen Strom durch den Teiler, aber hoch genug, dass er mindestens eine Größenordnung über dem maximalen Leckstrom liegt.
Oder verwenden Sie einen FET, um den Teiler ein- und auszuschalten, wie ich in dieser Antwort auf eine ähnliche Frage vorgeschlagen habe.
Glauben Sie, dass dies bei vorhandenem FET im ausgeschalteten "Zustand" des Teilers auch das Problem lösen könnte, dass der Ladegerät-IC das Vorhandensein der Batterie falsch liest? (Übrigens, was für ein Zufall, dass diese Person die Frage heute auch gestellt hat!)
Ich denke schon. Der FET hat im ausgeschalteten Zustand einen Leckstrom, der jedoch einige Größenordnungen kleiner als die 5 sein wird μ A der Teiler nimmt. (Ich denke, dass das Ladegerät sehr empfindlich ist).
@stevenvh: Verstanden. Ich habe die Frage mit den aktualisierten Details und einem Schema verfeinert.
Du hast den falschen FET auf der falschen Seite. Wenn Sie diesen ausschalten, liegt die volle Spannung am Eingangspin, da R1 keinen Strom zieht. Sie benötigen einen P-MOSFET auf der hohen Seite, damit das Ausschalten den E / A-Pin auf Masse zieht.
Die High-Side-Schaltung ist sinnvoll. Außerdem habe ich einen N-MOSFET verwendet, weil ich zufällig einen hatte; kann ich es nicht mit einem zum Laufen bringen?
Fertiger Schaltplan mit dem P-MOSFET; Vielen Dank! Ich würde mich dennoch über einen Hinweis zur N-MOSFET-Alternative freuen, nur für zukünftiges Wissen.

Antworten (3)

Geben Sie hier die Bildbeschreibung ein

Dies scheint Nicks Schaltplan sehr ähnlich zu sein, war wahrscheinlich damit beschäftigt, es zu zeichnen, als er es gepostet hat :-).

Erstens, warum Sie den N-FET nicht auf der hohen Seite verwenden können: Er benötigt eine Gate-Spannung, die einige Volt höher ist als die Source, und die 4,2 V sind alles, was Sie haben, nichts Höheres, also funktioniert das nicht.

Ich habe einen höheren Wert für den Pull-up, aber ein Wert von 100 kΩ geht auch. 10 kΩ verursachen beim Messen einen unnötigen Mehrstrom von 400 µA. Nicht das Ende der Welt, aber es ist in beiden Fällen 1 Widerstand, also warum 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 Si2303 für den P-Kanal und BSS138 für den N-Kanal in Betracht ziehen.

Danke für die formelle Antwort! Ich denke, ich könnte mir mehrere Verwendungen für diese spezielle Kombination vorstellen. Ich habe meinen Schaltplan in der Frage basierend darauf aktualisiert. Und schätzen Sie die Erklärung des N-FET.
Was würden Sie hier als Beispiel für einen passenden N-Kanal-MOSFET (idealerweise SMD-Typ) empfehlen? IRF530 scheint groß und auch nicht zu billig zu sein. (Für den P-Kanal sehe ich, dass der Si2303 in SMD kommt, damit ist man schon versorgt.)
@Inga - Du brauchst keinen Strom, also ist der Einschaltwiderstand nicht so wichtig. Schauen Sie sich nur die Schwellenspannung des Gates an: Es sollte bei 3,3 V eingeschaltet sein, aber selbst dann muss es keinen Strom ziehen, und dann gibt es eine große Auswahl. Der BSS138 ist einer der billigsten, die ich finden konnte, und wird gut funktionieren.

@Inga. Das ist eher ein Kommentar als eine Antwort. Aber ich möchte 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. Wie es derzeit gezeichnet ist, kann ein Logiksignal von +3,3 V den P-MOSFET nicht vollständig ausschalten. Q6 im Schema unten bildet einen Open-Drain-Ausgang, der +4,1 V toleriert.

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

Geben Sie hier die Bildbeschreibung ein

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

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

Warum nicht ein einzelner N-Kanal-MOSFET auf der unteren Seite und die beiden Widerstandsteiler auf der oberen Seite?
[aus einem Kommentar unten]

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

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.

Danke Nick! Das macht Sinn, und ich habe den Schaltplan aktualisiert (Die Tankanzeige ist eine Option, aber ich versuche auch, etwas grundlegende Elektronik zu lernen und zu experimentieren, daher die Idee des Spannungsteilers)
Warum nicht ein einzelnes N-Mosfet auf der unteren Seite und die beiden Widerstandsteiler auf der oberen Seite? Ich kann nicht sehen, warum es notwendig ist, einen N-Mosfet zu verwenden, um den P-Mosfet anzutreiben
@Luis Ich habe die Antwort bearbeitet und die Antwort zu Ihrem Kommentar hinzugefügt.

Ad.A: Ich denke, es ist fair genug, einen einfachen Spannungsteiler zu verwenden, um die Batteriespannung zu erkennen. Allerdings sollten Sie den Widerstand 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 vergleichbare Impedanz wie der ADC-Eingang hat, verhält sich die ADC-Eingangsschaltung im Grunde wie ein weiterer Knoten im Teiler. Es könnte Ihnen Offsets in ADC-Messwerten geben.

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

Diese Erklärung macht Sinn. 0,4 mA ist sicher nicht viel! Ich habe nur versucht, so idealistisch wie möglich zu sein :) Haben Sie eine Vermutung, warum dieser Teiler die Anzeige meines Lade-ICs beeinflussen könnte, ob eine Batterie vorhanden ist?
Meine Vermutung wäre, dass noch eine Verbindung zwischen dem positiven Batteriestift, an dem sich der Teiler befindet, und den + 5 V vom USB besteht. 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 .
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 sein wird. MOSFETs haben Widerstände, die für Ihren Teiler völlig vernachlässigbar sind. Möglicherweise benötigen Sie einen weiteren ADC, um zu überwachen, ob der USB angeschlossen ist oder nicht.
Danke dir; Ich habe die Frage basierend auf zwei der Vorschläge aktualisiert und einen Schaltplan hinzugefügt. Was die USB-Versorgungsüberwachung angeht, hat der Lade-IC auch dafür bereits einen Statusausgang!