Die Stromversorgung
Nun will ich ein bisschen was über die Stromversorgung schreiben. Ich wollte es vermeiden irgendwelche Platinen, Kabel oder Schalter, die mit der Netzspannung in Berührung kommen, im Holzgehäuse zu verbauen.
Also habe ich das Netzteil in ein geschlossenes, geerdetes Gehäuse gepackt.
Das nächste Problem ist der Netzschalter, für den man ein Netzkabel zum Schalter führen müsste. Obendrein wollte ich keinen normalen Schalter sondern einen Taster.
Zu dem Zweck gibt es Stromstoßschalter, im Grunde
bistabile Relais, die zum Schalten eine niedrige Spannung (zB 12 V) verwenden, aber es bleibt das Problem, dass man zum Einschalten eine Spannung benötigt, obwohl das Netzteil zu diesem Zeitpunkt noch vom Netz getrennt ist, also gar keine Spannung liefert.
Außerdem hatte ich mit den mechanischen Schaltern von Steckdosenleisten schon so meine Schwierigkeiten und wollte sie vermeiden.
Gelöst habe ich diese beiden Probleme mit einem Halbleiterrelais zum Trennen von der Netzspannung und einem 9V-Block als Spannungsquelle zum Einschalten. Der Einschaltvorgang läuft so ab
- Mit dem Taster schließt man einen Stromkreis, der das Halbleiterrelais einschaltet - es bleibt allerdings nur eingeschaltet so lange man den Taster drückt.
- Durch das geschaltete Halbleiterrelais wird das Netzteil mit Strom versorgt, „gestartet“ und versorgt von da an das Halbleiterrelais weiter mit der Steuerspannung (damit man den Taster wieder loslassen kann)
Ein kleine Schwäche ist dabei noch das Ausschalten, denn auf diese Weise würde das Werkl laufen bis der Strom ausfällt oder man den Netzstecker zieht.
Die Einplatinencomputer bieten freundlicherweise genug Pins, die bei der Lösung des Problems helfen. Beim Cubietruck sind es die 3,x V der gpio-Pins, die nach dem Herunterfahren des Cubietruck nicht mehr zu Verfügung stehen. Es genügt also das Halbleiterrelais nur so lange eingeschaltet zu halten wie die 3,x V anliegen.
Der Strombedarf des Halbleiterrelais ist aber zu groß als dass sich das Halbleiterrelais direkt (dauerhaft und verlässlich) mit den 3,x V schalten ließe.
Deswegen habe ich mir eine kleine Schaltung einfallen lassen, die ich mit minimalen Anpassungen auch auf dem Raspberry Pi bereits erfolgreich genutzt habe:
D1, D2 ... Dioden
S1 ....... Relaiskarte
S2 ....... Taster (Umschalter)
SSR ...... Halbleiterrelais (solid-state relais)
NT ....... Netzteil
Was nun passiert, angefangen vom ausgeschalteten Gerät ist folgendes.
- Mit dem Taster schließt man den Stromkreis, den der Taster S2 selbst, der 9V-Block, die Diode D1² und der Eingang des Halbleiterrelais bilden
- dadurch schaltet das Halbleiterrelais. Das Netzteil erhält die Netzspannung, startet und stellt die 5 V zur Verfügung.
- Der Cubietruck stellt die 3,x V zur Verfügung und startet.
- Mit den 3,x V wird der Schalter S1 geschaltet. Der Schalter ist in Wirklichkeit ein Relais auf einer Relaiskarte³.
- Dadurch wird das Halbleiterrelais von nun an auch durch den nun geschlossenen Stromkreis bestehend aus Gleichstromausgang Netzteils, Diode D2², Eingang des Halbleiterrelais und Schalter/Relais S1³ eingeschalten gehalten, auch wenn man den Taster S2 loslässt.
Sorgen, dass man deswegen den Taster zum Einschalten besonders lange drücken müsste sind übrigens unbegründet. Man muss den Taster S2 schon richtig bemüht möglichst kurz betätigen und als akustische Rückmeldung hat man das Klicken vom Schalter/Relais S1³ (was ich als sehr angenehm empfinde).
Das Ausschalten geht noch einfacher
- Man führt den Cubietruck herunter. Ausgelöst wird das durch denselben Taster S2 wie das Einschalten ¹.
- Der Cubietruck dreht die 3,x V ab.
- Der Schalter/das Relais S1³ geht in den Ruhezustand, dh öffnet sich.
- Dadurch liegt am Eingang des Halbleiterrelais keine Spannung mehr an und es schaltet aus.
¹ Zum Herunterfahren verwende ich die Tatsache, dass der verbaute (wie die meisten) Taster S2 nicht nur einen Kontakt hat der beim Betätigen geschlossen wird sondern einen zweiten der geöffnet wird. Es ist also tatsächlich ein Umschalter.
Im eingeschalteten Zustand, wenn der Schalter/das Relais S1³ geschlossen ist, verbindet also dieser zweite Kontakt Tasters S2 einen angeschlossenen GPIO-Pin mit der Masse (dem Minuspol des Netzteilausgangs). Das Öffnen dieses Kontakts kann man mit dem gpio-Pin abfragen und so einen Shutdown starten. Das lasse ich der Zuverlässigkeit wegen von einem weitere python-Skript abfragen - nicht dass sich das Ding ohne Tastatur, Maus, Bildschirm,… nicht mehr geordnet herunterfahren lässt nur weil mein eigentliches Bedienprogramm abgestürzt ist oder aus anderen Gründen den Dienst verweigert…
² Die beiden Dioden D1 und D2 verhindern einerseits, dass die 9 V des 9V-Blocks in die 3,x V-Anschlüsse des Cubietruck eingespeist werden, wenn man den Taster betätigt und S1³ geschlossen ist und andererseits, dass der Cubietruck versucht einen (fast leeren) 9V-Block mit seinen 3,x V zu laden.
³ Zu S1. Das ist wie gesagt ein Relais, genauer gesagt ein Relais auf einer Relaiskarte. Voraussetzung ist allerdings, dass das Relais im Ruhezustand ist, wenn man Eingang 0 V/Masse/low anliegt, wie auch immer man das nennen mag und dass es schaltet, wenn man eine Spannung von 3,x V anlegt. Wie ich festgestellt habe ist verhalten sich viele übliche Relaiskarten genau andersherum, aber ich habe auch einen Bausatz gefunden, der sich wie gewünscht verhält
(Achtung, „hinter“ dem Bild verbirgt sich ein relativ großes animiertes gif über die Bestückung der Platine mit den Bauteilen)
Bei meinem ersten Versuch habe ich übrigens eine Relaiskarte verwendet, die sich genau falsch herum verhält (schaltet bei low statt high).
Die Relaisplatine ist die kleine Platine mit dem hell rot leuchtenden LEDs, im Vordergrund leicht zu erkennen der Cubietruck samt SSD und im Hintergrund das Metallgehäuse mit Netzteil und Halbleiterrelais. Im Unscharfen, rechts oben, ist neben einem 9V-Block bereits die richtige Relaiskarte zu sehen.
Die Netzspannungsseite der Verkabelung habe ich absichtlich weggelassen, denn ich möchte niemanden, der sich der damit verbundenen Gefahren nicht bewußt ist zum Basteln animieren.