Schutz der Mikrocontroller-Eingangspins vor Soft-Power-Switch

Ich arbeite an einem Soft-Power-Schalter für einen Mikrocontroller, bei dem ein Momentschalter den Stromkreis (einschließlich Mikrocontroller) einschalten kann, und wenn der Schalter ein zweites Mal gedrückt wird, kann sich der Mikrocontroller nach einer Bereinigung selbst ausschalten.

Schaltungszeichnung

Ich habe die obige Schaltung bisher, bin mir aber nicht sicher, ob sie zuverlässig ist. Ich verwende einen Lithium-Ionen-Akku (3,7-4,2 V) und den TC1015-Regler (3,0-V-Ausgang). Die Idee ist, dass, wenn der Schalter gedrückt wird, der Regler einschaltet, dann der Mikrocontroller hochsetzt uC Powerund sich selbst anhält. Wenn der Schalter ein zweites Mal gedrückt uC Switchwird, ermöglicht ein Interrupt-On dem Mikrocontroller, sich auf uC PowerLow zu setzen und sich selbst auszuschalten.

Worüber ich mir nicht sicher bin, ist, ob ich den Mikrocontroller vor Batteriespannung schützen muss. Der von mir verwendete Mikrocontroller hat eine absolute Maximalspannung an den E / A-Pins von Vdd + 0,4 V, daher bin ich mir nicht sicher, wie ich damit am besten umgehen soll.

Zweitens, wird diese Schaltung tatsächlich verhindern, dass sich der Regler einschaltet, wenn er sich im "Aus"-Zustand befindet? Ich hatte über die Verwendung eines Pulldown-Widerstands auf der Aktivierungsleitung nachgedacht, mache mir aber Sorgen über die Stromaufnahme, während der Chip eingeschaltet ist.

Bearbeiten: Der Mikrocontroller ist die primäre Last, die geschaltet wird, daher funktioniert es hier leider nicht, ihn in einen Energiesparmodus zu versetzen.

Edit #2 (Nachdem die Antworten gepostet wurden):

Am Ende habe ich die folgende Schaltung verwendet:

fester Schaltplan

Die zuvor gepostete Schaltung funktionierte nicht sehr gut und hatte Probleme mit einer schwebenden Aktivierungsleitung, wenn der Mikrocontroller sie nicht mit Strom versorgte.

Die neue Schaltung verwendet ein Flip-Flop, wobei die Datenleitung normalerweise auf Low gezogen wird. Durch Drücken des Schalters wird die Uhr aktiviert und das System eingeschaltet. Nachfolgende Betätigungen des Schalters treiben die CLOCKLeitung hoch (so dass der Mikrocontroller die Betätigung erfassen kann), beeinflussen jedoch nicht den Ausgang des Reglers. Sobald der Mikrocontroller zum Ausschalten bereit ist, setzt er die DATALeitung auf High und setzt dann die CLOCKLeitung auf High, wodurch der Regler abgeschaltet wird.

Eines der wirklich netten Dinge an diesem Setup ist, dass der erste Knopfdruck den Regler einschaltet und ihn eingeschaltet hält, bis der Mikrocontroller zum Herunterfahren bereit ist. Bounce ist kein Problem, denn egal wie oft die Taktleitung hoch geht, die Datenleitung wird durch den Pulldown immer noch niedrig gehalten. Darüber hinaus sollte die Stromaufnahme sehr gering sein (nur das Flip-Flop und der TC1015 im ausgeschalteten Zustand), und die Stromaufnahme durch die Widerstände im eingeschalteten Zustand ist minimal.

Der Mikrocontroller muss zwar vor der Batteriespannung auf der Taktleitung geschützt werden, aber wie @Andy aka vorgeschlagen hat, kann dies mit einem Widerstand an erfolgen CLOCK.

Antworten (4)

R1 und R2 begrenzen den Strom in die Pins Ihres uC und dies reicht normalerweise aus, um Ihr Gerät zu schützen. Sie müssen nur in der Spezifikation nachsehen, was dieser "Grenzstrom" ist, und einen Widerstandswert auswählen, der angesichts der uC-Versorgung angemessen ist kann auf 0 V liegen (ohne Stromversorgung). Auf dieser Basis können die Zener weggelassen werden.

Zuverlässigkeit ist ein weiteres Thema. Das Springen des Schalters kann dazu führen, dass Ihr uC einige Male ein- und wieder ausgeschaltet wird. Schreiben Sie also Ihren Code, um sich dessen bewusst zu sein.

Ich denke, es kann ratsam sein, einen Widerstand zu aktivieren, aber wahrscheinlich im Bereich von +10K und vielleicht könnte dieser höher sein, möglicherweise 100k.

Die Spannung am Shutdown-Pin muss mindestens 45 % von Vin betragen, daher sollte dies kein Problem darstellen.

Dies scheint ein selbstverriegelndes System zu sein, das theoretisch wie eine selbstverriegelnde Relaisschaltung funktionieren sollte (Ein Knopf wird verwendet, um das Relais einzuschalten, und dann bleibt das Relais eingeschaltet, weil der Laststift und der Spulenstift miteinander verbunden sind solange Strom zu den Laststiften geht).

Um es zu testen, ohne einen Mikrocontroller zu riskieren, können Sie dies tun. Fügen Sie eine Dummy-Last hinzu, um den Regler zufrieden zu stellen (ein paar LEDs, damit Sie auch sehen können, dass er funktioniert), und binden Sie dann den Ausgang an den Punkt, an dem er markiert ist uC Power. Nachdem Sie den Schalter gedrückt haben, sollte der Regler starten und die LEDs und die uC-Leistung einschalten, was wiederum den Enable-Pin auf logisch hoch halten sollte (Shutdown Logic High ist mindestens 45 % von VIN, also 1,89 V bei 4,2 V In). ).

Wenn Sie also die Taste drücken und die LEDs nach dem Loslassen eingeschaltet bleiben, funktioniert es. Ist dies nicht der Fall, funktioniert es nicht so wie es ist.

Warnung: Ich sage das, bin mir aber nicht sicher, wie die Zenerdioden die Schaltung veranlassen werden, zu reagieren.

Die Schaltung, die die Batterie, die Mikrocontrollersignale und den SHDN*-Eingang des Reglers (umbenannt in EN) verbindet, scheint zwielichtig.

Wie wäre es mit einem Riegel (der mit Batteriestrom betrieben wird), um das Schließen des Schlüssels zu erfassen? Dann kann der Ausgang dieses Latch mit einem Signalsignal von der MCU ODER-verknüpft werden, um den SHDN * -Pin des Reglers anzusteuern (im Schaltplan in EN umbenannt). Beim Booten sollte die MCU zuerst ihre Aktivierungsleitung treiben und dann den Latch löschen, wodurch sichergestellt wird, dass EN aktiviert bleibt.

Die nachfolgende Tastenaktion kann durch das Latch überwacht werden: Wenn der Schalter erneut gedrückt wird, geht das Latch wieder hoch. Die MCU bemerkt dies und löscht sowohl das Latch als auch sein Aktivierungssignal, wodurch eine Abschaltung ausgelöst wird. Da der Schalter verriegelt ist, kann die MCU dies sehr bequem überwachen, indem sie ihn einfach mit einer gemächlichen Frequenz abfragt.

Eine weitere optionale Verfeinerung wäre eine Schaltung, die sicherstellt, dass das System ohne Verwendung des Knopfes hochfährt, wenn die Batterie selbst online geht. Dies könnte eine Art Impuls sein, der das Latch setzt.

Ziehen Sie EN mit einem geeigneten Widerstand nach unten und binden Sie ihn an einen io-Pin auf der MCU. Der Schalter geht auf einen Eingangsstift der MCU. Das Drücken der Taste löst einen Interrupt am MCU-Eingangspin aus, der den Ausgangspin umschaltet, der den EN-Pin Ihres LDO steuert.

Wenn Sie die MCU in den Tiefschlaf versetzen, kann der Pin nach unten gezogen und der LDO deaktiviert werden. Das Auslösen eines Interrupts mit dem Schalter weckt ihn auf, zieht den Pin wieder hoch und schaltet den LDO wieder ein.

Entschuldigung, ich hätte etwas klarer spezifizieren sollen, der Mikrocontroller ist die primäre Last, die der LDO schalten wird, also wird es nicht funktionieren, ihn in einem Zustand mit geringem Stromverbrauch zu belassen.