ESP32 使用 ADC 连续采样时,如何消除 Wi-Fi 射频干扰导致的周期性噪声?

· 2 浏览

回答(4)

如果允许,改用外部ADC芯片(如ADS1115)通过I2C读取,彻底隔离射频干扰,代价是采样率降低,适合慢速传感器。
模拟电路控 · 2026-08-27
试试用esp_timer创建定时器,在Wi-Fi空闲窗口(如DTIM间隔后)触发采样,配合队列缓存,能避开大部分射频脉冲。
无线小能手 · 2026-08-27
检查电源纹波,Wi-Fi发射时电流尖峰可达300mA,建议在3.3V入口加磁珠+220μF电解电容,并让ADC参考电压独立于数字电源。
电源老张 · 2026-08-27
周期性噪声通常源于Wi-Fi的Beacon帧(每100ms左右)或数据突发,其频谱集中在2.4GHz附近,但会通过电源和地平面耦合进ADC。实操建议:1)硬件上,在ADC引脚串联RC低通滤波器(如1kΩ+100nF,截止频率约1.6kHz),并确保Vref去耦电容(10μF+100nF)紧贴芯片;2)软件上,采用过采样+均值,例如连续采样64次取平均,可显著抑制随机噪声,但需注意采样率与Wi-Fi活动同步,可读取esp_wifi_get_ant_gpio()或使用Wi-Fi事件回调(WIFI_EVENT_STA_START)来避开Beacon时段;3)若噪声仍明显,改用ADC2(ESP32的ADC2与Wi-Fi互斥,但可配置为单次模式),或使用DMA连续采样并做数字滤波(如移动平均或IIR低通)。建议先用示波器确认噪声频率,再针对性调整滤波参数。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

📊 ADC 转换