Raspberry Pi Relais schalten über GPIO

4
11058
Relais Raspberry Pi
Relais Raspberry Pi

Relais über den Raspberry Pi zu schalten, gehört bei fast jeder Heimautomatisierung dazu. Man benötigt dazu Relais die mit 5V laufen. Diese Relais kann man sehr günstig einkaufen. Es gibt sie vom 1-fach Relais bis zum 16-fach Relais Brett. Das 16-fach Relaismodul benötigt meist eine eigene Stromversorgung. Pro Relais kann im Normalfall (je nach Type) bis zu 220Volt mit 10 Amper schalten. Natürlich aber auch geringere Spannungen.
Für die Verwendung der Relais über den Raspberry Pi muss am Raspberry Pi die Software WiringPi installiert sein. Wie man WiringPi auf dem Raspberry Pi installiert, findet man auf der WiringPi.com Webseite.

Aufbau und Verkabelung Raspberry Pi 4-fach Relais.

4-fach-Relais Raspberry
4-fach-Relais Raspberry – Schaltung funktioniert, ist aber nicht optimal. Siehe weiter unten!

Pin 2 vom Raspberry Pi (5v) kommt zum VCC Pin am Relais.
Pin 6 vom Raspberry Pi (Ground) kommt zum GND Pin am Relais.
Wir haben nun in diesem Beispiel die GPIO Ports 12,16,20,21 am Raspberry (Pin 32,36,38,40) mit den Pins IN1 IN2 IN3 IN4 am Relais verbunden. (Achtung: Diese Belegung am Raspberry Pi gilt für alle Rev.2 Versionen. In diesem Beispiel arbeiten wir mit einem Raspberry Pi 3 Model B. Model B = Rev.2).
Wenn man alles richtig, wie auf dem Plan angesteckt hat, so leuchten alle 4 Dioden am Relaismodul leicht.
Nun können wir beginnen, die Relais zu schalten.
Als Erstes werden die GPIOs aktiviert. Dies funktioniert mit dem Befehl:
gpio export xx out

pi@pi:~ $ gpio export 12 out
pi@pi:~ $ gpio export 16 out
pi@pi:~ $ gpio export 20 out
pi@pi:~ $ gpio export 21 out

Hier kann man dann nun ein klicken vom Relaismodul hören und die Diode leuchtet hell rot.
Wir können nun diesen Befehl mit allen GPIOs durchführen, um alle Relais zu aktivieren.

Relais Raspberry Pi
Relais Raspberry Pi

Als Nächstes kann man dann mit dem Befehl:

gpio –g write xx 1

und

gpio –g write xx 0
die einzelnen Relais schalten.

pi@pi:~ $ gpio -g write 12 1
pi@pi:~ $ gpio -g write 12 0
pi@pi:~ $ gpio -g write 16 1
pi@pi:~ $ gpio -g write 16 1
pi@pi:~ $ gpio -g write 16 0
pi@pi:~ $ gpio -g write 20 1
pi@pi:~ $ gpio -g write 20 0
pi@pi:~ $ gpio -g write 21 1
pi@pi:~ $ gpio -g write 21 0

Wird ein Relais nicht mehr benötigt, so kann man sie mit:
gpio export xx in

wieder deaktivieren.

Mit dem Befehl gpio -g read xx kann man den Status von einem Relais abfragen.

Hinweis!

Diese ist nur eine Testschaltung. Wer dieses System fix betreiben möchte, sollt zwischen GPIO und den IN Pins einen Widerstand mit 1kΩ geben!

 

 

Zum Thema Wiederstand ja oder nein Raspberry Pi Relaisboard

Wenn man das Relaismodul direkt über die GPIOs am Raspberry betreibt, so sollt man scheinbar doch die Wiederstände einbauen. Man findet dazu Angaben, welche von 480 Ohm bis 1K Ohm gehen. Es geht hier scheinbar nicht darum, dass der Raspberry gegrillt wird, sondern um die Relais. Wenn zu viel Reststrom auf dem Optokoppler-LED vom Relais bleibt, so wird dieser schnell kaputt.

Und ist auch tatsächlich so wie es scheint. Wenn man die Relais ohne Wiederstand betreibt, so leuchten die LEDs ganz schwach. Mit Wiederstand sind sie dann ganz abgeschaltet (LED Licht aus).

Hier ein Link zu diesem Thema

Schaltung der Relais

Jedes Relais hat 2 Anschlussmöglichkeiten. (3 Klemmen) je nach dem, welchen Zustand man im nicht geschalteten Zustand benötigt, offen oder geschlossen, kann man zwischen den Anschlüssen wählen.

Es gibt nun viele Möglichkeiten, mit diversen Programmen und Programmiersprachen, diese GPIOs zu steuern.

Falls man mehrere GPIOs am Raspberry benötigt, so kann man mit einem I2C Port Expander für wenig Geld die Anzahl GPIO Ports erhöhen. Mit dem MCP23017 (Preis ca. 1-2 Euro) bekommt man pro Stück 16 weitere GPIO Ports. Diese werden dann jedoch etwas anders angesteuert.

MCP23017 Preis:

Relais Preis:

4 Kommentare

  1. > Diese ist nur eine Testschaltung. Wer dieses System fix betreiben möchte, sollt zwischen GPIO und den IN Pins einen Widerstand mit 1kΩ geben!

    1kΩ Widerstände sind bereits auf der Relaiskarte integriert (die 4 ganz links sind in Reihe mit der Optokoppler LED und der Signal-LED)

  2. Hallo,

    kann sein, dass ich mich irre, ich kenne die Schaltung des Relaisboards nicht so genau, aber, ich würde eine andere Vedrahtung vornehmen.

    Das Modul hat ja Optokoppler, um die Relaissteuerspannung von den GPIOs zu entkoppeln. Das ist ja der ursprüngliche Sinn der Optokoppler. Daher würde ich den Jumper (VCC / JD-VCC) ziehen, um die durch den Optokoppler getrennten Kreise, auch wirklich zu separieren. Und dann, bei JD-VCC und GND externe 5V einspeisen. VCC würde ich mit dem 3V3 PIN vom RPI verbinden. GND muss man gar nicht mit dem RPI verbinden. Der Strom (3V3 Pin) kommt vom RPI, fließt durch einen Vorwiderstand auf die Diode des Optokopplers und dann in den GPIO des RPIs, wenn der PIN auf LOW ist. Bei High fließt natürlich kein Strom.

    Oder, falls kein externes Netzteil vorhanden: Jumper ziehen und 5V vom RPI mit JD-VCC und 3V3 vom RPI mit VCC und GND mit GND verbinden. Die GPIOs des RPIs sind für 3V3 ausgelegt. Und damit sind zumindest die GPIOs von den Relais entkoppelt.

    Bei der vom Autor skizzierten Schaltung, wird ein 5V Potential über Vorwiderstand und Diode an die GPIOs angelegt. Im High Zustand liegen dort 3V3 an und ich kann mir vorstellen, dass aus dem 5V Pin ein geringer Strom gegen das 3V3 Potential fließt und deshalb die LED leicht leuchtet. Bei GPIO LOW begrenzt der Vorwiderstand vor dem Optokoppler den Strom, so dass nichts passieren wird. Für sauber halte ich das aber nicht. Ich kenne jedoch die interne Schaltung des RPIs nicht, um das genau beurteilen zu können. Macht aber irgendwie Sinn.

    In dem Link ist ein typischer Schaltplan eines solchen Relaisboards
    http://i.stack.imgur.com/xmruD.jpg

    Gruß

    Armin

  3. Hallo,
    Armin hat Recht, obwohl auch er etwas übersehen hat. Q3 auf der Schaltung im Link muß voll durchschalten, da sonst für das relais keine 5V zur Verfügung stehen (ein Teil der 5V fallen über dem Q3 ab) und das Relais evtl “klappert”, Schwerwiegender aber ist die zu hohe Verlustleistung über Q3, der das auf Dauer übel nimmt. Damit der Q3 voll durch schaltet, muß an seiner Basis gut 0,7V anliegen. Die kommen über Vcc, Optokoppler und Widerstand. Schaltet aber der Optokoppler nicht ganz durch, fehlt etwas Spannung an der Basis Q3 mit obigen Konsequenzen. Damit aber der Optokoppler ganz durchschaltet, braucht die LED im Optokoppler eine ausreichende Spannung. Die kommt aber mit den 3,3V des Raspberry nicht zustande weil Widerstand, Optokopplerdiode und LED in Reihe. Diese Schaltung ist für den Arduino mit seinen 5V Steuerspannung ausgelegt. Für einen Sicheren Betrieb dieser Relaiskarten sollte man die Relais (JD-VCC) mit einem Netzteil 5V extern versorgen, die 5V des Raspberry auf VCC und Masse auf GRD legen So wird der Sinn der Optokoppler nicht unterlaufen.
    Zur Ansteuerung über die GPIO’s dann einen Transitor (zB BC560) zwischen GPIO und IN-Pin der Relaiskarte schalten. Zwei Widerstände komplettieren die Zusatzschaltung, 2,2KOhm vom GPIO zur Basis, 10KOhm vom GPIO auf Masse, Emitter auf Masse und den Collektor an den Steuer-Pin der Relaiskarte (IN). Auf keinen Fall den GPIO jetzt direkt an den IN da bei GPIO=LOW 5 V an den GPIO gelangen, was den Raspberry zerstört. Nur so ist ein sicherer Betrieb der Relaiskarte gewährleistet. (sicher, was den Arbeitspunkt der Bauteile betrifft. Was die Sicherheit beim Umgang mit Netzspannung angeht, ist ein weiteres Kapittel und soll nicht Gegenstand dieser Ausführung sein. Jeder, der mit Spannungen > Schutzkleinspannung hantiert, ist dafür selbst Verantwortlich)

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein