Shutdown Controller für Raspberry Pi im Auto

Anknüpfend an meine vorherige Frage versuche ich, einen Shutdown-Controller für meinen Raspberry Pi zu erstellen. Der Raspberry Pi muss von der Batterie mit Strom versorgt werden, sollte sich jedoch ausschalten, nachdem der Pi erkennt, dass die Zündung ausgeschaltet wurde.

Der Pi nimmt eine 3,3-V-Speisung von der ACC-Leitung (ich habe andere Komponenten, die 5 V von der ACC-Leitung über einen 7805 nehmen, also werde ich mit einem Spannungsteiler auf 3,3 V heruntergehen, es sei denn, jemand hat einen besseren Vorschlag - ich ' Ich werde auch einen uPD6708 ansteuern, der 5-V-CMOS-E/A benötigt, also auf 2 weiteren Leitungen von 5 V auf 3,3 V heruntertransformieren muss).

Software, die im RPi ausgeführt wird, setzt einen der GPIO-Pins hoch, vermutlich werden die GPIO-Pins alle niedrig, wenn das RPi heruntergefahren wird. Q1 sollte also das Relais einschalten und die Stromversorgung des RPi so lange eingeschaltet halten, 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 einen davon für die 12-V-Batterie und die 12-V-Zubehörleitung verwenden.

Dieser Shutdown-Controller behauptet, im Standby nur 50 uA zu ziehen - wenn ich ein CMOS 4071-ODER-Gatter verwenden würde, wäre das ein Anfang, aber nach dem, was ich gelesen habe, bräuchten Sie mehr Strom vom ODER-Gatter, um den Transistor zu sättigen - ist das richtig?

In Anbetracht dessen, dass ich zusätzlich zu den Anforderungen dieser Teilschaltung 5 Leitungen von 3,3 V auf 5 V und 2 von 5 V auf 3,3 V pegelverschieben muss, kann jemand Komponenten / Alternativen für OR1, Q1, RLY1 und / oder empfehlen irgendwelche Modifikationen?

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

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 einen kurzen Moment dauern wird, bis das Relais nach dem Ausschalten der Zündung schaltet - ich habe keine Ahnung, wie lange das dauert, aber ich nehme an, das RPi wird ungefähr 700 mA ziehen der Kondensator, zusätzlich zum 555 und Relais

schematisch

Simulieren Sie diese Schaltung

@Nick schlägt vor, dass es einfacher sein könnte - vielleicht so? Ich habe versucht, die Dioden zu entfernen, damit ich einfach ein handelsübliches 12-V-5-V-1-A-USB-Netzteil (oder ein Paar davon) verwenden kann. Das 555-Datenblatt besagt, dass es 3,3 V ausgibt (max. Quelle 100 mA? Auf dieser Seite stehen 200 mA). Das RPi liest die ACC-Leitung bei 3,3 V, um zu bestimmen, wann es heruntergefahren werden soll.

schematisch

Simulieren Sie diese Schaltung

Ihr 7805 wird WIRKLICH HEISS , wenn Ihr Stromkreis gezeichnet wird. Mit der 700-mA-Entnahme des Himbeer-Pi bei Ihrem vDrop von 7 V (12 V-5 V) werden Sie 4,9 Watt (7 V * 0,7 A) im Regler verbrauchen. Dafür muss man sich wirklich nach einem DC-DC umsehen.
Außerdem ist Ihr "Sicherungssatz" falsch gezeichnet. Im Moment schließt die Diode einfach den 12-V-Eingang kurz, und die Induktivität tut nichts. Ich würde vermuten, dass die Induktivität mit der Stromleitung in Reihe geschaltet ist und die Diode umgekehrt (was eine Sperrvorspannung des Eingangs verhindern würde).
Spannungsteiler sind keine gute Möglichkeit, irgendetwas mit Strom zu versorgen, da die Spannung variiert, wenn die Last variiert. Verwenden Sie einfach eine Art Regler, sie sind billig und reichlich genug.
@ConnorWolf Ich habe einen 7805CT, der mit 1A bewertet ist. ... Gilt das nur, wenn Sie von 6 V auf 5 V herunterkommen? Wenn ich nach DC-DC-Wandler google, erwähnen viele der Suchergebnisse 7805. Wenn der DC-DC-Wandler nicht 5,7 VI ausgibt, müsste ich D2 und D3 für Schottky-Dioden mit einem Spannungsabfall von weniger als 0,25 V schalten
@NicholasAlbion - Ich habe nicht gesagt, dass es nicht funktionieren würde, nur dass Sie einen sehr großen Kühlkörper oder einen Lüfter / kleineren Kühlkörper benötigen, um ihn richtig kühl zu halten.
Achten Sie auf die Hochspannungsspitzen an der Batterie in Autos. Sie können eine TVS-Diode oder einen Varistor verwenden, um den Eingang von 7805 zu schützen.
Vielleicht möchten Sie einen ordentlichen Auto-USB-Ladeadapter als Basis für Ihre Stromversorgung in Betracht ziehen; Ein anständiger enthält immer einen geschalteten Konverter, der die Wärmeableitung minimiert. Für niedrigere Ströme (<= 100 mA) verwende ich seit Jahren Schaltungen wie diese (Quelle / Teile) in Automobilumgebungen.
Könnten Sie nicht einfach ein Relais haben, das schaltet, wenn die Autozündung eingeschaltet ist? Lassen Sie den Pi erkennen, dass er ausgeschaltet wurde, und fahren Sie den Pi dann ordnungsgemäß herunter ...
Das Relais würde in dem Moment abschalten, in dem die Zündung ausgeschaltet wird. ..Dann was? Ich muss den Pi etwa 10 Sekunden nach dem Ausschalten der Zündung kaufen und dann die gesamte Stromversorgung unterbrechen.
Eine 5V ~5F Super Cap würde ~6,25W für 10 Sekunden liefern und ~10-15$ kosten. Achten Sie nur darauf, es nicht kurzzuschließen und den Ladestrom auf vernünftige Weise zu steuern.
Laut dieser Antwort bräuchte ich ungefähr 30 F, also multipliziere deine 10-15 $ mit 5.
Beachten Sie, dass der 'Pi bei max . 700 mA spezifiziert ist . Möglicherweise möchten Sie den tatsächlich gezogenen Strom in Ihrer Anwendung messen. Es kann deutlich unter diesen 0,7 A liegen, wenn das Gerät nicht unter Volllast läuft (CPU + GPU @ 100%, massive Netzwerklast usw.). Wenn er beispielsweise nur durchschnittlich 100 mA zieht, hält ein bestimmter Kondensator viel länger.
Es ist falsch, für diesen Zweck einen Kondensator zu verwenden
@ConnorWolf kannst du näher auf "REALLY HOT" -> DC-DC eingehen? Ich habe meine Platine mit RPi im Auto verbaut, 5 Minuten laufen lassen, und selbst mit einem 2x4cm Kühlkörper hat es mir die Finger verbrannt. Ein 1Amp 7805 ist für diesen Zweck definitiv nicht geeignet.
@martini - nein, es ist eigentlich ganz normal, einen Kondensator zu verwenden, um Zeit für ein sicheres Herunterfahren zu haben - das Problem besteht eher darin, dass der Pi, der nicht für eine solche Verwendung ausgelegt ist, ein bisschen wie ein Stromfresser ist.
Verwenden Sie einen HAT wie diesen, um eine unterbrechungsfreie Stromversorgung von einer Batterie bereitzustellen und dann Auto EIN oder Auto AUS zu erkennen. Je nach Bedarf starten oder herunterfahren. pi-supply.com/product/ups-pico-uninterruptible-power-supply-hat

Antworten (4)

Während die Verwendung einer One-Shot-Timer-Schaltung funktioniert, denke ich, dass eine einfachere Lösung verwendet werden kann. Schauen Sie sich diese Schaltung an.

Geben Sie hier die Bildbeschreibung ein

Zur Verdeutlichung: "VBAT" ist 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 zu verwenden, um nur die Stromversorgung des RPi zu steuern, warum nicht ein standardmäßiges 12-V-Auto-Relais wie gezeigt verwenden. Auf diese Weise wird keine Energie verschwendet (mit Ausnahme des Spulenstroms, während der Strom eingeschaltet ist), da alles von der Batterie getrennt wird.

Eine Seite der Spule ist immer mit 12 V verbunden. Die gegenüberliegende Seite ist über einen N-Kanal-FET (Q1) mit Masse (Chassis) verbunden. Während im Diagramm ein MOSFET verwendet wird, kann jeder FET verwendet werden, der den Spulenstrom senken kann. Wenn "ACC" eingeschaltet wird, schaltet Q1 ein, verbindet die Spule mit Masse und betätigt den Schalter. Dies versorgt wiederum jeden 5-V-Regelkreis, den Sie verwenden möchten (ein einfacher 7805-Regler mit Kühlkörper, ein schaltender DC-DC-Wandler, die erwähnten USB-Versorgungen usw.).

Die Diode D2 soll sicherstellen, dass sich der Kondensator nur in Q1 entladen kann und normal oder Shottky sein kann. Andere Methoden sollten wahrscheinlich für den Überspannungs- und Stromschutz von der Batterie verwendet werden.

Die "ACC"-Spannung kann durch einen Spannungsteiler geleitet werden, um ein 3,3-V-Signal für das RPi zu erzeugen. Seien Sie vorsichtig mit diesem Spannungspegel, wenn man bedenkt, dass eine 12-V-Autobatterie eher 14 V DC entsprechen kann. Solange dieses Signal HI ist, weiß der RPi, dass der Strom eingeschaltet ist. Offensichtlich sollte dieser GPIO-Pin als Eingang mit deaktivierten internen Pullups eingestellt werden. Wenn "ACC" ausgeschaltet ist, sollte das RPi das LO-Signal auf dem Pin sehen und mit dem Herunterfahren beginnen.

Wenn die "ACC"-Spannung abgeschaltet 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 fällt, schaltet es ab, trennt die Relaisspule von Masse und trennt die Stromversorgung von der Peripherieschaltung. Wenn für Q1 ein "Logikpegel-MOSFET" verwendet wird, bleibt er eingeschaltet, bis die Spannung an C1 ziemlich niedrig ist. Ich habe diese Schaltung mit einem NTD4960 ( Datenblatt ) getestet und sie blieb etwa 15 Sekunden lang eingeschaltet - bis C1 etwa 2 V betrug. Um die Zeit zu verlängern, erhöhen Sie den Kapazitätswert.

Wie wähle ich einen geeigneten FET aus? Ich habe bereits ein 12-V-Relais - 621D012 (270 Ohm -> 44 mA). Der Online -Jaycar-Katalog listet Folgendes auf: 2N7000, PN100, VN10KM, IRF540N, IRF1405 und mehr
Ich glaube, der 2N7000 wäre eine gute Wahl, aber hier ist, wonach Sie suchen ... Typ: N-Kanal-FET (kein NPN-BJT); Vorwärtsstrom (I_d): Mindestens 100 mA - (das Doppelte von 44 mA); Gate-Schwellenspannung (V_gs oder V_gth): Nicht mehr als 3 V; Gate-Kapazität: Egal, wir legen mehr extern! "ON" -Widerstand (R_ds): niedrig ist gut, aber Ihre Verlustleistung wird niedrig sein; Verlustleistung (P_d): 44mA ^2 * R_ds << mindestens das Doppelte
Kann man das im Laden kaufen? Ich versuche, dasselbe wie das OP zu tun, aber ich habe keine Ahnung, wie ich meine eigenen Schaltungen erstellen soll. Gibt es dafür im Laden gekaufte Lösungen?

Ehrlich gesagt denke ich, dass du das viel überdenkst.

Ich persönlich würde nur einen One-Shot mit einer Dauer von ein oder zwei Minuten verwenden, der durch das Abstellen des Autos ausgelöst wird.

Wenn Sie das Auto ausschalten, feuert der One-Shot und hält das Relais geschlossen, bis es abläuft. Alles, was Sie tun müssten, wäre sicherzustellen, dass Ihr Himbeer-Pi innerhalb von ein oder zwei Minuten nach dem Abstellen des Autos heruntergefahren wird. Dies sollte einfach genug sein, indem ein Eingang von der geschalteten Stromversorgung des Autos überwacht wird.

Der größte Vorteil eines solchen Systems besteht darin, dass Ihre Software beim 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).
Eine weitere nette Sache ist, dass sich das System bei richtiger Konstruktion von der Autobatterie trennen kann , wodurch sichergestellt wird, dass die Ruhestromaufnahme absolut 0 ist.

hört sich toll an - wie geht das?
Klingt ein bisschen wie die Schaltung, mit der Cortesy Lights eingeschaltet bleiben, nachdem sich die Autotür geschlossen hat. Aus dem Speicher wird ein Kondensator auf 12 V aufgeladen und hält einen FET oder ähnliches. Entfernen Sie die Stromversorgung, die Kappe entlädt sich langsam - bis der FET ausgeschaltet wird.
Das RPi zieht 5V bei ca. 700mA und ich denke, ich brauche ca. 10 Sekunden zum Herunterfahren. Die Verwendung eines Kondensators war mein erster Gedanke, aber das würde Kondensatoren im Wert von etwa 100 US-Dollar erfordern
@NicholasAlbion, die Kappe würde nicht verwendet, um den Pi direkt mit Strom zu versorgen, sondern eine Gate-Spannung an einen FET (der ein Relais steuern würde). Der Gate-Widerstand eines FET ist sehr hoch, sodass Sie keine große Kappe benötigen würden, um die erforderlichen 10 Sekunden zu halten.

Jede Methode mit fester Verzögerung leidet unter dem Problem, nicht zu wissen, wie viel Zeit das RPi wirklich braucht, um herunterzufahren. Es wäre besser, eine Taste zu drücken, die dem Pi das Herunterfahren signalisiert, er könnte dann das tun, was er für ein sauberes, ordnungsgemäßes Herunterfahren benötigt, so lange wie nötig dauern, und dann ein GPIO-Signal zurück an die Druckknopfschaltung senden, die den herunterfährt Energie. Das gibt dem RPi so viel Zeit, wie es braucht, um Dinge wie das sichere Herunterfahren der SD-Karte zu tun. Die Schaltung muss nicht zu kompliziert sein. Sie können eine einfache Schaltung unter sehen

http://www.mosaic-industries.com/embedded-systems/microcontroller-projects/raspberry-pi/on-off-power-controller

Die Website beschreibt den Betrieb der Schaltung.

Sie machen einen guten Punkt, obwohl ich glaube, dass niemand jedes Mal, wenn er sein Auto abschaltet, einen solchen Prozess durchlaufen möchte. Es wäre sinnvoller, wenn der RPi die Abschaltung erkennt, indem er die Spannung der ACC-Leitung überwacht (nur eingeschaltet, wenn das Auto eingeschaltet ist), und dann seine eigene Stromversorgung von der "immer eingeschalteten" 12-V-Leitung abschaltet, wenn er dazu bereit ist - Automatisierung des Systems.

Verwenden Sie 4 wiederaufladbare AA-Batterien. Betreiben Sie den Pi von ihnen und lassen Sie sie von der Autobatterie aufladen.

Verwenden Sie 1 GPIO, um dem Pi mitzuteilen, ob die Zündung ein- oder ausgeschaltet ist.

Herunterfahren, wenn bereit.

Ich denke, diese Antwort muss detaillierter sein, um nützlich zu sein. Posten Sie vielleicht einen Schaltplan oder eine Beschreibung, wie dies Ihrer Meinung nach funktionieren würde und welche Art von Ladeschaltung / Gerät / Leistungssteuerung Sie vorschlagen würden.