LoginSignup
18
9

More than 3 years have passed since last update.

ESP-32でアナログ入力を使うときの注意点

Last updated at Posted at 2019-12-12

前書き

僕「ESP32って、Wi-FiとBLEがついててスペックもそこそこいいし、Arduinoの環境でコード書けるし、1500円とお買い得!買ってみますか」ポチ
---ESP到着--
僕「アナログピンにマイク繋いでみますか...」
シリアルモニター君「A/D変換値は1800だよ」
僕「ん?分解能は12bitだから中心電圧のA/D変換値は4096/2=2048前後になるはずなのに、あれ..?」
僕「線形じゃないのかな?電源装置繋げて調べてみるか..」

ESP32のアナログ入力

ESP-32のADCは12bitでの最大値は3.6Vを示しているようです。by スイッチサイエンス
前書きに書いたように誤差が大きいようです。

実施に電源装置で測定した結果が以下の通りです。

電圧 A/D変換値
0 0
0.1 3
0.2 83
1.0 1093
1.6 1842
2.0 2337
2.9 3597
3.1 4031
3.3 4095

(実際には0.1V刻みで33点取っています。)

グラフで描画すると

スクリーンショット 2019-12-12 11.35.30.png

0.1V~3.0Vまでなら直線的な近似ができそうだなと思い最小二乗法でフィッティングすると

スクリーンショット 2019-12-12 11.42.16.png

$$y=1260x-161$$
となり決定係数も0.994と使えそうな値が出ました。
他のピンでも同様の実験を行なった結果、同じような値が出ました。

↓HTMLで最小二乗法を行うプログラムを書いたので、もしよかったら使ってください↓
https://github.com/klme/fitting

総評

時間をあけて行なってもほぼほぼ同じ結果がでました。
しかし、違う個体だと差が出ました。
ESP-32ではアナログリードを使うときは、まずこの特性実験をして傾きと切片をもとめることが大事ですね。

*ESP-32では、アナログ入力とWi-Fiと並行して使うことはできないみたいですね。注意しましょう!

参考

スイッチサイエンスさん--ESP-WROOM-32に関するTIPS
https://trac.switch-science.com/wiki/esp32_tips
公式スレッドにて
https://esp32.com/viewtopic.php?f=12&t=1045
議論1
https://github.com/espressif/arduino-esp32/issues/92
議論2
https://github.com/espressif/esp-idf/issues/164

18
9
1

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
18
9