Schutz der Mikrocontroller-Eingangsstifte vor dem Soft Power Switch

10

Ich arbeite an einem Soft-Power-Schalter für einen Mikrocontroller, bei dem ein Momentschalter den Stromkreis einschalten kann (einschließlich Mikrocontroller). Wenn der Schalter ein zweites Mal gedrückt wird, kann sich der Mikrocontroller nach einer Reinigung 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 beim Drücken des Schalters der Regler eingeschaltet wird und der Mikrocontroller uC Powerhoch eingestellt wird, um sich selbst einzuschalten. Wenn der Schalter ein zweites Mal gedrückt uC Switchwird, kann der Mikrocontroller durch uC PowerEinschalten auf einen niedrigen Wert eingestellt werden und sich selbst ausschalten.

Ich bin mir nicht sicher, ob ich den Mikrocontroller vor Batteriespannung schützen muss. Der von mir verwendete Mikrocontroller hat eine absolute maximale Spannung 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 überlegt, einen Pulldown-Widerstand auf der Freigabeleitung zu verwenden, bin aber besorgt ü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 veröffentlicht wurden):

Am Ende habe ich die folgende Schaltung benutzt:

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 niedrig gezogen wird. Durch Drücken des Schalters wird die Uhr getroffen und das System eingeschaltet. Durch nachfolgendes Drücken des Schalters wird die CLOCKLeitung hoch (wodurch der Mikrocontroller die Presse erfassen kann), der Ausgang des Reglers wird jedoch nicht beeinträchtigt. Sobald der Mikrocontroller zum Ausschalten bereit ist, setzt er die DATALeitung hoch und dann die CLOCKLeitung hoch, wodurch der Regler heruntergefahren wird.

Eines der wirklich schönen Dinge an diesem Setup ist, dass beim ersten Tastendruck der Regler eingeschaltet und eingeschaltet bleibt, bis der Mikrocontroller zum Herunterfahren bereit ist. Bounce ist kein Problem, denn unabhängig davon, wie oft die Taktleitung hoch geht, wird die Datenleitung durch das Herunterziehen immer noch niedrig gehalten. Außerdem sollte die Stromaufnahme sehr gering sein (nur das Flip-Flop und der TC1015 im ausgeschalteten Zustand), und im eingeschalteten Zustand ist die Stromaufnahme durch die Widerstände minimal.

Der Mikrocontroller muss zwar vor der Batteriespannung auf der Taktleitung geschützt werden, aber wie von @Andy aka vorgeschlagen, kann dies bei eingeschaltetem Widerstand erfolgen CLOCK.

Carson Darling
quelle

Antworten:

4

R1 und R2 begrenzen den Strom in die Pins Ihres uC und dies ist normalerweise ausreichend, um Ihr Gerät zu schützen. Sie müssen nur in der Spezifikation überprüfen, wie hoch dieser "Grenzstrom" ist, und einen Widerstandswert auswählen, der angesichts der uC-Versorgung angemessen ist kann bei 0V sein (nicht mit Strom versorgt). Die Zenere können auf dieser Basis weggelassen werden.

Zuverlässigkeit ist ein weiteres Problem. Switch Bounce kann dazu führen, dass sich Ihr uC ein- und einige Male ausschaltet. Schreiben Sie daher 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 100.000.

Die Spannung am Abschaltstift muss mindestens 45% von Vin betragen, damit dies kein Problem darstellt.

Andy aka
quelle
3

Dies scheint ein selbstverriegelndes System zu sein, das theoretisch funktionieren sollte, wie es ein selbstverriegelnder Relaiskreis tun würde (Ein Knopf wird zum Einschalten des Relais verwendet, und da der Laststift und der Spulenstift miteinander verbunden sind, bleibt das Relais eingeschaltet solange die Laststifte mit Strom versorgt werden).

Um dies zu testen, ohne einen Mikrocontroller zu riskieren, können Sie dies tun. Fügen Sie eine Scheinlast hinzu, um den Regler bei Laune zu halten (ein paar LEDs, damit Sie sehen können, dass er funktioniert), und binden Sie den Ausgang an die Stelle, an der er markiert ist uC Power. Nachdem Sie den Schalter gedrückt haben, sollte der Regler starten und die LEDs und die uC-Stromversorgung einschalten, wodurch der Enable-Pin auf logisch hoch gehalten wird (Shutdown Logic High beträgt mindestens 45% der 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 dies. Wenn nicht, funktioniert es nicht so wie es ist.

Warnung: Ich sage das, da ich nicht sicher bin, wie die Zenerdioden die Schaltung reagieren lassen.

Passant
quelle
0

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

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 Freigabeleitung ansteuern und dann die Verriegelung aufheben, um sicherzustellen, dass EN aktiviert bleibt.

Die nachfolgende Tastenaktion kann über die Verriegelung überwacht werden: Wenn der Schalter erneut gedrückt wird, wird die Verriegelung wieder hoch. Die MCU bemerkt dies und löscht sowohl den Latch als auch das Freigabesignal, wodurch das Herunterfahren 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 beim Einschalten des Akkus ohne Verwendung der Taste eingeschaltet wird. Dies könnte eine Art Impuls sein, der den Latch setzt.

Kaz
quelle
0

Ziehen Sie EN mit einem geeigneten Widerstand nach unten und binden Sie ihn an einen Io-Pin am MCU. Der Schalter geht an einen Eingangspin der MCU. Durch Drücken der Taste wird ein Interrupt am mcu-Eingangspin ausgelöst, der den Ausgangspin umschaltet, der den EN-Pin Ihres LDO steuert.

Wenn Sie das mcu in den Tiefschlaf versetzen, kann der Stift nach unten gezogen und das LDO deaktiviert werden. Durch Auslösen eines Interrupts mit dem Schalter wird dieser aktiviert, der Pin wird wieder hochgezogen und der LDO wird wieder aktiviert.

drei
quelle
Entschuldigung, ich hätte etwas klarer spezifizieren sollen. Der Mikrocontroller ist die primäre Last, die der LDO umschaltet, sodass es nicht funktioniert, ihn in einem Energiesparmodus zu belassen.
Carson Darling