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):
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).
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.
@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.
[...] 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.
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.
stevenvh
Brettbiss
stevenvh
Brettbiss
stevenvh
Brettbiss
stevenvh
Brettbiss
Brettbiss