Arduino 入門
Lesson 69
【電流センサモジュール】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
そろそろ、手持ちのセンサがなくなりつつある今日この頃。
部品庫をあさってさがしてきました。
いつ購入したかも記憶にないが、電流センサを発見!
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
※そろそろ部品庫のセンサがない・・・
本記事はLesson 69 【電流センサモジュール】です。
名前のとおり電流値を測定できるのですが、ホール素子をを用いているため学校で習うような測定箇所に電流計を入れるということではありません。
そのため、測定機器の内部抵抗を気にすることなく電流値を測定することができます。
ただし、今回の電流センサモジュールは電流検出経路にモジュールを入れる形となっているため内部抵抗として実際は1.2mΩ程度存在します。
まあ、ほぼ0ですね。
「電流センサモジュール」はAllegro社がリリースしているACS712を使用しています。
本Lessonで使用している「電流センサモジュール」は以下が同等品。
※測定範囲は±5A
※prime対応品
※出荷元:Amazon
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「電流センサモジュール」は「ACS712」が実装されたモジュール。
データシートはすぐに見つけることができます。
本Lessonで使用する、「ACS712」はOptimised Rangeが±5A品(05B)。
Lesson 69 目標
本Lessonの目標は以下です。
2.電流センサモジュールを動かすスケッチを描く
3.電流センサモジュールからデータを取得する
いつものように、遊ぶことが重要です。
「電流センサモジュール」ですが、制御はそれほど難しくありません。
モジュールから出力される電圧をArduinoのアナログピンで読んであげてあとは補正計算するだけ。
制御よりも、データシートを理解して補正計算するところの方が難しいかも・・・。
準備
ではLessonの準備に取り掛かりましょう。
電子部品は「電流センサモジュール」のみ。
ですが、測定対象は別途用意する必要があります。
これが、なかなかやっかい。
AC、DCどちらも測定できるのですが・・・。
本Lesson、入門編ということを考えると直流電流を測りたい。
でもアンペアオーダーを流すのはさすがに・・・。
入門編のArduinoで遊んでいる人が、そんな電流を流せる電源を持っているとも思えない。
考えた末に、ぎりぎり200mA程度流せば測定できるだろうということで下記としました。
- 抵抗(220Ω)×8本
- 電源(MB102)
抵抗を5Vに平行に8本入れる。
ということは、5V / 220Ω × 8本 = 181.8mA
※1本あたりの抵抗の許容電流に注意してください!
181mAであれば、おそらく測定できると思います・・・。
電源は下記、最大出力電流:700 mA未満!
ブレッドボードに挿して使用可能!他のLessonでも使用実績あり。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
- M-F M-M F-F セット Jumper wire(UNOと部品をつなぐための配線)
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「電流センサモジュール」について説明していきます。
電流センサモジュール「ACS712」 実物写真
下の写真が「電流センサモジュール」の実物写真です。
本Lessonで使用するものは、「ACS712」が実装されたモジュール。
■実物写真
信号ピン(左側)は上から、VCC、OUT、GNDとなっています。
右側は測定対象を接続するためのピンです。
電流センサモジュール「ACS712」 回路図
「電流センサモジュール(ACS712)」の回路図を示します。
回路に興味がないかたは必ず読み飛ばしてください。
原理であるホール素子についてはLesson 33で解説しています。
回路図からわかるように、伝導路の端子はセンサー IC のリード (ピン 5 ~ 8) とは電気的に絶縁されています。
この部分がホール効果による測定箇所になります。
いわゆる電流計を挟んで測定しているわけではないことがこれからわかります。
■ACS712 回路図
■モジュール概略図
電流センサモジュール「ACS712」 仕様
遊び、学習で使う分には気にする特性はとくにありません。
詳細はデータシートを確認ください。
■仕様抜粋(05B:5A品)
項目 | 仕様 |
---|---|
電流検出 | AC/DCに対応 |
供給電圧 | 5.0V(4.5~5.5) |
供給電流 | 10mA(Max:13mA) |
動作温度 | -40℃ ~ 85℃ |
周波数帯域幅 | 80KHz(–3 dB, TA = 25°C; IP is 10 A peak-to-peak) |
Zero Current Output Voltage | VCC×0.5(Typ:Bidirectional; IP = 0 A, TA = 25°C) |
測定範囲 | ±5A |
感度 | 185mV/A(Typ) |
■出力電圧 vs 測定電流
5A品の出力電圧 vs 測定電流のグラフが以下。
- 出力:無負荷時Vcc/2=2.5V@VCC=5V
- 仕様から±1Aあたり±185mv変動
ようするに、上記仕様、グラフから読み取れることは・・・
- 電流が0Aで2.5V出力
- ±1Aあたり±185mv変動
0Aで2.5Vということはアナログリードの読み値は理想だと512前後付近にくるはず。
電源がぴったり5Vではなかったりと、精度をあげるためにはキャリブレーションが必要。
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「電流センサモジュール」を動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
Arduinoの使用ピンは以下。
- アナログ入力:A0
- 5V、GND
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
電子部品は「電流センサモジュール」のみ。
測定対象は抵抗(220Ω)×8、電源を用意します。
使用するポートは
- アナログ入力:A0
- 5V、GND
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。
コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。
コマンド説明
本Lessonでは、特に新しいコマンドはありません。
サンプルコード
かなり、簡易的なスケッチですが・・・
これでも測定可能です。
//Lesson 69 ACS712 電流センサモジュール //電流センサモジュール(ACS712_05B 実装)で電流の測定 //https://omoroya.com/ float offset = 512; //電流0のときのアナログリードの値 float slope = 55.25; //傾き・・・流す電流値から算出(補正のため別途電流測定必要) int times = 1000; //積算回数 void setup() { Serial.begin(9600); Serial.println("Current measurement start."); } void loop() { float sum = 0; float average = 0; //電流値の計算と積算(精度向上のため) for(int i = 0; i < times; i++) { //sum = sum + analogRead(A0); //電流0のときのアナログリード値を読むときに使用 sum = sum + (analogRead(A0)-offset)*slope; //電流値への換算 delay(0.1); } //積算値を積算回数で割り平均を出す average = sum / times; //シリアルモニタへの表示 Serial.print("Current :"); Serial.print(average); Serial.println("mA"); }
動作確認
では、さっそく動作を確認していきます。
流している電流は計算上の理論値は181.8mA。
抵抗の誤差、電源が5Vではない、などあるため電源電圧、電流値は別途測定しキャリブレーションが本来は必要です。
まあ、遊びならそこまでしなくてもOKです!
精度がほしいなら頑張りましょう!
さっそくスイッチON!
シリアルモニタを開いて読みだしたデータをみてみましょう。
■シリアルモニタの結果
上側が電流0Aのとき、
下側は外部電源をONして電流を流したとき。
180mA前後が出力されています。
測定できています!素晴らしい!
本Lessonで使用した「電流センサモジュール」は安価ですが学習、遊びには十分な精度があります。
このモジュール、DCだけではなくACも測定可能です。
挑戦してみても良いかも。
まとめ
本Lessonは、以下を目標としました。
2.電流センサモジュールを動かすスケッチを描く
3.電流センサモジュールからデータを取得する
「電流センサモジュール(ACS712搭載)」は手軽に精度よく電流を測定することができます。
ホール素子を利用しているため、理論的には計測対象の電力を消費しません。
また、キャリブレーションをしっかりとすれば精度良く電流値をモニタできます。
「電流センサモジュール(ACS712搭載)」を使用すれば電力測定計など作成可能。
色々遊んでみるのも面白い。
Lesson 69 【電流センサモジュール】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 70は【熱電対を用いた温度センサモジュール】です。

最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
はい!ありがとうございます!やってみます!
こんにちは。Arduino超初心者です。僕は学校の研究でトマトから発せられる電流を調べる実験をしていて、ELEGOOのスターターキットとACS712を購入しました。そこでこの記事見させていただいたのですが、分からないところが2つあるのでコメントさせていただきました。まず、ACS712を使って計測するにはどこに電流を流せばよいのか。次に、Power Supply module には何を接続すればよいのか。この2つを可能であれば教えてほしいです!
コメントありがとうございます。
Lesson69に記載の回路図があります。
その回路図の抵抗部分と電源(MB102)が測定対象と思っていただければOKです。
回路図の抵抗と電源をトマトに置き換えれば良いと思いますが・・・
トマトから得られる電圧がどの程度なのかわかりませんので
ACS712で測定できる電流範囲、感度であるかどうかは何とも言えません。
測定できたら、ぜひコメントください!