Arduinoで電流を測定する

こんにちは、こんばんは
今回はArduinoを使って電流を測定してみたいと思います。
 

用意するもの

・Arduino Uno
・ジャンパ線
・1~250Ω、1W以上の抵抗(ニクロム線でも可)
・適当な電気負荷(抵抗、モーター等)
・5V以上の外部電源(あったらよい)

理論

どうやって電流を電圧に変更するのかというと、中学校で習う理論を使います。
それは抵抗によって起きる電圧降下を利用します。
下の図を見てください。
図の抵抗ではRvarとRconstが存在します。
ここでいうRvarは通常の負荷と考えてください。電気負荷は電気の使用量によって変化するので、Rvarの抵抗値は変数(自由に変わる数)であり、未知数なので計算には使用できません。
また、Rconstは変更されることのない抵抗なので、定数(変わることのない数)であり値は変化しません。
よってオームの法則を使うことによって電流がわかります。
\begin{align} R=\frac{V}{I} \end{align}
そして回路を流れる電流はキルヒホッフの法則によりすべて同じです。
電流を計算するためにV0とV1の部分の差を取ります。
差をとる処理はオペアンプでも可能です。
また差をとって電流を調べるためには以下の式になります。
\begin{align} I[A]=\frac{V_0-V_1}{R_{const}} \end{align}
また電力を求めるには電圧を掛けるだけなので、V0を掛けてやると以下の式になります。
\begin{align} E[W]=V_0\times\frac{V_0-V_1}{R_{const}} \end{align}

回路図

Rconstの抵抗に、100Ω10Wのセラミック抵抗を使用していますが、流す電圧と相談してワット数と抵抗の大きさを決めてください。 \begin{align} E_R[W]=\frac{V_{in}^2}{R_{const}} \end{align}
Rvarは何らかの負荷を接続してください。また負荷が大きい場合(200mAを超える)はArduinoが壊れる可能性があるので、外部電源を使ってください。
Arduinoが図れる電圧は5Vまでなので5V以上を測りたかったらA0、A1ピンに分圧回路を作ってください。分圧回路を作ると分解能が低くなるので、電圧の読み取り精度が落ちます。正しい値が出なくなるかもしれないので注意してください。

プログラム

計算して、シリアルで出力するだけのプログラムです。
//マイコンボードのベース電圧を入力するArduinoだと5V、ESP32だと3.3V
#define BASE_VOL 5.0f
//ArduinoのADC(アナログデジタルコンバータ)は10bitなので1023を入れるESP32の場合は12bitなので4095入れる
#define ANALOG_LEVEL 1024.0f
//シャント抵抗はRconstの値を入れる
#define SHUNT_REGISTER 100.0f

void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
}

void loop() {
  int val1, val0;
  float vol0, vol1, amp, wat;
  
  val0 = analogRead(A0);
  val1 = analogRead(A1);
  
  vol0 = (val0/ANALOG_LEVEL)*BASE_VOL;
  vol1 = (val1/ANALOG_LEVEL)*BASE_VOL;
  
  amp = (vol0-vol1)/SHUNT_REGISTER;
  wat = vol0*amp;
  
  Serial.print("Val0:");
  Serial.println(val0);
  Serial.print("Val1:");
  Serial.println(val1);
  Serial.print("Vol0:");
  Serial.println(vol0);
  Serial.print("Vol1:");
  Serial.println(vol1);
  Serial.print("Amp:");
  Serial.println(amp);
  Serial.print("Watt:");
  Serial.println(wat);
  Serial.println("-----------");
}




 

コメント

このブログの人気の投稿

DockerのNextcloudでエラーが出た SQLSTATE[08006] [7]