Allegro ACS712 DC/AC電流センサーをArduinoコードで使用する
このチュートリアルでは、Arduinoを使ってAllegro社のACS712電流センサーで交流(AC)と直流(DC)の両方の電流を測定する方法を学びます。ACS712センサーは流れる電流に比例した電圧を出力するため、Arduinoのシリアルモニター上で電流値を簡単に読み取り表示できます。このプロジェクトは、電源やバッテリーシステムなどのさまざまな用途で電流を監視したい人に最適です。

ACS712センサーをArduinoに接続する簡単な回路を組み、その後センサーの出力を読み取るプログラムを書きます。期待される結果は、シリアルモニタにリアルタイムの電流値が表示されることです。実装の確認のため、ビデオ(02:00)を必ずご覧ください。
ハードウェア解説
AllegroのACS712電流センサは、選ぶバージョンによって最大30Aまで測定できるコンパクトなモジュールです。ピンはVCC(電源)、GND(グランド)、および測定した電流に対応する電圧を出力するOUTピンの3本です。センサはホール効果の原理を利用しており、導体を流れる電流が磁場を発生させ、その磁場を検出して電圧に変換し、Arduinoに送ります。
このモジュールは異なる定格電流(5A、20A、30A)で提供され、それぞれ185 mV/A、100 mV/A、66 mV/Aの電圧出力を持ちます。つまり、センサーを流れる電流1Aごとに読み取り・処理可能な対応する電圧出力が得られるということです。この特性により、さまざまな用途に応用できます。
データシートの詳細
| 製造業者 | アレグロ・マイクロシステムズ |
|---|---|
| 部品番号 | ACS712ELCTR-30A-T |
| ロジック/IO電圧 | 4.5~5.5V |
| 供給電圧 | 5 V |
| 出力電流(チャンネルあたり) | 最大30 A |
| PWM周波数に関するガイダンス | 該当なし |
| 入力論理閾値 | 該当なし |
| 電圧降下 / RDS(オン) / 彩度 | 1.2 mΩ |
| 熱制限 | 最大150°C |
| パッケージ | TO-220 |
| 注記/バリエーション | 5A、20A、30Aで利用可能です。 |
- 短絡を防ぐために配線を適切に行ってください。
- 電流定格に応じた適切なゲージの電線を使用してください(30Aには12 AWG)。
- 動作中はモジュールの温度を監視してください。
- より大きな電流を扱う用途では、ヒートシンクの追加を検討してください。
- ご使用のアプリケーションに応じてセンサー出力を較正してください。
配線手順

Allegro ACS712センサーをArduinoに配線するには、まずACS712のVCCピンをArduinoの5Vピンに接続してください。次に、センサーのGNDピンをArduinoのGNDピンのいずれかに接続してください。ACS712の出力ピンはArduinoのアナログ入力ピンA0に接続してください。
電流を測定する際は、負荷をセンサーと直列に接続してください。つまり、電源の正極からの配線を電流センサーの入力端子の一方に接続し、もう一方の端子を負荷に接続します。負荷のもう一方は電源に戻して回路を完成させます。測定する電流に合った適切な線径の配線を使用して、過熱を避けてください。
コード例とウォークスルー
次のコードスニペットはアナログピンを初期化し、シリアルモニタを設定します:
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage is from 4.5 to 5.5V. Normally 5V.
ここでは次のように定義します。VINセンサーの出力が接続されるアナログ入力ピンとして設定します。供給電圧も設定します。VCC5Vへ。

loop 関数では、ACS712 センサーから電圧を読み取り、電流を計算します:
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / sensitivity[model]; // Calculate current based on sensitivity
ここではセンサーから生の電圧を読み取り、使用しているセンサーモデルに基づく感度配列を用いてそれを実際の電流に変換します。
最後に、現在の測定値をシリアルモニターに出力します:
if (abs(current) > cutOffLimit) {
Serial.print("V: ");
Serial.print(voltage, 3); // print voltage with 3 decimal places
Serial.print("V, I: ");
Serial.print(current, 2); // print the current with 2 decimal places
Serial.println("A");
} else {
Serial.println("No Current");
}
このセクションでは、電流が所定のカットオフ値を超えているかをチェックし、電圧と電流の測定値をシリアルモニタに表示します。電流が閾値以下の場合は電流なしと出力します。
完全なコードは、記事の下に掲載されているコードをご参照ください。
デモ/内容と流れ
コードを実行して回路に電源を入れると、シリアルモニタに電流の読み値が表示されるはずです。負荷を調整すると、電流がカットオフ限界を上回っている場合に応じて読み値は変化します。特に最大定格付近で動作させる際は、センサーの温度に注意してください。
リソースと参考文献
まだリソースはありません。
ファイル📁
データシート(pdf)
-
Allegro ACS712 AC/DC 4A, 20A, 30A Current Sensor Datasheet
application/pdf0.65 MB
フリッツィングファイル
-
Allegre ACS712 Current Sensor
application/zip0.03 MB