Meine Schaltung hat ein Batterieladegerät und einen ATMega88. Der ATMega muss den Zustand des Batterieladegeräts erkennen – aber wenn die Batterie zu schwach ist, wird der ATMega möglicherweise nicht mit Strom versorgt.
Ich weiß, dass es schlecht ist, einen CMOS-Eingang mit mehr als 0,3 V über VCC anzusteuern - Sie können Chips durch die Schutzdioden mit Strom versorgen, ein Latch-up verursachen usw.
Ich sehe drei mögliche Lösungen:
1) Verwenden Sie einen Bus-Transceiver mit doppelter Versorgung. http://www.ti.com/lit/ds/symlink/sn74lvc1t45.pdf Dies fügt mehr Kosten hinzu, als ich möchte.
2) Setzen Sie einen 100K-Widerstand in Reihe mit dem Signal, so dass "nicht viel" Strom in den ausgeschalteten Stromkreis fließt. Ich denke, dies sollte kein Latch-up verursachen oder etwas durchbrennen, könnte aber dennoch einige Schaltkreise einschalten und einen unerwünschten Betrieb verursachen.
3) Verwenden Sie Teilerwiderstände, um das Signal auf <0,3 V herunterzustufen, und speisen Sie es in einen ADC-Pin ein. Dies erfordert zusätzliche Arbeit und Zeit zum Erfassen - und ich bin immer noch etwas nervös, Spannung / Strom in nicht mit Strom versorgte CMOS einzuspeisen.
Ich neige also zu Option 3, hoffe aber, dass es eine bessere Option gibt, an die ich nicht gedacht habe.
Der einfachste Weg, mit einem solchen digitalen Signal umzugehen, besteht darin, es einem BJT oder MOSFET mit einem Pullup von der Prozessorspannung zuzuführen. Zum Beispiel:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Die Diode ermöglicht es, dass der Eingang auch negativ wird, ohne den Prozessor oder Transistor zu beschädigen. Kurze Spannungsspitzen von +/-100 V schaden nichts, unabhängig vom Leistungszustand des Prozessors. Die Kosten betragen höchstens ein paar Cent.
Wäre es möglich, einige Schaltkreise hinzuzufügen, damit der Atmega von jeder Stromquelle gespeist werden kann, die das Batterieladegerät versorgt? Dies ist komplizierter und erfordert die Implementierung einer „Power Path“-Lösung, bei der die Batterien während des Ladevorgangs von der Last getrennt werden. Aber es eliminiert die Möglichkeit, dass der Atmega während des Ladevorgangs abgeschaltet wird.
Normalerweise sind die Ladestatusausgänge Open-Drain. Wenn dies der Fall ist, ziehen Sie einfach den Ausgang zum Prozessor VCC hoch. Dann müssen Sie sich keine Sorgen machen.
Eine andere Option, billiger und einfacher als ein Transceiver, ist ein Doppeltransistor (oder zwei separate Transistoren) mit einem PMOS und einem NMOS. Siehe Skizze unten. Wenn das M2-NMOS-Gate hoch ist, wird das Ladegerät-Ausgangssignal mit dem Prozessoreingang verbunden. Wenn das M2-NMOS-Gate niedrig ist, ist der Prozessoreingang isoliert. Stellen Sie sicher, dass der Signalpegel kompatibel ist. Wenn die VDD des Prozessors weniger als 3 V beträgt, müssen Sie außerdem einen anderen NMOS mit einer niedrigeren Vgs(th) auswählen.
Falls gewünscht, könnte das NMOS-Gate von einem IO-Pin anstelle einer direkten Verbindung mit VDD angesteuert werden. Die Software müsste jedoch sicherstellen, dass das Gate vor dem Lesen des Eingangs hochgefahren wird. Wenn der Prozessor ausgeschaltet ist, sind alle seine Ausgänge niedrig, so dass dies in dieser Situation immer noch sicher ist.
Vielleicht sollten Sie einen Link zum Ladegerät-IC posten und uns mitteilen, welche Statusausgänge Sie überwachen, damit wir prüfen können, ob sie Open-Drain sind oder nicht.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Ignacio Vazquez-Abrams
Chris Phönix