Forum: Mikrocontroller und Digitale Elektronik BMP085 an Raspberrypi B+ funktioniert nicht


von kwi (Gast)


Lesenswert?

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:
1
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
2
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
3
10: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
4
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
5
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
6
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
7
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
8
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
9
70: -- -- -- -- -- -- -- --
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

: Bearbeitet durch User
von azubi (Gast)


Lesenswert?

Übliches fehlt..
Schaltplan, Software, Foto, was auch immer .. Pullup Widerstände für I2C

Oszi vorhanden? Pegel nachmessen?
Logik analyzer?

Blinkt die LED?

von kwi (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Geh doch mal bitte auf die Anmerkungen von azubi ein.

von kwi (Gast)


Angehängte Dateien:

Lesenswert?

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.

von kwi (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe nochmal Fotos des Moduls gemacht.
Ich kriege das Modul einfach nicht ans Laufen.
Kann mir jemand helfen? Fehlen noch Infos?

von foo (Gast)


Lesenswert?

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.

von kwi (Gast)


Lesenswert?

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.

von Pete K. (pete77)


Lesenswert?

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.

von Pete K. (pete77)


Lesenswert?

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!

: Bearbeitet durch User
von kwi (Gast)


Lesenswert?

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.

von Stefan V. (vollmars)


Lesenswert?

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

von kwi (Gast)


Lesenswert?

Werde ich gleich heute Abend testen.

von foo (Gast)


Lesenswert?

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.

von foo (Gast)


Lesenswert?

P.S.:
Warum verwendest du überhaupt eine externe 3,3V-Quelle?
Diese Spannung kannst du dir doch auch am RPi-Board abholen.

von Pete K. (pete77)


Angehängte Dateien:

Lesenswert?

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).

von kwi (Gast)


Lesenswert?

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?

von Pete K. (pete77)


Lesenswert?

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.

: Bearbeitet durch User
von kwi (Gast)


Lesenswert?

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.

von kwi (Gast)


Lesenswert?

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?

von kwi (Gast)


Lesenswert?

Das Modul ist defekt. Habe mir ein neues bestellt. Das funktioniert.

Vielen Dank für eure Hilfe.

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
Noch kein Account? Hier anmelden.