Raspberry Pi mit I2C Port Expander MCP23017 16 Relais schalten

0
1071
12 Relais with Extender_MCP23017
12 Relais with Extender_MCP23017

In diesem Beispiel haben wir einen Raspberry Pi 3 mit 3 Relaisboards über einen MCP23017 I2C Port Expander verbunden und schalten die Relais darüber.

Man kann so über einen MCP23017 16 Relais steuern. Über den I2C Port vom Raspberry Pi kann man bis zu 8 MCP23017 ansteuern (man kann dem MCP23017 8 verschiedene Adressen zuweisen). Somit könnte man ganz einfach 128 Relais steuern.

Achtung Raspberry Pi Strom:

Der Raspberry Pi hat nicht genügend Strom um 16 Relais zu schalten!! Man muss eine zusätzliche Stromversorgung anstecken. Wir haben ein zusätzliches Breadboard Netzteil angeschlossen.

Für die Steuerung der Relais mit dem Raspberry Pi über einen Port Expander MCP23017 muss am Raspberry Pi I2C aktiviert sein. Dies kann man die der raspi-config per Commandline machen oder über den Desktop Raspberry PI Configuration.

Raspberry Pi mit I2C
Raspberry Pi mit I2C

Weiters muss die Software WiringPi installiert sein. Ist im Normfall ebenfalls bereits bei aktuellen Images für den Raspberry PI installiert.

Der Schaltplan Raspberry Pi mit I2C Port Expander MCP23017 12 Relais.

Wir beschreiben hier nicht die genau Pinbelegung, welcher Pin von wo nach wo. Jeder kann sich selbst informieren, wenn er möchte, welcher Pin welche Funktion hat.
Zu beachten ist auch, dass diese Schaltung nur über sehr kurze Strecken funktioniert, da noch kein ULN2803 dazwischen haben. Diese Schaltung zeigen wir in einer anderen Anleitung.

12 Relais with Extender_MCP23017
12 Relais with Extender_MCP23017

Die Steuerung der Relais

Wenn sie die Kabel am Port Expander MCP23017 so angesteckt haben, wie auf unserm Plan, so hat der MCP23017 die Adresse 20.

Um zu überprüfen, ob der MCP23017 ansprechbar ist und er wirklich die Adresse 20 hat, geben sie diesen Befehl ein:

 

i2cdetect -y 1
i2cdetect -y 1

Wie sie im Bild sehen, hat das System auf ein Gerät mit der Adresse 20 gefunden.

Es gibt nun verschiedene Möglichkeiten und Befehle um die neuen GPIO Ports über den MCP23017 anzusprechen.

Über die sehr komplizierte hexadezimal Code Ansteuerung
Beispiel:

Um genau zu wissen, welcher Hex-Code welchen Pin steuert, muss man auf dem Datenblatt vom Hersteller die einzelnen Hex-Codes ansehen. http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf

Wie welcher Pin zu Steueren ist findet man in der „SUMMARY OF REGISTERS ASSOCI

ATED WITH THE GPIO PORTS” Tabelle

Oder man steuert jeden einzelnen Pin mit einer Nummer durch dem gpio Befehl an.

Beispiel:

Erklärung:
mcp23017 = ist unser Port Expander MCP23017
100 = Die GPIOs beginnen bei der Nummer 100
0x20 = ist die Adresse von unserm MCP23017 (20)
mode = der Modus vom Pin wird bestimmt in oder out.
108 = ist die GPIO Nummer 8 am MCP23017 (der ganz links in der unteren Reihe)
out = ist ein Ausgang

Erklärung:
Diese beiden Befehle schalten den Pin 8 (108)

Häufigste Fehlerquelle ist die falsche GPIO Pin Nummer. Hier die Nummerierung.

Zu beachten ist, dies ist die Draufsicht so wie auf dem Breadboard! Der Schaltplan ist gespiegelt!

mcp23017-Pin-Belegung
mcp23017-Pin-Belegung

Die GPIO Pin Nummern beginnen bei 100, da wir dem mcp23017, welcher die Adresse 20 hat, die Startadresse 100 gegeben haben.

Würde man dem mcp23017 die Startadresse 200 zuweisen wie:

So hätte der gleiche Pin, der zuerst die Nummer 108 hatte, hätte jetzt die Nummer 208.

I2C-Port-Expander-MCP23017
I2C-Port-Expander-MCP23017

Stabilität der Schaltung

Nach einigen Test kam es immer wieder zu einem Ausfall aller Relais. Besonders wenn man sehr schnell hintereinaner die Relais ein und ausschaltet. Plötzlich haben sich alle Relais abgeschaltet und mussten wieder auf OUT gestellt werden.
Ein weiterer Fehler war, wenn man die Stromzufuhr zur Lampe, welche über eines der Relais geschalten wurde, trennt und wieder angesteckt hat, viel plötzlich wieder die ganze Anlage aus.

Problem: Das verwendete Breadboard- Netzteil bringt keine konstante Spannung bei minimaler Schwankung der Stromzufuhr. Es handelte sich um ein 1 Euro- Breadboard- Netzteil.

Lösung: Die 5V Spannung kommt jetzt über ein externes Netzteil (ein PC ATX Netzteil). Damit läuft die Schaltung jetzt stabil.

Langzeittest: Leider fällt die Schaltung immer noch aus wenn 3 Relais-Boards angeschlossen sind. Mit 2 funktioniert es.

Erstellen der Programme mit Node-RED

Wer kein Programmierer ist, kann sich sehr einfach per Drag and Drop seine Programme und Schaltungen mit Node-RED erstellen. Node-RED ist ein Tool für das Internet der Dinge. Man kann damit so gut wie alles Programmieren und erstellen.

Man kann mit Node-RED verschiedene System verknüpfen und tolle Anwendungen erstellen. Node-RED ist bei den neuen Raspberry Images bereits installiert. Man muss es nur aktivieren.

Auch für MCP23017 I2C Port Expander kann damit Node-RED schaltungen Programmieren und auch gleich dazu die Weboberfläche zur bedienung erstellen.

Hier gibt es eine Anleitung für Node-RED und dem MCP23017 I2C Port Expander.

Die benötigten Einzelteile:

Affiliate Liks

Raspberry Pi 3

Breadboard

Relais

Breadboard Netzteil

Breadboardkabel

Port Expander MCP23017

(ULN2803)

 

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here