Forum: Mikrocontroller und Digitale Elektronik BMP280 auslesen


von Heinz M. (nichtfertigbar)


Lesenswert?

Hi,

ich bin Newcomer in Digitalelektronik und habe mir den BMP280 gekauft.
Ich habe keine wirklich guten Kenntnise und bisher nur Basics (Led 
blinken, UART in Richtung Mikrocontroller->PC,Timer,EXTIs) gemacht und 
möchte jetzt etwas anspruchsvollere Sachen machen. Meine Frage: Ich habe 
ein STM32F072B-Discovery und möchte damit den Luftdrucksensor 
ansprechen. Allerdings habe ich Tutorials nur von Leuten gefunden die 
Nucleo-Boards benutzen oder den Arduino verwenden. Könnte mir mal jemand 
erklären wozu die restlichen Pins außer VCC,GND,SCL und SDA da sind? Für 
I2C braucht man soweit ich dem Wikipediaartikel entlocken konnte nur 2 
Pins nämlich nur SCL und SDA.
Auf dem Sensor gibt es aber noch diese Pins:CSB und SDO. Dann habe ich 
diese Bibliothek gefunden: https://github.com/ciastkolog/BMP280_STM32 . 
Was die Adressen bedeuten sollen ist mir unklar. Die Benutzung der 
Bibliothek ist auch nur schlecht erklärt. Vorallem: Wie soll man 
verkabeln? Wenn jemand ein gutes Tutorial kennt oder mir das erklären 
kann.

von Thomas W. (Gast)


Lesenswert?

Moin, -

ist zwar nur der BME280, aber hier ein kleines Tutorial:

https://controllerstech.com/bme280-with-stm32/

Die Duko von Bosch ist nicht so schlecht, kannst Du in ca. 1h 
durchprogrammieren.

Viel Erfolg,
Gruesse

Th.

von S. Landolt (Gast)


Lesenswert?

> wozu die restlichen Pins außer VCC,GND,SCL und SDA ...

Also ich selbst fange bei einem mir unbekannten Teil immer mit dem 
Datenblatt an. Dort lese ich z.B. auf der ersten Seite:
1
Digital interfaces: 
2
- I²C (up to 3.4 MHz)
3
- SPI (3 and 4 wire, up to 10 MHz)
Wird folglich
> CSB und SDO
zu Letzterem gehören.

von Heinz M. (nichtfertigbar)


Lesenswert?

Thomas W. schrieb:
> ist zwar nur der BME280

Ist das nicht so dass dann die Adressen anders sind?

von Thomas W. (Gast)


Lesenswert?


von S. Landolt (Gast)


Angehängte Dateien:

Lesenswert?

> ... Adressen ...
Auch hier sei wieder auf das Datenblatt verwiesen, unter '5. Digital 
Interfaces'.

von M. K. (sylaina)


Lesenswert?

Für I2C hab ich ne Library geschrieben mit der man bis zu zwei BME/BMP 
280 in einem Bus benutzen kann:

https://github.com/Sylaina/bme280

I2C Funktionen sind für AVRs, für andere System muss die I2C-Library nur 
angepasst werden. Vielleicht hilft das ja.

von Heinz M. (nichtfertigbar)


Lesenswert?

Thomas W. schrieb:
> Falls Du lesen kannst, unter
>
> 
https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp280/#documents
>
> findest Du alles.
>
> Th.

Ich denke ich kann das.😁

von Heinz M. (nichtfertigbar)


Lesenswert?

Erstmal danke an alle die mir bis jetzt geholfen haben.

von Wolfgang (Gast)


Lesenswert?

S. Landolt schrieb:
> Also ich selbst fange bei einem mir unbekannten Teil immer mit dem
> Datenblatt an. Dort lese ich z.B. auf der ersten Seite:Digital
> interfaces:
> - I²C (up to 3.4 MHz)
> - SPI (3 and 4 wire, up to 10 MHz)
> Wird folglich
>> CSB und SDO
> zu Letzterem gehören.

Falsch, wenn du mal selbst in das von dir genannte Datenblatt gucken 
magst, bevor du hier Unsinn verbreitest.
Bei Nutzung der I²C-Schnittstelle wird durch SDO das unterste Adressbit 
festgelegt.

von ??? (Gast)


Lesenswert?

M. K. schrieb:
> Für I2C hab ich ne Library geschrieben mit der man bis zu zwei BME/BMP
> 280 in einem Bus benutzen kann:

wo erkennt man "...bis zu zwei..." in deinem Quelltexten/Beispielen?

von M. K. (sylaina)


Lesenswert?

??? schrieb:
> wo erkennt man "...bis zu zwei..." in deinem Quelltexten/Beispielen?

Indem man sich die Library anschaut und auch einen Blick ins Datenblatt 
wirft. Schauen wir erstmal ins Datenblatt des BME/BMP280. Dann sehen 
wir, dass die I2C-Adresse des konkreten BME/BMP davon abhängt, auf 
welchem Potential der SDO-Pin liegt (oben auf Page 31 im Datasheet).
Dann gehst du in die Library und schaust dir mal die Funktionsargumente 
genauer an. Du wirst feststellen, dass jede Funktion einen Parameter 
namens "sensor" hat. Schaust du dir den Code dann noch genau an wirst du 
feststellen, dass "sensor" nur im Bereich 0 bis 1 liegen darf und da es 
sich dabei um einen Integer-Wert handelt können es also maximal 2 
Sensoren sein, die damit angesprochen werden können ;)

von Forist (Gast)


Lesenswert?

M. K. schrieb:
> https://github.com/Sylaina/bme280

Das "examble" könnte mal überarbeitet werden. Das soll jetzt keine 
Kritik sein, sieht aber, je nach Blickwinkel, einfach nur albern oder 
peinlich aus 🤨

von M. K. (sylaina)


Lesenswert?

Forist schrieb:
> M. K. schrieb:
>> https://github.com/Sylaina/bme280
>
> Das "examble" könnte mal überarbeitet werden. Das soll jetzt keine
> Kritik sein, sieht aber, je nach Blickwinkel, einfach nur albern oder
> peinlich aus 🤨

Was genau ist daran albern oder peinlich? Es legt drei Variablen, für 
Temperatur, Druck und Luftfeuchtigkeit, initialisiert den BME/BMP, liest 
die drei Werte aus und speichert sie in den Variablen. Es zeigt in 
einfachster Weise alles was man braucht um den BME/BMP zu benutzen. Was 
ist daran peinlich?

von Forist (Gast)


Lesenswert?

M. K. schrieb:
> Was ist daran peinlich?

Das "examble" - schrieb ich dich.

von M. K. (sylaina)


Lesenswert?

Huch, wie konnte mir denn das unterlaufen. Upsala
. Danke für den Hinweis, da hast du völlig recht.

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.