TWE-Lite + ADT7410 + CR2032 の電池寿命

2015/04/29Raspberry Pi, TWE-Lite, 電子工作

3月から運用していた自宅気温監視装置の電池が早くも尽きた。
約1ヶ月強なので期待していたよりは短い稼働期間だ。同時期に投入した2台がほぼ同じタイミングでお亡くなりになったので、電池寿命だと思われる。

20150427-cr2032-1

最後はストンと電圧が落ち、以後は計測データが送られていません。


TWE Liteの動作可能電圧

グラフを見てみると2.4V程度まで徐々に電圧が下がったあと、2.2V台に急降下し、計測を終えています。
TWE-Lite のパンフレット(PDF)には動作電圧2.3-3.6Vと書かれています。

2.4Vから急降下しているのは、間欠的に無線通信を行う際の電圧降下によるものかなあ? TOCOSのサイトには下記のように書かれています。

例えば TWE-001 で、無線パケットを送信する場合、瞬間的ですが 20mA 程度消費する事もあり、このとき電流の供給不足、電圧降下などが発生し、システムが正常動作しない事が考えられます。
これを回避するため、バッファ用のコンデンサを Vcc-GND 間に接続します。
(中略)
電流 i で 3.3V から 2.1V まで降下するのに必要な時間は、C(3.3-2.1)/i となります。i=10mA, C=100uF とした場合、12mS と計算できます。計算上は 3.3Vで動作していたモジュールが突然電源が断たれた場合、平均電流が 10mA なら 12mS 稼働延長することが期待できる、となります。

プログラミング情報 — TOCOS-WIRELESS.COM

機器には100μFのコンデンサを入れていたのですが、良く考えたら電池が消耗したら電圧が下がるわけで、100μFでは足りないですね…終止電圧も2.1じゃなくて2.3Vだし。

2000μFぐらいのを入れればいいのかな? 通販に頼るしかないから、時間かかるんだよなー。

なお、下記サイトにはさらにリセットICを組み込んだ事例が掲載されています。

電池寿命

超小型IEEE802.15.4/ZigBee無線モジュール TWE-Lite(トワイライト)の記述では、送信間隔60秒ならCR2032でも10年以上電池が持つと書かれています。話半分3でも1年ぐらいは持って欲しいものです。
(TWE-Lite稼働中にLEDを光らせていて計算上は15mAほど食いますが、それを考慮に入れても短すぎます)

すでに試された方々の情報を調べてみます。

一度電池を入れたら数年は電池交換が要らないドアの開閉センサを作ってみましょう。無線を利用しているため、配線を気にすることなく好きな場所に好きなだけ設置ができます。製作してから半年以上経過していますが、特に問題なく動きつづけています。

TWE-Lite – ボタン電池1個で数年持つ無線ドア開閉センサを作る – Qiita

こちらはドアの開閉を割り込みで拾って、その時だけTWE-Liteが動作しているのでしょう。ドアを1分間隔で開け閉めすることはないので、電池寿命も長そうです。

ねこったー(猫ツイッター)は、電子工作漫画「ハルロック」のエピソードとして紹介された、猫が行動をツイートするシステムです。

飼い主がいない時に猫は何をしているんだろう?という素朴な疑問を解決するために考案されたシステムです。システムでは猫の首輪に無線センサー(TWE-Lite)を装着します。猫の行動に応じて「走ってるニャン」、「寝てるニャン」等と携帯電話にツイートするシステムです。

ねこったー(猫ツイッター)!

ねこったーのサイト。このページには電池寿命は書かれていませんが、ラズパイマガジン 2015年春号によると「3秒間隔でウェイクアップし、20ミリ秒ほど活動させれば電池寿命を2ヶ月以上にできます」とのこと。首輪デバイスにはリセットIC等は載っていません。

我が家の60秒間隔で起動している温度センサーは、2ヶ月持たなかったので、誰かが電気を食いつぶしています。

ADT7410が犯人?

温度センサーに載っているデバイスはTWE-LiteとLEDとADT7410です。

ADT7410には3つの動作モードがあります。連続測定(continuous, normal)、1秒間隔で測定 (SPS, power saving mode)、スリープ (sleep, shutdown)。それぞれの消費電力は下記の通り。

消費電流(@VDD=3.3V、TA=+25℃)
   ノーマル・モード:210μA(typ)
   パワーセービング・モード(1サンプル/1秒):46μA(typ)
   シャットダウン・モード:2μA(typ)

ADT7410使用 高精度・高分解能 I2C・16Bit 温度センサモジュール

TWESDK/Wks_ToCoNet/Samp_Monitor/Common/Sensor/ADT7410.c の bADT7410reset関数を読むとADT7410は continuous conversion mode (上記ノーマルモード)に設定されています。

この場合の消費電力210μAで CR2032の容量225mAhを割ると答えは 1071h = 44日。今回の電池寿命1ヶ月強に近い数値が出てきます。怪しいですね。

ADT7410をSPSにすれば寿命は半年以上?

下記は Arduino に ADT7410を繋いだ方が調べた消費電流です。ワンショットは通常はスリープさせて、測定する際にADT7410を叩くモード。
ADT7410をSPSかワンショットモードで使用すれば(データシート通りに)電力を半分以下に削減できそうです。

どれぐらい消費電力が変わるかディジタルテスタで測定してみました。平均値がとれないので目安です。電源電圧はCQカチャduinoのUSBバスパワー電源を利用しているため、4.5V程度です。

スリープ状態時 0.005mA
ノーマルモード時 0.25mA
ワンショットモード時 0.005mA+アルファ
SPSモード時 0.1mA程度

I2C温度センサADT7410を使う(4) | wsnakのブログ

消費電力が一番少ないのはワンショットモードですが、こちらは温度データが必要になる度に ADT7410を叩いて240ms待つ作業が必要です。TWESDKのソース変更量が多くなりそう。
(ADT7410_ALWAYS_RESET を使えばいいのかも? 必要になったら考える)

SPSなら bADT7410reset関数の初期化の値を 0x00/0x80 から 0x40/0xC0 にするだけで動きそう。
この場合の平均消費電力は46μAなので、CR2032の容量225mAhを割ると 4891h=203日。SPSでも半年以上持ちそうです。

結論

手軽なSPSでとりあえず試してみて、結果がでたらまた報告します。