I2C AD-Wandler ADS1115 von Texas Instruments

Begonnen von schlawiano, 31 Mai 2016, 11:55:31

Vorheriges Thema - Nächstes Thema

haufsolutions

#45
Moin zusammen,

beschäftige mich grade auch mit dem ADS1115.
Habe dieses schicke Teil für meinen Banana PI gekauft: http://sensorkit.joy-it.net/index.php?title=KY-053_Analog_Digital_Converter
Soweit scheint auch alles zu laufen. Versuche grade ein Helligkeitssensor ans laufen zu bekommen:
(https://www.banggood.com/5Pcs-Light-Sensor-Module-Light-Photosensitive-Sensor-Board-Light-Intensity-Sensor-Module-For-Arduino-p-1233690.html?cur_warehouse=CN)
Diese sind bestückt mit dem GL5528 & LM358

Bekomme aber noch keinen geeigneten Output.
Das Fehlerlog schmeißt zwischendurch auch: Communication error on send s. unten  :-\
Vll. weiß ja jem. Rat?

2019.02.07 15:09:09 5: [myADS1115] I2C_ADS1115_Current Anzahl = 1
2019.02.07 15:09:09 5: [myADS1115,LM358] I2C_ADS1115_Update
2019.02.07 15:09:09 5: myI2C: vom client empfangen|reg: 2|direction: i2cwrite|i2caddress: 72|data: 128 0
2019.02.07 15:09:09 5: myI2C: HWaccess I2CAddr: 0x48
2019.02.07 15:09:09 5: myI2C: vom client empfangen|reg: 2|direction: i2cwrite|i2caddress: 72|data: 128 0
2019.02.07 15:09:09 3: myI2C: HWaccess blockweise nach 0x48 schreiben, Reg: 0x02 Inh: 128 0, laenge: 3| -> syswrite failure: Communication error on send
2019.02.07 15:09:09 5: myI2C ->Client gefunden: myADS1115, I2Caddress: 72 Data: 128 0
2019.02.07 15:09:09 5: myI2C: vom client empfangen|reg: 3|data: 127 255|direction: i2cwrite|i2caddress: 72
2019.02.07 15:09:09 5: myI2C: HWaccess I2CAddr: 0x48
2019.02.07 15:09:09 5: myI2C: vom client empfangen|reg: 3|data: 127 255|direction: i2cwrite|i2caddress: 72
2019.02.07 15:09:09 3: myI2C: HWaccess blockweise nach 0x48 schreiben, Reg: 0x03 Inh: 127 255, laenge: 3| -> syswrite failure: Communication error on send
2019.02.07 15:09:09 5: myI2C ->Client gefunden: myADS1115, I2Caddress: 72 Data: 127 255
2019.02.07 15:09:09 5: [myADS1115,LM358] I2C_ADS1115_Update Threshold:0x8000 - 0x7FFF
2019.02.07 15:09:09 5: [myADS1115. LM358] I2C_ADS1115_ConfigWord Word: 0b1100001110011000
2019.02.07 15:09:09 5: myI2C: vom client empfangen|data: 195 152|i2caddress: 72|direction: i2cwrite|reg: 1
2019.02.07 15:09:09 5: myI2C: HWaccess I2CAddr: 0x48
2019.02.07 15:09:09 5: myI2C: vom client empfangen|data: 195 152|i2caddress: 72|direction: i2cwrite|reg: 1
2019.02.07 15:09:09 3: myI2C: HWaccess blockweise nach 0x48 schreiben, Reg: 0x01 Inh: 195 152, laenge: 3| -> syswrite failure: Communication error on send
2019.02.07 15:09:09 5: myI2C ->Client gefunden: myADS1115, I2Caddress: 72 Data: 195 152
2019.02.07 15:09:09 5: [myADS1115] I2C_ADS1115_Update, Call I2C_ADS1115_CheckSensorState
2019.02.07 15:09:09 5: myI2C: vom client empfangen|i2caddress: 72|direction: i2cread|type: checksensorstate|nbyte: 2|reg: 1
2019.02.07 15:09:09 5: myI2C: HWaccess I2CAddr: 0x48
2019.02.07 15:09:09 5: myI2C: vom client empfangen|i2caddress: 72|direction: i2cread|type: checksensorstate|nbyte: 2|reg: 1
2019.02.07 15:09:09 4: myI2C: HWaccess blockweise lesen setze Registerpointer auf 1
2019.02.07 15:09:09 3: myI2C: HWaccess blockweise von 0x48 lesen, Reg: 0x01 -> syswrite failure: Communication error on send
2019.02.07 15:09:09 5: myI2C ->Client gefunden: myADS1115, I2Caddress: 72

i2cdetect output:
i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --



klausw

Eventuell passen die Rechte für den fhem user nicht.
Was zeigt FHEM denn an wenn du
{`i2cdetect -y 2`}
im Eingabefeld eingibst?
Wenn nix kommt mal ins log schauen.
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

haufsolutions

Zitat von: klausw am 07 Februar 2019, 19:44:06
Eventuell passen die Rechte für den fhem user nicht.
Was zeigt FHEM denn an wenn du
{`i2cdetect -y 2`}
im Eingabefeld eingibst?
Wenn nix kommt mal ins log schauen.

Danke @klausw
Da waren wohl die Rechte Schuld habs nun angepasst, aber leider scheint er sich immer noch zu murren  ::)

2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x02 Inh: 128 0, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x03 Inh: 127 255, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 5: [myADS1115,LM358] I2C_ADS1115_Update Threshold:0x8000 - 0x7FFF
2019.02.08 02:27:43 5: [myADS1115. LM358] I2C_ADS1115_ConfigWord Word: 0b1100001110011000

2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x01 Inh: 195 152, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 5: [myADS1115] I2C_ADS1115_Update, Call I2C_ADS1115_CheckSensorState
2019.02.08 02:27:44 3: I2C_Dev: HWaccess blockweise von 0x48 lesen, Reg: 0x01 -> syswrite failure: Kommunikationsfehler beim Senden

Die Ausgabe vom i2cdetect kommt nun in FHEM. Allerdings glaub ich das ich vll. noch ein paar Sachen am eig. zu messenden Device (LM358) einstellen muss?
Die aktuelle Config ist noch recht standard, sollte es da schon laufen?

Gruby

Hi zusammen;

hätte da noch einen Verbesserungsvorschlag  8)

Nach ersten Problemen mit den aktuellen 52_ads1115*.pm files in FHEM hatte ich mit den hier geposteten files umgehend Erfolg.
Nun bin ich am Finetuning und habe festgestellt dass es gut wäre wenn es z.B. ein Reading RAW-Voltage geben würde um dies dann mit einem Faktor multipliziert zu Voltage wird.

Hintergrund in meinem Fall ist dass, ich die Batteriespannungen meines Wohnmobils messe was einen Spannungsteiler bedarf.

Würde dies implementiert werden, wäre das um Längen komfortabler als sich mit eigenen Readings zu behelfen  ;D.

Viele Grüße und Danke für das Modul!

 

klausw

Zitat von: haufsolutions am 08 Februar 2019, 02:50:24
Danke @klausw
Da waren wohl die Rechte Schuld habs nun angepasst, aber leider scheint er sich immer noch zu murren  ::)

2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x02 Inh: 128 0, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x03 Inh: 127 255, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 5: [myADS1115,LM358] I2C_ADS1115_Update Threshold:0x8000 - 0x7FFF
2019.02.08 02:27:43 5: [myADS1115. LM358] I2C_ADS1115_ConfigWord Word: 0b1100001110011000

2019.02.08 02:27:43 3: I2C_Dev: HWaccess blockweise nach 0x48 schreiben, Reg: 0x01 Inh: 195 152, laenge: 3| -> syswrite failure: Kommunikationsfehler beim Senden
2019.02.08 02:27:43 5: [myADS1115] I2C_ADS1115_Update, Call I2C_ADS1115_CheckSensorState
2019.02.08 02:27:44 3: I2C_Dev: HWaccess blockweise von 0x48 lesen, Reg: 0x01 -> syswrite failure: Kommunikationsfehler beim Senden

Die Ausgabe vom i2cdetect kommt nun in FHEM. Allerdings glaub ich das ich vll. noch ein paar Sachen am eig. zu messenden Device (LM358) einstellen muss?
Die aktuelle Config ist noch recht standard, sollte es da schon laufen?

Zum AD Wandler selbst kann ich nix sagen, kenne weder Modul noch Wandler.
Die Botschaften kommen aber korrekt im I2C_Dev an.
Es hakt an der Schnittstelle zur Hardware.
Entweder die Rechte passen nich nicht richtig (neu gebootet?) oder die HW ist blockiert.
Kannst du das gleiche Datagramm mit i2cwrite senden?
Eine weitere SW greift nicht auf das IC zu?
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

haufsolutions

Rechte passen soweit. Neu gebootet hab ich auch schon öfters seither.
Hab auch noch ein i2cget -y 2 0x48 in Fhem und auf der Console abgesetzt.
Beide Male kam 0x00 zurück.
Was genau müsst ich denn mit i2cwrite abschicken?

Adimarantis

Versuche es doch mal mit diesem kleinen C-Programm ob das Auslesen generell außerhalb von FHEM funktioniert.

Übersetzen mit
  gcc ads1115.c -o ads1115 -I . -L . -lm

Starten mit
./ads1115 <portnummer>

Wobei die Portnummer 0-3 ist - je nachdem an welchem Port des ADS1115 du etwas abgeschlossen hast.

Das C-Programm verwendet letztendlich die selbe Technik wie FHEM - wenn das geht, dann hast du einen Wurm in der FHEM Config

Gruß,
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

haufsolutions

@Adimarantis

Danke für deine Hilfe  :)
Dann scheint es in FHEM wohl prinzipiell zu gehen da ich hiermit auch:
Write to register 1: Communication error on send
bekomme. Aber habe grade keine Idee was darauf zugreifen sollte  :o

Tanne-01

Hallo zusammen,
ich habe seit einigen Tagen den Baustein ADS1115 in fhem eingebunden, IOdev vereinbart, ADS1115 und ADS1115_A! definiert.

Die Adresse passt, Schreiben und lesen über Phyton funktioniert.
An den Eingängen A0-3 werden Spannungen von Batterien abgefragt. Die Kofiguration passt, Das Auslesen mit Phyton funktioniert ebenfalls.
Die Rechte für fhem sind ebenfalls korrekt vereinbart. Es tauchen keine readings auf.

Was muss ich in Fhem noch vereinbaren, damit ein Auslesen in fhem funktioniert?
Kann mir jemand helfen?

VG Frank

Prof. Dr. Peter Henning

ZitatPhyton
Ist das eine neue Sprache?  8)

LG

pah

Tanne-01

sorry, Buchstabensalat.... es sollte Python heißen.

kpl

Hallo Frank,
Sende doch mal ein list von deinen ADS1115 Device und einen ADS1115_AI Device.
Gruß,
Peter

Gruby

Hi zusammen,

hat jemand einen Tip wie man negative Rückgabewerte vom ADS1115 der direct am rPi hängt ignorieren/filtern kann?

Grüße

Gruby


kpl

Hallo Gruby,
ich mache dies mit einem userReading in dem ich auch den ausgelesenen Wert gleich in den tatsächlichen Strom umrechnen.
attr I_Wind userReadings current { my $v = (ReadingsVal($name,"voltage",2.49) - 2.4952) * 24;;$v = 0 if($v < 0);;$v}
Gruß,
Peter

cs-online

Hallo,

ich habe gerade diesen Thread entdeckt, ist es mit dem Modul vielleicht auch möglich, auf einem externen, über WLAN verbundenen RPI den ADS1115 anzuschließen und dann die Daten an FHEM auf einem anderen RPI zu bekommen ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr