Nach meiner vorherigen Frage versuche ich, einen Shutdown-Controller für meinen Raspberry Pi zu erstellen. Der Raspberry Pi muss von der Batterie gespeist werden, sollte sich aber ausschalten, nachdem der Pi feststellt, dass die Zündung ausgeschaltet wurde.
Der Pi nimmt eine 3,3-V-Einspeisung von der ACC-Leitung auf (ich habe andere Komponenten, die 5 V über eine 7805 von der ACC-Leitung aufnehmen, also werde ich mit einem Spannungsteiler auf 3,3 V herunterfahren, es sei denn, jemand hat einen besseren Vorschlag - I ' Außerdem wird ein uPD6708 angesteuert, der 5-V-CMOS-E / A benötigt, sodass auf zwei weiteren Leitungen von 5 V auf 3,3 V gesenkt werden muss.
Software, die im RPi ausgeführt wird, setzt einen der GPIO-Pins auf einen hohen Pegel. Wenn das RPi heruntergefahren wird, gehen alle GPIO-Pins auf einen niedrigen Pegel. Daher sollte Q1 das Relais einschalten und die Stromversorgung des RPi so lange aufrechterhalten, wie die Zündung eingeschaltet ist oder der GPIO-Pin hoch ist.
Ich habe 3 Sicherungssätze mit einer 1000-uF-Kappe und einer Art Transformator / Induktor, daher kann ich auch jeweils einen davon für die 12-V-Batterie und die 12-V-Zubehörleitung verwenden.
Dieser Controller heruntergefahren Shutdown- soll im Standby-Modus nur 50 uA verbrauchen - wenn ich ein CMOS 4071-ODER-Gatter verwenden würde, wäre dies ein Anfang, aber nach dem, was ich gelesen habe, bräuchte man mehr Strom vom ODER-Gatter, um den Transistor zu sättigen das richtig?
Wenn ich bedenke, dass ich zusätzlich zu den Anforderungen dieses Teilschaltkreises 5 Leitungen von 3,3 V auf 5 V und 2 von 5 V auf 3,3 V pegelverschieben muss, kann jeder Komponenten / Alternativen für OR1, Q1, RLY1 und / oder empfehlen irgendwelche Modifikationen?
simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab
Hier ist mein Versuch, dem Vorschlag von @Connor Wolf zu folgen.
- R1 und C3 müssen ausgewählt werden, damit das RPi ordnungsgemäß heruntergefahren werden kann
- Ich habe C1 hinzugefügt, weil ich mir vorstelle, dass es nach dem Ausschalten der Zündung einen kurzen Moment dauern wird, bis das Relais schaltet - ich habe keine Ahnung, wie lange das dauert, aber ich nehme an, dass das RPi ungefähr 700mA von sich zieht der Kondensator, zusätzlich zum 555 und Relais
simulieren Sie diese Schaltung
@ Nick meint, es könnte einfacher sein - vielleicht so? Ich habe versucht, die Dioden zu entfernen, damit ich nur ein handelsübliches 12-V-5-V-1A-USB-Netzteil (oder ein Paar davon) verwenden kann. Das 555-Datenblatt gibt an, dass es 3,3 V ausgibt (maximale Quelle 100 mA? Auf dieser Seite sind 200 mA angegeben). Das RPi liest die ACC-Leitung bei 3,3 V, um zu bestimmen, wann es heruntergefahren werden soll.
quelle
Antworten:
Während die Verwendung einer One-Shot-Timer-Schaltung funktioniert, denke ich, kann eine einfachere Lösung verwendet werden. Schauen Sie sich diese Schaltung an.
Zur Verdeutlichung ist "VBAT" eine 12-V-Quelle, die immer eingeschaltet ist, solange die Batterie angeschlossen ist. "ACC" ist jedoch eine 12-V-Quelle, die nur eingeschaltet ist, wenn die Zündung eingeschaltet ist oder der Schlüssel auf "Zubehör" steht. Anstatt ein 5-V-Relais nur zur Steuerung der Stromversorgung des RPi zu verwenden, sollten Sie ein standardmäßiges 12-V-Automatikrelais wie abgebildet verwenden. Auf diese Weise wird kein Strom verschwendet (mit Ausnahme des Spulenstroms, während der Strom eingeschaltet ist), da alles von der Batterie getrennt wird.
Eine Seite der Spule ist immer an 12V angeschlossen. Die gegenüberliegende Seite ist über einen N-Kanal-FET (Q1) mit Masse (Gehäuse) verbunden. Während in dem Diagramm ein MOSFET verwendet wird, kann jeder FET verwendet werden, der den Spulenstrom senken kann. Wenn "ACC" eingeschaltet ist, schaltet sich Q1 ein, verbindet die Spule mit Masse und betätigt den Schalter. Dadurch wird wiederum der 5-V-Regelkreis mit Strom versorgt, den Sie verwenden möchten (ein einfacher 7805-Regler mit Kühlkörper, ein schaltender DC / DC-Wandler, die genannten USB-Netzteile usw.).
Die Diode D2 soll sicherstellen, dass sich der Kondensator nur in Q1 entladen kann und regulär oder schottky sein kann. Andere Methoden sollten wahrscheinlich für den Überspannungs- und Stromschutz der Batterie angewendet werden.
Die "ACC" -Spannung kann durch einen Spannungsteiler geführt werden, um ein 3,3-V-Signal für das RPi zu erzeugen. Seien Sie vorsichtig mit dieser Spannung, wenn Sie bedenken, dass eine 12-V-Autobatterie mehr wie 14-V-Gleichstrom sein kann. Solange dieses Signal HI ist, weiß das RPi, dass die Stromversorgung eingeschaltet ist. Offensichtlich sollte dieser GPIO-Pin als Eingang festgelegt werden, wenn interne Pullups deaktiviert sind. Wenn "ACC" ausgeschaltet ist, sollte das RPi das LO-Signal auf dem Pin sehen und mit dem Herunterfahren beginnen.
Wenn die "ACC" -Spannung ausgeschaltet wird, behält der Kondensator C1 die Ladung so lange bei und entlädt sich über den Widerstand R1. Sobald die Kondensatorspannung unter die Gate-Schwelle von Q1 abfällt, wird sie ausgeschaltet, wodurch die Relaisspule von der Masse getrennt und die Stromversorgung des Peripherieschaltkreises unterbrochen wird. Wenn ein "Logikpegel-MOSFET" für Q1 verwendet wird, bleibt dieser eingeschaltet, bis die Spannung C1 ziemlich niedrig ist. Ich habe diese Schaltung mit einem NTD4960 ( Datenblatt ) getestet und sie blieb ungefähr 15 Sekunden lang eingeschaltet - bis C1 ungefähr 2 V betrug. Erhöhen Sie den Kapazitätswert, um die Zeit zu verlängern.
quelle
Ehrlich gesagt denke ich, dass Sie dies viel überdenken.
Persönlich würde ich nur einen einzigen Schuss mit einer oder zwei Minuten verwenden, ausgelöst durch das Abschalten des Autos.
Wenn Sie das Auto ausschalten, wird der One-Shot ausgelöst und das Relais geschlossen, bis die Zeit abgelaufen ist. Alles, was Sie tun müssten, wäre sicherzustellen, dass Ihr Himbeer-Pi innerhalb von ein oder zwei Minuten nach dem Ausschalten des Autos heruntergefahren wird. Dies sollte einfach genug sein, indem eine Eingabe von der geschalteten Leistung des Fahrzeugs überwacht wird.
Der größte Vorteil eines solchen Systems besteht darin, dass Ihre Software bei einem Absturz (wenn, nicht wenn) trotzdem heruntergefahren wird, sodass Sie nicht mit einer leeren Batterie enden. Der One-Shot sollte ziemlich einfach sein. Sie könnten einen 555 oder einen kleinen Mikroprozessor verwenden (wie Olin vorschlagen wird).
Ein andere nette Sache ist , dass, wenn Sie den Entwurf richtig zu machen, kann das System selbst trennen von der Autobatterie, die Ruhestromaufnahme gewährleistet ist absolut 0.
quelle
Jede Methode mit fester Verzögerung hat das Problem, nicht zu wissen, wie viel Zeit das RPi wirklich zum Herunterfahren benötigt. Es wäre besser, eine Taste zu drücken, die dem Pi signalisiert, dass es heruntergefahren werden soll. Dann könnte es das tun, was es für ein sauberes, ordnungsgemäßes Herunterfahren benötigt. Es würde so lange wie nötig dauern und dann ein GPIO-Signal zurück an die Drucktastenschaltung senden, die das Pi herunterfährt Leistung. Das gibt dem RPi so viel Zeit, wie es braucht, um die SD-Karte sicher herunterzufahren. Die Schaltung muss nicht zu kompliziert sein. Sie können einen einfachen Stromkreis an sehen
http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/on-off-power-controller
Die Website beschreibt die Funktionsweise der Schaltung.
quelle
Verwenden Sie 4 AA-Akkus. Versorgen Sie den Pi mit Strom und laden Sie ihn über die Autobatterie auf.
Verwenden Sie 1 GPIO, um dem Pi mitzuteilen, ob die Zündung ein- oder ausgeschaltet ist.
Fahren Sie das System herunter, wenn Sie bereit sind.
quelle