« 2023年9月 | トップページ | 2023年12月 »

2023年10月

2023/10/06

Seeed XIAO nRF52840をNiMH電池で動かす一方法(完結編)

CircuitPythonやArduinoによるBLEデバイスが開発できる切手サイズのSeeed studio XIAO nRF52840 Senseを使ったセンサ端末を単純にエネループで動かしたら電池が3日しかもたなかったので、せめて数ヶ月はもたせたいと検討した結果です。
これまで2回の中間報告(その1その2)では1年以上もちそうだと書いていたのですが、最終的には188日(ちょうど半年)になりました。
Senselogb
(検討前後を同一スケールで描いたもの)
Senselogc
(検討前後の終点を一致するスケールにしたもの)

単3エネループ2本で定期的にBLEで飛ばしながら半年。いい感じにできたかな、というのが自己評価です。以下、前に書いた内容も含めてまとめておきます。

ハード的な変更点は電源周りです:
(当初)電源はXIAOのVBUS端子へ5V供給する。5VはXCL102を使った5V出力昇圧DCDCコンバータで生成する。
Senselog2
 ↓
(検討後)電源はXIAOのVBAT(BAT+)端子へ3.3V供給する。3.3VはXCL103を使った3.3V昇圧DDコンで生成する。
Senselog4
この変更によって
・5Vと3.3Vの消費電流差
・XCL102とXCL103の効率差(下にグラフ添付)
の2点により、大部分の時間を占めるアイドリング時の消費電流(電池電流)が16mAから0.4mAまで減りました(ブレッドボード上での別サンプル実測値)。

ソフト的な変更点は次の2点です:
・動作インジケータとしてXIAOのLEDを付けていたのを消灯した。
・アイドリング時はXIAO内蔵の6軸センサ(IMU)をスリープした。
これらにより、アイドリング電流が約0.2mA減りました(ここは厳密に測っていません)。
ハードとソフトの変更前後での、実測値と比率をまとめると次の通りでした:
観測時点当初[mA]検討後[mA]倍率
起動時25.29.002.8
初期化後*16.20.2468
アドバタイズ16.10.4040
コネクト16.10.5032
アイドリング16.00.2272
*電源投入し初期化した後、1回接続するまで電流がふらつく傾向があった。

実機では、検討前に電池電圧が1.15V(x2)になるまで2.95日だったものが、検討後では188.16日で、63.8倍の改善です。アイドリング時の72倍から、接続によって倍率が縮まったものと考えられます。後付けの計算ですが、今回のセンサは親機と60秒に1回接続し、アドバタイズに5秒ぐらい掛かっています(送信は一瞬)。この場合の平均消費電流は:
0.22mA*(55sec/60sec) + 0.4mA*(5sec/60sec) = 0.235mA
で、倍率は16/0.235 = 68倍 になりますから、考え方としては合っていそうです。

ところで「1年以上もちそう」だと考えていたことの誤りは、上記の電流値を測れるようにした検討その2で考察したように、エネループの端子電圧が公称電圧1.2Vで維持されると思い込んでいたことにありました。この点は最初のグラフに現れているとおり、負荷の状態によって異なるのだと理解しています。その検討に使った「倍率グラフ」は、既に意味が無いことは分かっていますが、せっかくなので最終形を載せておきます:
Senselogd

ここで、上記に関係した図を参考に再掲しておきます:
Senseloga
XCL102とXCL103の変換効率(秋月電子さんの資料PDFから加工)

Senselog3
XIAO nRF52840 SenseのVBAT(BAT+)入力電圧と読み取り結果(なお、今回のセンサ端末では当初5V入力だったためXIAO内部のVBAT読み取りを使っていません)

以上、何かの参考になれば幸いです。

パドラッパ from MacBook Air (2017)

| | | コメント (0)

« 2023年9月 | トップページ | 2023年12月 »