Im Chaosdorf ist seit zwei Wochen eine Lichtsteuerung fest installiert. Dieser Artikel soll zeigen, dass so etwas selbst zu bauen deutlich einfacher ist, als man sich anfangs vorstellt, und noch nichtmal nennenswerte Geldmengen benötigt.
Grundsätzlich gibt es nur drei Voraussetzungen:
- Eine Möglichkeit, Ausgänge digital zu schalten
- 230V-Relais vor den zu schaltenden Verbrauchern
- Keine Angst vor Netzspannung
In unserem Fall sind diverse Raspberry Pies schon für andere Zwecke im Raum vorhanden, so dass wir einfach ein paar GPIO-Pins für Lichtsteuerungszwecke benutzen können. Wer keinen Raspberry Pi zur Hand hat, kann genau so gut eine r0ket, einen Arduino oder beliebiges anderes AVR- / ARM-Gefrickel benutzen. Solange man irgendwie Daten reinkippen und digitale Ausgänge rauskriegen kann, ist alles möglich.
Da ein Raspberry Pi nur 3.3V und sehr geringe Ströme schalten kann und keinen Schutz gegen Kurzschluss oder Überspannung besitzt, sind die GPIO-Pins nur mit Optokopplern verbunden. Diese sorgen für eine galvanische Trennung von der 12V-Schaltspannung, so dass Verdrahtungsfehler schlimmstenfalls ein paar Transistoren oder AVRs töten, und nicht die deutlich teureren Raspberry Pies.
In der ersten Version hat jeder GPIO-Pin genau einen Verbraucher gesteuert, d.h. jeder Pin führt zu einem Optokoppler, der seinerseits 12V und einen Transistor (bis 700mA Schaltstrom) kontrolliert. An diese 12V kann man dann entweder ein Relais oder direkt einen Kleinverbraucher (LEDs etc.) hängen. Die Schaltung ist extrem simpel und funktioniert entsprechend gut, hat aber den Nachteil, dass man die verfügbaren GPIO-Pins (Pro Gerät 12 Stück ohne Sonderfunktionen und 9 mit) irgendwann alle belegt hat, und nicht 30€ für einen weiteren Raspberry Pi ausgeben möchte, nur um 12 weitere Verbraucher zu schalten.
Der einfachste Ansatz, um mehr Verbraucher steuern zu können, ist ein Schieberegister — Es braucht 4 Dateneingänge und kann damit (da Schieberegister auch einen seriellen Ausgang haben und dadurch verkettbar sind) beliebig viele Ausgänge schalten. Alternativ nimmt man sich einen kleinen AVR (z.B. ATTiny2313) zur Hand und implementiert ein Schieberegister in Software, das nur noch zwei Eingänge (einmal Daten, einmal Takt, und eine spezielle Daten+Takt-Kombination um die eingegebenen Daten auf die Ausgänge zu übernehmen) braucht. Das Protokoll ist sehr an I2C angelehnt und sowohl im AVR als auch auf dem Raspberry Pi sehr leicht zu implementieren. Vorteil beider Varianten ist, dass man die Optokoppler schon vor dem Schieberegister anbringen kann, so dass man nur noch zwei bzw. vier Stück braucht. AVRs und Schieberegister sind dank DIP-Sockeln schnell austauschbar, falls mal etwas schiefgeht.
Mit einem dieser Ansätze hat man nun 12V, die meisten Lampen, Drucker und sonstige Geräte bevorzugen aber 230V. Was noch fehlt, ist also ein Kabel von der Schalthardware zum Verbraucher, und dort ein 230V-Relais mit ausreichender Schaltleistung. Falls das Relais auf eine geätzte Platine gelötet ist, ist dabei der Sicherheitsabstand zwischen einzelnen 230V-Leiterbahnen und v.a. auch zwischen 230V- und 12V-Bahnen zu beachten (5mm sind empfehlenswert), im Falle einer Loch- oder Streifenrasterplatine sollten unbedingt die Kupferflächen zwischen Leiterbahnen mit einem Messer abgeschabt werden. An die 12V-Seite kommt ein langes Kabel und parallel dazu eine Diode in Sperr-Richtung (um die Spannungsstöße, die die Relaisspule beim ausschalten produzieren kann, abzufangen), auf die 230V-Seite eine einfache Schraubklemme. Bei fest installierten Verbrauchern reicht es, die Phase zu schalten, Erde und Nullleiter können permanent verbunden sein. Die ganze Konstruktion kommt dann in eine Aufputz-Verteilerdose, wird irgendwo festgeschraubt und fertig.
Die Materialkosten halten sich erstaunlich gering:
- 30€ für einen Raspberry Pi
- Erste Version: <1€ pro Verbraucher für die Steuerschaltung (Platine, Optokoppler, Transistor, Anschlussklemme)
- Mit Schieberegister: <6€ pro 12 Verbraucher (Platine, 2 Optokoppler, ATTiny2313, Transistoren, Widerstände, Anschlussklemmen)
- Ca. 5€ pro Verbraucher für Kabel, Relais und Verteilerdose
Ein paar Fotos und Schaltpläne finden sich in der Gallerie, die Steuersoftware bekommt später einen eigenen Blogpost.
Sehr guter Artikel, wo habt Ihr die Relais gekauft? Und wie teuer waren die?
Die sind von reichelt, FTR-H1CD 12V für 1.15€ das Stück. Gibt auch noch andere mit 5V Spulenspannung, falls man sie direkt an AVRs mit 5V Systemspannung hängen will.
1,15 für 10A. Gefällt mir! Danke für den Tipp mit den Oktokopplern. Bisher hab ich mich gescheut, die Gpios direkt zu benutzen (schneller Defekt) und mit einem Arduino gearbeitet. Aber eure Lösung spart Platz und ist billiger.
Schöner Artikel. Was genau bedeuten die 12V, die der Optokoppler kontrolliert? Ist das eine extra Spannungsquelle? Ich möchte einen Verbraucher an den GPIO Pin anschließen, der nur bei ankommenden 12V reagiert und schaltet. Dieser müsste ja dann mit OUT im Schaltplan (Direktverbindung GPIO->Optokoppler->Verbraucher) verbunden werden. Ist das so ohne weiteres möglich?
Die 12V („LASTLIGHT“ im Schaltplan) sind eine separate Spannungsquelle. Sie kann zum Raspberry Pi gehören (falls er an einem 5V+12V Netzteil betrieben wird) oder komplett unabhängig sein. Es gibt nämlich keine Direktverbindung, die Optokoppler stellen eine vollständige galvanische Trennung her, so dass dem Raspberry Pi völlig egal ist, ob man da nun mit 3.3, 5, 12 oder noch mehr Volt rumhantiert ;-)
Ist also ohne weiteres möglich (und sogar genau so vorgesehen). Z.B. für OUT1: per default (GPIO23 unkonfiguriert bzw. auf low) liegen an OUT1-1 12V an und an OUT1-2 gar nichts → Verbraucher tut nichts. Schaltet man GPIO23 auf high, wird OUT1-2 mit GND verbunden → Verbraucher hat 12V und kann Dinge tun.
Bis wann kommt der Blog mit der Software, würde mich sehr dafür interessieren da ich bin dahin alles genau nachgebaut habe…
Danke
Sobald Motivation, Unifoo und sonstige Dinge es erlauben. Ich hab schon nen Entwurf, könnte also diesen Monat noch was werden :)
Frage eines Elektronikneulings: Warum kommen hinter den Optokopplern noch extra Transistoren ? Reicht der Optokoppler nicht als „Schalter“ aus ?
Das kommt aufs Modell an. Wir haben KB817 verwendet, die sind nur für maximal 50mA / 150mW Output spezifiziert. Für Relais dürfte das reichen, aber z.B. 12V-Lampen lassen sich damit nicht direkt anschließen.
Und den Eingangsbereich der Optokoppler nutzen wir auch nicht aus, die Vorwiderstände sind großzügig überdimensioniert. Das wird durch den Transistor auch aufgefangen.
OK, wieder was gelernt, danke :)
Generell eine interessante Sache und der Raspberry Pi motiviert ja ohnehin zum Experimentieren und Lernen. Es wird also wirklich mal Zeit für einen Besuch im Chaosdorf. Vielleicht finden sich ja ein paar Leute für ein bisschen Pifoo :D
Hi! Raspberry ist einfach klasse, oder? Wir haben bei uns im Space gerade die Voraussetzungen für eine Lichtsteuerung mit den billig-Funksteckdosen vom Baumarkt installiert:
http://flipdot.org/wiki/index.php?title=Status_Notification_System
Zus. zum Raspi braucht man nur noch einen 433 MHz Sender für 3 EUR, und die Steckdose kostet weniger als Relais + Optokoppler.
Die Gefahr von anderen Nutzern auf gleicher Frequenz und mit gleichen Systemcodes lösen wir einfach so, dass wir unsere Befehle alle 60 sec wiederholen – da möchte keiner seine Steckdose auf gleichem Code haben ;)
Großartiger Artikel. Das kleine Linux auf dem Raspi macht ja schon Spaß, aber das Basteln mit Lötkolben UND der Digitalelektronik nach Eurer detaillierten Anleitung und mit den Erklärungen ist die Krönung. Wäre schön, wenn die Software auch noch dokumentiert wird.
Echt klasse Anleitung.
Könnt ihr mir vielleicht nur noch verraten wie viel Strom an den einzelnen Pins bei der Direktverbindung mit dem Verbraucher anliegt? Bin nicht gerade ein Elektronikprofi.
In unserem Fall unter 2mA, hängt aber von den verwendeten Vorwiderständen und Optokopplern ab.
(Der RasPi ist für 8mA pro Pin und maximal 50mA auf allen Pins spezifiziert, solange diese Grenzen eingehalten werden, gibt es keine Probleme)
Klasse Pi Projekt !
Absolute Nachbau Indikation ;-)
Fehlt nur noch die Steuerung verschiedener Lampen per PIR Sensor oder LDR
uns dazu noch eine Webcam die dann auslöst ?? cool !