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