Ich habe ein Arduino, das von einer 9-V-Blockbatterie gespeist und durch einen Schalter aktiviert wird. Ich möchte den Schaltkreis so ändern, dass das Arduino beim Ausschalten des Schalters eingeschaltet bleibt, bis bestimmte Aktionen abgeschlossen sind, und dann ausschalten.
Ich möchte jedoch nicht, dass das Arduino schläft, die Stromversorgung sollte getrennt werden. Dies ist wichtig, da ich zusätzliche Komponenten habe, die Strom aus dem 5-V-Pin (ca. 300 mA) ziehen, und ich möchte, dass diese ebenfalls heruntergefahren werden.
Meine erste Idee war, ein Relais parallel zum Schalter zu verwenden. Wenn der Schalter eingeschaltet wird, schaltet das Arduino auch das Relais ein. Wenn der Schalter ausgeschaltet ist, wird das Arduino immer noch über das Relais mit Strom versorgt. Das Arduino erkennt, wenn der Schalter ausgeschaltet ist (der Schalter ist zweipolig, sodass ich seinen Zustand mit einem digitalen Eingangsstift erkennen kann) und schaltet das Relais aus, wenn die verbleibenden Aktionen abgeschlossen sind.
Gibt es einen besseren Weg als die Verwendung eines Relais? Kann ich anstelle des Relais einen Mosfet oder etwas anderes verwenden?
Und vielleicht brauche ich in Zukunft die 9V für zusätzliche Komponenten, die sich auch ausschalten sollten, wenn sich das Arduino zum Herunterfahren entscheidet. Aber wenn das Relais/Mosfet/..? wird zwischen Batterie und Arduino VIN platziert. Ich kann diese einfach zwischen Relais / Mosfet / .. anschließen? und der Arduino. Das sollte also einfach sein.
Bearbeiten: Basierend auf der Antwort von Passanten habe ich mir Folgendes ausgedacht:
Der Motor ist nur ein Platzhalter für meine zusätzlichen Komponenten, die Strom aus der Batterie ziehen und auch abgeschaltet werden sollten.
Ein System, das ich häufig verwende:
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
M1 wird normalerweise von R1 AUS gehalten. SW1 zieht das Gate von M1 auf LOW, wenn es gedrückt wird, um M1 einzuschalten. Das versorgt dann den Arduino mit Strom.
Die erste Operation, die der Arduino ausführt, besteht darin, den mit dem Gate von M2 verbundenen GPIO anzusteuern (der ein FET mit "Logikpegel" sein muss, dessen Schwellenwert niedrig genug ist, um direkt mit einem Arduino zu fahren - Sie könnten auch einen NPN-BJT verwenden). Das umgeht dann den Schalter SW1 und hält das System eingeschaltet.
Der Schalter kann dann losgelassen werden und die Stromversorgung bleibt eingeschaltet.
Der Arduino kann dann den GPIO freigeben, indem er ihn entweder auf LOW treibt oder auf INPUT setzt (R3 zieht ihn in diesem Fall herunter) und M2 ausschaltet, wodurch R1 das Gate von M1 hochziehen und ausschalten kann.
Der einzige Nachteil dieser Schaltung bei der Arbeit mit einem Arduino ist, dass Sie den Netzschalter lange genug gedrückt halten müssen, damit der Bootloader die Ausführung beendet (ca. 2 Sekunden), bevor der Strom eingeschaltet bleibt. Es kann von Vorteil sein, dem GPIO, der das Gate von M2 ansteuert, eine LED (und den zugehörigen Strombegrenzungswiderstand) hinzuzufügen, damit Sie eine visuelle Rückmeldung von "Einschalten" erhalten (oder Sie können einen separaten GPIO verwenden, wenn Sie dies wünschen). wissen, wann Sie die Taste lange genug gedrückt haben.
Ein High-Side-pnp-Transistor oder p-Kanal-Mosfet mit einem Pull-up-Widerstand an seiner Basis / seinem Gate zwischen dem 5-V-Regler und Ihrer Zubehörschaltung. Wenn Ihr Arduino schlafen geht, stellen Sie den Steuerstift hoch oder den Eingangsmodus ein, um den Transistor auszuschalten. Wenn Sie Strom benötigen, ziehen Sie den Stift nach unten.
Ein Relais ist zu groß und entlädt Ihre 9-V-Batterie sehr schnell.
Jim
Nick Alexejew