nachdem ich das Adafruit Modul mit 2 Servos eingebunden habe, habe ich jetzt als zweites Device am I2C Bus einen SHT21 Temperatur/Feuchtigkeitssensor angehängt und über die "I2C_SHT21.library" aus "CODESYS V3 » CODESYS V3 Raspberry Pi share your devices & libraries & applications" eingebunden.
So weit so gut, lässt sich alles fehlerfrei in den Raspi einspielen.
Allerdings bekomme ich vom Funktionsbaustein des Sensor keine Temperatur- oder Feuchtigkeitswerte geliefert und auch die "Valid" Statussignale liefern FALSE.
Ich vermute, dass es an der I2C Adressierung liegt (?)
Beim Einbinden des Adafruit Moduls habe ich mich um den Punkt der Adressierung gar nicht gekümmert.
In der Adafruit-Beschreibung steht zwar "The I2C base address for each board is 0x40", aber auch ohne explizite Eingabe der Adresse funktioniert der Zugriff auf das Board bzw. auf die beiden angeschlossenen Servos problemlos. Ich habe das so interpretiert, dass bei Adresse "0" die I2C Slaves automatisch erkannt werden (???)
Wenn ich mir online "Aktueller Wert - I2C adress" anschaue, steht da "0".
Jetzt bin ich beim Einbinden des SHT21 Sensors ebenso vorgegangen und habe den Punkt Adressierung nicht beachtet. Auch hier steht jetzt bei "Aktueller Wert - I2C adress" die "0" (obwohl der Baustein online "64" anzeigt...) und ich bekomme keine Fehlermeldung beim Übersetzen oder Einspielen. Nur bringt der Baustein eben keine Werte...
Wer kann mir sagen, was ich da falsch mache ?
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hmm, zeigt nur die "40" an.
Dann haben beide devices vermutlich die "40".
Mich wundert nur, dass Codesys online für beide devices "0" als aktuellen Wert anzeigt...
Wie sieht denn bei Codesys das I2C-Adresshandling generell aus?
Gruß
Werner
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Habe dem Adafruit Modul jetzt über eine Lötbrücke die Adresse 65 verpasst.
"sudo i2cdetect -y 1" zeigt jetzt ein device mit 0x40 (SHT21) und eines mit 0x41 (Adafruit) an.
Habe im Codesys die "i2cAdress" Parameter der devices entsprechend angepasst.
Mir fehlt jetzt allerdings der Einstieg, die "I2C_SHT21.library" von Erikk umzusetzen (?)
Er schreibt "It has an internal statemachine inside the _iState..."
Ist da mein FUP-Ansatz gem. screenshot überhaupt machbar oder muss ich da auch mit einer Schrittkette arbeiten(???)
Gruß Werner
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
Denke du musst keine neue Instanz anlegen sondern die Instanz die vom System angelegt wird
Verwenden.
Also dein Baustein so bennen wie er im Geraetebaum heisst.
Gruesse
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
nachdem ich das Adafruit Modul mit 2 Servos eingebunden habe, habe ich jetzt als zweites Device am I2C Bus einen SHT21 Temperatur/Feuchtigkeitssensor angehängt und über die "I2C_SHT21.library" aus "CODESYS V3 » CODESYS V3 Raspberry Pi share your devices & libraries & applications" eingebunden.
So weit so gut, lässt sich alles fehlerfrei in den Raspi einspielen.
Allerdings bekomme ich vom Funktionsbaustein des Sensor keine Temperatur- oder Feuchtigkeitswerte geliefert und auch die "Valid" Statussignale liefern FALSE.
Ich vermute, dass es an der I2C Adressierung liegt (?)
Beim Einbinden des Adafruit Moduls habe ich mich um den Punkt der Adressierung gar nicht gekümmert.
In der Adafruit-Beschreibung steht zwar "The I2C base address for each board is 0x40", aber auch ohne explizite Eingabe der Adresse funktioniert der Zugriff auf das Board bzw. auf die beiden angeschlossenen Servos problemlos. Ich habe das so interpretiert, dass bei Adresse "0" die I2C Slaves automatisch erkannt werden (???)
Wenn ich mir online "Aktueller Wert - I2C adress" anschaue, steht da "0".
Jetzt bin ich beim Einbinden des SHT21 Sensors ebenso vorgegangen und habe den Punkt Adressierung nicht beachtet. Auch hier steht jetzt bei "Aktueller Wert - I2C adress" die "0" (obwohl der Baustein online "64" anzeigt...) und ich bekomme keine Fehlermeldung beim Übersetzen oder Einspielen. Nur bringt der Baustein eben keine Werte...
Wer kann mir sagen, was ich da falsch mache ?
Gruß
Hi,
ich würde die Adressen prüfen über(ssh, putty einloggen auf dem PI):
sudo apt-get install i2c-tools
sudo i2cdetect -y 1
sudo i2cdetect -y 1
dann zeigt es die Adressen der I2C Geräte am Bus an:
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
Grüße
Edwin
hmm, zeigt nur die "40" an.
Dann haben beide devices vermutlich die "40".
Mich wundert nur, dass Codesys online für beide devices "0" als aktuellen Wert anzeigt...
Wie sieht denn bei Codesys das I2C-Adresshandling generell aus?
Gruß
Werner
das Adressproblem sollte jetzt behoben sein:
Habe dem Adafruit Modul jetzt über eine Lötbrücke die Adresse 65 verpasst.
"sudo i2cdetect -y 1" zeigt jetzt ein device mit 0x40 (SHT21) und eines mit 0x41 (Adafruit) an.
Habe im Codesys die "i2cAdress" Parameter der devices entsprechend angepasst.
Mir fehlt jetzt allerdings der Einstieg, die "I2C_SHT21.library" von Erikk umzusetzen (?)
Er schreibt "It has an internal statemachine inside the _iState..."
Ist da mein FUP-Ansatz gem. screenshot überhaupt machbar oder muss ich da auch mit einer Schrittkette arbeiten(???)
Gruß Werner
Hi,
Denke du musst keine neue Instanz anlegen sondern die Instanz die vom System angelegt wird
Verwenden.
Also dein Baustein so bennen wie er im Geraetebaum heisst.
Gruesse
Edwin
nein, immer noch keine Werte...
Kann der Sensor lediglich durch diesen Baustein angesprochen werden?
Gruß
Werner
ich komm einfach keinen schritt weiter
hat niemand eine idee?