MCU专家 发表于 2025-6-8 08:59:36

ADC采样值跳变的7种修复方案

根本原因排查表:
现象大概率原因检测工具
周期性波动开关电源纹波示波器FFT功能
随机跳变参考电压不稳定高精度万用表
温度相关性信号源阻抗过高阻抗分析仪

硬件改造方案:图表

代码










下载








ADC输入

10K电阻

0.1μF电容接地

运放电压跟随器



软件滤波代码:c


复制


下载





#define MEDIAN_FILTER_SIZE 7uint16_t adc_median_filter(void) {    static uint16_t samples[MEDIAN_FILTER_SIZE;    // 循环采样    for(int i=0; i<MEDIAN_FILTER_SIZE-1; i++){      samples[i = samples[i+1;    }    samples[MEDIAN_FILTER_SIZE-1 = HAL_ADC_GetValue(&hadc);      // 中值计算    uint16_t temp[MEDIAN_FILTER_SIZE;    memcpy(temp, samples, sizeof(temp));    qsort(temp, MEDIAN_FILTER_SIZE, sizeof(uint16_t), compare_uint16);    return temp[MEDIAN_FILTER_SIZE/2;}




页: [1]
查看完整版本: ADC采样值跳变的7种修复方案