模数转换器

  • adc
  • ADC

ESP32 ADC 有几个通道?采样率和有效位数是多少?

  • ESP32 的 ADC 共有 18 个通道。
  • 在停⽌ Wi-Fi 的情况且使用 ADC DMA 的情况下,采样率理论不超过 2 MHz。但实际建议使用更小的采样率。
  • 在 Wi-Fi 正常⼯作的情况下,能达到每秒 1000 次。
  • ADC 内部有效位数为 12 位。

悬空 ADC 引脚,打印出 VDD3P3 的值为 65535,那么 VDD3P3 的电压就是 65535/1024 ≈ 63 V。这个电压值不符,是什么原因?

ADC 输入范围需要大于 0 V 小于 3.3 V(不同型号芯片上限不同),悬空测量为未定义状态。

ESP32 ADC 的输入电阻是多少?

ADC 是电容性的,可以认为电阻很大

使用 ESP32 的 ADC 来检测电源电压,是否需要进行分压?

ESP32 的 ADC 参考电压为 1100 mV,可以通过配置内部衰减来增大 ADC 量程,量程范围可参考芯片手册 ADC 章节 如量程无法满足需求,可使用外部分压电路。

ESP32 芯片 ADC DMA 模式最高支持多大的采样频率?

理论最高支持 2 MHz 的采样频率。

ESP32 是否支持 ADC2 与蓝牙同时使用?

支持。

ESP32-S2 芯片 ADC DMA 模式支持的采样率范围是多大?

频率限制:611 Hz ~ 83333 Hz。

ESP32 的 ADC 支持多通道同时采样吗?

ESP32 的 ADC 不支持多通道同时采样,若使用 ADC 多通道采样,需采取轮询采样的方式来实现。

ESP32 芯片的 ADC 之间的测量误差是多大?

默认情况下,ESP32 芯片 ADC 之间的测量差异是 ±6%,可参考 《ESP32 技术规格书》

ESP32 能同时用两个 ADC 通道来测量不同的数据吗?比如电流和电压?

使用一个 ADC 无法做到同一时刻读取多个 ADC 通道的值,可以依次轮询读取两个 ADC 通道的数据。

ESP32-S3 ADC 配置为 ADC_ATTEN_DB_12 时,为何测量电压无法达到标称 3100 mV?

ESP32-S3 ADC1 或 ADC2 配置为 ADC_ATTEN_DB_12 时,测量电压范围为 0 ~ 3100 mV,但部分芯片最大电压测量值小于 3100 mV,可使用以下两种方法来解决这个问题:

  • 方案 1:避开使用边界电压值,可通过外部分压电路将输入电压维持在中间电压值附近,以获得更高的精度和一致性。
  • 方案 2:使用软件 ADC 扩展量程方案 ,将最大测量电压扩展到 3300 mV。 该方案已经在 IDF v4.4.8 与 v5.3.1 中支持 ESP32-S2 与 ESP32-S3 芯片,可基于该方案在其他 IDF 版本上进行移植。

使用 ESP-IDF v5.1 基于 ESP32-S3-WROOM-1 模组测试 ADC2,当 GPIO12 输入 3.3 V 电压时,读出的电压为 5 V,为什么?

I (455346) EXAMPLE: ADC2 Channel[1] Raw Data: 4095
I (455346) EXAMPLE: ADC2 Channel[1] Cali Voltage: 4985 mV
I (456346) EXAMPLE: ADC2 Channel[1] Raw Data: 4095
I (456346) EXAMPLE: ADC2 Channel[1] Cali Voltage: 4985 mV

使用 ESP32,在 esp_wifi_start() 和 esp_wifi_stop() 之间读取 adc2_get_raw() 操作失败,是什么原因?

由于 Wi-Fi 也需要使用 ADC2, 且 Wi-Fi 具有更高的访问优先级。因此,在 Wi-Fi 工作期间,应用程序使用 adc2_get_raw() 可能读取失败,建议检测该函数的返回值, 失败后重新进行一次测量。

ESP32 如何使用 ADC 两点校准方案?

ESP32 芯片出厂默认使用参考电压进行 ADC 校准,如果希望提高 ADC 测量的一致性,您可以修改 eFuse 中的校准方案为两点校准方案,但 eFuse 的更改是不可逆的,请谨慎操作。同时,推荐使用软件 ADC 两点校准方案:adc_tp_calibration