電子回路での電流の測定は、センサー、モーター、LED、およびその他のコンポーネントを含むプロジェクトの一般的な要件です。 Arduinoは電流を直接測定することはできませんが、電流センサーやシャント抵抗などの外部コンポーネントを使用して間接的に測定できます。このチュートリアルでは、Arduinoで電流を測定するプロセスをガイドします。
あなたが必要とするもの
- Arduino委員会 (例:UNO、MEGA、NANO)
- 現在のセンサー (例:ACS712、INA219)または シャント抵抗器
- ブレッドボードとジャンパーワイヤ
- ロードデバイス(LED、モーター、または電流を測定するコンポーネントなど)
- 電源(負荷に応じて5Vまたは12V)
- Arduino IDEがインストールされたコンピューター
方法1:電流センサーの使用
ACS712やINA219などの電流センサーは、電流に比例したアナログまたはデジタル出力を提供することにより、電流測定を簡素化します。
1。ACS712電流センサーの使用
ACS712センサーは、AC電流とDC電流の両方を測定し、それを流れる電流に比例したアナログ信号を出力します。
配線図
ACS712ピン | 繋がり |
---|---|
VCC | Arduino 5V |
GND | Arduino Gnd |
外 | Arduinoアナログピン(例えば、A0) |
IP+ | 正の負荷接続 |
ip- | 負の負荷接続 |
例コード
#define sensorPin A0
const float sensitivity = 0.185; // Sensitivity for ACS712-05B (mV per A)
const int zeroPoint = 512; // Zero current output in ADC counts
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
float voltage = (sensorValue / 1023.0) * 5.0; // Convert to voltage
float current = (voltage - (zeroPoint / 1023.0) * 5.0) / sensitivity; // Calculate current
Serial.print("Current: ");
Serial.print(current, 3);
Serial.println(" A");
delay(1000);
}
2。INA219電流センサーの使用
INA219は、I2Cを介してArduinoと通信する高精度の電流センサーであり、電流測定と電圧測定の両方を提供します。
配線図
INA219ピン | 繋がり |
---|---|
VCC | Arduino 5V |
GND | Arduino Gnd |
SDA | Arduino SDA(例えば、UNOのA4) |
SCL | Arduino SCL(例えば、UNOのA5) |
Vin+ | 正の負荷接続 |
ヴィン - | 負の負荷接続 |
例コード
インストールします Adafruit INA219ライブラリ Arduino Library Manager経由。
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
void setup() {
Serial.begin(9600);
if (!ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1);
}
}
void loop() {
float current_mA = ina219.getCurrent_mA();
Serial.print("Current: ");
Serial.print(current_mA);
Serial.println(" mA");
delay(1000);
}
方法2:シャント抵抗器の使用
シャント抵抗器は、負荷と直列に配置された低耐性抵抗です。シャント抵抗器全体の電圧降下を測定することにより、オームの法則を使用して電流を計算できます。
i = v / r
配線図
成分 | 繋がり |
---|---|
シャント抵抗器 | 負荷と直列 |
Arduinoアナログピン | シャント抵抗を横切って |
負荷 | 電源に接続されています |
例コード
#define shuntPin A0
const float shuntResistance = 0.1; // Resistance in ohms
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(shuntPin);
float voltage = (sensorValue / 1023.0) * 5.0; // Convert to voltage
float current = voltage / shuntResistance; // Calculate current
Serial.print("Current: ");
Serial.print(current, 3);
Serial.println(" A");
delay(1000);
}
正確な測定のためのベストプラクティス
- 適切なセンサーを選択してください: 予想される電流範囲に適した電流センサーまたはシャント抵抗器を選択します。
- セットアップを調整します: 正確な測定値を確保するために、特定のセンサーまたはシャント抵抗器のコードを調整します。
- ノイズを最小限に抑える: 短い厚いワイヤーを使用して、騒々しい環境を避けて測定エラーを減らします。
- 電力制限を監視する: センサーまたはシャント抵抗器が過熱せずに最大電流を処理できることを確認してください。
現在の測定のアプリケーション
- IoTデバイスでのバッテリー消費の監視
- モーターの電流の抽選の測定
- LEDおよびその他のコンポーネントをテストします
- 組み込みシステムの電力管理
トラブルシューティング
- 誤った測定値: センサーの配線とキャリブレーション値を再確認します。
- 出力なし: 負荷が接続され、電流が流れていることを確認してください。
- 変動値: センサーの電源にコンデンサを追加して、測定値を安定させます。
結論
Arduinoで電流を測定することは、電流センサーやシャント抵抗器などの適切なツールを使用する場合、簡単です。このガイドに従うことにより、サーキットの電流を正確に監視し、より良い電力管理とシステム診断を可能にします。さまざまなセンサーを試して、プロジェクトに最適なものを見つけましょう!