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):
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).
Antworten:
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 .
quelle
@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.
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.
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.
quelle
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.
quelle