I2C-expander mit 8fach Relais-Module

Hi,

hat schon mal jemand einen 8fach I2C-Expander mit PCF8574T (Klick) mit einem 8-fach Relais-Modul gekreuzt?

Ich habe einen 3,3V Arduino. Lt Datenblatt sollte das kein Problem für den PCF sein. Der kann ab 2,5V.
Jeder Ausgang kann 25mA treiben.

Von dem Relais-Modul hab ich mal den Schaltplan von einem Kanal angefügt. Da es über einen Optokoppler geht, sollte die Treiberleistung kein Problem sein. Für die Leistung des Relais kommen an JD-VCC 5V dran.
Bleiben 2 Dinge über:

  • Reichen die 3,3V um den Optokoppler durchzuschalten?
  • Um das Relais zu schalten, muss ich den Ausgang des PCF gegen Masse schalten.

Habt ihr schon mal so was gebaut?

Frag besser beim Hersteller des Relaismoduls nach, dann weisst du es gewiss

Ein Datenblatt zum Relaismodul wäre hier von Vorteil.

Ich schätze mal, die 3,3 Volt reichen für 2 Leds in Reihe nicht aus.
Und ja, der Ausgang des PCF muss auf Low gehen, damit das Relais zieht.
Der PCF liefert im LOW-Zustand auch den Strom um Leds zu treiben.
Im HIGH-Zustand ist der Ausgangsstrom zu gering.

Warum muss es den ein Arduino mit 3,3 Volt sein?

  • Reichen die 3,3V um den Optokoppler durchzuschalten?
  • Um das Relais zu schalten, muss ich den Ausgang des PCF gegen Masse schalten.

zum Durchschalten mußt du den Opto auf GND ziehen, dadurch sind die 3.3V egal.

ardubu:
zum Durchschalten mußt du den Opto auf GND ziehen, dadurch sind die 3.3V egal.

Dazu sollte man aber besser den PCF mit 5 Volt betreiben (5 Volt auch an den Leds) und in den I2C-Datenleitungen einen Levelshifter einsetzen.

den PCF mit 5 Volt betreiben (5 Volt auch an den Leds)

wenn du die Led's auf dem Relaisboard meinst, die werden ja schon mit 5V versorgt.

Für die Leistung des Relais kommen an JD-VCC 5V dran.

ardubu:
wenn du die Led's auf dem Relaisboard meinst, die werden ja schon mit 5V versorgt.

Ich meine schon die Led in Reihe zum OK und die Led im OK selbst.

wenn du die Led's auf dem Relaisboard meinst, die werden ja schon mit 5V versorgt.

Und das ist ja genau das Problem!
Dann muss der PCF8574 auch mit 5V versorgt werden.
Denn er verträgt maximal Vdd+0.5V auf seinen Inputs.

Ich fürchte auch, dass die 3,3V nicht für den Vorwiderstand, den OK und die LED reichen.
Ne rote LED braucht ja schon 1,6V.

Was passiert eigentlich, wenn ich den Arduino mit 3,3V versorge und den PCF mit 5V
Brauche ich da einen Levelshifter weil:
1.) Vom PCF 5V an den Arduino kommen, und der dann ade sagt? (kommen da wirklich 5V zurück?)
2.) die 3,3V vom Arduino nicht für ein High-Signal am PCF reichen.

hk007:
Was passiert eigentlich, wenn ich den Arduino mit 3,3V versorge und den PCF mit 5V
Brauche ich da einen Levelshifter weil:
1.) Vom PCF 5V an den Arduino kommen, und der dann ade sagt? (kommen da wirklich 5V zurück?)
2.) die 3,3V vom Arduino nicht für ein High-Signal am PCF reichen.

Das mit dem Levelshifter ist nur meine Empfehlung, da es anders zu Problemen kommen kann.

Ich habe aber auch schon Beiträge gesehen, die von einem größeren Pullup am I2C (10k) geschrieben haben und den dann auf 5 Volt geklemmt haben. Geht wohl auch, aber wenn du auf Sicherheit gehst, mach es richtig.

Nochmal die Frage, warum 3,3 Volt Ardu?

HotSystems:
Nochmal die Frage, warum 3,3 Volt Ardu?

Es ist ne aufwändigere Steuerung mit einigen größeren Webseiten. Und da reicht mir auch kein MEGA mehr SD-Karte will ich nicht. Daher nehm ich dafür einen ESP8266, weil man den auch so schön mit der Arduino-IDE programmieren kann. Und den gibt es halt nur in 3,3V.

hk007:
Es ist ne aufwändigere Steuerung mit einigen größeren Webseiten. Und da reicht mir auch kein MEGA mehr SD-Karte will ich nicht. Daher nehm ich dafür einen ESP8266, weil man den auch so schön mit der Arduino-IDE programmieren kann. Und den gibt es halt nur in 3,3V.

Ok, versteh ich. Dann würde ich auf Nummer sicher gehen und einen Levelshifter einsetzen.

Wenn ich gemischte Slaves habe (5V und 3,3V).
Soll ich dann auf 2 x I2C-Bus ausweichen oder einen splitten. Mit Levelshifter für 5V-Teilnehmer und ohne für die 3,3V-Teilnehmer.
Was meint ihr?

Ich würde es splitten, mit 2 Bussen wird es wieder aufwändig.

OK probier ich. Obs geht werden wir dann schon sehen.
Oder haste so was schon probiert?

hk007:
Wenn ich gemischte Slaves habe (5V und 3,3V).
Soll ich dann auf 2 x I2C-Bus ausweichen oder einen splitten. Mit Levelshifter für 5V-Teilnehmer und ohne für die 3,3V-Teilnehmer.
Was meint ihr?

Wo ist das Problem?

Der Levelshifter hat 2 Seiten!
Auf die eine Seite kommen alle 5V Dinge und auf die andere die 3,3V Dinge.
Da gibts sonst nix zu "splitten".
Schon gar nicht gibts da Gründe zum Denken, und keine Gründe für Entscheidungen.

I2C splitten geht ganz anders!
Da gibts spezielle Bausteine für.
Das wird erst nötig, wenn es mehrere Geräte mit gleicher Adresse auf dem Bus gibt.

Level shifting techniques in I2C-bus design fand ich eine gute Erklärung, auch zu "Connecting devices with different logic levels".

hk007:
OK probier ich. Obs geht werden wir dann schon sehen.
Oder haste so was schon probiert?

Ich habs noch nicht probiert, aber dafür ist der Shifter doch gebaut. Eine Seite 5Volt, andere Seite 3,3Volt.

Auf jeder Seite kannst du dann mehrere (auf Adresse achten) Slaves einsetzen.

ESP8266 kann erfahrungsgemäß 5 V an den I/O Pins ab. es werden zwar hier einige gegenteiliger Meinung sein, deswegen kannst du ruhig auch einen Levelshifter reinmachen, schaden tut er bestimmt nicht.

es werden zwar hier einige gegenteiliger Meinung sein,

Da bin ich ganz vorne dabei!

Der Hersteller ist in dem Punkt eindeutig!