E32-SolarChargerを使ったソーラー充電システム

概要

ソーラーパネルより鉛バッテリーへの充電、および接続機器への放電をコントロールするE32-SolarCharger用のアプリケーション例です。

バッテリーの電圧、電流をLCD表示するほか、microSDカードへのロギング機能があり、グラフ化して分析するなどの応用が可能です。 電圧低下時の負荷切断機能、夜間などの充電が見込めない時は電力消費を抑えるスマートスリープ機能を実装しております。 WiFiを使用することで、ユーザースイッチだけでなく、Webブラウザ経由でも制御可能です。

Arduino IDEソースコード

プログラムはArduino IDE形式です。以下より ダウンロードして、お使いのArduino IDEでE32-SolarChargerボードに プログラムを書き込んでください。

Version日付ESP32core変更履歴
2019_9_072019/9/71.0.1WiFi非接続で動作時に、測定値ロギング用csvファイルが作成できない点を修正しました。

サードパーティライブラリ

以下のサードパーティArduinoライブラリを使用していますので、あらかじめインストールしてください。 インストールは各ライブラリの指示に従ってください。なお、基本的には以下の手順で動作します。

GitHub配布ページ右にある”Clone or Download” > “Download ZIP”をクリックしてダウンロードしたファイルを解凍して下さい。 その中からlibrary.propertiesを含むディレクトリをArduino IDEディレクトリ内のlibrariesディレクトリにコピーして下さい。 解凍したディレクトリ自体をコピーする場合もあります。その際はディレクトリ名から”-master”を削除した方が名前が分かりやすくなります。

ライブラリVersion内容
ESPAsyncWebServer1.1.0Webサーバーを実装するために使用します。
AsyncTCP1.0.0上記ESPAsyncWebServerが使用します。

2019/4/4追記 : 最新版のESP32core1.0.1、ESPAsyncWebServer1.2.0、 AsyncTCP1.0.3の組み合わせだと起動に失敗することが分かりました。 開発環境であるESP32core1.0.0、 ESPAsyncWebServer1.1.0、 AsyncTCP1.0.0 でご使用下さい。

プログラムの準備

SolarCharger.inoファイルの17, 18行目にお使いのWiFi SSIDとパスワードを入れてください。 Bootstrapコードをインターネット上から取得しているのでインターネットに接続されたWiFiをご使用ください。

const String wifiSSID = "yourssid";      // お使いのWiFiのSSIDを入力してください
const String wifiPass = "yourpassword";  // お使いのWiFiのパスワードを入力してください

IPアドレスを固定したい場合は19行目をコメントアウトして設定して下さい。

SolarCharger.inoファイルの22-29行目は充放電制御に関する設定になっております。 お使いの機器に合わせて値を調整してください。基板で測定できるのは、バッテリー充電電流となっており、 バッテリー充電電流 = ソーラーパネルの入力電流 – 負荷への出力電流という関係になっております。 バッテリーの仕様のほか、ソーラーパネルの最大入力電流8Aを超えないように設定してください。 なお、基板自体が消費する電力は測定値に含まれません。

float vBatTarget = 14.0;    // 最大充電電圧の目標値
const float vBatG1 = 0.2;   // 上記目標値からこれ以上ずれたらPWMを調整する
const float vBatG2 = 0.8;   // 上記目標値からこれ以上ずれたらPWMをより早く調整する
float cBatTarget = 5.0;     // 最大充電電流の目標値 (バッテリー充電電流 = ソーラーパネルの入力電流 - 負荷への出力電流)
const float cBatG1 = 0.1;   // 上記目標値からこれ以上ずれたらPWMを調整する
const float cBatG2 = 0.5;   // 上記目標値からこれ以上ずれたらPWMをより早く調整する
float vLoadCut = 10.8;      // バッテリー電圧がこの値を下回ると負荷を切断
float vLoadRecover = 12.0;  // バッテリー電圧がこの値を上回ると負荷切断を解除

デフォルトではSDカードにログ情報を書き込むようになっています。SDカードをFAT32でフォーマットし、 常にスロットに入れた状態でご利用ください。 SDカードを使用せず、内蔵フラッシュのSPIFFS領域に書き込むように変更することも出来ます。 その場合はStorage.hの15行目opLogSDをfalseに変更してください。

static const bool opLogSD = true;       // true : SD, false : SPIFFS

起動

ソーラーパネル、バッテリーなどの接続はE32-SolarChargerサポートページをご参照ください

電源を入れてシリアルモニタを開いてプログラムを書き込んでください。 その後、SW3を押しながらSW1を押して起動してください。 (デフォルトでソーラー入力電圧が低いとスリープに入るようになっております。 SW3を押しながら起動するとそれを回避します。実際の運用時はSW3を押す必要はありません。) 起動して正常にWiFiに接続すると以下のようにIPアドレスが表示されます。 同じWiFi上のPCやスマホのブラウザを開いて、http://IPアドレス/battery.php を開くことで、 ネットワーク上から測定値の確認、ログのダウンロードなどが行えます。

-----------------------
Program start

WiFi Connected IP : 192.168.2.26
2018/07/08 17:40 TimelyTaskManager Started
2018/07/08 17:40 Web server started

LCD、スイッチ制御

LCDディスプレイ上にバッテリーなどの情報が表示されます。SW4、SW5を押すことで表示される情報を切り替えられます。

メニュー内容
BAT V/Cバッテリー電圧、電流を表示します。放電は負の値となります。
BAT Pバッテリー電力を表示します。放電は負の値となります。
CRG Vソーラー入力電圧を表示します。
LOGロギングが稼働中かどうか表示します。
LOAD負荷の設定を表示します。AUTO:電圧により自動 OFF:切断
SLEEPスリープの設定を表示します。AUTO:電圧により自動 OFF:スリープにしない

LOG, LOAD, SLEEPのメニューでSW3を押すと値を変更するモードになります。 SW4、SW5で値を変更し、再度SW3を押すことで設定値が変わります。

測定値のロギング

ロギングを有効にすると、バッテリー電圧、電流、電力およびソーラー入力電圧をcsv形式で記録します。 ファイルはSDカードまたはSPIFFS上に保存されます。 アクティブ状態では1分に一度、スリープ中は15分に1度の頻度で記録を行ないます。

負荷制御

LOADをAUTOに設定すると、バッテリー電圧に応じて負荷の接続をコントロールします。 バッテリー電圧がvLoadCut設定値を下回ると負荷を切断し、赤色LEDが点灯します。 バッテリー電圧がvLoadRecover設定値を上回ると負荷を再接続します。 消費電流が多い負荷を接続中はバッテリーの電圧が一時的に低下しますので、 vLoadCutとvLoadRecoverには1V以上差を付けることを推奨しております。 アクティブ時は1分おき、スリープ時は15分おきにバッテリーの電圧をチェックして負荷を切り替えます。

スマートスリープ

SLEEPをAUTOに設定すると、ソーラーパネル入力電圧に応じてDeepSleep状態に入ります。 入力電圧が8Vを下回ると夜間もしくは発電の見込めない曇天と判断しスリープ状態に入り、黄色LEDが点灯します。 入力電圧が10Vを上回るとアクティブ状態となり、緑色LEDが点灯します。 スリープ中は消費電力を下げることができますが、WiFiは切断状態となります。 アクティブ時は1分おき、スリープ時は15分おきに入力電圧をチェックしてスリープを切り替えます。

ブラウザから制御

ブラウザから基板のWebサーバーにアクセスして情報の確認、操作が可能です。 スリープ中はWebサーバーも停止するためアクセスできません。 手動でSW3を押してスリープ状態から復帰してください。

バッテリー管理ページ (http://IPアドレス/battery.php)

バッテリー情報、ソーラーパネル入力電圧、充放電設定値などが確認できます。 ログ、スリープ、負荷の切り替えも可能です。

ログファイル管理ページ (http://IPアドレス/logfile.php)

記録したログファイルのダウンロード、削除ができます。

システム情報ページ (http://IPアドレス/system.php)

システム情報の確認のほか、基板の動作を記録したファイルのダウンロード、削除ができます。