Hallo,
ich habe den Sensor BMP085 an einen Raspberrypi B+ angeschlossen.
Die Pins sind wie folgt miteinander verbunden:
1
BMP085 RPI B+
2
3
SDA SDA1 (GPIO2)
4
SCL SCL1 (GPIO3)
5
VCC 3,3 V (externe Spannungsversorgung)
6
GND GND (externe Spannungsversorgung)
GND (PIN 6) des RPI B+ habe ich mit GND der externen Spannungsversorgung
verbunden. Sonst hängt kein externer Sensor am I2C Bus.
Ich bin nach folgendem Tutorial vorgegangen,
http://willy-tech.de/luftdrucksensor-bmp085-raspberry-pi-anschliessen
und bekomme nach Eingabe des Befehls i2cdetect -y 1 folgenden output:
An Adresse 0x77 wird kein Sensor erkannt. Die Verdrahtung habe ich
mehrere Male überprüft und das Tutorial bin auch mehrere Male
durchgegangen. Der Sensor wird einfach nicht erkannt. Ich habe das
Internet schon durchsucht aber es funktioniert nichts.
Kann es sein, dass der Sensor "ne Macke" hat? Wie kann ich den Sensor
prüfen? Weiß noch jemand einen Rat?
Gruß
kwi
Übliches fehlt..
Schaltplan, Software, Foto, was auch immer .. Pullup Widerstände für I2C
Oszi vorhanden? Pegel nachmessen?
Logik analyzer?
Blinkt die LED?
Schaltplan liefere ich nachher nach.
Software habe ich noch keine, weil ich schon daran scheitere, das der
Sensor vom Raspbian erkannt wird. Wie im Tutorial beschrieben, habe ich
folgende Pakete nachinstalliert:
sudo apt-get install python-smbus i2c-tools
Mit dem Befehl i2cdetect hätte er dann auf Adresse 0x77 was anzeigen
müssen.
Das Raspbian selbst habe ich Gestern erst aktualisiert, mit den
Befehlen:
sudo apt-get update und
sudo apt-get upgrade
Da in dem Tutorial keine Pullup Widerstände erwähnt wurden, habe ich die
auch nicht angeschlossen, bzw. aktiviert.
Einen Logik analyzer oder ein Oszi habe ich leider nicht.
Ich habe den Schaltplan angehängt. Der RPi ist über ein USB Netzteil
(2A) angeschlossen. In der Software, mit der ich den Schalplan erstellt
habe, war leider nur ein Schaltbild eines alten RPi verfügbar. Die
beiden betroffenen GPIOs SDA und SCL sind bei dem RPi B+ an Pin 3 und
Pin 5. Als OS ist das Raspbian Debian Wheezy Image vom Dezember 2014 und
den Updates vom 5.1 installiert.
Zum Testen ob der Sensor erkannt wird benutze ich i2cdetect. Pullup
Widerstände habe ich jetzt angeschlossen und i2c-bmc2708 und i2c-dev
aktiviert.
Oszi und Logik Analyzer habe ich nicht. Was ich gemacht habe ist, mit
einem Multimeter an EOC die Spannung gemessen. Nach jedem beendeten
Messzyklus des Sensors soll dort ein High Pegel anliegen. Bei mir liegen
dort ständig 2,4 Volt an.
kwi schrieb:> Nach jedem beendeten> Messzyklus des Sensors soll dort ein High Pegel anliegen. Bei mir liegen> dort ständig 2,4 Volt an.
Bei 3,3V Versorgung kommt mir das reichlich wenig vor.
Vielleicht arbeitet der Chip ja längst und der Pin springt zwischen 0
und 3,3V hin und her, aber du machst nur nichts mit den Meßwerten.
Der Chip wird aber nicht am I2C Bus des RPi erkannt. Eigentlich müsste
er die Adresse 0x77 haben. Da ist aber keine Adresse zu sehen, wenn ich
i2cdetect ausführe. Der Pin (EOC) des Chips, an dem ich die 2,4 Volt
messe, ist nicht für das Datenauslesen gedacht. Laut Datenblatt liegt
ein High Pegel an EOC an, wenn der Messzyklus beendet ist.
Der Raspi hat interne Pullups, daher sind keine externen Pullups
notwendig. Auch die Pullups auf dem BMP Modul solltest Du ablöten,
hierzu reicht es, die Widerstände an einer Seite mit dem Lötkolben
"hochkant" zu stellen.
Du könntest auch die 3V3 vom Raspi abgreifen (Pin1), eine extra
Stromversorgung ist für das Modul nicht notwendig.
Auf keinen Fall das Modul an 5V anschließen!
Das mit den 3 Volt vom RPi habe ich schon getestet. Funktioniert auch
nicht.
Wo sind denn die Pullups auf dem Modul?
Sind die Pullups des RPi beim I2C standardmäßig aktiv oder muss ich die
aktivieren bevor das Modul am RPi erkannt wird? Laut Lieferant wäre das
Modul aber 5V kompatibel. Habe es aber nicht an 5V angeschlossen.
Teste doch mal ob die beiden I2C Leitungen "klappern" während der
"i2cdetect" abläuft. Das kannst du mit dem Multimeter in der
Wechselspannungseinstellung machen.
Gruß
Stefan
kwi schrieb:> Da ist aber keine Adresse zu sehen, wenn ich> i2cdetect ausführe.
Schließ doch mal einen anderen IIC-Chip dort an. Vielleicht funktioniert
ja noch nicht einmal dieses "i2cdetect".
2,4V am EOC sehen mir jedenfalls nicht nach einem 3,3V High aus, sondern
nach einem Mittelwert aus schnell aufeinanderfolgenden Nullen und
Einsen.
Die Pullups sind die 4k7 Widerstände auf dem Modul. Einfach ablöten.
Funktioniert so bei mir mit dem Raspi B. Der i2cdetect gibt ja etwas
aus, insofern ist das von der Software beim Raspi ok.
Der Raspi hat schon Pullups auf dem Board, daher dürfen keine weiteren
Pullups vorhanden sein (siehe Schematic in der Anlage).
Vielen vielen Dank an alle für euere Antworten.
foo schrieb:> P.S.:> Warum verwendest du überhaupt eine externe 3,3V-Quelle?> Diese Spannung kannst du dir doch auch am RPi-Board abholen.
Weil ich den RPi nicht überlasten will. Es soll nicht nur das eine Modul
betrieben werden. Es folgen noch ein paar Sachen, wie z.B. ein Servo,
ein Display, Motoren, Ultraschallsensoren und ein Port extender. Für
alle diese Bauteile wollte ich gerne eine separate 3,3V-Quelle.
foo schrieb:> Schließ doch mal einen anderen IIC-Chip dort an. Vielleicht funktioniert> ja noch nicht einmal dieses "i2cdetect".
Ich habe leider keinen anderen I2C Chip. Ich habe bisher nur SPI Module
verwendet.
Pete K. schrieb:> Die Pullups sind die 4k7 Widerstände auf dem Modul. Einfach> ablöten.
Sind das die 2 schwarzen SMD Bauteile links oder die helleren rechts
daneben?
> Funktioniert so bei mir mit dem Raspi B. Der i2cdetect gibt ja etwas> aus, insofern ist das von der Software beim Raspi ok.
OK
> Der Raspi hat schon Pullups auf dem Board, daher dürfen keine weiteren> Pullups vorhanden sein (siehe Schematic in der Anlage).
D.h. nach meinem Schaltplan sind jetzt 4 Pullups verbaut. Was passiert,
wenn zu viele verbaut sind?
Müssen die Pullups der beiden GPIOs des RPi extra aktiviert werden, wenn
I2C konfiguriert ist oder macht das der RPi durch die I2C Konfiguration
selbst?
Die Pullups auf dem BMP085 Modul sind schwarz und mit 4k7 beschriftet.
Du solltest SMD Widerstände von Kondensatoren unterscheiden lernen :-)
Der Raspi kann die Pullups nicht ausschalten, weil sie wie im Schaltplan
ersichtlich diskret aufgebaut sind, d.h. es sind reale Widerstände auf
der Platine vorhanden.
Also bitte auf dem BMP-Modul ablöten (eine Seite reicht, dann den
Widerstand etwas anheben. So bleibt der Widerstand mit einer Seite auf
dem Modul kleben und geht nicht verloren).
Trau Dich :-)
P.S.: Nach Deinem Schaltplan sind 6 Pullups verbaut. 2 auf dem BMP085, 2
auf dem Raspi und 2 von Dir.
Pete K. schrieb:> Die Pullups auf dem BMP085 Modul sind schwarz und mit 4k7> beschriftet. Du solltest SMD Widerstände von Kondensatoren unterscheiden> lernen :-)
Mache ich. Ich lerne nie aus.
> Der Raspi kann die Pullups nicht ausschalten, weil sie wie im Schaltplan> ersichtlich diskret aufgebaut sind, d.h. es sind reale Widerstände auf> der Platine vorhanden.
Danke
> Also bitte auf dem BMP-Modul ablöten (eine Seite reicht, dann den> Widerstand etwas anheben. So bleibt der Widerstand mit einer Seite auf> dem Modul kleben und geht nicht verloren).>> Trau Dich :-)
Mache ich.
>> P.S.: Nach Deinem Schaltplan sind 6 Pullups verbaut. 2 auf dem BMP085, 2> auf dem Raspi und 2 von Dir.
Oh man. Wer rechnen kann ist klar im Vorteil.
Vielen Dank für die Hilfe.
So,
habe die Widerstände ausgelötet. Leider wird der Sensor immer noch nicht
erkannt.
Ich habe auch mit dem Multimeter die Leitungen SDA und SCL gemessen.
Wenn ich den Befehl i2cdetect absetze, kann ich einen Ausschlag
erkennen.
Kann das sein, dass das Modul defekt ist?