« ESP8266WebServerが遅いわけ | トップページ | ESP8266のTOUTピンの入力電圧とADC値 »

2015年7月19日 (日)

ESP8266のTOUTピンの電圧をちゃんと測定する方法

ESP8266のTOUTピンの電圧をちゃんと測定する方法

ArduinoのESP8266 IED環境でanalogRead(A0)またはanalogRead(17)はTOUTピン解放時に3V3の電圧測定になるようです。
これは C:\Users\mtada\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\1.6.4-673-g8cd3697\cores\esp8266\core_esp8266_wiring_analog.c で readvdd33()の戻り値を>>2した値が返ります。

そこでいろいろ検索していると
http://qiita.com/azusa9/items/26e74e4e0d5773ce9c41
にsystem_adc_read()を呼び出す方法が書かれていました。

実際のTOUTピンの電圧と戻り値を確認すると 1/1000 すると電圧値になりました。

テスト スケッチは以下のようになります。

extern "C" {
#include "user_interface.h"
}

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
}

void loop() {
  // A0 の定義は17を確認
  Serial.println("A0: " + String(A0));

  // 17以外はいつも1023が返る
  int a = analogRead(0);
  Serial.println("analogRead(0): " + String(a));

  // TOUTピンをリード:4/1000倍すると3V3端子の電圧
  // TOUTピン解放のとき
  int b = analogRead(17);
  Serial.println("analogRead(17): " + String(b));
  float bv = (float)b * 4.0 / 1000.0;
  Serial.println("3V3: " + String(bv) + "V");

  int b2 = system_get_vdd33();
  Serial.println("system_get_vdd33(): " + String(b2));
  float bv2 = (float)b2 * 4.0 / 1000.0;

  //TOUTpinの読み出し(Cでincludeが必要)
  int c = system_adc_read();
  Serial.println("system_read_adc: " + String(c));
  float cv = (float)c / 1000.0;
  Serial.println("TOUTpin: " + String(cv) + "V");
  Serial.println("");
  Serial.println("");
  delay(1000);
}

TOUTピン解放での実行結果は以下の通り

A0: 17
analogRead(0): 1023
analogRead(17): 807
3V3: 3.23V
system_get_vdd33(): 65535
system_read_adc: 441
TOUTpin: 0.44V
VCC: 8.53V

TOUTピンが 0.258V のときの実行結果

A0: 17
analogRead(0): 1023
analogRead(17): 317
3V3: 1.27V
system_get_vdd33(): 65535
system_read_adc: 260
TOUTpin: 0.26V

解ったこと

  1. TOUTピン解放でanalogRead(17)は250で割ると3V3端子の電圧になる
  2. system_read_adc()を1000で割るとTOUTピンの電圧になる
  3. TOUTピンが解放でない場合は正しい3V3端子の電圧ではない
  4. user_interface.hに並んで定義してあるsystem_get_vdd33()は使えない

« ESP8266WebServerが遅いわけ | トップページ | ESP8266のTOUTピンの入力電圧とADC値 »

Arduino」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/569662/61903646

この記事へのトラックバック一覧です: ESP8266のTOUTピンの電圧をちゃんと測定する方法:

« ESP8266WebServerが遅いわけ | トップページ | ESP8266のTOUTピンの入力電圧とADC値 »