チャコメータ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
↑から、(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)と同等レベルで消費していそうです。。。
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備忘録