![]() |
發布時間: 2025-7-15 08:13
正文摘要:最近做一款微波產品,發現微波感應信號會受到工頻信號的干擾,頻率大致是50Hz 硬件上已經做了很多努力,沒辦法解決,現在只能從軟件濾波角度入手 以下分別是受干擾的采樣信號和正常的采樣信號 不能作限幅濾波處理 ... |
對不起,你的標題和內容有點不一致,所以大家的答案沒法讓你滿意。 在高頻里有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布線有問題引入了工頻。 |