Ich möchte die STAT-Leitung eines Lithium-Ionen-Lade-Manager-ICs MCP73831 an einen Mikrocontroller anschließen, um den aktuellen Ladestatus zu lesen.
Das Datenblatt erklärt in Abschnitt 5.2.1, dass die STAT-Zeile eine Tristate-Ausgabe ist und den folgenden Status hat:
- Hoch
- Niedrig
- Hohe Impedanz
und es wird eine Tabelle bereitgestellt, die erklärt, wie jeder Füllstand jeden Ladezustand der Batterie darstellt.
Wie kann ich diesen Pin mit einer Mikrocontroller-E / A verbinden und diese drei unterschiedlichen Zustände lesen?
Das Lesen von High und Low ist recht einfach, aber das Erkennen eines Eingangs ist hochohmig, was ich vorher noch nicht getan habe.
Bei vielen Mikrocontrollern können Sie zwischen einem schwachen Pullup- und einem schwachen Pulldown-Widerstand an einem GPIO-Eingang wählen - in der Größenordnung von etwa 50.000 bis 100.000 Ohm. Wenn der Eingang hoch-z ist, wird ein Lesevorgang mit aktiviertem schwachem Pulldown niedrig und ein nachfolgender Lesevorgang mit schwachem Pullup hoch angezeigt.
Denken Sie daran, einige µs zwischen dem Umschalten des Widerstands und dem GPIO-Messwert zu warten, damit sich die Spannung am Pin einstellen kann.
Beachten Sie, dass ältere AVRs und 8051s möglicherweise nur einen schwachen Pullup, aber keine schwachen Pulldown-Widerstände haben.
quelle
Wenn Sie das Dokument lesen - Abschnitt 3.3 sehen Sie , dass es beabsichtigt , mit einer Pull - up - Widerstand verwendet werden.
Bei einem Open-Drain- oder Tri-State-Signal soll es nicht gelesen werden, wenn es sich im Tri-State-Modus befindet. Es ist so konzipiert, dass das Signal von mehreren Geräten gemeinsam genutzt werden kann. Es wird verwirrend, wenn Sie das Signal lesen und es sich im Drei-Zustands-Modus befindet (und Sie es nicht wissen), können Sie falsche Messwerte erhalten. Der beste Weg ist, dann einen schwachen Pull-up anzuwenden, damit das Signal entsprechend gelesen wird, wenn sich das Signal in einem mehrdeutigen Zustand befindet. Da dieses Signal eine LED ansteuern soll, um einen Ladestatus anzuzeigen (dh niedrig wird geladen), bedeutet dies, dass es nicht aufgeladen wird, wenn es hochgezogen wird und hoch angezeigt wird.
quelle
Wenn ich diesem Beitrag eine Warnung hinzufügen darf. Der MCP73831 ist ein Batterieladechip und daher ist sein Vdd höher als sein Vbat.
Angenommen, Ihr Mikrocontroller ist an Vbat angeschlossen und Vdd wird über USB versorgt, dann könnte Vdd mindestens 1,5 V höher sein als V ucontroller .
Der Haken ist, dass beim 73831 mit Totempfahlausgängen STAT auf Vdd bezogen ist . Verbinden Sie STAT also nicht direkt mit einem uC-Eingang. Verwenden Sie dazwischen so etwas wie einen 10k-Widerstand. Bei einem PIC-Mikro werden die Eingangsdiodenklemmen auf Vcc geklemmt (überprüfen Sie das Datenblatt vor dem Latchup auf den maximalen Strom).
Als Nachtrag - letztes Jahr bin ich auf einen Hack gestoßen, um Hi / Low / Z-Eingaben zu lesen, die für einen PIC bestimmt waren, aber möglicherweise für Sie funktionieren (oder auch nicht). So etwas wie (Pseudocode):
Dann erhalten Sie 0 für niedrig, 1 für Hi-Z und 3 für hoch. YMMV.
quelle