Raspberry Pi: Relaiskarte ansteuern
Falls ihr euch schon etwas intensiver mit dem Raspberry Pi beschäftigt habt, seid ihr eventuell auch schon auf Relaiskarten für den Arduino oder Raspberry in diversen Online-Shops gestoßen. In diesem Artikel möchten wir euch eine Anleitung zum ansteuern solcher Relais mit dem Raspberry Pi bieten – außerdem zeigen wir euch worauf ihr beim Anschluss solcher Relaiskarten achten solltet. Noch eins Vorab: Falls ihr Geräte mit hohen Spannungen betreiben wollt solltet ihr im Zweifelsfall euren Elektriker fragen – Hohe Spannungen sind Lebensgefährlich!
Was wird benötigt?
Grundsätzlich benötigt ihr neben dem Raspberry Pi selbstverständlich auch eine entsprechende Relaiskarte – diese sind meistens zwischen 5 – 20 Euro in den verschiedenen Online-Shops erhältlich (je nach Relais-Anzahl). Für einen dauerhaften sicheren Betrieb sollten außerdem noch zusätzliche Widerstände vorgeschaltet werden – diese löten wir am besten auf eine Platine auf und später leichter die Kabel anschließen zu können. Alternativ kann man auch auf die Platine verzichten und die Widerstände direkt in das Kabel einlöten – wir bleiben jedoch in dieser Anleitung bei der Platinen-Variante.
Einkaufsliste:
Wie in jeder Anleitung findet ihr auch hier wieder eine Auflistung was für das folgende Tutorial benötigt wird – sollten euch bestimmte Bauteile fehlen, so könnt ihr diese einfach bei Amazon nachbestellen:
Raspberry Pi – Kosten ca. 30-40 Euro – siehe z.B. bei Amazon*.
MicroSD 32GB – Kosten ca. 10 Euro – siehe z.B. bei Amazon*.
Netzteil für Raspberry Pi – Kosten ca. 10 Euro – siehe z.B. bei Amazon*.
8er Relaiskarte – Kosten ca. 12 Euro – siehe z.B. bei Amazon*.
Verbindungskabel (f-m) – Kosten ca. 4 Euro (40 Stück) – siehe z.B. bei Amazon*.
Verbindungskabel (f-f) – Kosten ca. 4 Euro (40 Stück) – siehe z.B. bei Amazon*.
Gemischte Widerstände (470 Ω) – Kosten ca. 8 Euro (1280 Stück) – siehe z.B. bei Amazon*.
Platine (optional) – Kosten ca. 7 Euro (5 Stück) – siehe z.B. bei Amazon*.
Lötkolben und Lötzinn – Kosten ca. 10 Euro – siehe z.B. bei Amazon*.
Platine löten & anschließen:
Für den dauerhaften Betrieb einer Relaiskarte am Raspberry Pi benötigen wir an den GPIO-Verbindungskabeln jeweils einen Widerstand um die Stromzufuhr zu begrenzen. Dazu löten wir die Widerstände am besten auf eine extra Platine und verbinden diese dort wiederum mit Raspberry und Relaiskarte. Für eine 8er Relaiskarte benötigen wir somit 8 Widerstände mit 470 Ohm – dadurch wird die Belastung des einzelnen GPIO-Pins von 15-20 mA auf 7 mA reduziert.
An den Hauptanschlüssen finden wir zudem einen GND und einen VCC-Anschluss – den GND-Pin verbinden wir also auch mit einem GND-Port des Raspberry’s, der VCC-Port wird ebenfalls an unseren Bastelrechner an einen 3,3 Volt VCC-Pin angeschlossen. Den kleinen Jumper (Gelb oder Blau) auf der ganz rechten Seite der Relaisplatine müssen wir außerdem noch entfernen – dort finden wir dann einen JD-VCC Pin vor, diesen verbinden wir mit einem 5 Volt-Port des Raspberry Pi’s.
Nachdem wir alle 470 Ohm Widerstände auf die Platine festgelötet haben, schließen wir nun die einzelnen Relaiseingänge daran an. Zum Schluss verbinden wir das ganze dann jeweils mit einem GPIO-Eingang des Raspberrys um später ein einzelnes Relais auch schalten zu können.
Funktionstest:
Nachdem wir die Relaiskarte erfolgreich mit unserer Widerstands-Platine und unserem Raspberrys verbunden haben, können wir das ganze auf Funktion überprüfen. Dazu nehmen wir folgendes Testprogramm und ändern davor noch die Pin-Zuweisung, sodass es mit eurer Anschluss-Konfiguration zusammenpasst:
!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# GPIO-Pins - Edit!!!
pinList = [5, 6, 13, 19, 16, 26, 20, 21]
# Loop through Pins
for i in pinList:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
SleepTimeL = 0.2
# Loop
try:
while True:
for i in pinList:
GPIO.output(i, GPIO.HIGH)
time.sleep(SleepTimeL);
GPIO.output(i, GPIO.LOW)
pinList.reverse()
for i in pinList:
GPIO.output(i, GPIO.HIGH)
time.sleep(SleepTimeL);
GPIO.output(i, GPIO.LOW)
pinList.reverse()
# End
except KeyboardInterrupt:
print " Ende"
GPIO.cleanup()
Beenden könnt ihr das Programm wie immer mittels der Tastenkombi Strg+C.
wieso werden 470 Ohm Widerstaende zusaetzlich verbaut, da bereits ein Vorwiderstand von 1k auf der Platine vorhanden ist? Das CTR sinkt mit dieser Massnahme auf ca. 30% (bei einem Sicherheitsfaktor von 2 und VCC von 5V)der Optokoppler hat aber ein Minimum von 50%. Desweiteren ist der Optokoppler mit dieser Verschaltung reine Kosmetik, da GND nicht getrennt und somit keine galvanische Trennung gegeben ist.
Die GPIOs des Raspberrys dürfen dauerhaft mit maximal 16mA belastet werden – für den Dauerbetrieb eher 8mA. Das Relais zieht aber laut Produktbeschreibung einen Steuerstrom von bis zu 20mA. Für kurzzeitigen Betrieb mag das wohl nicht weiter schlimm sein, aber auf Dauer könnte es vielleicht zu Schäden am Raspberry führen wenn man diesen ohne die 470 Ohm Widerstände betreibt.
Bei mir persönlich läuft der oben beschriebene Aufbau bereits seit ca. 1,5 Jahre ohne Probleme 24/7 durch (Haussteuerung).
Hi! Wäre es möglich, ein mal GENAU zu erklären,weshalb die 470 Ohm Widerstände benötigt werden?
Stefans Erklärung ist zwar gut, doch ich bitte um eine Erklärung mit allen Einzelheiten.
Ansonsten wären ein paar Stichworte zum Googlen nett. 🙂
Das _Relais_ zieht so viel. Der Optokoppler, der genau deshalb da ist, hat an seinem Eingang bereits 1 kR und zieht damit maximal 3.5 mA (5 V minus U_LED). Den zusätzlichen Widerstand halte ich für Quatsch.
Korrektur:
Es ist sogar noch viel weniger, die Anzeige-LED liegt auch noch in Reihe, womit wir unter 2 mA kommen sollten.
Ich habe die folgende Frage: Ist es möglich, den Raspberry Pi mit der angeschlossenen Relaisplatine durch einschalten der Versorgungsspannung zu aktivieren und dann die einzelnen Relais automatisch anzusteuern. Nach einem Schaltzyklus wird die Stromversorgung abgeschaltet und z.B. 24h später wieder für einen Schaltzyklus wieder eingeschaltet.
Das Ein bzw. Ausschalten erfolgt über eine per Mobilfunk anzusteuerndes Gerät.
Wer hat damit Erfahrung.
Würde mich auf Antworten freuen.
Die 470 Ohm Widerstaende braucht man nicht.
Ich hab mir ein relaisboard von kuman https://www.amazon.de/Kuman-Kanal-Relais-Module-Arduino/dp/B01C3PQFSU/?tag=amazon-info-21 besorgt und nun versucht dies mit meinem rpi anzusteuern, wie hier beschreiben. Leider passiert einfach garnichts ):. nicht mal die leds auf dem board leuchten. zwischen vcc ung gnd ist kein durchgang. ist das relaisboard schrott?
Guten Tag,
wie viele diese Relaikarten kann ich mit dem raspberry ansteuern. Wo liegen die Grenzen?
Mit einem normalen Raspberry Pi 2 oder 3 lassen sich 26 einzelne Relais ansteuern, falls mehr gewünscht sind so gibt es entsprechende „Port Expander“ die mittels einem MCP23017-IC funktionieren – gibt es auch als fertige Steckkarten für ca. 10 bis 20 Euro.