我正在使用ESP32 WROOM中的ADC引脚确定从它们读取的电压(GPIO34,GPIO35,GPIO36,GPIO39),但读数又不是非线性的。
我所做的是:
我用万用表获取实际读数,并通过改变电位器引脚上的电压(根据ADC读数从0.1V-> 3.3V),使用电位计与ESP32在这些引脚上的读数进行比较< / p>
我将这些数字放入Excel工作表中,以在以下各列中绘制错误: ADC_READING_VOLTAGE | MULTIMETER_READING |错误(MULTIMETER_READING-ADC_READING_VOLTAGE)
然后我从误差图中获得一个趋势线方程,并将误差裕度添加到ADC_READING_VOLTAGE中,以便实际上可以得到读数的真实值(MULTIMETER_READING)
'''arduino
voltage_reading = AnalogRead(adc_pin)/ 4095 * 3.3V //获取实际读数
'''
虽然我尝试过的方法给出了更好的结果,但是仍然不够好(读数仍偏离+-0.2V)
以前有人处理过吗?欢迎任何建议。
答案 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)