15
16

More than 5 years have passed since last update.

ESP8266+Arduinoの電源電圧(VCC)の測定方法

Last updated at Posted at 2016-05-14

ESP8266を電池駆動すると電池の状態がモニタしたくなる。

ESP8266はADCとしてTOUTが一つだけついている。TOUTの入力を無効にすれば、電源電圧(3V3)端子に入ってくる電源電圧が測定できる仕組みがある。これを使用して電池運用中の電池の状態を監視ができる。

どうやるの?

  1. 電圧測定モードを電源電圧測定モードにする。 以下のコードはコードブロックの中に書いてもエラーになるので注意。(サンプルコード参照)
  ADC_MODE(ADC_VCC);
  1. 測定したいところで、ESP.getVCC()を呼び出す。
   int v3 = ESP.getVcc();

値の単位はmVであり、3.3Vであれば3300が返されます。

サンプルコード

#include <ESP8266WiFi.h>

// 電源電圧を測定するためにADCを使うことを宣言
// 本マクロは、コードブロック中に宣言できない点注意
// 本マクロ宣言後、analogRead(A0)は常に1024を返します。
ADC_MODE(ADC_VCC);

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

void loop() {

  // 電源電圧を取得します。
  int v3 = ESP.getVcc();

  Serial.println( ":>>"+String(v3));
  delay(1000);                      // Wait for a second
}

注意点

電源電圧測定は、TOUTのADC機能と排他で設定されているため、この機能を使う場合にはTOUTのADC(0-1V)のanalogRead()は使用できず、常に1024が返されます。かつ、TOUTに信号が入力されると、電源電圧の測定値にぶれが出ると思われます(未検証)

参考情報

15
16
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16