|
|
对不起,你的标题和内容有点不一致,所以大家的答案没法让你满意。 在高频里有50Hz的载波,对于你的系统是正常的,没法“过滤”, 你只能提高你供电部分整流后的滤波电容和整流部分的滤波电感,并增加共轭电感,以隔离高频和工频的耦合。 |
| 微波的频率范围是300MHz至300GHz,对于工频50Hz干扰,应该是几乎没有影响的,除非这个干扰的能量非常高,那也有皮法电容就轻易滤掉了啊 |
|
最好连个方案同时做: 1.采样速率为100Hz的完全整数倍,且基本同步。 2.采用卡尔曼滤波。 |
人中狼 发表于 2025-7-20 22:14 有可能是楼主对什么叫微波信号进行了错误的理解。 |
| 楼主这个不像微波信号吧,看正常信号波形,频率低于50HZ了 |
|
建立数据队列可能好用 只要数据队列够长应该会稳定 /////////////建立数据队列 计数平均值/////////////// /*! 说明:建立数据队列 计数平均值; 建立全局数据求和 先减去数据 在加数据在求平均数 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数据转换结果 |
| 好歹搞个高频环节,比如高频变压器,工频就过不去了。或者把系统阻抗降下来,比如50欧也可以解决。 |
rundstedt 发表于 2025-7-15 13:46 那就是楼主的问题,误导我,让我得出错误的结论。 |
| 条件是什么呢,如果已经取到数据,在电脑上处理,那有点简单用MATLAB之类搞个带阻滤波器不难。如果单板机上,最好用楼上沙发的方法,否则用FFT 剔除50Hz点的值,再IFFT回来,这个效果不好说。 |
rundstedt 发表于 2025-7-15 13:46 我是文盲 谢谢回复 |
coody_sz 发表于 2025-7-15 11:06 你看他的图X轴是20ms/div,显然丈育把“工频”写成“共频”了。 |
| 滤波,是将频率(频谱)不同的干扰滤除,你同频干扰,是没有办法用滤波器滤除的。 |
| 你都微波了,随便放一个pF级别的耦合电容就把工频信号滤掉了,pF级电容对于微波来说就是阳关道,对于工频就是不可逾越的喜马拉雅山。你的现象明显是检波后处理电路PCB布线有问题引入了工频。 |