Seeed Studio XIAO nRF52840で、裏面のBATパッドに接続したLiPoバッテリーの電圧を計測する方法を調査した。
方法
バッテリー電圧(VBAT)は nRF52840 の P0.31(AIN7)に接続されている。ただし、下図のように1MΩと510kΩで分圧されており、P0.14 をLOWにしたときに計測可能になる。
サンプルスケッチ 1 (ボード設定: Seeed nRF52 Boards)
ボードの設定は Seeed nRF52 Boards を選択する。
シリアルポートにバッテリー電圧値をmV単位で出力する。
#include <Adafruit_TinyUSB.h>
#define HICHG 22
void setup()
{
Serial.begin(115200);
while ( !Serial ) delay(10);
pinMode(HICHG, OUTPUT);
digitalWrite(HICHG, HIGH);
analogReference(AR_INTERNAL_2_4);
analogReadResolution(10);
pinMode(VBAT_ENABLE, OUTPUT);
digitalWrite(VBAT_ENABLE, LOW);
}
void loop()
{
int vbat_raw = analogRead(PIN_VBAT);
int vbat_mv = vbat_raw * 2400 / 1023;
vbat_mv = vbat_mv * 1510 / 510;
Serial.println(vbat_mv);
delay(1000);
}
サンプルスケッチ 2 (ボード設定: Seeed nRF52 mbed-enabled Boards)
ボードの設定は Seeed nRF52 mbed-enabled Boards を選択する。
1と同様に、シリアルポートにバッテリー電圧値をmV単位で出力する。
void setup()
{
Serial.begin(115200);
while ( !Serial ) delay(10);
pinMode(P0_13, OUTPUT);
digitalWrite(P0_13, HIGH);
analogReference(AR_INTERNAL2V4);
analogReadResolution(10);
pinMode(P0_14, OUTPUT);
digitalWrite(P0_14, LOW);
}
void loop()
{
int vbat_raw = analogRead(PIN_VBAT);
int vbat_mv = vbat_raw * 2400 / 1023;
vbat_mv = vbat_mv * 1510 / 510;
Serial.println(vbat_mv);
delay(1000);
}
Seeed Studio XIAO nRF52840 の回路図について
Seeed Studio XIAO nRF52840 はオープンソースハードウェアではないらしく、回路図は公開されていない。
しかし、Seeed Wiki の古いページがまだ残っており、そちらから回路図をダウンロードできる。ただし、現在の製品と全く同じであるかどうかは不明。
最新版のページからは回路図が消えている。