工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

必要な部品と材料

部品名数量備考
Arduino UNO1互換ボードでも可
ACS712 30A モジュール1※国内用途なら5A/10A版推奨
OLED I2C 128x321表示用 (LCDでも可)
LCD 16x2 I2C1表示用 (OLEDでも可)

プロジェクト概要

⚠ 注意: 商用電源 (AC100V/200V) を扱う際は感電・火災に十分注意してください。

ホール効果を利用したACS712電流センサーとArduinoを用いて、交流電流の真の実効値 (True RMS / TRMS) を測定する方法を解説します。一般的な「ピーク値からの換算 (正弦波前提)」ではなく、統計的手法 (Filtersライブラリ) を用いることで、位相制御 (トライアック/ディマー) による歪んだ波形でも正確に測定できます。

センサー選定のポイント

ACS712には 5A / 20A / 30A 版があります。筆者は「安全側」で30A版を購入しましたが、家庭用の小電流 (数アンペア以下) では分解能が足りず変動が大きくなります。用途に合わせて 5A版または10A版を選ぶのが正解です。 感度 (mV/A) が異なるため、キャリブレーション係数 (slope) も変わります。本記事のコードではコメントで調整方法を解説しています。

テスト環境

白熱電球 (75W) + 調光器 (トライアック式位相制御) + リファレンス用マルチメータ + ACS712モジュールを直列接続し、230VAC/50Hz環境で検証。

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

ステップバイステップ検証

Test 1: 生波形の観測

配線: ACS712 VCC→5V, GND→GND, OUT→A0
コード: Code_1.ino (アナログ値をシリアルプロッター出力)

調光器MAX (フルサイン波) で綺麗な正弦波、調光器MIN (約1/4サイクル) でトライアック特有の歪んだ波形が観測されます。

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

Test 2: ピークツーピーク法 (正弦波前提) の限界

コード: Code_2.ino - ピーク値差からRMSを推定 (RMS = Vpp × 0.3536 × 補正係数)

フルサイン波ではマルチメータと一致しますが、調光器を絞った歪み波形では 実測 0.21A に対し 0.36A と大幅な誤差 が出ます。これが「正弦波前提のRMS」と「真のTRMS」の違いです。

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測
ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

Test 3: Filtersライブラリによる真のTRMS測定

ライブラリ: Filtersライブラリ (統計的手法で標準偏差σを求め、TRMSを算出)

コード: Code_3.ino - シリアルモニタ出力版

歪み波形でもマルチメータとほぼ一致する値が得られます。キャリブレーション用の intercept (オフセット) と slope (傾き) は、無負荷時と既知負荷時の実測値から決定します。

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測
ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

Test 4: LCD / OLED への表示

配線: I2C接続 (LCD: 0x27, OLED: 0x3C 等 - スキャナで確認)
コード: Code_ACS712_LCD.ino, Code_ACS712_OLED.ino

OLEDは撮影中に破損し未検証ですが、LCDでは正常にTRMS値を表示できました。

ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

キャリブレーション手順 (重要)

  1. 無負荷 (0A) 状態で inputStats.sigma() の値を確認。0でなければ intercept で補正 (例: -0.5 なら intercept = 0.5)。
  2. 既知の負荷 (例: 75W球 @ 230V → 約0.326A) を接続し、理論値と実測 sigma() の比から slope を算出 (slope = 理論値 / 実測sigma)。
  3. コード内の intercept, slope を更新。

提供コード一覧

回路図

基本配線 (Test 1-3共通):
ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

LCD I2C接続:
ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

OLED 128x32 I2C接続:
ACS712センサーで実現する正確なAC電流測定 - Arduinoによる真の実効値(TRMS)計測

参考ライブラリリンク

製造プロセス

  1. OpenSensorsで空気質を測定: ArduinoとPythonによるガイド
  2. K30 CO2センサで室内空気質をリアルタイム監視する
  3. 1SheeldとArduinoで盲ろう者のコミュニケーションを支援する
  4. スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
  5. ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
  6. DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド
  7. Arduino MegaとNextion HMIで作る高機能ウェザーステーション
  8. Arduinoベースのヌンチャク操作6自由度ロボットアームキット
  9. ビリーバスフィッシュを任意の音源で動かす:ステップバイステップガイド
  10. Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
  11. コンパクトなArduinoレーダーシステム – HC-SR04超音波センサー & 1.8インチST7735ディスプレイ搭載