【问题标题】:Non-Linearities ADC Reading on ESP32ESP32 上的非线性 ADC 读数
【发布时间】:2019-10-04 07:30:43
【问题描述】:

我在 ESP32 WROOM 中使用 ADC 引脚来确定它们的电压读数(GPIO34、GPIO35、GPIO36、GPIO39),但读数不准确,即非线性。

我所做的是:

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

  2. 我将这些数字放入 Excel 表格中,以便在以下列中绘制错误: ADC_READING_VOLTAGE |万用表_阅读 |错误(MULTIMETER_READING - ADC_READING_VOLTAGE)

  3. 然后我从误差图中得到一个趋势线方程,并将误差范围添加到 ADC_READING_VOLTAGE,这样我就可以实际得到读数的实际值 (MULTIMETER_READING)

voltage_reading = analogRead(adc_pin)/4095 *3.3V // to get the actual reading

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

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

【问题讨论】:

  • 你试过了吗:voltage_reading = (analogRead(adc_pin)*3.3V)/4095? ADC应该会好很多。
  • 根据你所做的这些假设,你能确认电源没有噪音,你的接线没有电容吗? +- 0.2V 在非实验室条件下似乎绰绰有余

标签: microcontroller adc esp32


【解决方案1】:

我通过在 excel 上绘制 3 个分段方程来解决问题,将误差幅度降低到 +-0.02V 左右(尽管区域 >3.1V 大约在 +-0.05V 左右)。

【讨论】:

  • 如果你们有其他解决方法,请告诉我如何简化它
  • 我不会在 x^3 上使用指数。您无法精确测量以计算出 x^4、x^5 和 x^6 前面的确切值。这些的每个值都趋向于接近 0。使用它们只是浪费 esp32 的资源。
【解决方案2】:

我需要你的头文件给你一个明确的解决方案。

我在使用WiFi.h 时也遇到了这个问题@ 这就是为什么当您将传感器连接到这些引脚时,返回的值为 4095,这是最高值,我通过将引脚更改为引脚 32、34、35、36 和 39 来解决这个问题。

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2022-08-13
    • 2014-09-07
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多