gemäß Schaltbild im Anhang möchte ich ein 16x2 Display und einen BME280-Sensor über den I2C-Bus betreiben. Da der Sensor nur mit 3,3V arbeitet, habe ich zusätzlich einen Level-Shifter verbaut und gemäß Anleitung angeschlossen (siehe Foto im Anhang).
Bei der Abfrage mit dem I2C Scanner werden beide Geräte korrekt erkannt. Betreibe ich nur den Sensor mit Level-Shifter (über den SerialMonitor), läuft dieser einwandfrei. Verwende ich jedoch gleichzeitig Sensor und Display funktioniert letzteres, aber der Sensor wird nicht erkannt und somit bleibe ich immer mit der Meldung "No BME280" im Display hängen.
Was heißt das jetzt genau für mich? Muss ich mir Sensoren ohne Pullup-Widerstände kaufen? Oder ist das Projekt in der von mir angedachten Form noch zu retten?
gotti91:
Was heißt das jetzt genau für mich? Muss ich mir Sensoren ohne Pullup-Widerstände kaufen? Oder ist das Projekt in der von mir angedachten Form noch zu retten?
Du musst darauf achten, das der I2C-Bus mit Pullup-Widerständen abgeschlossen ist.
Habe auf der 3,3V Seite (BME 280) mal zwei 2K-Ohm Widerstände verwendet, damit läuft der Sensor alleine(!) nach wie vor gut.
Schalte ich auf der 5V Seite das Display dazu (mit zwei 10K-Ohm-Widerständen) besteht wieder genau das gleiche Problem. Das Display läuft einwandfrei, zeigt "No BME 280" an und im I2C-Scanner finde ich nur das Display. Wenn ich das richtig verstanden habe, braucht jedes Logik-Level doch seine eigenen Pull-Ups?
Gibt es noch irgendwas, das ich nicht beachtet haben könnte?
Sind an 5V zu betreiben. Der ebay Sensor ist super klein. Der von Watterott zwar groß, aber dafür meiner meinung nach genauer. Preislich ist er auch nicht anders wie deiner, sogar günstiger, weil man ja keinen Levelshifter braucht.
Nur so als tipp, falls der Thread zu keinem ergebniss führt.
Die Pull-Ups auf der 3,3V-Seite habe ich entfernt, immer noch das gleiche Problem. Den Levelshifter habe ich nochmal geprüft, war die ganze Zeit richtig herum ... Habe die Kanäle 1 und 2 für SDA bzw. SDL benutzt ... Hat es vielleicht etwas mit dem Level-Shifter per se zu tun, den ich gekauft habe (Link siehe oben).
Ein Oszi habe ich leider grade nicht zur Hand ..
Fehlt vielleicht noch irgendwas im Code? Eine Bibliothek vergessen oder sowas?
Die library ist ganz gut, die verwende ich auch. Nur beim China BME muss die I2C Adresse in der Adafruit_BME280.h auf 0x76 anstelle 0x77 gestellt werden.
Das Problem hat sich erledigt. Es lag tatsächlich an der Bibliothek: Mit der Adafruit library funktioniert das System aus Sensor und Display tadellos.
Interessanterweise ist dann weder level-Shifter (!!!) noch Pullups notwendig, der Sensor kann sogar (wie das Display) mit 5V Versorgungs- und Logikspannung betrieben werden, ohne dass dieses Mal eine Fehlermeldung auftritt. Komisch nur, dass der Hersteller eine Logikspannung von 3,3V angibt ... Oder kann der Sensor bei der Verwendung mit 5V dauerhaft beschädigt werden?
Hallo,
Dein Verkäufer, wie auch Bosch geben für den Sensor max. 3,6v an.
Einen Betrieb mit 5v am Sensor halte ich für zweifelhaft.
Messe doch einmal die Versorgungsspannung des Sensor- direkt am Sensor.
Gruß und Spaß
Andreas
gotti91:
Interessanterweise ist dann weder level-Shifter (!!!) noch Pullups notwendig, der Sensor kann sogar (wie das Display) mit 5V Versorgungs- und Logikspannung betrieben werden, ohne dass dieses Mal eine Fehlermeldung auftritt. Komisch nur, dass der Hersteller eine Logikspannung von 3,3V angibt ... Oder kann der Sensor bei der Verwendung mit 5V dauerhaft beschädigt werden?
Du solltest einfach mal den Angaben des Herstellers vertrauen.
Kurzzeitig kann es mit 5 Volt funktionieren.
Auch die Pullups sind wichtig, auch hier kann es kurzzeitig ohne funktionieren.
Je nach Levelshifter können die Pullups evtl. sogar entfallen.
Da solltest du dir die Schaltung des Levelshifter aber genau ansehen.
Also bitte in Zukunft die Datenblätter und Beschreibungen genauer lesen.
Die werden nicht umsonst hergestellt.