原创 50hz直消大法

2022-5-7 12:35 5357 21 6 分类: MCU/ 嵌入式 文集: matlab

在生物电(心电ECG 脑电EEG 肌电EMG) 测量时需要将人体感应的50HZ工频交流信号去除。工频交流信号通常是以共模干扰的形式出现在信号中。使用高共模抑制的差分放大电路,可以抑制共模干扰。但由于电路无法做到绝对平衡。总会有50HZ工频干扰出现在信号中,工频干扰严重时,有可能会将信号淹没。模拟方法是使用双T形的带阻滤波器接在仪表放大器后级。在频率域滤除工频干扰。由阻容元件和运算放大器组成的带阻滤波器,频率准确度和稳定度不容易保证。另外群延时特性很糟糕。经滤波后的信号会严重失真。高速高精度的ADC引入,可以直接将仪表放大器的输出数字化。使用数字滤波器来滤除50HZ干扰信号。

使用一个sinc函数做测试,sinc函数是频谱特性为矩形的脉冲。测试信号覆盖了0~200hz频带。

混杂有50hz干扰的信号,引入干扰后,信号面目全非了。

使用的采样率需要为50的倍数。用于分析的数据长度为50hz的整数周期。

使用IIR制作的50hz陷波器,对加了50hz干扰的sinc信号滤波,发现确实可以限制50hz干扰,但经过滤波的信号波形失真很大。原因是陷波器非线性相位。

考虑到由三角函数线性叠加特性,经由不同路径进入系统的50HZ干扰,其结果仍然为50HZ干扰,只是幅值和相位会有变化。可以分析采集到的数据频谱,找出50hz对应的幅度和相位。还原出50hz干扰。将采到的信号与还原的50HZ干扰直接相减,可以得到滤除50hz干扰的信号。

实际使用时,仅需要求出50HZ对应的频谱。FFT的频谱分辨率为采样率与FFT点数之比(Fs/Len)。 0位置为信号直流成份,第50*len/Fs点即为50HZ的频率成份。由50hz频率成份可以重构出50hz干扰的幅度及相位。幅度值为频率成份取模/FFT点数*2,相角为频率成份相角的余弦函数。

Fs = 30000; % Sampling Frequency
  • Fnotch = 50; % Notch Frequency
  • BW = 1; % Bandwidth
  • Apass = 40; % Bandwidth Attenuation
  • [b, a] = iirnotch(Fnotch/(Fs/2), BW/(Fs/2), Apass);
  • Hd = dfilt.df1sos(b, a); %生成50hz 数字陷波器 带宽 1hz 阻带衰减 40db
  • len = Fs/10; % 数据长度 100mS
  • t = 1:len;
  • tt = -0.04:1/Fs:0.06-1/Fs;
  • x = 2*sin(2*pi*100*tt)./(2*pi*200*tt); %生成一个sinc函数作为测试信号
  • x(1201)=x(1200);
  • n = 1.0*cos(2*pi*50*t/Fs + pi/5); % 50hz noise
  • q = x + n ; % sinc 信号加上50hz 干扰
  • figure(1)
  • plot(t,x,'.g',t,q,'b')
  • legend('org','with noise');
  • %使用50hz notching 滤波
  • qn = filter(Hd,q);
  • figure(2)
  • plot(t,x,'r',t,qn)
  • legend('org','notch filted');
  • %使用直接消去法
  • fftq = fft(q,len) %求出信号频谱
  • p50 = abs(fftq(50*len/Fs+1))/len*2* … cos(2*pi*50*t/Fs+phase(fftq(50*len/Fs+1)));
  • %找出其中叠加的 50HZ 信号包括幅度和相位
  • figure(3)
  • plot(t,x,'r',t,q-p50)
  • legend('org','remove')
  • 复制代码

    这种方法取名为“50hz直消大法”吧。理论上“50hz直消大法”的幅频特性在50hz-∞,其它频率点为1。相频特性50hz处无法形容,其它频率为0。非常理想。


    作者: southcreek, 来源:面包板社区

    链接: https://mbb.eet-china.com/blog/uid-me-408807.html

    版权声明:本文为博主原创,未经本人允许,禁止转载!

    PARTNER CONTENT

    文章评论1条评论)

    登录后参与讨论

    zilong26_893896839 2022-5-25 08:53

    谢谢分享
    相关推荐阅读
    southcreek 2025-01-22 06:34
    设置可执行程序图标
    在本文的示例中,图标文件名称为“logo.ico”,该文件位于项目主目录下。2.2 设置标题栏图标通过下列函数设置标题栏图标:setWindowIcon(QIcon("://logo.ico"));1...
    southcreek 2024-12-04 16:32
    PWM输出隔离DAC设计
    这个设计的目标是产生一个隔离的DAC输出。12V供电,产生0~5V的输出。达到10000约13.3位的分辨率。要求DAC输出在改变设置后1S内能稳定。需要能长时间保持稳定和低噪声。能达到要求的DAC只...
    southcreek 2024-12-04 15:23
    一个基于HAL库的串口控制框架
    将串口接收配置为 DMA方式,DMA 使用 DMA_CIRCULAR 模式工作。串口接收的数据实际上构成循环队列。 定义一个结构Comm_typedef 结构体中包含指向接收到的第一字节位置chrc...
    southcreek 2024-07-08 11:38
    接地不良导致的故障分析
    这个电路的控制板需要连接显示板和识别板。5V 供电和串行控制连到显示板,显示板再连接到识别板。识别板上电位器使用一个LDO供电,将输入的5V转成3.3V。当电位器滑动时,输出电压在0~3.3V之间。...
    southcreek 2024-06-26 09:15
    【EMC整改】带辅助加热的滴速控制器辐射抗扰整改
    这个滴速式的输液泵使用一个红外线发射和接收装置,当有液滴通过时,会扰动检测信号,识别这个扰动检测到液滴滴下,获得滴壶中的液滴速度,调整阀门大小,实现输液速度控制。控制器还配备一根加热条,用于输液时对药...
    southcreek 2024-06-06 08:52
    QT 使用QSettings 操作ini文件配合表格操作
    这个项目可以演示 使用QSetting 读取或写入 ini文件。并使用tablewidget 显示。Ini文件的格式如下,这个文件可以事先编写。也可以在程序中生成。有一个大类,下面有一个小类使用等号设...
    我要评论
    1
    21
    关闭 站长推荐上一条 /3 下一条