【Arduino】ArduinoでINA219を使って電圧を測定する

どうも、エピックです。

この記事ではArduinoでINA219を使って電圧を測定する方法について紹介します。

目次

大まかな手順を確認する

今回の次の手順で実施しました。

  1. 部品を調達する
  2. ライブラリを導入する
  3. 組み立てる
  4. コードを書く
  5. 動作確認

順番に解説していきます。

部品を調達する

今回は次の部品を準備しました。

  • Arduino Uno R3
  • ブレッドボード
  • ジャンパワイヤ 複数
  • LED 赤
  • 0.96 inch OLED(I2C)

少し割高ではありますが、Arduinoの周りはこちらのスターターセットで全て揃います。

created by Rinker
スイッチサイエンス

電圧を測るセンサーは、INA219ということでこちらを購入しました。

ピンがはんだされていない状態で届いたので、超久々にはんだ付けしました。

多分中学生以来ですね。懐かしい。

下手くそ(笑)ですが、動作は問題なかったのでOKとします。

ライブラリを導入する

コードを書いていく前にまずは Arduino IDE で使う追加のライブラリをインストールします。

インストールするライブラリは次の1つ。

  • Adafruit_IN219

ライブラリのインストールは上部のメニューから、もしくは左のメニューから行うことができます。

左のメニューから行う場合

検索をすると色々な関連したライブラリが表示されますのでインストールする際はしっかり確認してください。

Adafruit_IN219_Library

組み立てる

部品を組み立てていきます。

電流・電圧はINA219のVin+、Vin-ピンを使って、測定する回路に直列で繋ぐことで測定できます。

この構成だと、Aruduino から送られる 3.3V の回路を計測できます。

また、今回は電流を小さくして精度を高めるため、抵抗を設置。

さらにLEDも追加しています。

組み上げた状態はこんな感じです。

Arduinoのコードを書く

Arduino IDE を使ってプログラムしていきます。

まだインストールしていないという方はこちらからソフトウェアダウンロードできます。

Arduino IDE

ほぼライブラリに付属するサンプルコードそのままですが次のよう書いていきます。

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;

void setup(void) 
{
  Serial.begin(9600);

  if (! ina219.begin()) {
    Serial.println("INA219が見つかりません");
    while (1) { delay(10); }
  }
 // 計測できる範囲を狭め精度を向上
  ina219.setCalibration_16V_400mA();
}

void loop(void) 
{
  float shuntvoltage = 0;
  float busvoltage = 0;
  float current_mA = 0;
  float loadvoltage = 0;
  float power_mW = 0;

  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  power_mW = ina219.getPower_mW();
  loadvoltage = busvoltage + (shuntvoltage / 1000);
  
  Serial.print("Bus Voltage:   "); Serial.print(busvoltage); Serial.println(" V");
  Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
  Serial.print("Load Voltage:  "); Serial.print(loadvoltage); Serial.println(" V");
  Serial.print("Current:       "); Serial.print(current_mA); Serial.println(" mA");
  Serial.print("Power:         "); Serial.print(power_mW); Serial.println(" mW");
  Serial.println("");

  delay(2000);
}

実行すると次のようにコンソール上にデータが表示されると思います。

電圧についてはほぼその通りに計測できていそうです。

電流については(LEDにも抵抗がついているためか)0.1mAほど低くでていますね。

また、コード上でいくつか既存の関数を使っていますがその詳細はこちらのサイトに記載されていますので参考に。

GitHub Adafruit_INA219

最後に

今回はArduinoでINA219を使って電圧を測定する方法について書いてみました。もしわからないこと等あればコメントにていただけれればと思います。

今回も最後までお読みいただきありがとうございました。

では。

目次