Add battery voltage reading to web UI, apply fixed VBAT multiplier, closes #3

This commit is contained in:
2026-03-02 21:01:58 +01:00
parent c41a2932ba
commit 6ecae74483
6 changed files with 43 additions and 8 deletions

View File

@@ -20,8 +20,10 @@ void initBatteryADC() {
float readBatteryVoltage() {
// 8 quick reads, no delay() calls, no analogReference() change
int32_t raw=0; for (int i=0; i<8; i++) raw += analogRead(PIN_VBAT_READ); raw /= 8;
// Seeed XIAO nRF52840 Sense: 1MΩ + 510kΩ voltage divider on VBAT → multiply by 1510/510
return (raw / 4096.0f) * 3.0f * (1510.0f / 510.0f);
// Seeed XIAO nRF52840 Sense: 1MΩ + 510kΩ voltage divider on VBAT.
// Theoretical ratio is 1510/510 = 2.961, but real resistor tolerances
// shift the actual ratio. Calibrated: 3.90V actual / 3.78V reported → ×1.0317.
return (raw / 4096.0f) * 3.0f * (1510.0f / 510.0f) * 1.0317f;
}
int batteryPercent(float v) {