-         

Ergebnis 1 bis 6 von 6

Thema: BME 280 gibt Rätsel auf

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.121
    Blog-Einträge
    1

    BME 280 gibt Rätsel auf

    Anzeige

    Hallo Freunde !

    In der Projektierung meiner Wetterstation, wollte ich den Sensor von Bosch BME280 verwenden. Nun habe ich mal 2 PCB-Module a'la ChinaEbay geordert.

    Da ich nun nicht sofort Zeilenlang C Code für den AVR tippen wollte, nahm ich einen Arduino DUE , wegen der 3,3V, zum Test.
    Habe mit dem I"C-Scanner die Adresse 0x76 herausgefunden, da ich den Sensor im I2C Modus betreibe.
    Nun habe ich mir mal die Libs und Header dazu angesehen, dort steht die Adresse 0x77. Gut er kann auch auf 0x76 umschalten durch Beschalten eines Pin an LOW.

    Aber wie ich es auch halte , es wird nur Müll angezeigt... ?

    Hat jemand Erfahrungen damit ? Bei mir sollen die BME280 später zusammen mit ESP8266 Modulen (Standallone) als externe Gartensensoren wirken.

    Hat wer bitte vielleicht einen Tip/Hinweis für mich ??????

    Mit besten Grüssen und Dank

    Gerhard

    Nachtrag : Schaltung BM280 PCB
    Geändert von oderlachs (14.11.2016 um 11:40 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.614
    .. Sensor .. Habe mit dem I"C-Scanner die Adresse 0x76 herausgefunden.. Libs und Header dazu .. steht die Adresse 0x77 .. Tip/Hinweis für mich ??? ..
    Hallo Gerhard! Kleiner Tipp: I²C Sensoren werden ja (üblicherweise/immer) als Sklaven behandelt. Aber egal wie - die SCHREIBAdresse ist IMMER gerade, die LESEAdresse immer ungerade.

    Siehe Beispiel, z.B. in meiner i2cmaster.h
    Code:
    ..
    
    #include <avr/io.h>
    
    /** defines the data direction (reading from I2C device) in i2c_start(),i2c_rep_start() */
    #define I2C_READ    1
    
    /** defines the data direction (writing to I2C device) in i2c_start(),i2c_rep_start() */
    #define I2C_WRITE   0
    ..
    Und daher heissen bei mir z.B. die Schreib-/Lesebefehle:
    Code:
    ..
        if(!(i2c_start(SLAVE_MoCo+I2C_WRITE))) //Slave bereit zum schreiben?
    ..
        i2cdmy = i2c_start(SLAVE_MoCo+I2C_READ); // <<<### Lesen beginnen
    ..
    .. und damit kann ich brav nur EINE einzige I²C-Adresse je Bauteil verwenden - die wird durch die Schreib-/Lesezusätze beim Lesen bzw. Schreiben immer angepasst *gg*.
    Ciao sagt der JoeamBerg

  3. #3
    RN-Premium User Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    469
    Blog-Einträge
    16
    Hallo Gerhard,

    ich habe eine Wetterstation mit einem China-BME280 schon mal gebaut: hier mein Blogeintrag mit Quellcodes dazu.
    Die I2C Adresse meines China-Moduls war auch 0x76. Ich habe die beschriebene Änderung auf 0x77 durch die SDO Pinbeschaltung nicht probiert, aber in deinem Schaltbild ist SDO gar nicht beschaltet. Lässt du den Pin frei?
    Bei mir stellte sich heraus, dass kein BME280 sondern ein BMP280 auf der China-Platine verbaut war, ob wohl ich einen BME280 bestellt hatte. Das spielte in meinem Fall aber keine große Rolle.

    Bei I2C Zugriff auf den BMP280 wird die Adresse nach links geshiftet und das Bit0 für Lesen/Schreiben entspr. gesetzt. Das ist glaub ich üblich bei I2C, aber schau mal nach, ob deine AVR Software das so macht. Nicht dass die 0xEC als Adresse erwartet.

    Gruß
    witkatz

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.121
    Blog-Einträge
    1
    Hallo Ihr Beiden !!

    Vielen Dank für schnelle Antworten.
    Witkatz: SDO ist auf der Lpl mittels 10k auf GND gezogen damit ..das sagt das Datenblatt:
    The 7-bit device address is 111011x. The 6 MSB bits are fixed. The last bit is changeable by
    SDO value and can be changed during operation. Connecting SDO to GND results in slave
    address 1110110 (0x76); connection it to V DDIO results in slave address 1110111 (0x77), which
    is the same as BMP280’s I2C address. The SDO pin cannot be left floating; if left floating, the
    I2C address will be undefined.
    The I2C interface uses the following pins:
     SCK: serial clock (SCL)
     SDI: data (SDA)
     SDO: Slave address LSB (GND = ‘0’, V DDIO = ‘1’)
    CSB must be connected to V DDIO to select I2C interface. SDI is bi-directional with open drain to
    GND: it must be externally connected to V DDIO via a pull up resistor. Refer to chapter 7 for
    connection instructions.
    Habe SDO nun mit AtmegaPin verbunden und auf HIGH gelegt.....
    Aber so ist es immer mit den Beispielen aus dem Web....das letzte Detail warum dort geht ist meist verborgen, gerade bei den Arduino Lib's sind so viel Verschiedenheiten.
    An und für sich schreibe ich ja vieles selber, dann weiss ich was ich mache(oder auch nicht... ).

    Zu Zeit habe ich wegen der Jahreszeit sehr mit den Fingergelenken Probleme, so das mir Vorgefertigtes schon mal ganz gelegen kommt..

    Ich werde mal beide Vorschläge von Euch betrachten.....bestimmt gibt es auch ein Lösung für mich..


    Gruss und Dank

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.427
    Zitat Zitat von witkatz Beitrag anzeigen
    Bei I2C Zugriff auf den BMP280 wird die Adresse nach links geshiftet und das Bit0 für Lesen/Schreiben entspr. gesetzt. Das ist glaub ich üblich bei I2C ...
    So steht es in der I2C Spezifikation. Da wird das erste Byte der Übertragung auch nicht Adresse sondern Adressbyte genannt. Ist aber wohl für so manchen Library-Schreiber zu kompliziert.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.121
    Blog-Einträge
    1
    Danke Klebwax auch für Deine Infos.
    Ich bin momentan etwas in Zeitnot...da muss Hobby warten, aber icvh habe mir mal jetzt die Datenblätter zum durchlesen geladen...mal sehen was ich ich herausfinde, wenn ich damit die Lib's vergleiche

    Gerhard
    Nachtrag :

    Habe wegen Regen heute doch noch weitermachen können. habe wenigstens da ich schon mit der I2C Verbindung experimentierte, meinen DS75 Temp Sensor sauber einlesen können.
    Da war ähnliches Problem, es lag an der I2C Adresse, die komischerweise nicht mal in meinem Datenblatt zu finden war

    Der dem BMP280 ähnliche Sensor, der BMP085 läuft einigermaßen bei mir, außer noch komische Werte bei Druck und Höhe , aber ich denke das ist ein Formelfehler.
    Da muss ich nochmals die Lib's und Datenblätter zum 280 studieren...
    Geändert von oderlachs (15.11.2016 um 15:13 Uhr) Grund: Nachtrag
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. ProBot-128 Rätsel...
    Von didi_21 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 20
    Letzter Beitrag: 30.10.2016, 15:11
  2. [ERLEDIGT] Mathe-Rätsel :)
    Von creative im Forum Kopfnüsse / Wissensquiz
    Antworten: 11
    Letzter Beitrag: 25.10.2009, 20:46
  3. Rätsel um die Zahl 3
    Von The dark Side im Forum Kopfnüsse / Wissensquiz
    Antworten: 54
    Letzter Beitrag: 26.04.2005, 21:31
  4. Zahlengitter - Rätsel
    Von Florian im Forum Kopfnüsse / Wissensquiz
    Antworten: 8
    Letzter Beitrag: 08.12.2004, 14:06
  5. Rätsel um schaltung
    Von Nommo im Forum Kopfnüsse / Wissensquiz
    Antworten: 12
    Letzter Beitrag: 12.11.2004, 19:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •