Refactored battery measurement function
This commit is contained in:
@@ -37,22 +37,28 @@ static CayenneLPP cayenne(51);
|
|||||||
|
|
||||||
#if MBED_CONF_APP_BATTERY_ENABLED
|
#if MBED_CONF_APP_BATTERY_ENABLED
|
||||||
AnalogIn bat(MBED_CONF_APP_BATTERY_ADC);
|
AnalogIn bat(MBED_CONF_APP_BATTERY_ADC);
|
||||||
AnalogIn vrefint(ADC_VREF);
|
AnalogIn vref(ADC_VREF);
|
||||||
|
|
||||||
static float battery_voltage() {
|
static float battery_voltage() {
|
||||||
float vbat = bat.read();
|
float vbat = bat.read();
|
||||||
double vdd = (1.224f) / vrefint.read();
|
float vrefin = vref.read();
|
||||||
|
|
||||||
return vbat * MBED_CONF_APP_BATTERY_RATIO * vdd;
|
float vrefcal = (float)(*(uint16_t*)VREFINT_CAL_ADDR) * (1.0f / (float)0xFFF);
|
||||||
|
float vdda = 3.0f * vrefcal / vrefin;
|
||||||
|
|
||||||
|
return vbat * vdda * MBED_CONF_APP_BATTERY_RATIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t battery_level() {
|
static uint8_t battery_level() {
|
||||||
float vbat = battery_voltage();
|
float vbat = battery_voltage();
|
||||||
|
|
||||||
double ratio = 253.0f / (4.2f - 3.3f);
|
if (vbat >= MBED_CONF_APP_BATTERY_MAX) {
|
||||||
int value = ratio * (vbat - 3.4f) + 1.0f;
|
return 254;
|
||||||
|
} else if (vbat > MBED_CONF_APP_BATTERY_MIN && vbat < MBED_CONF_APP_BATTERY_MAX) {
|
||||||
return value < 1 ? 1 : (value > 254 ? 254 : value);
|
return ( 253 * ( vbat - MBED_CONF_APP_BATTERY_MIN ) ) / ( MBED_CONF_APP_BATTERY_MAX - MBED_CONF_APP_BATTERY_MIN ) + 1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
"battery-lpp-id": { "value": 1 },
|
"battery-lpp-id": { "value": 1 },
|
||||||
"battery-in-lpp": { "value": "false" },
|
"battery-in-lpp": { "value": "false" },
|
||||||
"battery-adc": { "value": "NC" },
|
"battery-adc": { "value": "NC" },
|
||||||
|
"battery-min": { "value": "3.20f" },
|
||||||
|
"battery-max": { "value": "4.15f" },
|
||||||
"battery-ratio": { "value": "2.0f" },
|
"battery-ratio": { "value": "2.0f" },
|
||||||
"hx711-enabled": { "value": "false" },
|
"hx711-enabled": { "value": "false" },
|
||||||
"hx711-lpp-id": { "value": 2 },
|
"hx711-lpp-id": { "value": 2 },
|
||||||
|
|||||||
Reference in New Issue
Block a user