先日、M5Stackに電流センサをつないで、電化製品の電流値を測定しました(記事は こちら)。
今回は、同じことを、M5StickCで試してみます。
使うのは、M5Stackの時と同じ「クランプ式AC電流センサ30A」です。
回路構成は以下のとおりです。
ブレッドボードで回路を作ります。AC電流センサは端子がオーディオプラグになっているので、オーディオジャックで接続できるようにしておきます。
M5StickCの電源端子(3V3)とグランド端子(GND)を、4.7kΩの抵抗ふたつでつなぎ、中間電位を作ります。
電流センサのふたつの端子間に47Ωの抵抗をつなぎ、その一方の端に先ほど作った中間電位をつなぎます。
電流センサのふたつの端子を、M5StickCの26番、36番端子につなぎます。
M5StickCでは、26番、36番端子のアナログ値を読み取り、両者の差を観測することで、電源ケーブルを流れる電流値を把握します。
スケッチは以下のとおりです。
M5StickCで読み取ったアナログ値を電圧に補正し、さらに「電源コードを流れる電流値 I = ふたつの端子の電圧の差 V / 47 * 2000」の式に当てはめることで、ケーブルを流れる電流値が計算できます。
#include <M5StickC.h> int pin1 = 26; int pin2 = 36; int count = 100; void setup() { M5.begin(); Serial.begin(115200); pinMode(pin1, INPUT); pinMode(pin2, INPUT); } void loop() { float total = 0.0; for(int i=0; i<count; i++) { float vdiff = (float)(analogRead(pin1) - analogRead(pin2)) / 4096.0 * 3.3; // Vdiff = (val2-val1)/4096*3.3 float current = vdiff / 47.0 * 2000.0; // I = Vdiff/R*ratio, , R=47ohm, ratio=2000 total += pow(current, 2); delay(1); } Serial.println((float)sqrt(total / count)); }
電源ケーブルを電流センサではさみます。
電源ケーブルは2本の線でできていますが、両方をはさんでしまうと2次電流は流れないので、写真のように2本の線の片方だけをはさみます。
今回も、電源コードには、ヘアドライヤーをつなぎました。
シリアルプロッタに表示した結果は以下のとおりです。ドライヤーの状態に応じて、波形の大きさが変化しています。
ただし、ドライヤーを停止している時にも、13A程度と、大変大きな数値が表示されています。
ドライヤーを冷風にした程度では、停止している時との差がわかりません。また、M5Stackで測定した結果とも、大きく異なっています。
M5Stackの時と同様に、電源ノイズが原因ではないかと考え、「M5.begin」に引数を追加してみましたが、状況は変わりませんでした。
そのため、M5StickCで読み取ったアナログ値を、直接観測してみることにしました。
M5StickCの電源端子(3V3)とグランド端子(GND)を可変抵抗につなぎ、中間電位をM5StickCの26番、36番端子につなぎます(同じ信号をふたつの端子につなぎます)。
その上で、M5StickCに以下のスケッチを書き込みました。
#include <M5StickC.h> int pin1 = 26; int pin2 = 36; void setup() { M5.begin(); Serial.begin(115200); pinMode(pin1, INPUT); pinMode(pin2, INPUT); } void loop() { int val1 = analogRead(pin1); int val2 = analogRead(pin2); Serial.print(val1); Serial.print(","); Serial.println(val2); delay(100); }
結果は以下のとおりです。
可変抵抗を下限、および上限いっぱいに回した時には、アナログ値はふたつとも「0」程度、もしくは「4095」程度となり、同じ結果になっていますが、可変抵抗を中間電位にした時には、同一の信号にも関わらず、両者の間に「500」程度の差があります。
これが原因で、電流センサの測定結果が、実態と大きくずれてしまっているようです。
電流値の増減など、相対比較程度ができればよいのであれば、この方法でも何とか使えそうですが、より正確な値を測定したければ、ADコンバータを使うなど、対策を考えなければいけなさそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。
このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。
他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。