ESP Easyを導入したWeMos D1 miniの内蔵ADCによる電圧測定

公開 | 更新 

多くのESP8266搭載ボードに用意されている内蔵 ADC を使った 電圧測定 を、 WeMos D1 mini (互換品)に ESP Easy を焼いて試してみました。

WeMos D1 mini (の互換品)

以前、非接触温度計の製作した時、簡単なプログラムを書いて使って以来のWeMos D1 miniです。

当時何個か買った残りを開けてみると、本体と様々なピンヘッダがセットになっていました。

図01.WeMos D1 mini パッケージ

図01.WeMos D1 mini パッケージ

連結可能な2.54mmピンソケットは、D1 mini向けに展開されている各種シールドを繋ぐためのもの。

あらためて基板本体を確認してみると、メタルケースに収まったESP8266MODを搭載していることから、比較的古いV2モデルの相当品ということが分かります。

図02.WeMos D1 mini 基板表裏

図02.WeMos D1 mini 基板表裏

現行モデルはブランド名すら変わりLOLIN D1 mini V4と呼ばれ、ESP8266がむき出しになるなど実装レイアウトもだいぶ変わりはしましたが、ピンアウトの互換性は維持されています。

 

内蔵ADCとその分圧

ESP8266にはADC端子が1つあるものの、ここへ入れて良いのは最大1Vまで。WeMos D1 miniは回路図によると下図のように、220kΩと100kΩに分圧することで、 A0 端子で3.3Vまで計測することができます。この仕様はESP-12E(関連記事はこちら)も全く同じなものの、ESP-01S(関連記事はこちら)にはこの A0 端子はオミットされています。

図03.ADC機能部分の回路図抜粋

図03.ADC機能部分の回路図抜粋

実際には、A0端子付近に分圧抵抗R1、R2が載っていました。

図04.基板上のADC分圧抵抗

図04.基板上のADC分圧抵抗

 

もう少し高い電圧まで計測可能したい場合、分圧抵抗をどのように設計すればよいか、さらにはESP Easyでの応用例まで、こちらの記事が大変参考になりました(Great Works!!)。

記事中のFormula for calculationより、例えばUSBの電圧(少しマージンを取って最大5.2V)を測定したいような場合、分圧抵抗R1は次のように算出されます。

WeMos D1 miniの基板上には既に220kΩのR1が実装済みなので、A0端子の先に残る200kΩ分の抵抗を直列に追加すれば良いことが分かりました(下図例では 3V3 端子を計測)。

図05.200k分の抵抗を直列追加

図05.200k分の抵抗を直列追加

ESP Easyの導入

WeMos D1 miniも、これまで何度か使ったことのあるESP-12E(関連記事はこちら)と、同じ仕様のESP Easyファームウェアが使えます。

ところが、普段よく使う ...4M1MVCC.bin と言うVccが計測可能なファームウェアでは、その計測に唯一の内蔵ADCが使われている為、A0端子を用いた計測を利用しようとすると注意書きを受けてしまうほか、その現在値もVccのものしか表示されません。

図06.Vcc付ファームではADC使用済

図06.Vcc付ファームではADC使用済

あらためてVcc計測を含まない通常の ...4M1M.bin ファームウェアファイルを焼き直すと、先ほどの警告文言は無くなりました。

図07.内蔵ADCデバイス設定初期状態

図07.内蔵ADCデバイス設定初期状態

内蔵ADCの設定

分圧抵抗を算出する際に参考にした記事に記載されている、ESP Easyでの設定方法を元に、まずはキャリブレーションなどを以下のように設定します。

ThingSpeakへデータを送信する場合は、 Send to Controller へチェックを入れると共に、インデックス値IDXをデフォルトの から 1 などへ変更します。

図08.内蔵ADCデバイス設定カスタマイズ

図08.内蔵ADCデバイス設定カスタマイズ

ThingSpeakへデータを送るチャンネルの設定は、このように設定してあります。

図09.ThingSpeakへの送信設定

図09.ThingSpeakへの送信設定

内蔵ADCの校正

内蔵ADCデバイス設定を確定させると、二点校正がグラフ化され、実際に計測も始まります。下図では、 A0 端子に 3V3 端子の3.3Vを当てているにもかかわらず、換算値は遥かに低い状態。

図10.二点校正修正前

図10.二点校正修正前

そこで、比較的容易に得られる2つの電圧、USB 5VとVcc 3.3Vを A0 端子に当て、デジタルマルチメータで測った電圧値と、ADCのRaw値のペアを2つ得て、この二点で再校正しました。

図11.二点校正修正後

図11.二点校正修正後

簡易的ですが今回の校正はここまで。いずれ、基準電圧電源を作って精度を上げたいと思います。

図12.内蔵ADCデバイスの計測開始

図12.内蔵ADCデバイスの計測開始

モバイルバッテリのUSB 5Vを継続的に測ってみましたが、ブレッドボードに配線しているせいか、バラツキが大きく出てしまいました。

図13.ThingSpeakで計測値をグラフ化

図13.ThingSpeakで計測値をグラフ化

次回は、I2C接続のADコンバータを使った複数チャンネルの電圧計測を試してみたいと思います。

 

created by Rinker
¥1,299 (2024/04/28 09:32:39時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA