前回、測定値をサーバーに送信することができました。
今回は、電池駆動部分を作ります。
部品
- ENELOOP 単三4本
- フォトカプラ TSL222AF https://akizukidenshi.com/catalog/g/gI-07330/
- 抵抗 10KΩ
- 抵抗 100Ω x2
回路
ESP32の5V(V+)とGND(V-)間にエネループを4本接続します。5V端子は、三端子レギュレータAMS1117-3.3に繋がっています。
ESP32 DevC 回路図 https://akizukidenshi.com/download/ds/espressifsystems/esp32_devkitc_v4-sch-20180607a.pdf
AMS1117-3.3 http://www.advanced-monolithic.com/pdf/ds1117.pdf
V+の電圧は10KΩ:10KΩで分圧し、IO32で電圧をモニターします。
モニタリングしていない間、電気を流し放しにしておくわけにはいかないので、IO4でフォトカプラを叩いて必要な時だけ電流を流します。
ソース
(1)ヘッダ
float Vc = 0.0;
(2)setup()
ピン4をDoutとして使うと定義します。
pinMode( 4, OUTPUT );
(3)電圧測定 loop()
analogReadは↓を参考にしました。
http://rikoubou.hatenablog.com/entry/2017/06/29/135819
フォトカプラをONにしている間に、すかさず32ピンの電圧を読み取ります。
今はloop関数内に書いているけど、別の関数を定義したいと思います。
digitalWrite( 4, HIGH ); delay(10); int A32 = analogRead(32); digitalWrite( 4, LOW ); float Vc = (long)A32 * 3.3 * 2 /4096 *1.081; Serial.print("Vc="); Serial.println(Vc);
痛恨のミス
(1)ミス
三端子レギュレータの仕様書↓を見て、ミスに気がつきました。
Vin-Vout=1.5V〜12Vとなっているではありませんか!!
ESP32はVout=3.3Vなので、Vin=4.8V〜15.8V
エネループは4本で4.8Vなので、一番おいしいところで下限になってしまいます。。
(2)改善対策
三端子レギュレータは、VinがほぼVoutになるまで使えると勝手に思い込んでいました。
電池本数を増やしてくないので、電圧変換方法を再考しなければなりません。
手持ち部品に↓がありました。これは3.3V+0.4V=3.7Vまで使えそうです。
https://akizukidenshi.com/download/ds/njr/NJU7223_j.pdf
三端子レギュレータを追加するスペースあるかなぁ?
まあ、明日考えるか。
続く