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