16
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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に信号が入力されると、電源電圧の測定値にぶれが出ると思われます(未検証)

参考情報

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
16
Help us understand the problem. What are the problem?