Firmat Problem mit Relais

Begonnen von wthiess, 25 November 2020, 21:56:24

Vorheriges Thema - Nächstes Thema

wthiess

Hallo!
Leider habe ich mit Firmata ein Problem. Ich steuere mit einem Arduino mega und Ethernetshield eine 8Fach Relais Karte an. Leider immer wenn Fhem neu startet und/oder Firmata reinit macht, werden alle 8 Relais kurz gestartet. Das ist natürlich eine Katastrophe da ich mit einem Relais mein Eingangstor steuere. Vorher hatte ich das über einen Pi mit GPIO. Ohne Fhem gibt es kein Problem. Wie könnte man das lösen? Bitte um Hilfe. Im Firmata Code kenne ich mich leider nicht aus.
lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

jensb

Hallo Wolfgang,

konntest du mit meinem Hinweis schon was anfangen?

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

wthiess

Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Stütti

Hallo Wolfgang,

eine andere Lösung ist, die Spannungsversorgung (VCC) des Relais-Moduls ebenfalls über einen Pin des Arduino zu schalten. Dann setzt du - bevor ein Relais geschaltet werden soll - diesen Pin einfach auch auf high (bzw. on).

Gruß
Stütti
FHEM auf Pi 4 + FTUI auf Pi 3, Eltako 14, SignalESP, JeeLink, EasyESP, ArduCounter, eBus-Koppler, openDTU

wthiess

Hallo!

Direkt oder über einen Transistor? Immerhin müssen 8 Relais geschalten werden. Wobei mehrere dauerhaft auf ein sind.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Stütti

Nunja, ich hatte bei mir ohnehin die Spannungsversorgung der Optokoppler (VCC) und die der Relais (JD-VCC) getrennt. Die Relais liefen über eine eigene 5V-Versorgung. Ich kenne natürlich deine Karte nicht, aber üblicherweise haben diese einen Jumper um VCC und JD-VCC über eine Quelle zu versorgen oder halt voneinander zu trennen (was häufig - je nach Aufbau und sonstiger Verwendung - auch empfohlen wird).
Und ja, dann konnte ich ohne Probleme VCC direkt über den Pin des Arduino liefern.   
FHEM auf Pi 4 + FTUI auf Pi 3, Eltako 14, SignalESP, JeeLink, EasyESP, ArduCounter, eBus-Koppler, openDTU

jensb

Zitat von: wthiess am 26 November 2020, 22:51:23
nein

Das ist sehr knapp, da kann ich nur raten. Das Klappern von Relais beim Reset kann man nur in den Griff bekommen, wenn Hardware und Software zusammenspielen. Aus deinen Infos entnehme ich, dass das Board selbst kein Problem hat, wenn die Spannung ein- und ausgeschaltet wird. Also bleibt doch vor allem der Arduino und seine Firmware als Ursache.

Falls du ein Digitalspeicheroszilloskop hast, kannst du dir den Verlauf der Spannung vom Arduino ein einem der Relaiseingänge genau ansehen. Ansonsten sollte es auch ein Multimeter tun.


  • Prüfe die Spannung, wenn du den Reset fest hälts.
  • Prüfe die Spannung, nachdem du den Reset los lässt, wenn der Arduino kein Verbindung zu FHEM aufbauen kann.
  • Prüfe die Spannung, nachdem du den Reset los lässt, wenn der Arduino die Verbindung zu FHEM aufbaut und aufgebaut hat.

Die Spannung sollte natürlich immer gleich bleiben und sich auch nicht kurz ändern. Ist das doch bei einem der Tests der Fall, muss man da weiter bohren. Ich tippe da immer noch auf die Firmata Firmware aber die Test sollten das klären.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

wthiess

#7
Hallo!

ZitatPrüfe die Spannung, wenn du den Reset fest hälts.
Gedrückt: 2,9V Dann kurzes klappern der Relais von 1-8 nacheinander. Ich habe 8 angelegt.
ZitatPrüfe die Spannung, nachdem du den Reset los lässt, wenn der Arduino kein Verbindung zu FHEM aufbauen kann.
Netzwerkkabel abgezogen also keine Verbindung zu Fhem 2,9V keine Änderung
ZitatPrüfe die Spannung, nachdem du den Reset los lässt, wenn der Arduino die Verbindung zu FHEM aufbaut und
aufgebaut hat.
4,69V

Relais eingeschalten 0,05V Im Betrieb

Ich habe am Firmata Arduino Code folgendes geändert:
void systemResetCallback()   
{
  for (byte i = 0; i < TOTAL_PINS; i++) {
    if (IS_PIN_ANALOG(i)) {
      Firmata.setPinMode(i, ANALOG);
    } else if (IS_PIN_DIGITAL(i)) {
      Firmata.setPinMode(i, INPUT);     Hier meine Änderung Statt OUTBUT INPUT
//   Firmata.setPinMode(i, OUTPUT);
    }
  }
  firmataExt.reset();
}

Wenn ich die Änderung nicht mache, dann ziehen alle Relais für mehrere Sekunden an. Nach der Änderung (Ein Tipp in einem Arduino Forum) klappern die Relais nur kurz.
Hier mein fhem.cfg.
#Firmata Keller
define FIRMATA_Keller FRM 3032 global
setuuid FIRMATA_Keller 5fc1797b-f33f-215f-9c9c-2b7697f677995cfe
attr FIRMATA_Keller i2c-config 30000
attr FIRMATA_Keller room Firmata-test

define Keller_R_22 FRM_OUT 22
setuuid Keller_R_22 5fc1797b-f33f-215f-ef55-73fa4c67d760d5e4
attr Keller_R_22 IODev FIRMATA_Keller
attr Keller_R_22 activeLow yes
attr Keller_R_22 room Firmata-test
attr Keller_R_22 stateFormat value

define Keller_R_23 FRM_OUT 23
setuuid Keller_R_23 5fc1797b-f33f-215f-d01d-3180caa96abdfa9e
attr Keller_R_23 IODev FIRMATA_Keller
attr Keller_R_23 activeLow yes
attr Keller_R_23 room Firmata-test
attr Keller_R_23 stateFormat value

.......
.......


Vielleicht kann man das auch noch wegbringen.
Meine Problem ist eigentlich nur das Tor. sollte es keine Lösung geben werde ich einfach 1 u. 8 zur Sicherheit in Serie Schalten.
Das klappern sehe ich am Voltmeter nicht (Springt von 4,7 auf 4,64). Ist sehr kurz.

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

JensS

Wären RC-Glieder vor den Relais-Eingängen mit entsprechend großen Kondensatoren eine Lösung, um die kurzen Spannungsabfälle zu puffern, eine Lösung?
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

wthiess

Das sind keine Spannungsabfälle sondern die Relais ziehen kurz an. Das sollte gar nicht passieren.
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Papa Romeo

#10
...ich hab jetzt von Firmata auch keinen Schimmer, aber wenn ich das so lese, denke ich auch dass was dran ist, was Jens in seinem "Hinweis" beschreibt und dies ein Initialisierungsproblem zwischen Hardware und Software ist.

Und was Jens mit dem Puffern der "Spannungsabfällen" meint, bezieht sich nicht auf den Ausgang der Relais, sondern auf den Steuereingang des Relais-Moduls.

Wenn man Diesen durch bestimmte Maßnahmen, z.B. einem RC besser gesagt Integrier-Glied, so lange "blockiert" bis die Initialisierung abgeschlossen ist und die Soft- und Hardware sich einig geworden ist welchen Zustand der Ausgang nun annehmen soll, passiert da dann erstmal am Relais gar nix.

Da aber, soviel ich weiß, die Relais-Platinen "LOW-aktiv" sind, kann es sein dass für diesen Ausgang dann eine Invertierung des Schaltverhaltens erforderlich ist,
da es einfacher und weniger Aufwand ist einen LOWals ein HIGH zu halten.


LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

jensb

Zitat von: wthiess am 27 November 2020, 23:47:54
Ich habe am Firmata Arduino Code folgendes geändert:
Das ist es was ich meinte. Es scheint also nicht zu reichen.

Zitat von: wthiess am 27 November 2020, 23:47:54
Gedrückt: 2,9V Dann kurzes klappern der Relais von 1-8 nacheinander. Ich habe 8 angelegt.
Hast du für diesen Test den Hardware-Reset festgehalten? Wenn ja liegt hier das Problem, vor allem wenn die Relaiskarte Active-Low-Eingänge hat. Wenn du die Änderung am Sketch gemacht hast, dann sind die GPIOs ja zunächst Eingänge und damit hochohmig. Wenn dann der Eingangspegel bei 2,9 V liegt, du aber eine 5 V Relaiskarte hast, ist das nur knapp HIGH. Hier könnte vielleicht schon ein Pullup helfen. Versuche an ein Eingang nacheinander experimentell 100k, 10k und 1k gegen 5V. Wenn das nicht reicht kannst du zusätzlich wie Vorgeschlagen einen Kondensator gegen Masse probieren (100 nF), oder ein RC-Glied.

Ein Problem hast du aber, wenn du einen 3,3V Ardunino mit einer 5V Relaiskarte kombinierst. Dann empfiehlt es sich zusätzlich einen Ausgangstransistor zu verenden (Stichwort OpenCollector) und keine Pullups gegen 5V am Arduino-Ausgang sondern am Kollektor des Transistors.

Bekommt auch die Relaiskarte das Reset-Signal? Es ist merkwürdig, dass die Relais nacheinander klappern. Falls du einen Schaltplan der Relaiskarte hast, könnte man sich die Eingangsbeschaltung mal ansehen um zu prüfen, was noch in Frage kommt.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Papa Romeo

#12
Sollte ein Standard-8-fach Relaismodul im Einsatz sein (wenn er ein Bild oder einen Link der diesem Modul einstellen könnte wäre das mal nicht schlecht) dann befinden sich im Eingangskreis ein Optokoppler. Die Anode geht über einen 1 kOhm Widerstand an +Vcc. Die Kathode wird dann zum Schalten an Masse gelegt (LOW-aktiv). Manche Module haben da sogar noch eine Reihen-LED als Schaltzustandsanzeige.
Durch diesen "Schaltungstrick" ist man nun relativ unabhängig vom Pegel den man am Eingang anlegt. Ich hab´s jetzt selber noch nicht getestet, aber durch diese Beschaltung würde ich mal grob sagen, dass alles was größer als 1 Volt ( die Spannung wird eher noch niedriger sein) am Eingang der Relaiskarte anliegt, von Dieser als "HIGH" erkannt wird und das Relais wird nicht schalten. (deswegen stellt es auch kein Problem dar, diese 5 Volt Relaiskarte mit 3,3 Volt Ausgängen sicher zu schalten)
Also kann man dem Problem nur entgegenwirken, wenn man verhindert, dass die Relaiskarte mitbekommt, dass der genutze PIN während der Initialisierung kurzfristig auf "LOW" geht.
Mit dem Vorschalten einer Open-Kollektor-Stufe vor den Eingang der Relaiskarte dessen Basis man über eine einfache RC-Glied-Schaltung, für die Initialiserungszeit, auf "LOW" zieht könnte man dies erreichen.


LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

wthiess

Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Papa Romeo

ok...ist das Modul das ich beschrieben habe....Opto-Koppler mit Reihen-LED zur Einschaltkontrolle.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary