工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

ソーラーパネルで発電してリチウムイオン電池を充電する

概要

ソーラーパネルで発電してリチウムイオン電池を充電するための回路を作成し、動作を確認した。


背景と目的

最近作成している自動水やり器は、ソーラーパネルで発電した電力を電源として利用すること考えている。そこで、ソーラーパネルで発電し、それを一時的にリチウムイオン電池にためて、利用するところまでの一連の回路を組んでみる。


詳細

1.構成

ソーラーパネルで発電した電力をそのまま使用しようとすると、日照状態によって電圧が変動するのは言うまでもないので、一時的に電池に貯めてそれを取り出す形にしたい。

以前、ソーラーパネル+エネループのシステムを試したのだが、残念ながら比較的短い期間(1か月くらい?)でメモリ効果のようなもの?が発生し、充電できなくなってしまった。これは、満充電でも空でもない中途半端な状態を行ったり来たりする毎日の充放電が、ニッケル水素電池の特性に合わない使い方だったということだ。手持ち品のエネループが生かせると思って電池材料費をケチったのが失敗の元だった。

そこで、今回は中途半端な繰り返しの充放電でも問題が起きにくいリチウムイオン電池を用いることにする。ただし、リチウムイオン電池はよく言われるように使い方を間違えると、ニッケル水素電池よりも危険であるため、注意が必要だ。


2.電池の選定

電池は、自動水やり器で想定される消費電力は大雑把に見積もって2,3mAhなので、(数時間に一度、30秒間程度起動して水やりする、という動作を繰り返す)1日放置してもせいぜい60mAh。5日晴れなかったとして300mAなので、その程度があれば十分だろう。いろいろ探したところ、千石電商で、400mAhという手ごろなものが見つかったので、使用することにした。

www.sengoku.co.jp


2.リチウムイオン電池充電制御IC

リチウムイオン電池は過充電してしまうと危険なため、ここでは迷わず専用の充電制御ICを使用する。秋月電子で50円と非常に手ごろなものがあった。マニュアルをざっと読むと、最大電流値は外付け抵抗で決めることができ、リチウムイオン電池の電圧を高精度にモニタして満充電状態を検出し、充電を自動で止めてくれるとのことだ。ネット上にもたくさんの使用例があるので、安心だ。

akizukidenshi.com


3.回路の製作

3.1 MCP73831周りの実装

MCP73831を使った回路をさっそく製作した。ICのマニュアルに従って各定数を設定。PROG端子についている抵抗10kΩは、充電電流を最大100mAに制限するための設定。STATにつないであるLEDは充電中に点灯して知らせてくれる。入力側のENELOOP+/ENELOOP-は、エネループとは関係なく、3.2の回路の出力を繋ぐ関係でこういう名前になっている。

2021/04/11 間違っていたので差し替えた


3.2 ソーラーパネルからの供給部

今回使用するソーラーパネルは、以前の記事で使用しているものを流用するのだが、

  • 最大出力時電圧/電流 約9V/約340mA

というスペックなので、上記のMCP73831の最大入力電圧よりも高く、直接つなげない。そのため、以前作成したエネループ充電用の回路がちょうど使えそうなので使う。充電用回路といっても一定以上の電圧/電流が出力されないようにしているだけ。この回路は約5.6V/約100mAに制限しているので、3.1の回路につなぐことができる電圧で、しかも必要な電流が供給できる。回路図は以下。負荷としてエネループではなく、3.1で作成した回路を接続することになる。


4.動作確認

4.1 通常の電源でテスト

ソーラーパネルを繋がず、通常の直流安定化電源を使用して充電してみたところ、最大100mAに制限されて充電された。リチウムイオン電池の電圧が4.2V程度に近づくと徐々に電流が減ってきて、約4.2Vを超えることはなかった。動きが理解できた。

4.2 ソーラーパネルを繋いでテスト

晴れた日に接続してみた。4.1と同様にしばらくはずっと充電ステータスLEDが点灯し、リチウムイオン電池の電圧が4.2V程度になるとLEDが消灯した。ソーラーパネルからでも問題なく充電できている。


まとめと今後の課題

ソーラーパネルで発電してリチウムイオン電池を充電するための回路を作成し、動作を確認できた。自動水やり器の電源として使用できそうだ。


tarでアーカイブを作成するときに気を付けること(展開先のパーミッションを変化させてしまわないため)

先日、tarでアーカイブを作成し、あるディレクトリに展開したところ、展開したディレクトリのパーミッションが変わってしまった。このせいで、展開先ディレクトリにある他のファイルを参照していた他のプログラムがエラーを起こしてしまい、ひどい目に遭った。なぜ展開先ディレクトリが影響を受けてしまうのかとイライラしたが、結局tarでアーカイブを作成するときのやり方がまずかった。今後ミスしないようにメモしておく。


アーカイブ

hoge/
  abc.tgz --- 作成されたアーカイブ
  src/
    a.txt
    b.txt
    :

srcディレクトリ内のファイルたちをアーカイブするつもりで、以下コマンドを実行。

cd src
tar czvf ../abc.tgz ./

展開先

dest/
   abc.tgz --- アーカイブファイル
   abc/
     a.txt
     :

destというディレクトリにabc.tgzをコピーし、tarで展開したら、destのパーミッションが755に変わってしまった。

cd dest
tar xzvf abc.tgz .


原因

自分としては、srcディレクトリ中身すべてをアーカイブ対象としたつもりが、srcディレクトリが対象になってしまっていたこと。そのせいで、展開先ディレクトリdestにsrcが展開されてしまうために起こる。


正しい方法

src内のファイルたちをちゃんと指定する。つまり、./ではなく、./*。

cd src
tar czvf ../abc.tgz ./*

展開時には、

cd dest
tar xzvf abc.tgz -C ./

とする。

ソーラー発電式自動水やり器を作る(2) --- 電気回路の設計、製作 ---

概要

前回に続き、電気回路の設計と、製作を行った。


背景と目的

前回に続き、電気回路の設計と、製作を行う。


詳細

1. 回路全体

以下。ただし、ソーラーパネル発電とリチウムイオン電池まわりはここには書いていない。別途、描く予定。

1.0 電源まわり

大元は、リチウムイオン電池から4V程度が供給される。これを+BATTとしている。後述のマイコン用電源として3.3V系が必要なので、4VをレギュレータU2で落とす。これを+3V3とする。マイコンとその他消費電流から考えて、NJM2845を選択。


1.1 メインのマイコン

おなじみのESP-WROOM-32を使用。 Wi-Fiが使えて、各種GPIO、アナログ入力があり、3.3V系で動くので、+3V3を供給。


1.2 土壌水分センサ

U3が土壌水分センサ。アナログ入力ポートにつなぐだけ。こちらに書いた通り、電圧は高いほうが電池の終わり際まで動いてくれるはずなので、電源は+BATTから取る。


1.3 ポンプ駆動部

今回使用するポンプM1についてきたリレーモジュールを使用する。2次側のノーマリーOFF(NO)とCOM間にポンプの電源を接続し、一次側のコイルに電流を流した時に2次側が導通してポンプが動く。

厄介だったのが、このリレーモジュールRM1の素性が分からなかったこと。Amazonの商品説明ページには細かいことが書いてないので、自分で動かして調べた限り、

  • VDD=1次側コイルの電源には3.7V以上、55mA程度が必要
  • VINは、VDDにつなぐとOFF、GNDに落とすとコイルに電流が流れる

なので、VDD端子には、3.3Vではなく+BATTを接続。また、VIN端子は、ESP32のGPIO出力だと3.3Vしか出せないので、ちゃんとOFFできていなかった。そのため、簡単なトランジスタスイッチを使って+BATT/GNDでスイッチングできるようにする。ちなみに、VIN端子をGNDに落とすには2mAくらい引いてやる必要がある。まあ、電流的にはGPIOでも引ける。

それと、注意したいのは、こちらに書いた通り、GPIO出力初期状態がポートによって違う問題があるので、LOWになるポートを選んだ。(最初、HIGHになるポートを使っていて、電源を入れると必ずポンプが動いてしまうという問題に見舞われた。)

1.4 水位センサ

水位センサSW1は、水瓶の水切れを検出するために使用する。水位に応じて+3V3/GNDの2値になるように抵抗を介して接続し、ESP32のGPIOで受ける。


1.5 BME280

温度、湿度、気圧を測るセンサU1。3.3Vで駆動。I2C接続なので、ESP32のI2C端子と接続。ラインにはプルアップ抵抗。


1.6 その他

ESP32への書き込み用スイッチやシリアルなど。それと、LEDを1つ。(というか、後述の基板の都合上はじめから付いている。)


2.製作

製作した結果は以下。

  • 薄い木の板をベースボードとして、各回路を固定。大きさは、だいたい12cm×10cmくらいか。
  • ESP32の載る基板は、過去に私が遊びで作ったダッシュボタンの基板が余っていたのでそれを使った。ソフト書き込み用スイッチやシリアル端子、LEDなどが一通り載っているが、GPIOが引き出されていないので、端子に線をはんだ付けしてGPIOなどを引き出してある。通常は、

ESP-WROOM-32 ピッチ変換基板 ロングwww.switch-science.com

などを使ったほうが作りやすい。

  • リレーモジュールは、ネジ穴などがないので、仕方なく結束バンドで固定。
  • リチウムイオン電池と充電制御IC基板は、1の回路図には載せていないが、このベースボードに固定。


まとめと今後の課題

電気回路の設計、製作ができた。次回は、筐体を作成する。