Modul für die Ansteuerung des MCP23017 I2C Portextender

Begonnen von klausw, 03 Mai 2014, 01:02:40

Vorheriges Thema - Nächstes Thema

wthiess

Hallo Klaus!
Nein nichts. Auch im Event-Monitor keine Reaktion. Ich hab mir grad neue Bausteine bestellt. Morgen Abend werde ich einen neuen testen. Vielleicht habe ich ihn bei meinen ersten Anschlussversuchen geschrottet. 
Danke vorerst. Werde dann berichten.

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 ......

klausw

Zitat von: wthiess am 17 Mai 2016, 15:02:34
Hallo Klaus!
Nein nichts. Auch im Event-Monitor keine Reaktion. Ich hab mir grad neue Bausteine bestellt. Morgen Abend werde ich einen neuen testen. Vielleicht habe ich ihn bei meinen ersten Anschlussversuchen geschrottet. 
Danke vorerst. Werde dann berichten.

Wenn der Interrupt nicht geht wirst du auch im Event Monitor nicht sehen.
Mit get kannst du die inputs manuell auslesen.
Es wäre interessant, ob der gedrückte Taster dann erkannt wird. (also gedrückt halten, während du mit get die Werte aktualisierst)
Damit würdest du schon einmal wissen, ob der Port funktioniert.

Als nächstes würde ich einen Taster an den GPIO anschließen und schauen, ob der Interrupt dort funktioniert.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

wthiess

#137
Neur MCP23017 eingebaut. Keine Änderung. Nach flgender Anleitung beschalten.
http://sp0t.net/pi/fhem/8relay
GPIO Port funktioniert. Driekt ohne I2C.

Ich habe gerade den Taster gedrückt gehalten und "get i2c20" in Fhem eingegeben. "OK"
Schaltet wie es sein soll. Was mache ich jetzt?

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 ......

klausw

Zitat von: wthiess am 17 Mai 2016, 17:30:29
Neur MCP23017 eingebaut. Keine Änderung. Nach flgender Anleitung beschalten.
http://sp0t.net/pi/fhem/8relay
GPIO Port funktioniert. Driekt ohne I2C.
Also auch der Interrupt?

Zitat von: wthiess am 17 Mai 2016, 17:30:29
Get? Wie benützte ich das?
get <name>
...müsste aber auch beim neu laden der Detailseite von deinem MCP ausgelöst werden.
Ich weiß nicht mehr genau wie ich das implementiert habe.
Anhand der Zeit hinter dem Reading kannst du erkennen, ob die Werte aktualisiert wurden.


Die Verdrahtung muss weitestgehend stimmen, sonst würden die Ausgänge auch nicht funktionieren.
Der Einzige Verdrahtungsfehler kann noch in der Int Leitung liegen.
In der Anleitung ist INT B angeschlossen.
Int B ist für die B Ports. Wenn du aber die A Ports als Eingänge verwendest solltest du Int A verwenden. Oder alternativ connected_active-low verwenden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

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 ......

wthiess

#140
Hallo!

Alles läuft so wie ich es mir vorstelle bis.....
Hab ein neues Problem. Nun habe ich 2 23017. 1. alle 16 input 2. alle 16 output.
Nach einem Neustart(strom aus ein) funktioniert alles. Reboot hilft nicht. Nach ein paar Minuten geht der 2. auf  "transmission error" und nicht geht mehr. Alle anderen Fhem und Rasperry Funktionen laufen normal. Betreibe den 23017 mit 3.3 V vom Rasperry. Kann es sein das es ein Stromversorgungsproblem ist? Hab den 23017 Teil schon getauscht.

Nachtrag.
Ein bzw. ausschalten von #attr i2c202 InterruptOut separate_active-low
und speichern hilft 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 ......

klausw

Zitat von: wthiess am 17 Mai 2016, 23:13:34
Alles läuft so wie ich es mir vorstelle bis.....
Hab ein neues Problem. Nun habe ich 2 23017. 1. alle 16 input 2. alle 16 output.
Nach einem Neustart(strom aus ein) funktioniert alles. Reboot hilft nicht. Nach ein paar Minuten geht der 2. auf  "transmission error" und nicht geht mehr.
Funktionieren beide nicht mehr?
Zitat von: wthiess am 17 Mai 2016, 23:13:34
Alle anderen Fhem und Rasperry Funktionen laufen normal. Betreibe den 23017 mit 3.3 V vom Rasperry. Kann es sein das es ein Stromversorgungsproblem ist? Hab den 23017 Teil schon getauscht.
Das kann möglich sein. Ich glaube mich zu erinnern, das max 50mA abgenommen werden dürfen.
Du kannst die MCP's auch an die 5V hängen (solange du nur die I2C Pullups vom Raspberry selbst nutzt).
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

wthiess

Hallo Klaus!

Gelöst: Habe am 2. I2C die Resetleitung vergessen anzuschließen.
Ich denke ich sollte nach 22h keine Elektronik mehr angreifen.
Aber ich werde beim Echtbetrieb auf 5V umsteigen. Derzeit betreibe ich nur Grundlagenforschung.

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 ......

wthiess

Hallo!

Habe eine Hardwarefrage zu dem MCP23017. Ich wollte mein Projekt auf 5V umstellen. Jedoch ohne Erfolg. Mit 3.3V alles O.K. Mit einem eigenen externen Netzgerät gehts mit 5V. Mein Rasperry-Netzgerät liefert 5,19V. Mein externes 4,95V. Sehe ich das richtig das die i2c's mit über 5V nicht zurecht kommen?

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 ......

klausw

Zitat von: wthiess am 19 Mai 2016, 21:28:11
Hallo!

Habe eine Hardwarefrage zu dem MCP23017. Ich wollte mein Projekt auf 5V umstellen. Jedoch ohne Erfolg. Mit 3.3V alles O.K. Mit einem eigenen externen Netzgerät gehts mit 5V. Mein Rasperry-Netzgerät liefert 5,19V. Mein externes 4,95V. Sehe ich das richtig das die i2c's mit über 5V nicht zurecht kommen?
Das Problem ist eher, das der MCP irgendwann keinen High Pegel mehr erkennt.
Der I2C auf dem Pi hat Pullups gegen 3,3V.
Der High Pegel wird abhängig von der Versorgung erkannt (steht im Datenblattt ... Vcc -xV)
Mit 5V läuft es gewöhnlich noch, ist aber nicht unbedingt sauber aufgebaut.
Du könntest noch einen Pegelwandler verwenden.
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

wthiess

#145
Hallo!
Ganz verstehe ich das nicht. Im  Datenblatt steht das Teil kann bis 5.5V betrieben werden. Warum spinnen die Dinger Bei 5.19v?

Hab nun das Netzteil vom Rasperry getauscht. Nun ist alles O.K. Das Packet von Conrad hatte ein nicht optimales Netzteil. Zuviele Störungen drinnen. Hätte nun noch mit Kondensatoren arbeiten können. Aber jetzt ists gut.

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 ......

klausw

Zitat von: wthiess am 19 Mai 2016, 23:16:49
Ganz verstehe ich das nicht. Im  Datenblatt steht das Teil kann bis 5.5V betrieben werden. Warum spinnen die Dinger Bei 5.19v?

Das stimmt auch. Du betreibst ihn ja auch, nur funktioniert er nicht ;)
Es müssen noch ein paar mehr Parameter beachtet werden.
Im Datenblatt sind für den I2C Bus (SCL/SCK) auch Spannungswerte für Input Low Voltage und Input High Voltage angegeben. Das sind die Spannungsbereiche, in denen ein Low bzw. High auf dem Bus erkannt wird. Diese Werte sind Spannungsabhängig.
Input High Voltage is z.B. 0,8 x Versorgungsspannung.
Bei 5V Versorgungsspannung müsstest du also 4V für ein High liefern. Da der Pullup auf dem Pi aber auf 3,3V geht hast du folglich als High nur 3,3V anliegen.
Es funktioniert trotzdem, da die Toleranzen für gewöhnlich größer sind, ist aber wie gesagt, nicht die sauberste Lösung. Irgendwo ist aber halt Schluß (in deinem Fall ist das zwischen 5V und 5,19V)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

AlphaKingOne

So ich wollte mich auch mal mit dem MCP probieren über Shell läuft soweit alles ganz gut und Fhem mit Shell Kommandos läuft mehr oder weniger auch ganz gut bis auf die Tatsache das  sich die Adresse ab und zu mal ändert  ??? egal. Ich wollt jetzt mal das Modul ausprobieren aber jedesmal wenn ich die config speichern will kommt i2cBus: Error! I2C device not found: /dev/i2c-1... Please check kernelmodules must loaded: i2c_bcm2708, i2c_dev icMCP23017: unknown IODev i2cBus specified no IODev assigned to 'icMCP23017' icMCP23017: unknown attribute InterruptOut. Type 'attr icMCP23017 ?' for a detailed list. no IODev assigned to 'icMCP23017' no IODev assigned to 'icMCP23017' icMCP23017: unknown attribute invert_input. Type 'attr icMCP23017 ?' for a detailed list.

füge ich die config aus dem Forum ein Stürzt Fehm ab beim neu start kommt dann jedes mal
Messages collected while initializing FHEM:
configfile: i2cBus: Error! I2C device not found: /dev/i2c-1... Please check kernelmodules must loaded: i2c_bcm2708, i2c_dev
icMCP23017: unknown IODev i2cBus specified
no IODev assigned to 'icMCP23017'
icMCP23017: unknown attribute InterruptOut. Type 'attr icMCP23017 ?' for a detailed list.
no IODev assigned to 'icMCP23017'
no IODev assigned to 'icMCP23017'
icMCP23017: unknown attribute invert_input. Type 'attr icMCP23017 ?' for a detailed list.


laut aussage soll der aber eigentlich funktionieren

hier ist meine config bestimmt hab ich mich nur wieder vertippt  >:(


###I2C-Device###
define i2cBus RPII2C 1..
attr i2cBus group MCP23017

###MCP23017-0x20###
define icMCP23017 I2C_MCP23017 0x20
attr icMCP23017 IODev i2cBus
attr icMCP23017 Interrupt B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 InterruptOut connected_active-low
attr icMCP23017 OnStartup A5=on,B1=off
attr icMCP23017 OutputPorts A0,A1,A2,A3,A3,A5,A6,A7
attr icMCP23017 Pullup B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 invert_input B0,B1,B2,B3,B4,B5,B6,B7
attr icMCP23017 group MCP23017

###Interrupt A&B####
define Interrupt RPI_GPIO 4
attr Interrupt active_low yes
attr Interrupt direction input
attr Interrupt interrupt both
attr Interrupt userReadings test {fhem ("get icMCP23017")}
attr Interrupt group MCP23017

###Sensoren (Input)####
#--Bank-B--#

define prxPortB0 readingsProxy icMCP23017:PortB0
attr prxPortB0 group InputPorts
attr prxPortB0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB1 readingsProxy icMCP23017:PortB1
attr prxPortB1 group InputPorts
attr prxPortB1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB2 readingsProxy icMCP23017:PortB2
attr prxPortB2 group InputPorts
attr prxPortB2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB3 readingsProxy icMCP23017:PortB3
attr prxPortB3 group InputPorts
attr prxPortB3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB4 readingsProxy icMCP23017:PortB4
attr prxPortB4 group InputPorts
attr prxPortB4 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB5 readingsProxy icMCP23017:PortB5
attr prxPortB5 group InputPorts
attr prxPortB5 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB6 readingsProxy icMCP23017:PortB6
attr prxPortB6 group InputPorts
attr prxPortB6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortB7 readingsProxy icMCP23017:PortB7
attr prxPortB7 group InputPorts
attr prxPortB7 valueFn {($VALUE eq "on")?"off":"on"}

####Aktoren (Output)####
#---A-Kanal-----

define prxPortA0 readingsProxy icMCP23017:PortA0
attr prxPortA0 group OutputPorts
attr prxPortA0 setFn {($CMD eq "on")?"PortA4 off":"PortA0 on"}
attr prxPortA0 setList on off
attr prxPortA0 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA1 readingsProxy icMCP23017:PortA1
attr prxPortA1 group OutputPorts
attr prxPortA1 setFn {($CMD eq "on")?"PortA5 off":"PortA1 on"}
attr prxPortA1 setList on off
attr prxPortA1 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA2 readingsProxy icMCP23017:PortA2
attr prxPortA2 group OutputPorts
attr prxPortA2 setFn {($CMD eq "on")?"PortA4 off":"PortA2 on"}
attr prxPortA2 setList on off
attr prxPortA2 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA3 readingsProxy icMCP23017:PortA3
attr prxPortA3 group OutputPorts
attr prxPortA3 setFn {($CMD eq "on")?"PortA5 off":"PortA3 on"}
attr prxPortA3 setList on off
attr prxPortA3 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA4 readingsProxy icMCP23017:PortA4
attr prxPortA4 group OutputPorts
attr prxPortA4 setFn {($CMD eq "on")?"PortA4 off":"PortA4 on"}
attr prxPortA4 setList on off
attr prxPortA4 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA5 readingsProxy icMCP23017:PortA5
attr prxPortA5 group OutputPorts
attr prxPortA5 setFn {($CMD eq "on")?"PortA5 off":"PortA5 on"}
attr prxPortA5 setList on off
attr prxPortA5 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA6 readingsProxy icMCP23017:PortA6
attr prxPortA6 group OutputPorts
attr prxPortA6 setFn {($CMD eq "on")?"PortA4 off":"PortA6 on"}
attr prxPortA6 setList on off
attr prxPortA6 valueFn {($VALUE eq "on")?"off":"on"}

define prxPortA7 readingsProxy icMCP23017:PortA7
attr prxPortA7 group OutputPorts
attr prxPortA7 setFn {($CMD eq "on")?"PortA5 off":"PortA7 on"}
attr prxPortA7 setList on off
attr prxPortA57 valueFn {($VALUE eq "on")?"off":"on"}
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266

Frank_Huber

hast über die i2c tools die Adresse ausgelesen?
PI2 oder 3? je nachdem hast glaub i2c-1 oder i2c-0

wenn sich die Adresse ändert scheint was mit den Modulen faul zu sein. bei meinen ist die Adresse über Lötbrücken festgesetzt.

gib mal paar mehr Eckdaten zu deinem System.

bei mir laufen sie so einwandfrei: (32port Extender)
define OUT_1 I2C_MCP23017 0x21
attr OUT_1 IODev I2C
attr OUT_1 OnStartup A0=last,A1=last,A2=last,A3=last,A4=last,A5=last,A6=last,A7=last
attr OUT_1 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7
define OUT_2 I2C_MCP23017 0x22
attr OUT_2 IODev I2C
attr OUT_2 OnStartup A0=last,A1=last,A2=last,A3=last,A4=last,A5=last,A6=last,A7=last
attr OUT_2 OutputPorts A0,A1,A2,A3,A4,A5,A6,A7,B0,B1,B2,B3,B4,B5,B6,B7

AlphaKingOne

ja hab ich ich hab eigentlich 0x20 manchmal wenn GPA0 auf output geht hab ich dann 0x27  nachmal hab ich das Gefühl das es am DS18B20 liegt. Oder könnte es auch an der Stromversorgung liegen? War jetzt aber eigentlich nicht mein haupt anliegen mir ging es jetzt mehr um die Fehler Meldung da ich gern das Modul zum laufen bekommen würde

Hab den Pi 2 und das mit der 0 ist nur bei Ver. 1
Raspberry B, B+, B v2 u. v3; DS18B20; MCP23017; CUL; ESP8266