一、前言
昨天搭建的這款基于 STM32H7B0的信號采集和頻譜分析模塊,實現(xiàn)的 FFT 計算輸入信號的頻譜,將結(jié)果顯示在 OLED上面 。大家注意到,輸入信號為 信號源產(chǎn)生的正弦波。但是在計算的頻譜結(jié)果中,還存在這一些小的雜散頻譜。也就是在主峰的兩邊,分布著一些小的頻譜分量。它們并不是主要新頻率的諧波分量。這些頻譜分量哪兒來的?如何來消除它們呢?
二、問題分析
在單片機采集計算信號頻譜時,采集頻率為 10kHz,數(shù)據(jù)個數(shù)為 2048個。采集數(shù)據(jù)時間長度,只有 204.8ms。?這相當(dāng)于對原有信號乘以一個矩形窗口信號進行截取而得。??因此,截取信號的頻譜實際上是由信號頻譜與截取窗口信號頻譜卷積而得。正弦信號的確只有一個頻譜峰值。但是窗口信號對應(yīng)的頻譜這是一個采樣函數(shù),?將它們進行卷積,便會得到200ms信號的頻譜??梢钥吹剑念l譜在基頻兩邊,還分布有一些小的頻譜。
通過上面分析,這就清楚了對于一段 正弦信號,他的頻譜就不會是單個峰值,而是這種峰值兩邊帶有少量頻譜分量的形式。
那么如何來解決呢??一種方法,就是將原來的矩形數(shù)據(jù)窗口變成三角數(shù)據(jù)窗口,這樣,窗口的頻譜,就會衰減的很快。?主要表現(xiàn)形式,就是兩邊的波動比矩形窗口要小得多。只是主要頻譜變寬了。這是將采集到的正弦波信號施加了三角窗口。可以看到它的起始和結(jié)束都等于0,沒有了突變。計算出的頻譜果然在主峰兩邊的分量就變得非常小了。此外,也能夠看出,頻譜主峰似乎也變寬了。
▲ 圖1.2.1 三角加窗方法對應(yīng)的信號頻譜
為了進一步降低窗口影響,還可以采用升余弦數(shù)據(jù)窗口。它對應(yīng)的高頻分量更低,帶來對應(yīng)的主峰寬度更大一些。這是采用的升余弦窗口,整體上看起來與三角窗口類似。只是它更加平滑。計算出的信號頻譜,可以感覺到高頻分量更少。這是將輸入信號變成方波,可以清楚看到信號的基波分量以及它的奇數(shù)諧波分量。
▲ 圖1.2.1 升余弦窗口
※ 總??結(jié) ※
本文對單片機信號頻譜分析中,對于信號進行加窗進行的實驗。通過數(shù)據(jù)增加三角窗等方式,可以有效降低頻譜中雜散的高頻分量。
參考資料[1]
模擬信號的采集并顯示頻譜:STM32H7B0: https://zhuoqing.blog.csdn.net/article/details/136419754