2014年9月18日木曜日

自転車ビーコンの電池持ち問題

 今日から自転車ビーコンの本番運用を開始しました。が、帰宅時に鳴らしたところ、早くも子機の電池警告サインが発動してしまいました。試作中に使用していた電池をそのまま使っているので、試運転で減ってはいたと思いますが、予想を上回る早さです。

 電池消費の要因は間欠受信のWakeUp時間が長いせいではと思い、vProcessEvCoreSlp()にデバッグログを追加して、状態遷移の間隔を測ってみました。すると、時刻の起点をWakeUpとした場合、
  • WakeUp 0ms
  • IO状態の確定 32ms
  • 送信完了,Sleep 48ms
  • 次のWakeUp 52ms
でした。時刻の刻みは4msです。1サイクルに52msもかかっています。

 動作中の消費電流は、Sleep時は2μA、WakeUp中は18.7mA、メロディ再生中は約21mAでした。Sleep時の電流は無視して、動作中をざっくり20mAとすると、2秒間隔の間欠モードで一日に消費する電流容量は、
(86400/2) * 0.052 * 0.02 = 44.9 [mA sec]
です。これに、1日あたり50秒のメロディ鳴動を追加すると、
44.9 + 50 * 0.021 = 46.0 [mA sec]
が、一日あたりの総消費電流容量になります。
 電源のニッケル水素電池の容量は750mAhです。満充電から1.2Vの電池警告までに容量の8割まで利用できるとすると、利用できる日数は、
0.8 * 0.75 * 3600 / 46 = 47 [日]
で、電池寿命は約1ヵ月半と予想されます。自分としては、ちょっと短いなと思います。

 子機は受信専用として使っていて、送信したデータは使っていないのですが、WakeUp中の動作時間のうち大半を、IO状態の読み取りと、読み取ったデータの送信が占めています。これはもったいない。ざっくり無効化したいところですが、IO状態の読み取りは電池残量を知るために必要なので、完全に消すと残量チェックができなくなります。ただ、WakeUpの度に毎回知る必要も無いので、もっと長いインターバルを置いて、例えば32回のWakeUpに対して1回計測するという動作にすれば、電池持ちは大きく改善できると思います。

0 件のコメント:

コメントを投稿