Quindi in questo tutorial misureremo la tensione della batteria LiPo collegata alla scheda Adafruit nRF52 Feather Bluefruit e la visualizzeremo nella console seriale. Per prima cosa carica questo codice sulla scheda tramite l'IDE di Arduino.
#define VBAT_PIN (A7)
#define VBAT_MV_PER_LSB (0.73242188F)
#define VBAT_DIVIDER (0.71275837F)
#define VBAT_DIVIDER_COMP (1.403F)
int vbat_raw;
uint8_t vbat_per;
float vbat_mv,vbat_v;
void setup(void) {
Serial.begin(115200);
analogReference(AR_INTERNAL_3_0);
analogReadResolution(12); // Can be 8, 10, 12 or 14
delay(1);
}
void loop(void) {
vbat_raw = analogRead(VBAT_PIN);
vbat_per = mv_to_percent(vbat_raw * VBAT_MV_PER_LSB);
vbat_mv = (float)vbat_raw * VBAT_MV_PER_LSB * VBAT_DIVIDER_COMP;
vbat_v = vbat_mv/1000;
Serial.print("ADC = ");
Serial.print(vbat_raw * VBAT_MV_PER_LSB);
Serial.print(" mV (");
Serial.print(vbat_raw);
Serial.print(") ");
Serial.print("LIPO = ");
Serial.print(vbat_v);
Serial.print(" V (");
Serial.print(vbat_per);
Serial.println("%)");
delay(4000);
}
uint8_t mv_to_percent(float mvolts) {
uint8_t battery_level;
if (mvolts >= 3000) {
battery_level = 100;
} else if (mvolts > 2900) {
battery_level = 100 - ((3000 - mvolts) * 58) / 100;
} else if (mvolts > 2740) {
battery_level = 42 - ((2900 - mvolts) * 24) / 160;
} else if (mvolts > 2440) {
battery_level = 18 - ((2740 - mvolts) * 12) / 300;
} else if (mvolts > 2100) {
battery_level = 6 - ((2440 - mvolts) * 6) / 340;
} else {
battery_level = 0;
}
return battery_level;
}
Successivamente collegare una batteria LiPo con connettore JST al connettore della scheda Adafruit nRF52. Quindi utilizzare il cavo USB per caricare la scheda. Assicurarsi che il LED giallo "CHG" sia acceso durante la ricarica. Ora apri la console seriale per vedere lo stato di carica della batteria, una volta che il LED giallo "CHG" è spento significa che la carica della batteria è completata.