ESP32とADS1115で電圧計測
ソーラー蓄電システムでバッテリー電圧を計測したく、ESP32の標準ADCを使用するも変動が大きい為、専用のADCモジュール(ADS1115)を購入しました。
ADS1115とは
ADS1115はI2C通信でA0~A3の4つのアナログ入力ができるモジュールで、今回使用するライブラリではデフォルトでは±6.144Vの入力範囲で値としては-32768~+32768を計測します。
使用するもの・環境
ライブラリをインストール
Arduino IDEから「ツール」→「ライブラリを管理」→「ads」で検索し「Adafruit ADS1X15」をインストール。
ADS1115モジュールとの接続
ESP32 | ADS1115 |
5V | VDD |
GND | GND |
GPIO22 | SCL |
GPIO21 | SDA |
GND | ADDR |
ALRT(未接続) |
ESP32でADS1115を使用するサンプルプログラム
アナログ入力A0~A3までの入力値をシリアルに出力するコードです。
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads;
void setup(void)
{
Serial.begin(9600);
ads.begin();
}
void loop(void)
{
int16_t adc0, adc1, adc2, adc3;
adc0 = ads.readADC_SingleEnded(0);
adc1 = ads.readADC_SingleEnded(1);
adc2 = ads.readADC_SingleEnded(2);
adc3 = ads.readADC_SingleEnded(3);
Serial.print("AIN0: "); Serial.println(adc0);
Serial.print("AIN1: "); Serial.println(adc1);
Serial.print("AIN2: "); Serial.println(adc2);
Serial.print("AIN3: "); Serial.println(adc3);
Serial.println(" ");
delay(1000);
}
ディスカッション
コメント一覧
「±256mV~±6.144Vまでの入力に対応しています。値としては0~32766までの範囲で計測されます。」という記述が気になりました。
ADS1115のデータシートを見ると、入力は0~5.5Vとなっています。また、16ビット変換器なので変換される数値はもっと広範囲になるのではないでしょうか?
記載が誤っておりました。
ご指摘の通り、入力電圧としては0~5.5Vで
デフォルトの動作としては入力電圧が±6.144の範囲となっており、それを16bitで分解するため
±32768の範囲の値をとるとの意味でした。記載は修正しておきました。