前回の記事で電流センサ INA219 とM5Stackを使って電流測定をしたので、M5StickCでもやってみました。
太陽光パネルからの12Vバッテリへの充放電電流を測定してみました。
プログラム
Adafruit INA219 ライブラリと共にインストールされる getcurrent をベースにM5StickCへ移植しました。
前回のM5Stack同様にLCDに表示しています。
電圧、電流、電力を100msec間隔で表示し、電流が充電方向でプラス、緑色の円描画、放電方向でマイナス、赤色の円描画しています。
#include <M5StickC.h>
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
int refresh_count = 0;
void setup(){
M5.begin();
//Wire.begin(32, 33); // Grove G32:SDA, G33:SCL
Wire.begin(0, 26); // G0: SDA, G26: SCL
M5.Axp.ScreenBreath(8);
M5.Lcd.setRotation(3);
M5.Lcd.setTextSize(2);
Serial.begin(115200);
while (!Serial) {
delay(1);
}
// Initialize the INA219.
if (! ina219.begin()) {
M5.Lcd.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
M5.Lcd.println("Measuring voltage and current with INA219 ...");
M5.Lcd.fillScreen(BLACK);
}
void loop(void) {
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = (-1)*ina219.getCurrent_mA(); //バッテリの充電方向に合わせて反転
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
if (++refresh_count > 100) {
refresh_count = 0;
M5.Lcd.fillScreen(BLACK);
}
M5.Lcd.setCursor(0, 10);
M5.Lcd.printf("%7.2f V\n", busvoltage);
M5.Lcd.printf("%7.2f mA\n", current_mA);
M5.Lcd.printf("%7.2f mW\n", power_mW);
if (current_mA < 0) {
M5.Lcd.fillCircle(138, 35, 14, RED);
} else {
M5.Lcd.fillCircle(138, 35, 14, GREEN);
}
delay(100);
m5.update();
}
接続
Grove端子(Vcc 5V)でも IO0,26(Vcc 3.3V)でも動作しました。
Grove端子を使用する場合はsetup()関数の2-3行目のコメントを入れ替えます。
M5StickC : INA219
------------------------
3.3V : Vcc
GND : Gnd
G0 : Sda
G26 : Scl
DC12VバッテリへのVin+ と Vin- の接続
電流計なので当然直列に入れます。バッテリの+12V端子に直列に挿入しました。
電圧も測定するために INA219 のGNDとバッテリ、負荷のGNDを接続します。
Vin+ : バッテリの+端子
Vin- : ソーラーチャージャーのバッテリ接続用+端子
これで充電時の電流がプラス、放電時がマイナスになります。
M5StickC と INA219 で電流計。電流の正負で緑と赤の円描画。単純だけどもバッテリの充放電を測定するのにも色表示が直感的。 pic.twitter.com/arUHLrQGO2
— 山添 知久(zoe)/IoT (@zoe6120) July 25, 2020
測定
僅かに発電中。ここのところ雨続きですが、日中は明るければわずかに発電します。
5Wの太陽光パネルを東向きに設置していますが、雨の日の午後で2-10mA程度で充電してます。
雨の日で東向きの5Wの太陽光パネルでも少しだけ発電中。バッテリには2mAで充電。 pic.twitter.com/CDTcF5NO3Q
— 山添 知久(zoe)/IoT (@zoe6120) July 25, 2020
こちらは発電できずに充放電が頻繁に切り替わっています。
ほとんど発電できない状態。充放電がせめぎ合う。 pic.twitter.com/hkcTZnPQUB
— 山添 知久(zoe)/IoT (@zoe6120) July 26, 2020
まとめ
前回のM5StackをM5StickCにしてLCD表示をシンプルにしました。
太陽光パネルで充電中の12Vバッテリの充放電電流を確認することができるようになり、太陽光パネルの発電状況が可視化されました。