Skip to content

V2.1.20

Choose a tag to compare

@MMBytes MMBytes released this 29 Apr 03:17
· 351 commits to main since this release

Per-channel oversampling tuned to manufacturer accuracy presets

Followup to V2.1.19's forced-mode + IIR-off architecture cleanup. Now that oversampling does the per-read averaging exclusively (no IIR), tuning the per-channel oversampling to Bosch's published accuracy presets gives a real, measurable improvement on the channel that matters most — pressure.

Sensor T (was → now) P (was → now) H (was → now)
BME280 x8 → x2 x4 → x16 x2 → x1
BMP390 x2 → x1 x8 → x32 —
BME688 x8 → x2 x4 → x16 x2 → x1
SHT45 unchanged (0xFD high-precision command — already maximum)

Why these specific settings

  • Pressure UP (x16 / x32): noise reduction is √N per oversampling step. At x16 the BME280 / BME688 reach ~0.16 Pa noise (~1.4 cm altitude resolution); at x32 the BMP390 reaches ~0.03 Pa. This is the channel where high oversampling actually pays off.
  • Temperature DOWN (x1 / x2): every conversion dissipates heat inside the chip, biasing T (and via T's role in the calibration formula, also H). Bosch specifically caps T at x2 in their highest-accuracy mains-powered preset.
  • Humidity DOWN (x1): each step of H oversampling only takes the noise from 0.008 → 0.002 %RH — well below the chip's ±3 %RH absolute accuracy spec. Higher oversampling is wasted conversion time.

References

  • BME280 datasheet table 9 ("Indoor navigation" preset: T x2 / P x16 / H x1)
  • BMP390 datasheet table 10 ("drone" / highest-pressure-resolution preset: T x1 / P x32)
  • BME680 application note BST-BME680-AN014 (T x2 / P x16 / H x1 example config)
  • Sensirion SHT4x datasheet §4 (no per-channel oversampling exists; 0xFD is max precision)

Conversion times (per-read waits bumped accordingly)

Sensor Before After Typical Max
BME280 35 ms wait 55 ms wait ~40 ms ~46 ms
BMP390 20 ms wait 30 ms wait ~13 ms ~14.5 ms
BME688 50 ms wait 60 ms wait ~39 ms ~46 ms

All still tiny vs the 150 s CYCLE interval.

Compatibility

No NVS schema changes. No upstream-API change visible to Madavi / sensor.community / Radmon — same fields, same units. Lower per-read pressure noise (cleaner plots), smaller T self-heating bias (more accurate H).

Flash

File Offset
bootloader.bin 0x1000
partition-table.bin 0x8000
ota_data_initial.bin 0xf000
geiger_v2.bin 0x20000 (OTA)
geiger_v2_merged.bin 0x0 (full image)