[方案相关] 软件算法辅助降噪

[复制链接]
137|0
dd5yit 发表于 2025-10-31 23:18 | 显示全部楼层 |阅读模式
在 ADC 中断里加 “滑动平均滤波”:对连续 16 次采样值取平均,再传入 Clark 变换,代码片段如下:



#define ADC_SAMPLE_NUM 16
uint16_t adc_buf[ADC_SAMPLE_NUM] = {0};
uint8_t adc_cnt = 0;

void ADC_IRQHandler(void) {
    adc_buf[adc_cnt++] = ADC_GetValue(ADC_CH0);
    if (adc_cnt >= ADC_SAMPLE_NUM) {
        // 计算平均值
        uint32_t adc_avg = 0;
        for (uint8_t i=0; i<ADC_SAMPLE_NUM; i++) {
            adc_avg += adc_buf[i];
        }
        adc_avg /= ADC_SAMPLE_NUM;
        g_i_sample = Adc2Current(adc_avg); // 转换为电流值
        adc_cnt = 0;
    }
}

启用小华 MCU 的 “ADC oversampling” 功能(通过ADC_EnableOversampling函数),采样率提升 4 倍,有效降低量化噪声。​
电源噪声抑制:​
给 ADC 供电引脚(Vref)加 10uF 钽电容 + 0.1uF 陶瓷电容的组合滤波,远离开关电源输出端;​
若用开关电源给系统供电,在电源输入端加共模电感(如 ACM2012-900),减少电网噪声耦合到采样电路。​
我之前用 HC32F460 做吸尘器电机时,就是通过这套组合方案,把电流噪声从 200mA 峰峰值降到 30mA 以内,电机抖动完全消失,你可以按顺序逐步优化。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

72

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部