标题: 从软件滤波的角度,有没有什么办法能将干扰的工频信号滤除? [打印本页]

作者: ziqidong    时间: 2025-7-15 08:13
标题: 从软件滤波的角度,有没有什么办法能将干扰的工频信号滤除?
最近做一款微波产品,发现微波感应信号会受到工频信号的干扰,频率大致是50Hz
硬件上已经做了很多努力,没办法解决,现在只能从软件滤波角度入手
以下分别是受干扰的采样信号和正常的采样信号
不能作限幅滤波处理,因为微波响应的依据是前后两次采样数据的差值,差值达到某一基准视为探测到移动信号

MAP004.jpg (378 KB, 下载次数: 0)

受干扰信号

受干扰信号

MAP005.jpg (378 KB, 下载次数: 0)

正常信号

正常信号

作者: rundstedt    时间: 2025-7-15 11:04
你都微波了,随便放一个pF级别的耦合电容就把工频信号滤掉了,pF级电容对于微波来说就是阳关道,对于工频就是不可逾越的喜马拉雅山。你的现象明显是检波后处理电路PCB布线有问题引入了工频。
作者: coody_sz    时间: 2025-7-15 11:06
滤波,是将频率(频谱)不同的干扰滤除,你同频干扰,是没有办法用滤波器滤除的。
作者: rundstedt    时间: 2025-7-15 13:46
coody_sz 发表于 2025-7-15 11:06
滤波,是将频率(频谱)不同的干扰滤除,你同频干扰,是没有办法用滤波器滤除的。

你看他的图X轴是20ms/div,显然丈育把“工频”写成“共频”了。
作者: ziqidong    时间: 2025-7-15 16:27
rundstedt 发表于 2025-7-15 13:46
你看他的图X轴是20ms/div,显然丈育把“工频”写成“共频”了。

我是文盲谢谢回复
作者: glinfei    时间: 2025-7-16 08:48
条件是什么呢,如果已经取到数据,在电脑上处理,那有点简单用MATLAB之类搞个带阻滤波器不难。如果单板机上,最好用楼上沙发的方法,否则用FFT 剔除50Hz点的值,再IFFT回来,这个效果不好说。
作者: coody_sz    时间: 2025-7-16 10:42
rundstedt 发表于 2025-7-15 13:46
你看他的图X轴是20ms/div,显然丈育把“工频”写成“共频”了。

那就是楼主的问题,误导我,让我得出错误的结论。
作者: weisc6955    时间: 2025-7-17 19:31
好歹搞个高频环节,比如高频变压器,工频就过不去了。或者把系统阻抗降下来,比如50欧也可以解决。
作者: yuyechenai    时间: 2025-7-18 09:18
建立数据队列可能好用  只要数据队列够长应该会稳定
/////////////建立数据队列 计数平均值///////////////
/*!
        说明:建立数据队列 计数平均值; 建立全局数据求和 先减去数据 在加数据在求平均数
             target:结构体定义对象
            data:新的数据
*/
void DataFlowRecordFast(SAD_DataFlow* target ,u16 data)//记录数据
{
        u8 i ;               
        i = 0x7f & target->Sign;
        target -> SumDataADC = (target -> SumDataADC)  - (target -> DataFlow [i]) ;       
        target -> DataFlow [i] = data;
        target -> Sign++;                i++;
        if(i >= ADDE_DataFlow)         {target->Sign = 0x80;}                // 数据等0x80,表示数据填充1周,当数据有效;
        target -> SumDataADC = (target -> SumDataADC) +  data;
  target->DataADC = target -> SumDataADC / ADDE_DataFlow;
}

////#define ADDE_DataFlow  15                   
////typedef struct
////{
////        u8 Sign;                                                                                         // 数据记录标号  Sign 高位为数据有效标记位,为1 数据已经填充一周。
////        u16 DataFlow[ADDE_DataFlow];  // 记录相关数据
////        u32 SumDataADC;                                                          // 当前数据相加后的结果
////        u16 DataADC;                                                                  // 数据有效值
////} SAD_DataFlow ;                                                                 // 记录AD数据转换结果




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1