vivianmeally:
Vielen Dank, ein pullpup wiederstand von 4.7k hat geholfen. Funktioniert jetzt alles.
Na prima!
vivianmeally:
Aber wieso wird in jedem Tutorial das ich im netz gefunden habe, ohne die 2 wiederstände verbunden?
Und anscheinend funktioniert das bei denen.
Wenn Du solche fertigen "Modul-Platinen mit BMP085 und SMD-Kleinkram" kaufst, sind da die PullUp-Widerstände normalerweise auf der Platine drauf und sorgen für das Pullen der SDA- und SCL-Leitungen. Also brauchst du keine zusätzlichen PullUps.
In Wirklichkeit passiert auf dem Arduino sogar das:
Mit wire.begin() aktivierst Du die (sehr schwachen weil hochohmigen) internen PullUps am Arduino, die SDA und SCL auf 5V pullen würden. Damit würden 5V I2C-Sensoren funktionieren, wenn sie "nackt" angeschlossen werden.
Auf so einer Platine wie Du sie mit dem BMP085 hast, sind "normale" (stärkere und nicht ganz so hochohmige) PullUps eingebaut, und wenn Du die Platine mit 3.3V versorgst, pullen diese auf der Platine vorhandenen PullUps die Spannung in Richtung 3.3V. Zusammen mit den aktiven internen schwachen 5V PullUps des Arduino ergibt sich dann an SDA und SCL eine Spannung von meist knappen 3,6 Volt.
Also funktionieren am Arduino I2C-Sensoren
- wenn Du sie "nackt" ohne PullUps anschließt und es 5V-Sensoren sind
- wenn Du eine Platine mit 5V PullUps anschließt und es 5V-Sensoren sind
- wenn Du eine Platine mit 3.3V PullUps anschließt und es 3.3V Sensoren sind
Probleme für Arduino-User mit I2C ergeben sich erst dann, wenn jemand in Mischbestückung gleichzeitig 5V und 3.3V Sensoren betreiben möchte. Aber der Fall liegt bei Dir ja nicht vor.
Was an Deiner Schaltung genau defekt ist, kann ich so nicht diagnostizieren, aber irgendwas ist da faul.
Falls als einziger PullUp der interne PullUp des Arduino aktiv wäre, der mit wire.begin aktiviert wird, sollte die Spannung bei ca. 5V liegen. Falls als einziger PullUp der externe PullUp der angeschlossenen Platine aktiv ist, sollte die Spannung bei 3.3V liegen. Und falls sowohl der interne PullUp des Arduino als auch der externe PullUp der angeschlossenen Platine aktiv ist, sollte die Spannung bei ca. 3.6 V liegen.
Die 0,03V kann ich mir nicht erklären.
In Frage käme ein Kurzschluss am PullUp, aber das kann es ja auch nicht sein, wenn Du mit einem zusätzlichen externen PullUp die Spannung dann doch wieder auf 3.3V gepullt bekommst, so dass der Sensor funktioniert.
Hast Du mal Deine Platine mit dem Bild des Anbieters verglichen? Fehlt vielleicht irgendein kleines SMD Bauteil auf Deiner Platine und ist nicht bestückt, obwohl es vorhanden sein sollte?
Auch wenn ich Dir mit dem zusätzlichen externen PullUp an SCL eine Lösung anbieten konnte, wie Du den Sensor nun nutzen kannst: Was genau bei Dir schiefläuft oder defekt ist, kann ich mir nicht erklären.
P.S.: Du könntest auch nochmal testen, ob die internen PullUps am Arduino an SDA und SCL in Ordnung sind. Selber Test-Sketch wie oben, aber diemal OHNE die Sensorplatine anzuschließen. Dann sollte an SDA und SCL eine Spannung in der Größenordnung von Arduino-VCC messbar sein