Hi, Habe einen BME680 bei dem ich aktuell gerade ein wenig beim auslesen des Druckes festhänge... Irgendwie bekommt ich nicht die richten werte, weswegen ich hier mal den relevanten code posten möchte, um diesen von jemanden von euch betrachten zu lassen: MSB_p = (bus.read_byte_data(ADDRESS,0x1F) << 12) LSB_p = (bus.read_byte_data(ADDRESS,0x20) << 4) XLSB_p = (bus.read_byte_data(ADDRESS,0x21) >> 4) raw_value_p = (MSB_p | LSB_p | XLSB_p) var1 = (t_fine / 2.0) - 64000.0 var2 = var1 *var1 *(par_p6 / 131072.0) var2 = var2 + (var1 *par_p5 *2.0) var2 = (var2 / 4.0) + (par_p4 *65536.0) var1 = (((par_p3 *par_p1 *var1) / 16384.0) + (par_p2 *par_p1)) / 524288.0 var1 = (1.0 + (var1 / 32768.0)) *par_p1 press_comp = 1048576.0 - raw_value_p press_comp = ((press_comp - (par_p2 / 4096.0)) * 6250.0) / var1 var1 = (par_p9 *press_comp *press_comp) / 2147483648.0 var2 = press_comp * (par_p8 / 32768.0) var3 = (press_comp / 256.0) *(press_comp / 256.0) *(press_comp / 256.0) *(par_p10 / 131072.0) press_comp = press_comp + (par_p1 + par_p2 + par_p3 + (par_p7 * 128.0)) / 1 print(press_comp,"mbar") Ich bekomme mehr oder weniger konstante Werte im Bereich von 200'000 und wenn ich draufdrücke (einen höheren Druck simuliere) dann sinkt dieser Wert um ca. 500. Was mache ich falsch, dass er mir nicht den korrekten Messwert liefert? Danke für zahlreiche Antworten
:
Bearbeitet durch User
Im Datasheet wird in den Software-Beispielen intensiv gecastet. Das hast Du galant ignoriert. Aus eigener Erfahrung: Die cast sind schon notwendig. Gruesse Th.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.