[gelöst] I2C_MCP342x Konfiguration wird nicht angenommen

Begonnen von Burny4600, 05 November 2016, 19:19:18

Vorheriges Thema - Nächstes Thema

Burny4600

Möchte das ADC Differential Pi I2C_MCP342x Modul bzw. ADC Pi Plus I2C_MCP342x Modul einsetzten.

Nur funktioniert die beschriebene Konfiguration bei keinem der I2C_MCP342x Modulen.
Bei keinem werden Readings angelegt.

LIST des ADC Differential Pi I2C_MCP342x Modul
Internals:
   CFGFN      /media/hdd/fhem/mycfg/AD_Controller/I2C_MCP3424_rasp03.cfg
   DEF        0x6b 4
   IODev      RPII2C_1
   NAME       MCP3424_WC_C5678
   NR         201
   STATE      defined
   TYPE       I2C_MCP342x
Attributes:
   IODev      RPII2C_1
   alias      Analog Eingänge 5-8
   ch1factor  1
   ch1gain    1
   ch1resolution 12
   ch1roundDecimal 3
   devStateIcon Ok:it_net@green Initialized:it_net@yellow disconnected:it_net@red error:it_net@red
   icon       it_net
   poll_interval 1
   room       _RxTx
   verbose    5


LOG des ADC Differential Pi I2C_MCP342x Modul
2016.11.05 19:00:10.086 5: im init client fuer MCP3424_WC_C1234
2016.11.05 19:00:10.088 2: error initializing 'MCP3424_WC_C1234': Define: Wrong syntax. Usage:
define <name> MCP342x [<i2caddress>] [<type>]
2016.11.05 19:00:10.089 5: im init client fuer MCP3424_WC_C5678
2016.11.05 19:00:10.091 2: error initializing 'MCP3424_WC_C5678': Define: Wrong syntax. Usage:
define <name> MCP342x [<i2caddress>] [<type>]
2016.11.05 19:00:10.148 1: usb create starting
2016.11.05 19:00:16.741 1: usb create end
2016.11.05 19:00:16.750 0: Featurelevel: 5.7
2016.11.05 19:00:16.751 0: Server started with 45 defined entities (fhem.pl:12463/2016-10-29 perl:5.020002 os:linux user:fhem pid:3023)
2016.11.05 19:00:16.753 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/52_I2C_MCP342x.pm line 210.
2016.11.05 19:00:16.755 1: PERL WARNING: Use of uninitialized value in foreach loop entry at ./FHEM/52_I2C_MCP342x.pm line 223.
2016.11.05 19:00:16.756 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/52_I2C_MCP342x.pm line 231.


Config des ADC Differential Pi I2C_MCP342x Modul
########################################
###          MCP3424 Modul           ###
########################################

### Eingänge 1-4
define MCP3424_WC_C1234 I2C_MCP342x 0x6a 4
attr MCP3424_WC_C1234 IODev RPII2C_1
attr MCP3424_WC_C1234 alias Analog Eingänge 1-4
attr MCP3424_WC_C1234 ch1factor 1
attr MCP3424_WC_C1234 ch1gain 1
attr MCP3424_WC_C1234 ch1resolution 12
attr MCP3424_WC_C1234 ch1roundDecimal 3
attr MCP3424_WC_C1234 devStateIcon Ok:it_net@green Initialized:it_net@yellow disconnected:it_net@red error:it_net@red
attr MCP3424_WC_C1234 icon it_net
attr MCP3424_WC_C1234 poll_interval 1
attr MCP3424_WC_C1234 room _RxTx
attr MCP3424_WC_C1234 verbose 5

# -----------------------------------------------------------------------------------------------

### Eingänge 5-8
define MCP3424_WC_C5678 I2C_MCP342x 0x6b 4
attr MCP3424_WC_C5678 IODev RPII2C_1
attr MCP3424_WC_C5678 alias Analog Eingänge 5-8
attr MCP3424_WC_C5678 ch2factor 1
attr MCP3424_WC_C5678 ch2gain 1
attr MCP3424_WC_C5678 ch2resolution 12
attr MCP3424_WC_C5678 ch2roundDecimal 3
attr MCP3424_WC_C5678 devStateIcon Ok:it_net@green Initialized:it_net@yellow disconnected:it_net@red error:it_net@red
attr MCP3424_WC_C5678 icon it_net
attr MCP3424_WC_C5678 poll_interval 1
attr MCP3424_WC_C5678 room _RxTx
attr MCP3424_WC_C5678 verbose 5

# -----------------------------------------------------------------------------------------------

########################################
###     Eingänge MCP3424  C1-C4      ###
########################################

### Bank 1 Kanal A
define MCP3424_WC_C1234_C1 readingsProxy MCP3424_WC_C1234:Channel1
attr MCP3424_WC_C1234_C1 group InputPorts
attr MCP3424_WC_C1234_C1 icon time_graph
attr MCP3424_WC_C1234_C1 room _IO

define MCP3424_WC_C1234_C2 readingsProxy MCP3424_WC_C1234:Channel2
attr MCP3424_WC_C1234_C2 group InputPorts
attr MCP3424_WC_C1234_C2 icon time_graph
attr MCP3424_WC_C1234_C2 room _IO

define MCP3424_WC_C1234_C3 readingsProxy MCP3424_WC_C1234:Channel3
attr MCP3424_WC_C1234_C3 group InputPorts
attr MCP3424_WC_C1234_C3 icon time_graph
attr MCP3424_WC_C1234_C3 room _IO

define MCP3424_WC_C1234_C4 readingsProxy MCP3424_WC_C1234:Channel4
attr MCP3424_WC_C1234_C4 group InputPorts
attr MCP3424_WC_C1234_C4 icon time_graph
attr MCP3424_WC_C1234_C4 room _IO

# -----------------------------------------------------------------------------------------------

########################################
###     Eingänge MCP3424  C5-C8      ###
########################################

define MCP3424_WC_C5678_C5 readingsProxy MCP3424_WC_C5678:Channel1
attr MCP3424_WC_C5678_C5 group InputPorts
attr MCP3424_WC_C5678_C5 icon time_graph
attr MCP3424_WC_C5678_C5 room _IO

define MCP3424_WC_C5678_C6 readingsProxy MCP3424_WC_C5678:Channel2
attr MCP3424_WC_C5678_C6 group InputPorts
attr MCP3424_WC_C5678_C6 icon time_graph
attr MCP3424_WC_C5678_C6 room _IO

define MCP3424_WC_C5678_C7 readingsProxy MCP3424_WC_C5678:Channel3
attr MCP3424_WC_C5678_C7 group InputPorts
attr MCP3424_WC_C5678_C7 icon time_graph
attr MCP3424_WC_C5678_C7 room _IO

define MCP3424_WC_C5678_C8 readingsProxy MCP3424_WC_C5678:Channel4
attr MCP3424_WC_C5678_C8 group InputPorts
attr MCP3424_WC_C5678_C8 icon time_graph
attr MCP3424_WC_C5678_C8 room _IO

# -----------------------------------------------------------------------------------------------
# -----------------------------------------------------------------------------------------------

Hat sich gegenüber der Beschreigungen etwas geändert?

Was auffällt ist dieser LOG Eintrag define <name> MCP342x [<i2caddress>] [<type>] der eigentlich schon abweicht.
Würde man die Konfiguration nach diesem Hinweis anlegen wird man keinen Erfolg haben.
Die Definition muss jedenfalls mit I2C_MCP342x erfolgen.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

Burny4600

Ein weitere Punkt der auffällt, ist das es nur 2 Channels gibt obwohl es 4 gibt.

Ist dieses Modul bei jemanden schon funktionsfähig in Betrieb?
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

Oh, ich habe vermutlich beim letzten Update eine bereits ausgebügelten Bug wieder eingebaut  ???

Könntest du mit dieser Version bitte testen, ob es funktioniert?
Einfach die auf dem System vorhandene Datei hiermit ersetzen.
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

Burny4600

@klausw
Sieht mit dieser Datei schon ganz anders aus.

Bei den Eingangen 1-4 und 5-8 sind jetzt alle Kanäle vorhanden.

Werde jetzt zum nächsten Schritt ansetzten und die Eingänge beschalten.

Danke für die rasche Rückmeldung.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

klausw

so, sollte ab morgen auch über update wieder funktionieren
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

Burny4600

Wenn ich mit dem Aufbau fertig bin melde ich mich nochmals zurück.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

TheTrumpeter

Hallo klausw,

Danke für das Modul.

Bei mir hängt seit gestern das ADCPiZero von ABElectronics am RPI3. Habe gerade Dein Modul verknüpft und ich bekomme die Readings aller 8 Kanäle. Leider habe ich die zugehörigen Sensoren noch nicht, sodass ich keine "lebenden" Werte habe.

Kann es sein, dass noch ein Bug bei 18bit-Auflösung im Modul ist?
Ich habe noch nichts angeschlossen & alle Kanäle stehen wie erwartet auf 0.000 bei allen Auflösungen ausgenommen 18bit. Bei 18bit bekomme ich entweder -15.625 oder -31.250.


Weiters habe ich noch eine Frage zum Attribut ch(x)factor:
Ich gehe davon aus, dass das eine reine Aufbereitung des Messergebnisses nach dem Auslesen ist? D.h. ich kann dort den Faktor des dem jeweiligen Kanal vorgeschalteten Spannungsteilers eingeben, um die Sensorspannung angezeigt zu bekommen?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

klausw

Zitat von: TheTrumpeter am 05 Januar 2017, 21:57:51
Kann es sein, dass noch ein Bug bei 18bit-Auflösung im Modul ist?
Ich habe noch nichts angeschlossen & alle Kanäle stehen wie erwartet auf 0.000 bei allen Auflösungen ausgenommen 18bit. Bei 18bit bekomme ich entweder -15.625 oder -31.250.
[/quote}

Das ist möglich. Ich würde dich aber bitten, es mit realen Werten zu testen.
Fixe Werte finde ich aber komisch. Ein bisschen Rauschen sollte schon da sein.


Zitat von: TheTrumpeter am 05 Januar 2017, 21:57:51
Weiters habe ich noch eine Frage zum Attribut ch(x)factor:
Ich gehe davon aus, dass das eine reine Aufbereitung des Messergebnisses nach dem Auslesen ist? D.h. ich kann dort den Faktor des dem jeweiligen Kanal vorgeschalteten Spannungsteilers eingeben, um die Sensorspannung angezeigt zu bekommen?

Exakt. Messwert wird mit dem Faktor multipliziert.
Vermutlich hat es noch niemand getestet wann was nicht stimmt muss es nicht an dir liegen  8).
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

TheTrumpeter

Zitat von: klausw am 06 Januar 2017, 14:45:53
Das ist möglich. Ich würde dich aber bitten, es mit realen Werten zu testen.
Fixe Werte finde ich aber komisch. Ein bisschen Rauschen sollte schon da sein.
Steht immer 0.000 auf allen 8 Kanälen...

Kann es sein, dass ich irgendwas falsch konfiguriert habe und daher gar nicht die Werte vom Chip bekomme?

define ADCPiZero RPII2C 1
attr ADCPiZero room Heizung
define ADC.CH1234 I2C_MCP342x 0x68 4
attr ADC.CH1234 IODev ADCPiZero
attr ADC.CH1234 ch1factor 2
attr ADC.CH1234 ch1resolution 16
attr ADC.CH1234 ch2factor 2
attr ADC.CH1234 ch2resolution 16
attr ADC.CH1234 ch3factor 2
attr ADC.CH1234 ch3resolution 16
attr ADC.CH1234 ch4factor 2
attr ADC.CH1234 ch4resolution 16
attr ADC.CH1234 poll_interval 5
attr ADC.CH1234 room Heizung
define ADC.CH5678 I2C_MCP342x 0x69 4
attr ADC.CH5678 IODev ADCPiZero
attr ADC.CH5678 ch1factor 2
attr ADC.CH5678 ch1resolution 16
attr ADC.CH5678 ch2factor 2
attr ADC.CH5678 ch2resolution 16
attr ADC.CH5678 ch3factor 2
attr ADC.CH5678 ch3resolution 16
attr ADC.CH5678 ch4factor 2
attr ADC.CH5678 ch4resolution 16
attr ADC.CH5678 poll_interval 5
attr ADC.CH5678 room Heizung
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

TheTrumpeter

#9
So, ich habe endlich den Spannungsteiler gelötet und versucht den ADCPiZero "ordentlich" in Betrieb zu nehmen...

Allerdings haben meine Sensoren in FHEM erstmal nichts getan, obwohl sie eigentlich funktionieren.
Also habe ich einfach mal die 3V3 und 5V vom Raspi über den Spannungsteiler in 2 Kanäle vom ADCPiZero geschickt, und siehe da, es tut sich was.

Nich bin nur zu blöd um zu verstehen in welcher Einheit die Readings sind oder sein sollen?
Wenn ca. 0V62 am Eingang anliegen, zeigt FHEM 252437,5.
Wenn ca. 0V98 am Eingang anliegen, kommen 397921,875 in FHEM raus.

Kannst Du mir erklären wie das Modul funktioniert?
(Ich kann natürlich den Korrekturfaktor ermitteln, der liegt bei ca. 407000. Aber so hast Du Dir das beim Schreiben des Moduls bestimmt nicht gedacht, oder?)


PS: 18bit Auflösung scheint doch zu funktionieren. Dann werden bei den nicht beschalteten Kanälen zwar "-15.625" oder "31.250" angezeigt, aber wenn ich den obigen Faktor berücksichtige, ist das tatsächlich nur "Rauschen".
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

klausw

Nee, so war es nicht gedacht, ich muss bei Gelegenheit den MCP3422 wieder anschließen und mir das Ganze anschauen
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

klausw

Einen Bug habe ich schon gefunden. Eigentlich dürfte der Messwert überhaupt nicht stimmen.

Wie sieht es denn mit negativen Spannungen aus? Hast du das mal versucht?

Ich kann leider nur positive Spannungen testen (MCP3422 ist als 0-10V Eingang auf einem UniPi montiert).
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

TheTrumpeter

Zitat von: klausw am 16 Februar 2017, 18:50:39
Einen Bug habe ich schon gefunden. Eigentlich dürfte der Messwert überhaupt nicht stimmen.
Naja was ist schon "stimmen"?
Ich habe einen Korrekturfaktor ermittelt, indem ich die 5V und 3V3 vom RasPi über meinen Spannungsteiler reingeschickt habe. Da weiss ich, welche Spannung anliegen müsste (siehe einen Beitrag weiter vorne). Damit habe ich einen Korrekturfaktor für Dein Modul errechnet, mit dem die Werte soweit plausibel sind.

Ich habe 0-10V-Temperatur- und Feuchtesensoren dran hängen.
Unter Berücksichtigung meines Korrekturfaktors sieht das alles in Ordnung aus. Was auch immer Du für einen Bug drin hast, irgendeine Systematik scheint schon drin zu seni.

Zitat von: klausw am 16 Februar 2017, 18:50:39
Wie sieht es denn mit negativen Spannungen aus? Hast du das mal versucht?
Nein, weil ich auch nur 0-10V-Sensoren habe.

Wenn Du den Bug behoben hast, kann ich ja nochmal draufschauen, was sich dann tut.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

klausw

Der Bug war doch keiner.
Aber ich hatte fälschlicherweise noch eine Zeile auskommentiert, daher wurde der Wert in µV angezeigt.
Jetzt wird die zwischen CHx+ und CHx- anliegende Spannung in V angezeigt.
Des weiteren sollten nun auch negative Werte mit 12 und 14 bit Auflösung korrekt angezeigt werden.

Änderung ist eingecheckt
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

TheTrumpeter

Sieht soweit gut aus.
Ich habe bei meiner Berechnung ursprünglich nicht berücksichtigt, dass in dem von mir verwendeten Board nochmal ein zusätzlicher Spannungsteiler drin ist. Deshalb habe ich unerwartete Ergebnisse bekommen.

Habe nun nochmal den gesamten Spannungsteiler berechnet, die Werte in FHEM stimmen mit den erwarteten Spannungen überein.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110