Wie kann ein vom Mikrocontroller steuerbarer Soft-Power-Schalter implementiert werden?
16
Ich möchte eine Schaltung so gestalten, dass der Mikrocontroller einen GPIO-Pin umschalten und das gesamte System (einschließlich des Mikrocontrollers selbst) herunterfahren kann. Und wenn der Benutzer eine Taste drückt, wird die Stromversorgung wieder hergestellt.
In diesem Beispiel wird ein Maxim MAX1835 -Aufwärtsregler verwendet, der jedoch auch auf andere mit einem Abschaltstift angewendet werden kann.
Die Schaltung ist normalerweise ausgeschaltet. Wenn der Benutzer den Druckknopf drückt, wird die Batterie in den -SHDN-Pin eingespeist, wodurch der Regler aktiviert und die 3,3 V zum Mikrocontroller eingeschaltet werden. Der Mikrocontroller legt dann eine logische 1 an das POWER ON-Kabel an und hält das Gerät an, nachdem der Benutzer den Druckknopf losgelassen hat. Wenn der Mikrocontroller sich selbst ausschalten möchte, setzt er das POWER ON-Kabel auf 0.
Sehr wichtig, denke ich, ist das Entprellen dieses Schalters.
Kortuk
2
@Kortuk, guter Punkt. Ich ging davon aus, dass sich das Mikro so schnell einschalten würde, dass es den Schalter vor dem ersten Sprung außer Kraft setzen könnte, vorausgesetzt, dass es das erste war, was das Mikro tat, um den Stift nach oben zu treiben. Wenn dies nicht der Fall ist, kann ein Kondensator an der -SHDN-Leitung hinzugefügt werden, um eine Zeitkonstante für das Einschalten zu erstellen (obwohl dies auch zu einer leichten Verzögerung beim Ausschalten führen würde). Die 10-nF-Einheit muss wahrscheinlich zur Rauschunterdrückung belassen werden (sie wurde in ein Datenblatt mit Beispielschema aufgenommen). Oder man könnte zusätzliche RC-Schaltung nur für den Schalter hinzufügen.
Tcrosley
Ich habe schon einige verrückte Sprünge an Schaltern gesehen.
Kortuk
Ein größeres Problem bei Switch Bounce ist das Verhalten des Prozessors beim Ausschalten. Insbesondere sollte sichergestellt werden, dass der Prozessor die Stromversorgung nur dann einschalten kann, wenn sich sein VDD über dem Punkt befindet, an dem ein korrekter Betrieb gewährleistet ist. Ich musste einige Auto-Power-Down-Schaltungen optimieren, die gelegentlich aufgrund des Zufallscodes des Prozessors ausfielen, wenn VDD unter die gültige Betriebsspannung fiel. Der Zufallscode könnte den "Power On" -Ausgang auf "High" setzen, wodurch das Gerät wieder mit Strom versorgt wird und Code an einer zufälligen Adresse ausgeführt wird.
Supercat
1
Eine Möglichkeit, dies zu tun, besteht darin, auf dem Mikrocontroller in einen Tiefschlafmodus zu wechseln.
Viele Mikrocontroller unterstützen das Aufwecken durch einen externen Interrupt, z. B. eine Flanke an einem E / A-Pin.
dann würde ich auch die Ruhestromaufnahme der Spannungsversorgung des Reglers zum Mikro bekommen, oder?
cksa361
Ja. Du würdest.
Toby Jaffey
@ cksa361, bei einigen mikros handelt es sich um nano- oder mikroverstärker. Ich benutze den MSP430 und wir behalten ihn bei 3-5 Mikroampere.
Kortuk
0
Ja, das ist sicherlich möglich, aber wie Sie dies erreichen, hängt davon ab, welche Art von Last Sie ein- und ausschalten werden.
Es ist wahrscheinlich so einfach, nur ein Relais zu verwenden, das über einen Transistor und eine Schutzdiode mit dem Ausgangs-PIN des Mikrocontrollers verbunden ist, und einen Druckschalter, der mit einem als Eingang konfigurierten Pin verbunden ist.
Hier ist ein einfaches Beispielschaltbild:
Wenn Sie einen kurzzeitigen Druckknopfschalter verwenden, sollten Sie jedoch auf Entprellen achten . Sie müssen eine Verzögerung in Ihrem Mikrocontroller-Code implementieren, um sicherzustellen, dass Sie den Status des Druckknopfs über einen bestimmten Zeitraum (z. B. 1 ms) prüfen, bevor Sie Ihr Relais schalten wieder auf. Andernfalls nimmt der Mikrocontroller möglicherweise mehrere Signale auf und schaltet Ihr Relais in sehr kurzer Zeit mehrmals um, und Sie werden feststellen, dass Ihre Taste zeitweise funktioniert.
UPDATE
Ich habe gerade gesehen, wie Sie den Mikrocontroller ausgeschaltet haben. Können Sie weitere Informationen darüber geben, was Sie tatsächlich versuchen? Es ist schwierig, Ihre Frage zu beantworten, ohne das gesamte System zu verstehen.
Wenn Sie den Mikrocontroller auch herunterfahren möchten, müssen Sie eine Möglichkeit finden, den Mikrocontroller wieder mit Strom zu versorgen. Vielleicht könnten Sie das Relais verwenden, um alles einschließlich des Mikrocontrollers mit Strom zu versorgen. Auf diese Weise kann der Mikrocontroller sich selbst ausschalten, aber nicht wieder einschalten. Dann könnte Ihr Druckknopf über Ihren Relaisschalter angeschlossen werden, um ihn effektiv kurzzuschließen und ihm genügend Zeit zu geben, das Relais selbst einzuschalten und offen zu halten.
Eine Möglichkeit, dies zu tun, besteht darin, auf dem Mikrocontroller in einen Tiefschlafmodus zu wechseln.
Viele Mikrocontroller unterstützen das Aufwecken durch einen externen Interrupt, z. B. eine Flanke an einem E / A-Pin.
quelle
Ja, das ist sicherlich möglich, aber wie Sie dies erreichen, hängt davon ab, welche Art von Last Sie ein- und ausschalten werden.
Es ist wahrscheinlich so einfach, nur ein Relais zu verwenden, das über einen Transistor und eine Schutzdiode mit dem Ausgangs-PIN des Mikrocontrollers verbunden ist, und einen Druckschalter, der mit einem als Eingang konfigurierten Pin verbunden ist.
Hier ist ein einfaches Beispielschaltbild:
Wenn Sie einen kurzzeitigen Druckknopfschalter verwenden, sollten Sie jedoch auf Entprellen achten . Sie müssen eine Verzögerung in Ihrem Mikrocontroller-Code implementieren, um sicherzustellen, dass Sie den Status des Druckknopfs über einen bestimmten Zeitraum (z. B. 1 ms) prüfen, bevor Sie Ihr Relais schalten wieder auf. Andernfalls nimmt der Mikrocontroller möglicherweise mehrere Signale auf und schaltet Ihr Relais in sehr kurzer Zeit mehrmals um, und Sie werden feststellen, dass Ihre Taste zeitweise funktioniert.
UPDATE Ich habe gerade gesehen, wie Sie den Mikrocontroller ausgeschaltet haben. Können Sie weitere Informationen darüber geben, was Sie tatsächlich versuchen? Es ist schwierig, Ihre Frage zu beantworten, ohne das gesamte System zu verstehen.
Wenn Sie den Mikrocontroller auch herunterfahren möchten, müssen Sie eine Möglichkeit finden, den Mikrocontroller wieder mit Strom zu versorgen. Vielleicht könnten Sie das Relais verwenden, um alles einschließlich des Mikrocontrollers mit Strom zu versorgen. Auf diese Weise kann der Mikrocontroller sich selbst ausschalten, aber nicht wieder einschalten. Dann könnte Ihr Druckknopf über Ihren Relaisschalter angeschlossen werden, um ihn effektiv kurzzuschließen und ihm genügend Zeit zu geben, das Relais selbst einzuschalten und offen zu halten.
quelle