STM32实现IIR工频陷波器

工频干扰是由电力系统引起的一种干扰,中国大陆地区由50hz及其谐波构成的一种干扰,幅值约为ECG(心电信号的50%)。工频干扰可以用陷波器进行处理,过滤50hz信号。常用的工频陷波器主要有IIR和FIR两种,其中FIR具有良好的线性相位,但是在同等滤波效果的情况下,IIR的阶数要比FIR少很多,一个两阶的IIR滤波器的效果FIR要付出100多阶的代价,阶数大意味着运算量大,对于一个MCU单片机来说这是得不偿失的,所以采用IIR滤波器来实现工频滤波。IR滤波器的设计方法有脉冲响应不变法和双线性变换法,如果你已经熟悉IIR滤波器的设计原理可以直接借用Matlab的Fdatool滤波器设计工具直接生成相关系数,这样省去了中间设计环节,再通过IIR滤波器的直接II型实现方式翻译成C语言格式并应用于STM32平台(重要:fs为采样频率,Fnotch为陷波频率)


按Designer键即可生成IIR滤波系数


导出滤波系数得到转移函数


这样再通过直接II型实现框图,翻译成C语言代码并烧录到主控MCU中运行


 x0=ADC_ConvertedValueLocal;  //输入ADC采集到的信号  

    w0[0]=IIR_50Notch_A[0]*x0-IIR_50Notch_A[1]*w0[1]-IIR_50Notch_A[2]*w0[2];

     y0=IIR_50Notch_B[0]*w0[0]+IIR_50Notch_B[1]*w0[1]+IIR_50Notch_B[2]*w0[2];

    w0[2]=w0[1];

    w0[1]=w0[0];

前提是你的输入信号的时域采样率要和滤波器的频域采样率要保持一致,这样就涉及定时器触发ADC采样,用STM32的定时器来配置采样率.


  • 9
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值