Long Life Project (Rev.b)

チャコメータv3.0dの寿命は、15分間隔の測定&通信で7−8日です。
これを伸ばすために検討&改良を行いたいと思います。

1.現状調査

1.1 調査内容

電池は主に、待機中(A)と測定(B)&通信中(C)に消耗すると考え、消費電流LTを以下の式で近似します。

LT=(A+B+C)*Time ・・・・・(1)
ここで、
  A:待機(DeepSleeo)中の電流
  B:測定の電流
  C:WiFi通信の電流
  Time:稼働時間

D=B+Cと置くと、LT=(A+D)*Time ・・・・・(2)

Panaloopの稼働実績から、フル充電から電池電圧Vcが4.6Vを下回るまでの時間を求め、この時の消費電流をLTとする。
 フル充電:2020/09/27 17:48:37
 Vc<4.6V:2020/10/05 18:30:33

 Time_15=8D00H42M=192.7H

 LT=(A+D)*192.7 ・・・・・(3)

次に測定&通信間隔を5分にして稼働します。

//***********************Deep Sleep Mode ****************
  #define WKup     300            //<--- Deep Sleep時間(sec) 

間隔が3倍になるので、(2)式は次のように表せます。

 LT=(A+3D)*Time_5 ・・・・・(4)

Time_5を実測して、AとDの関係を求めたいと思います。

1.2 測定結果(10/17)

5分間隔で測定した時の電池寿命は↓から176.2時間でした。
 フル充電:2020/10/10 7:58
 Vc<4.6V:2020/10/17 16:08

f:id:kainuma-k5:20201017223731p:plain
電圧変化 201017

↑から、(4)式はLT=(A+3D)*176.2
(3)式とLTが等しいので、(A+D)*192.7=(A+3D)*176.2
ここから、A=20.4D となります。

したがって、DeepSleep中(A)は、測定・通信中(D)の20.4倍も電流を消費していることがわかりました。
稼働時間は測定誤差があるかもしれませんが、ここではA>>Dということがわかれば良いので、気にしません。
長寿命化の攻めどころは、「DeepSleep中の消費電流」という事になります。

2.考察

寿命計算してみます。

2.1 平均消費電流

エネループの容量は1800mA/本@1.2V、4本使っているので7200mAH
容量の半分の電流を引き出せるとして、使える電流(=寿命)は3600mAHとなります。
v3.0dの平均消費電流をIa@4.8Vとすると、v3.0dは8日間稼働したので、
Ia*24H/d*8d=3600mAH
Ia=18.75mA

およそ19mA消費していると考えられます。

2.2 各部の消費電流

DeepSleep中のESP32は、150uA@3.3V
OLED(SSD1306)の消費電流は、max15mA@3.3V(全画面白の時)
なので、ESP32 DevkitCのLED(R)が一番電流食いなのかもしれません。

表 ESP32の動作Modeと消費電流

Mode 動作 電流mA
RF Active Wifi max240
ModemSleep CPU 240MHz 30-68
Light Sleep 0.8
Deep Sleep ULP Co.processor 0.15

2.3 LED(R)の消費電流

↓によると、ESP32 DevkitCは、5Vin側にLED(R)がぶら下がっています。
https://akizukidenshi.com/download/ds/espressifsystems/esp32_devkitc_v4-sch-20180607a.pdf

型式が記されていないのでわからないですが、例えば10mAで光っているとすると、三端子レギュレータの効率を考慮して10/(3.3/Vc)mA消費している事になります。Vc=6Vの時は、10/(3.3/6)=18.1mAなので無視できません。もっと早く気がつくべきでした。。。

2.4 OLEDの消費電流

SSD1306の消費電流は「max15mA、min1mA以下」で、発光部が多いと電流の消費が増えるようです。
↓に消費電流を実測された方の記事を見つけました。点灯時=約8mA、消灯時=約8uAだったそうです。LED(R)と同等レベルで消費していそうです。。。

ラジオペンチ 0.96インチOLEDのスリープ特性、他

3.対策案

1. ESP32/DevkitCのLED(R)を削除する
2a. 夜間OLEDを暗くする
 ・NTPを使う
 ・RTCを追加する
 ・電源ラインをOFFする → フォトカプラ or リレー
2.b OLEDの表示文字を少なくする
3. 温度、電圧変化が小さい時には通信しない dT<0.1degC or dV<0.1Volt 

4.対策

4.1 対策の概要

本当は対策を1つずつ実行しその効果を測定したいのですが、1回の寿命測定に1週間以上かかるので、複数の対策を同時に実行したいと思います。
今回試すのは、
1) LED(R)を外す => 破壊する
2) OLEDの表示文字を減らす => 電圧だけにする
3) 測定間隔は15分に戻す

4.2 LED(R)を外す

小さいので半田ごてを使って取り外すのは難しそうなので、カッターでグリグリやりました。結果、チップが割れましたが、再利用するつもりないので問題なし。

4.3 OLEDの表示文字を減らす(V3.1-)

横6ドットx縦16ドットの文字を4行表示していましたが、1、2、4行をブランクにしました。3行めのc[3]は電圧です。
単純に考えて、文字数を1/4にしたのだから、消費電流も1/4になっていると期待しています。

void Display_Pic3a(int pp) {  
  
  display.clearDisplay(); // 画面バッファをクリア
  display.setTextSize(2); // 横6ドットx縦16ドットの文字サイズ
  display.setTextColor(WHITE);
  display.setCursor(0, 0); 
  display.println("          ");
  display.println("          ");
  display.println(c[3]);
  display.println("          ");
  display.display();
  delay(10);
}

4.4 夜間消灯

NTPで時刻を入手して、夜間OLEDを消灯しようと思いましたが、同期するまでWiFiを接続していなければならないのでやめました。WiFi通信時間は出来るだけ短くしたかったので・・・。
適当なRTCを探したい思います。↓はNTPの参考HPです。
ESP32で現在時刻を取得する(これが一番良いと思います) | Autumn-Color.com

4.5 実験再開

LED(R)を取り外し、OLEDの表示文字数を1/4に減らし、実験を再開しました。
予想:1ヶ月程度、連続稼働できると思います。10/18AM、v3.1-で実験スタート。結果が楽しみです。

5.参考

↓さんが、土壌センサーで同じようなことをやっています。DevキットがLEDを外しても数mA消費するので、長期間稼働は難しい、と結論しています。。。
ESP32を電池で動かしてみる (その2) / kghr IT備忘録