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

0
回复
180
查看
[ 复制链接 ]

45

主题

7

回帖

185

积分

注册会员

积分
185
2025-6-8 08:59:36 显示全部楼层 阅读模式
根本原因排查表:
现象
大概率原因
检测工具

周期性波动开关电源纹波示波器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;}




收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则