ESP32上的非线性ADC读数

时间:2019-05-17 01:21:09

标签: microcontroller adc esp32

我正在使用ESP32 WROOM中的ADC引脚确定从它们读取的电压(GPIO34,GPIO35,GPIO36,GPIO39),但读数又不是非线性的。

我所做的是:

  1. 我用万用表获取实际读数,并通过改变电位器引脚上的电压(根据ADC读数从0.1V-> 3.3V),使用电位计与ESP32在这些引脚上的读数进行比较< / p>

  2. 我将这些数字放入Excel工作表中,以在以下各列中绘制错误: ADC_READING_VOLTAGE | MULTIMETER_READING |错误(MULTIMETER_READING-ADC_READING_VOLTAGE)

  3. 然后我从误差图中获得一个趋势线方程,并将误差裕度添加到ADC_READING_VOLTAGE中,以便实际上可以得到读数的真实值(MULTIMETER_READING)

'''arduino

voltage_reading = AnalogRead(adc_pin)/ 4095 * 3.3V //获取实际读数

'''

虽然我尝试过的方法给出了更好的结果,但是仍然不够好(读数仍偏离+-0.2V)

以前有人处理过吗?欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

我需要您的头文件才能为您提供清晰的解决方案。

当我使用WiFi.h时,在没有WiFi.h的情况下一切正常,由于某些原因,ESP32模拟引脚(13,12,14,4 ..)处于高电平,我也遇到了这个问题在使用WiFi.h时,这就是为什么将传感器连接到这些引脚时返回的值为4095,这是最高值,我通过将引脚更改为引脚32、34、35、36和39来解决了这个问题。 >

答案 1 :(得分:0)

我通过绘制3个分段方程来解决这个问题,以解决excel上的问题,adc_plot_non_linearities_fix降低了+ -0.02V左右的误差裕度

(尽管区域在+ -0.05V附近> 3.1V)