Raspberry Pi GPIO + Relais

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Dietmar,

    Deine Ergebnisse kann ich bestätigen. Ich hatte selbst (auf der Suche nach einer geeigneten Relaisplatine) etwas herumexperimentiert. Beim regulären Betrieb unter 5V fallen an der LED 1,9V und am Optokoppler 1,1V ab. Mit dem Vorwiderstand R1 von 1k ergibt sich ein Strom von 2mA. Will man die Optokoppler bei 3,3V (bei mir waren es sogar nur 3.2V) sicher betreiben, so muß man dafür sorgen, daß die 2mA auch dann sicher fließen. 2 Lösungen sind mir dazu eingefallen:
    a.) man überbrückt die LED mit einem Tropfen Lötzinn. Da die LED mit ihren 1,9V nun wegfällt, paßt das recht genau mit der gesunkenen Spannung (5V-1,9V=3,1V) und der Strom bleibt bei 2mA - also im Betriebsbereich des Optokopplers.
    b.) man senkt den Vorwiderstand von R1 auf 150Ohm (Du bist nicht so weit heruntergegangen - wieso eigentlich nicht?). Bei 2mA fallen dann am Widerstand lediglich noch 0,34V ab. Damit ergibt sich 0,34V+1,9V+1,1V=3,34V.

    Tatsächlich hatte ich dann aber den SMD Widerstand nicht mit einem 150Ohm Widerstand ausgetauscht, sondern einen 200Ohm Widerstand Huckepack auf den 1k Widerstand aufgelötet. Das lag aber nur daran, daß ich den 200Ohm Widerstand gerade daliegen hatte.

    Allerdings bin ich mit der Lösung nicht wirklich zufrieden, da die Gehäusefrage überhaupt nicht geklärt ist. Ich habe bis jetzt noch keine Lösung gefunden, wie ich Pi, Relais und einige Digital- und Analogeingänge vernünftig im Schaltschrank unterbringen kann. Es ist und bleibt ein Gewurstel :(!
    Vielleicht weis ja hier jemand im Forum Bescheid und kann mir weiterhelfen.

    Liebe Grüße

    Anja

    Einmal editiert, zuletzt von anja (15. November 2014 um 11:25)

  • Ich habe diese Relaiskarte im 8er Format und war eigentlich der Meinung mich erinnern zu können, dass da Optokoppler bereits integriert sind ....

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye


  • Ich habe diese Relaiskarte im 8er Format und war eigentlich der Meinung mich erinnern zu können, dass da Optokoppler bereits integriert sind ....

    ja und?
    was soll uns diese "Weisheit" sagen?

    jedenfalls erinnerst du dich richtig für die meisten Karten, aber was du sagen willst verstehe ich nicht, du vielleicht?

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Also ich denke die Antwort von Anja macht Sinn. Ich habe mich auf die frühere Ausführung verlassen und den Vorwiderstand ebenfalls durch 470Ohm ersetzt. Leider funktioniert dadurch nicht alles zuverlässig - Denke dass der Strom für den Optokoppler
    zu gering ist.
    Bis 2 Relais schalten ok - für ein 3. zieht relais dann nicht mehr an. Weiterhin habe ich natürlich nicht auf die Specs der GPIO geschaut. Sie sind wohl nur bis zu max 2mA dauerhafte Belastung ausgelegt.
    Auf jeden Fall sehe ich bei meinem Testaufbau, dass mit PI B+ ab und zu die 3.3V
    Spannung auf 2.7V fällt - Da ich die Relaiskarte über eine Porterweiterung mittels
    MCP23017 schalte, geht dieser Chip dann immer wieder in RESET was nicht ideal ist.
    Der chip könnte auch mit 5V -- D.h. ich werde eine TEst machen und die I2C
    PI - MCP23017 mittels Pegelwandler realisieren. Hierbei würde dann Relais-Karte original mit 5V betrieben.
    Ich hatte ebenfalls VCC an einen PI GPIO pin gelegt (3,3V) was erst recht ein Problem wegen Überlastung gibt. Wieso? Die Relais sind geschaltet wenn INx auf GND sind.
    Dies heist initial beim boot von PI - alle auf angeschaltet - das will man aber eigentl. nicht.
    deshalb hatte ich VCC als "Hauptschalter" genommen. Initial auf GND wie alle GPIOs --
    d.h. nichts geht am Relaisboard.

    Ich denke alles würde wohl eher funktionieren wenn ich den Vorwiederstand auf ca 150-200Ohm verkleinere und eventuell für VCC einen Transistorschalter mache. Aber erst mal versuche ich es mit dem original 5V und Pegelwandler - ohne löten.


  • Allerdings bin ich mit der Lösung nicht wirklich zufrieden, da die Gehäusefrage überhaupt nicht geklärt ist. Ich habe bis jetzt noch keine Lösung gefunden, wie ich Pi, Relais und einige Digital- und Analogeingänge vernünftig im Schaltschrank unterbringen kann. Es ist und bleibt ein Gewurstel :(!

    Entschuldigt, wenn ich wieder ein wenig Eigenwerbung mache, aber ich bereite gerade die Erweiterung meines Shops um eine riesige Hutschienenkategorie vor und da es hier um Schaltschränke geht, sollte das doch eine passende Antwort sein. Ich bekomme nächste Woche noch mehr rein, aber vorerst könntet Ihr hier mal schauen, ob Euch was gefällt. Das Hutschienengehäuse 6TE PCB nehmt bitte nicht so ernst, es sei denn Ihr wollt es wirklich haben :cool: . Ich habe die direkt beim Entwickler gekauft, die sind "handgemacht" und entstanden, als die "großen" noch nicht auf dem Hutschienentripp waren. Die werde ich nach und nach wohl für eigene Projekte "wegnutzen".

    Das Thema Relaiskarte mit und ohne Optokoppler hatten wir ja auch schon zur Genüge und da waren ausser der 5V Problematik auch fehlende Gehäuse ein Thema. Ich habe zu einer HS-Gehäuseserie einen Relaisbausatz mit PCB zusammengestellt. Funktioniert nicht nur mit 3,3V, ich habe sie auch gleich so ausgelegt, das sie mit dem relativ neuen 1,8V CMOS-Pegel funktioniert.

    Demnächst wird es dann auch Hutschienengehäuse für Arduino, Beaglebone und Co geben. Die Preise werden so um die 9 Euro liegen.

  • Hallo roli,

    das mit den Pegeln siehst Du richtig. Hier hilft letztendlich nur eine entsprechende Konvertierung. Es bieten sich dazu grundsätzlich zwei Möglichkeiten an:

    a.) Du konvertierst die Pegel auf I2C-Bus-Seite und versorgst den MCP23017 direkt mit 5V oder
    b.) Du betreibst den MCP23017 weiterhin mit 3,3V und treibst die Ausgänge per 5V versorgtem ULN2803.

    Beide Konzepte haben ihre Vor- und Nachteile. Ich bersönlich hatte mich zur Relaissteuerung meines Hutschienenboards (siehe Thread https://www.forum-raspberrypi.de/Thread-hausste…rtc-1wire-board) für die Variante b.) entschieden.

    Der Grund war recht naheliegend. Zum einen wollte ich genau diese Relais-Platine auch laufen lassen, zum anderen eigene Relais direkt (also ohne weitere zusätzliche Treiber) ansteuern können. Also erfolgt meine Pegelanpassung auf 5V per ULN2803.

    Lösung a.) hat aber auch ihren Charme. Mittels zweier n-Kanal Mosfets läßt sich das realisieren. Die "Großen" im Geschäft machen das per SMD Transistorpärchen bzw. PCA9515, PCA9306 o.ä. - es geht natürlich aber auch einfacher. Wirf mal einen Blick in: http://www.datasheetarchive.com/dlmain/Datashe…/DSA-492462.pdf
    Hier bekommst Du gezeigt wie.

    Tatsächlich ist das auch die Art und Weise, wie ich auf meinem Board den 1wire Bus auf 5V treibe. Für kurze Busse, wie den I2C ist es durchaus legitim, ihn per 3,3V zu betreiben - schon gleich, wenn er auf ein und demselben Board verlegt ist. Bei einer 1wire Hausinstallation ist man jedoch froh etwas mehr Pegelabstand im Signal zu besitzen bzw. gerade den parasitär gespeisten DS18x03 Sensoren mehr Strom zukommen lassen zu können. Daher habe ich für diesen Bus eine Pegelanpassung von 3,3V auf 5V vorgesehen.

    Ich hoffe, ich konnte Dir etwas weiterhelfen.

    Viel Spaß beim Basteln :)

    schnasseldag

  • Irgendwie habe ich gerade einen Knoten im Kopf was den Betrieb des Relais angeht.

    Ich habe das Relais an einen MCP 23017 angeschlossen und zwar ohne Transistor-Vorschaltung.
    Betrieben durch 5V.
    Der Strom der bei angezogenem Relais fließt ist gerade mal 1,6mA.
    Den kann ich doch locker über den MCP jagen oder nicht?


    Bild in voller Auflösung

    Einmal editiert, zuletzt von Psi (13. Dezember 2014 um 12:23)

  • Wenn Du den MCP23017 mit 5V betreibst sind auch die Pegel des Busses 5V. Ungesund für den Raspberry. Wie siehts denn aus, wenn Du als Vcc 3,3V nutzt? Das wäre dem MCP egal aber gesünder für Deinen Raspberry. Ansonsten kannst Du bei dem Stromverbrauch diese Relaiskarte direkt am MCP, aber auch am GPIO des RasPi betreiben.

  • Hi psi,

    der Strom, den Du hier mißt, ist nicht der Relaisstrom (der liegt bei 5V bei etwa 70mA) sondern der welcher durch den Optokoppler fließt. Und ja - Du kannst ihn schalten. Allerdings läufst Du in ein Problem mit Deinen 5V. Wenn Du den MCP23017 mit 5V betreibst, dann mußt Du auch den I2C Bus auf 5V heben. Direkt an den Raspi kannst Du den MCP dann aber nicht mehr anschließen.
    Andersherum - wenn Du den MCP23017 mit 3.3V betreibst, dann stehen Dir nur 3,3V für Deine Optokoppler zur Verfügung. Mit dem auf Deiner Platine aufgelöteten Vorwiderstand reicht der Strom dann aber nicht mehr zum schalten der Optokoppler (in Serie: Vorwiderstand 1k, LED, Optokoppler LED). Entweder schließt Du die LED auf Deiner Relaisplatine kurz (um deren Spannungsabfall für die LED des Optokopplers "zurückzugewinnen") und betreibst den MCP mit 3,3V oder besser, Du setzt einen ULN2803 als Treiberbaustein zwischen den MCP und Deine Relais. Über den ULN kannst Du dann wieder mit 5V arbeiten. Dann kannst Du auch gleich eigene Relais verwenden und brauchst nicht die Relaisplatinen hernehmen. Der Chip besitzt auch integrierte Freilaufdioden.

    Lies mal hier: https://www.forum-raspberrypi.de/Thread-hausste…rtc-1wire-board

    Unten gibt's einen Link zur Dokumentation. Darin auch den Schaltplan zur Platine. Da kannst die "saubere" Entkopplung zwischen MCP und Relais sehen (ich habe einen Breakout für eben jene Platinen vorgesehen).

    Viel Spaß beim Basteln.

    schnasseldag

  • Vielen Dank!

    Das mit den 5V verstehe ich obwohl mein Test gut 30 min zuverlässig gelaufen ist.

    Eine ganz blöde Noop Frage, könnte man den i2c Pegel nicht mit nem einfachen Widerstand drosseln?

  • Hi,


    Das mit den 5V verstehe ich obwohl mein Test gut 30 min zuverlässig gelaufen ist.


    Das wird sich auch nicht ändern. :)

    Der mcp23017 kann nämlich ohne Probleme mit 5V betrieben werden.
    Die I2C Leitungen bekommen dabei auch niemals die 5V mit denen der MCP versorgt wird ab. Das liegt an der Schaltungsart des I2C Busses.
    Man muss dabei nur aufpassen dass man keinen Fall einen der in diesem Fall mit 5V Pegel arbeitenden GPIOs des MCP ohne Pegelwandler mit den GPIOs vom Raspi verbindet.

    Also so lange du keinen der 5V Pins des MCP mit den 3V3 Pins des Raspi verbindest, ist alles gut. :)

    http://nathan.chantrell.net/20120610/raspb…ferent-voltage/
    http://nathan.chantrell.net/20120519/raspb…/#comment-29305

    DON'T PANIC!

    Einmal editiert, zuletzt von joh.raspi (13. Dezember 2014 um 14:05)

  • ...aber wundere Dich dann nicht, wenn ein DS1307 oder andere Busteilnehmer dann nicht mehr funktionieren...
    Will heißen, nicht jeder Chip ist so tolerant, wie der MCP23017. Und auch der benötigt laut Spec für die High-Pegel (SDA, SCL...) mind. 0,8*VDD = 4V bei VDD=5V Versorgung. Mit 3,3V liegst Du eindeutig drunter. Freu Dich, wenn's klappt, wundere Dich aber nicht, wenn's mal nicht mehr klappt...


  • ...aber wundere Dich dann nicht, wenn ein DS1307 oder andere Busteilnehmer dann nicht mehr funktionieren...


    Ja, stimmt.

    Also vorsicht wenn sich verschiedene ICs den I2C Bus teilen.

    Ohne Probleme ist ehrlich gesagt ja auch nicht ganz richtig da es wie im verlinkten Artikel zu lesen ist es bei "längeren" Leitungen zu Problemen führen kann. )

    Der MCP23017 wird in diesem Fall im Grenzbreich betrieben, was die erkennung der High/Low Pegel am I2C Bus betrifft. Deshalb kann es um dieses Problem zu verhindern sinnvoll sein dennoch einen Pegelwandler zu verwenden.


    Ich habe so ein SliceOfPi Board mit einem MCP23017 und auf dem befindet sich ein Jumper mit dem eine Betriebsspannung von 3.3V ODER 5V gewählt werden kann.
    (Das hat der Hersteller aber so wie es aussieht nur gemacht weil das Board eigentlich dazu gedacht ist dass man es direkt auf die GPIOs des Pis steckt und somit das Problem mit zu "langen" Leitungen gar nie zu tragen kommt.?)

    DON'T PANIC!

  • Okay also kommen wir zu folgendem Aufbau:

    Damit werden auch die Ausgänge des MCP invertiert was mir ganz gut gefällt.

    Was ich aber nicht (ganz) verstehe: Ich messe eine Spannung zwischen ULN Ausgang (orange) und GND von
    * Ausgeschaltetn: 2,87V
    * Eingeschalten: 0,65V

    Wie kann ich mir diese Tatsache erklären?

  • Irgendwie steig ich hier nicht so wirklich durch:
    Kann mir jemand erklären, wieso es für den Raspi gefährlich ist, wenn ich die 5v meines 2fach-Relais direkt vom Raspi ziehe?

    Und wenn ich die 5V statt vom Raspi von einem externen Netzteil ziehe, gibt es dann sonst noch etwas zu beachten oder kann ich einfach die GPIOs mit den Datenleitungen des Relais verbinden?

  • Hallo Bazingo,

    kannst Du Deine Frage bitte in einen neuen Thread einstellen - der letzte Einbtrag stammt aus 2014 und endet mit "funktioniert", somit hat der Themenersteller (TE) seine Frage beantwortet bekommen.


    DANKE!

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Zitat von Bazingoo


    oder kann ich einfach die GPIOs mit den Datenleitungen des Relais verbinden?


    Relais haben in der Regel keine Datenleitungen.

    Dein Problem ist?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!