Hallo, ich baue mir gerade einen KlimaController für meine Edelpilzzucht. Nun habe ich ein Problem. Und zwar Funktioniert alles soweit ganz gut. Der Raspberry liest die Daten des HTU21 wie erwartet. Allerdings nur wenn der 16x2 Lcd Display aus ist. Wenn der besagte Display an ist produziert der Sensor den "remote i/o error erno 121". Ich weiß der I2C Bus ist für kurze Distanzen und nicht für 2m Kabellänge geeignet. Allerdings würde ich gerne verstehen was genau den Error auslöst!? Liegt es überhaupt am langen Kabel ? Im meinem Fritzing Sketch ist der TCA98 mit 5,5V angeschlossen. 3,3v funktioniert leider garnicht. Mag mir da jemand erfahrenes bei Helfen ? Mit Freundlichen Grüßen
Der Rasperry langweilt sich mit der Aufgabe doch zu Tode. Nimm doch einen einfachen/besseren Mikrocontroller.
Ja Da gebe ich dir Recht. Allerdings habe ich den hier noch liegen und zweitens basiert die Software "Mycodo" auf ihm.
Naja du könntest ja beim auslesen oder der Kommunikation (Dazu hast du ja nichts weiter geschrieben) beim TCA9548A wenn der Sensor ausgelesen wird das Display vom Bus trennen und danach wieder zuschalten. Weiterhin nutzt I2C normalerweise passive Widerstände um den High Pegel zu erreichen. Wenn die zu klein gewählt sind, kommt der High Pegel bedingt durch die Kabelkapazitäten nicht mehr schnell genug zustande und das Signal ist verschliffen. Das kann man mit einem Oszilloskope sich anschauen und kontrollieren. Gehe ich aber recht in der Annahme, dass du keins hast und auch niemanden kennst der eins hat? Eine weitere Möglichkeit ist es, die I2C Geschwindigkeit herabzusetzen. * Also erstmal kontrollieren wie groß die Pull-Up Widerstände an SCL und SDA am I2C Kanal sind. Die sitzen endweder auf der Sensor-/Displayplatine oder dem TCA9548A-Board. Du kannst als Test einfach einen anderen Parallelschalten um den gewünschten Widerstand zu erreichen. In einem Produkt bei mir ohne 2m Kabel bin ich schon bei max 2KOhm. Mit dem Kabel sollte man das weiter reduzieren. Aus dem Bauch heraus würde ich 1KOhm testen. * Eventuell die I2C Geschwindigkeit auf 100KHz absenken und testen. Im Fast-Modus sind es normalerweise 400KHz. Gruß John-Eric
"Wenn die zu klein gewählt sind..." das sollte "zu groß" heißen und ist da falsch.
Oliver S. schrieb: > Der Rasperry langweilt sich mit der Aufgabe doch zu Tode. > Nimm doch einen einfachen/besseren Mikrocontroller. Frage des TO perfekt beantwortet. Es ist doch völlig egal ob sich der RasPi mit dieser Aufgabe langweilt oder nicht. Wenn's bei dem bleibt was der TO hier aufgezeigt hat, dann wird sich jeder µC mehr als langweilen. Einfach mal die Griffeln still halten, wenn man zum eigentlichen Thema nix zu sagen hat. @TO Der TCA9548 sollte auch mit 3,3V problemlos laufen - er ist von 1,65V bis 5,5V spezifiziert. Was bei dem von Dir verwendeten Baustein allerdingszu beachten ist, ist das die Ausgangangskanäle keine Pullupwiderstände haben, d.h. Du mußt für jede anzuschließende Baugruppe Pullup's vorsehen. Bei Dinem Sensor scheinen ja welche da zu sein. Wie sieht es denn bei der Anzeige aus? Wie hast Du die Adresseingänge des TCA9548 beschaltet? Wenn kein Adresspin beschaltet ist, dann wird der Baustein mit 0x70 angesprochen. Der Rest ist eigentlich Software. Das Ganze läuft im Wesentlichen so ab: 1. TCA ansprechen 2. aktiven Kanal des TCA wählen 3. Kommunikation mit dem Kanal angeschlossenen Baustein 4. Am Ende aktiven Kanal schließen 5. dto. mit weiteren Bausteinen Eine ganz gute Beschreibung wie so etwas abläuft ist hier https://wolles-elektronikkiste.de/tca9548a-i2c-multiplexer zu finden. Ist allerdings für den Arduino, aber das Prinzip läßt sich auch auf den RasPi übertragen, man muß nur die Funktionsweise verstehen. Ansonsten studiere das Dabla des TCA.
MockUp schrieb: > Eine weitere Möglichkeit ist es, die I2C Geschwindigkeit herabzusetzen. Nein das ist nicht erforderlich. Wichtig ist eigentlich nur das für jeden an den TCA angeschlossenen Baustein Pullup's vorgesehen werden. Der Rest ist schlichtweg SW. Wie hierbei der Ablauf ist hatte ich im letzten Post beschrieben bzw. auch ein Beispiel verlinkt wo man sich das anschauen kann. Da das Beispiel für den Arduino ist muß man sich für den RasPi selbst Gedanken machen oder eben eine für den RasPi passende Lib benutzen. Dann braucht es eigentlich nur das Dabla des TCA und der angeschlossenen Module, damit man sich seine Befehlssequenzen zusammen bauen kann. Ja das ist mühsam und Weg kann recht steinig sein, aber es lohnt sich. Ich habe so etwas für den DS8224-800 (i2c >> 8x 1-Wire) gemacht, da läuft das so ähnlich. Da ich das nicht jeden Tag mache habe ich auch ne Weile gebraucht, da muß man sich halt durch beißen.
Also ersteinmal vielen Lieben dank für 99,9% konstruktive Antworten ;) Das der TCA am "Ausgang" keine Pullups wusste ich schon. Ich dachte aber der Pullup im HTU21 würde reichen. Der Display wird mit einem HW-061 betrieben wofür ich leider kein für mich verständliches Schema gefunden habe und somit nicht weiß ob er Pullups besitzt. Der TCA läuft wie in dem Schema zu sehen mit 0x70 Adresse. Ich habe nun von dem LTC4311 gelesen der das Signal verstärkt und I2C somit ermöglicht über längere Distanzen zu kommunizieren. Diesen habe ich mir mal bestellt und teste ihn. Was denkt ihr? Müsste ich dann den Pullup vom HTU21 entfernen?
:
Bearbeitet durch User
Jannik H. schrieb: > Ich habe nun von dem LTC4311 gelesen der das Signal verstärkt und I2C > somit ermöglicht über längere Distanzen zu kommunizieren. Wozu soll das gut sein? i2c kommt auch mit den 2m Draht zurecht. Du kannst ja mal zum Testen an Stelle der 2m Leitung eine kurze nehmen, so wie zu Deinem Display. Ich bin mir ziemlich sicher das da ein SW-Problem ist. Ich hoffe das Dir klar ist das Du auch das Display über eine vorher zu sendente Adresse ansprechen mußt. Bei dem SHT15 wird die normale Kommunikation via i2c nicht funktionieren. Lt. Datenblatt (S.5) unterstützt dieser Sensor nicht das i2c Protokoll, zumindest nicht die Adressierung. Im Datenblatt steht: "The sensor cannot be addressed by I2C protocol; however, the sensor can be connected to an I2C bus without interference with other devices connected to the bus. The controller must switch between the protocols."
Jannik H. schrieb: > Im meinem Fritzing Sketch ... Zeig doch dazu mal einen Schaltplan, der diese Bezeichnung verdient. Wer soll sich denn durch den Fritzing "Stecken-nach-Farben"-Kram durchhangeln?
Zeno schrieb: > Jannik H. schrieb: >> Ich habe nun von dem LTC4311 gelesen der das Signal verstärkt und I2C >> somit ermöglicht über längere Distanzen zu kommunizieren. > > Wozu soll das gut sein? i2c kommt auch mit den 2m Draht zurecht. Du > kannst ja mal zum Testen an Stelle der 2m Leitung eine kurze nehmen, so > wie zu Deinem Display. > Ich bin mir ziemlich sicher das da ein SW-Problem ist. > > Ich hoffe das Dir klar ist das Du auch das Display über eine vorher zu > sendente Adresse ansprechen mußt. > > Bei dem SHT15 wird die normale Kommunikation via i2c nicht > funktionieren. Lt. Datenblatt (S.5) unterstützt dieser Sensor nicht das > i2c Protokoll, zumindest nicht die Adressierung. Im Datenblatt steht: > "The sensor cannot be addressed by I2C protocol; however, the sensor can > be connected to an I2C bus without interference with other devices > connected to the bus. The controller must switch between the protocols." Ich denke schon über längere Leitungen nach. Aber mein "Problem" ist gelöst. Bei dem HTU21D muss der Pullup erst verlötet werden.... Stand bei dem Shop nicht dabei... Ich danke euch für eure Unterstützung wieder eine Menge gelernt. Ich wünsche euch alles Gute in dieser seltsamen Zeit. Wir lesen sicher nochmal voneinander.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.