ArduinoでAllegro ACS758電流センサーとSSD1306 OLEDディスプレイを使って電流を測定する
このチュートリアルでは、Allegro ACS758 電流センサーを使って電流を測定し、その結果を SSD1306 OLED ディスプレイに表示する手順を案内します。本プロジェクトでは、回路を流れる電流を読み取り、そのデータを OLED 画面上に視覚的に表現して簡単に監視できるようにします。部品の接続方法、コードの記述方法、そして各要素がどのように連携するかを学びます。


コードとその機能を理解したい場合は、詳細な説明を見るためにビデオ(02:45)を必ず確認してください。
ハードウェアの解説
このプロジェクトの主な構成要素は、Allegro社のACS758電流センサーとSSD1306 OLEDディスプレイです。ACS758はホール効果型の電流センサーで、導体を流れる電流を高精度で測定し、その電流に比例した出力電圧を提供します。最大200Aまでの電流に対応し、3.3Vまたは5Vで動作します。
SSD1306 OLEDディスプレイは、I2Cで通信する小型かつ低消費電力のディスプレイです。統合が容易で、グラフィックやテキストを鮮明に表示できるため、Arduinoのプロジェクトで一般的に使われています。これらのコンポーネントを組み合わせることで、さまざまな用途で電流を監視するための強力なツールになります。
データシートの詳細
| 製造元 | アレグロ・マイクロシステムズ |
|---|---|
| 部品番号 | ACS758ECB-200U |
| ロジック/入出力電圧 | 3.3 V / 5 V |
| 電源電圧 | 5 V |
| 出力電流(チャンネルあたり) | 200 A |
| ピーク電流(チャンネルあたり) | 200 A |
| PWM周波数に関するガイダンス | 該当なし |
| 入力ロジック閾値 | 0.3 V(低)、2.7 V(高) |
| 電圧降下 / RDS(オン時)/ 彩度 | 0.05 V |
| 熱的限界 | -40~125°C |
| パッケージ | SOIC-8 |
| 備考 / バリエーション | 双方向および単方向のモデルが利用可能です |
- 正確な測定値を得るために、ACS758センサーの向きを正しくしてください。
- 定格電流の上限付近で動作させる場合は、過熱を防ぐためにヒートシンクを使用してください。
- 安定した動作のため、センサーへの電源をデカップリングしてください。
- 浮動入力が誤った読み取りを招くのを避けるため、配線の接続を確認してください。
- 正確な電流測定を確保するために、センサー出力を較正してください。
配線手順

Allegro ACS758電流センサーとSSD1306 OLEDディスプレイを配線するには、まず電源を接続します。ACS758のVCCピンをArduinoの5V出力に接続し、GNDピンをArduinoのグランド(GND)に接続します。ACS758の出力信号ピン(Vout)はArduinoのアナログ入力ピンA0に接続してください。
次に、SSD1306 OLEDディスプレイでは、VCCピンをArduinoの5V出力に、GNDピンをGNDに接続します。OLEDのSDAピンをArduinoのSDAピン(ほとんどのArduinoボードではA4)に、OLEDのSCLピンをArduinoのSCLピン(ほとんどのArduinoボードではA5)に接続します。信頼性の高い動作のため、すべての接続が確実に行われていることを確認してください。
コード例と解説
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0; // supply voltage 5V or 3.3V
const int model = 2; // enter the model (see below)コード内では、変数VINアナログピンA0に割り当てられており、ACS758センサーの電圧を読み取ります。そのVCC変数は供給電圧を設定し、そしてmodel変数は使用されているACS758モデルを定義し、感度および出力電圧の計算に影響します。
void loop() {
float voltage_raw = (5.0 / 1023.0) * analogRead(VIN); // Read the voltage from sensor
float current = voltage / FACTOR; // Calculate the current based on voltage
}〜の中でloop()関数内で、コードは〜を使ってセンサーから生の電圧を読み取りますanalogRead(VIN)定義された感度に基づいてそれを電流値に変換します。これにより回路を流れる電流をリアルタイムで監視できます。
if(abs(voltage) > cutOff) {
display.clearDisplay();
robojaxText("Current:", 0, 22, 2, false);
}この条件式は、電圧の絶対値が指定された値より大きいかどうかを確認します。cutOfflimit。true の場合、表示をクリアして OLED を現在の電流値で更新します。これにより、重要な電流値だけが表示され、表示の乱雑さを防ぎます。
デモンストレーション/期待できること
プログラムを実行すると、OLEDディスプレイに測定中の電流がリアルタイムで表示されます。電流が流れていない場合は、ディスプレイに「No Current.」と表示されます。極性の反転などにより測定値が不正確になる可能性があるため、接続が正しいことを確認してください(動画の05:30参照)。
必要かもしれないもの
-
アマゾンAmazonでOLED 128x32を購入してください。amzn.to
-
アマゾンAmazonでSSD1306 OLEDを購入するamzn.to
-
アリエクスプレスAliExpressからSSD1306 OLED 128x32を購入するs.click.aliexpress.com
リソースと参考文献
まだリソースはありません。
ファイル📁
Arduinoライブラリ(zip)
-
SSD1306-OLED-Adafruit_SSD1306-master
robojax-SSD1306-OLED-Adafruit_SSD1306-master.zip0.02 MB
フリッツィングファイル
-
OLEDモノ 0.56インチ 128x32
OLED Mono 0.56 inch 128x32.fzpz0.01 MB -
SSD1306 0.96インチ 128x64 I2C モノクロ OLED ディスプレイ
SSD1306 0.96in 128x64 I2C Monochrome OLED Display.fzpz0.01 MB
ユーザーマニュアル
-
SSD1306 OLED マニュアル
robojax-SSD1306-OLED-manual.pdf1.79 MB