《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 音樂頻率幅度彩燈指示器的設計與實現(xiàn)
音樂頻率幅度彩燈指示器的設計與實現(xiàn)
來源:微型機與應用2011年第24期
崔 鳴,尚 麗
(蘇州市職業(yè)大學 電子信息工程系,江蘇 蘇州215104)
摘要: 利用32位STM32F103 ARM和快速傅里葉變換(FFT)算法,實現(xiàn)了音樂頻率幅度彩燈指示器的設計,該彩燈指示器可以指示不同的頻率等級和音量等級。整個系統(tǒng)采用模塊化設計,電路功能實現(xiàn)較好,只要接入信號就能測量,無需過多的人為操作。測試結果驗證了FFT算法的準確性, 進一步證實了所設計的系統(tǒng)對音頻信號不同的頻段等級和音量等級具有較好的指示效果,具有較好的實用性。
Abstract:
Key words :

摘  要: 利用32位STM32F103 ARM和快速傅里葉變換(FFT)算法,實現(xiàn)了音樂頻率幅度彩燈指示器的設計,該彩燈指示器可以指示不同的頻率等級和音量等級。整個系統(tǒng)采用模塊化設計,電路功能實現(xiàn)較好,只要接入信號就能測量,無需過多的人為操作。測試結果驗證了FFT算法的準確性, 進一步證實了所設計的系統(tǒng)對音頻信號不同的頻段等級和音量等級具有較好的指示效果,具有較好的實用性。
關鍵詞: STM32F103單片機;FFT算法;音樂信號;幅度;頻率;LED燈

    本文主要討論了音樂頻率幅度彩燈指示器的設計與制作,設定音量等級為32級,頻率等級為15級,每一頻率等級下的音量等級又分為31級;以嵌入式單片機STM32F103作為主控制核心,以音樂信號自動增益、電壓抬高、真有效值測量、LCD顯示、按鍵等作為輔助硬件電路;采用快速傅里葉變換FFT(Fast Fourier Transform)理論對音樂信號進行詳細的頻域分析和處理。在此方案下完成音樂頻率幅度彩燈指示器的設計后,以信號發(fā)生器產生的標準正弦波、方波以及手機播放的任意MP3音樂(即音頻信號)作為輸入信號進行現(xiàn)場測試,實驗結果驗證了設計題目的全部基礎和提高要求,具有較好的音樂信號頻率等級和幅度等級指示效果。
1 理論分析和計算
1.1 快速傅里葉變換原理

    快速傅里葉變換(FFT)是1965年由J.W.庫利和T.W.圖基提出的[1-3]計算離散傅里葉變換(DFT)的一種快速算法,其實質是根據(jù)離散傅氏變換的奇、偶、虛、實等特性進行改進的一種DFT算法。計算有限長信號序列x(n)的離散傅里葉變換時,其正變換式如下所示:


2 系統(tǒng)硬件設計
2.1 總體設計

    所設計系統(tǒng)的總體原理圖如圖1所示。其中,ARM控制器采用ST公司生產的STM32F103芯片,內有2個12 bit的A/D轉換器、7個定時器、9個通信接口,最高工作頻率72 MHz,足以滿足設計需求;音頻信號的峰-峰值范圍為0~Vmax,Vmax的大小根據(jù)需要設定,頻率范圍為50 Hz~10 kHz。為了避免輸入信號過小和保證輸入信號的幅值為正,需要對其進行自動增益和抬高電壓預處理,預處理后的音頻信號的峰-峰值范圍約為0~3 V,然后經過A/D采樣,快速傅里葉(FFT)變換,得到不同的等級的頻率和音量,經過串口輸出;點陣電路大小為32×64,采用AT89S51單片機對其控制[4-6]。在LED陣列中,其中前15列表示15個頻率等級,第16列表示總音量等級;另采用一行16個LED燈,用其亮度指示每個頻段下音量的強弱。整體電路采用模塊化設計,簡單易懂,易于調試和實現(xiàn)系統(tǒng)要求。

2.2 主要單元電路
    采用STM32F103 ARM芯片,配置外部5 V的直流電源和晶振電路就可以構成單片機最小控制系統(tǒng)電路,限于篇幅,其最小系統(tǒng)電路圖忽略,文中主要介紹關鍵的硬件單元電路,即音頻信號預處理電路和電壓真有效測量電路,限于篇幅,僅介紹電路組成及功能,硬件單元電路圖忽略。
2.2.1 音頻信號預處理電路
    音頻信號預處理電路主要包含兩個部分:電壓自動增益電路、電壓抬高電路。由于輸入音頻信號的電壓范圍(峰-峰值)為0~5 V,當音頻信號電壓的峰-峰值比較小時,信號的幅值較小,受外界信號干擾大,容易引起測量不準,所以要采用放大電路。設計中選用OP2365組成三級增益可調的放大電路,電壓增益可調范圍分為四檔:10 mV~200 mV,70 mV~750 mV,200 mV~2 V和300 mV~5 V。當輸入音頻信號電壓值較小時,就選擇增益較大的一檔進行調節(jié);當輸入音頻信號電壓值較大時,就不需要再對信號放大。另外,音頻信號采樣時,要求輸入信號的電壓范圍不能有負值,并保證被轉換電壓的幅值范圍在STM32F103芯片自帶的A/D轉換器的處理范圍內,這就需要對輸入信號電壓負值進行抬高處理,保證信號電壓為正值。經過抬高處理后,正弦信號的負峰值點剛好和橫軸相交,抬高電壓值vtg=3.3 V。
2.2.2 真有效值電壓檢測電路
    交流電壓的真有效值是通過電路對輸入交流電壓進行“平方—求平均值—開平方”的運算而得到的。設計中采用AD736和OP07組成真有效值電壓檢測電路。AD736是經過激光修正的單片精密真有效值AC/DC轉換器,準確度較高、頻率特性較好。OP07芯片是一種低噪聲、非斬波穩(wěn)零的雙極性運算放大器集成電路,具有低失調、高開環(huán)增益的特性。實際測試中,該電路測量正弦波電壓的綜合誤差不超過±3%。假設輸入信號的峰值為vmax,則有效值,檢測出峰值后,按照比例進行放大。
3 系統(tǒng)軟件設計
      系統(tǒng)軟件采用模塊化設計,分為主程序和子程序兩大部分。主控制芯片采用STM32F103,由于處理器速度較快,所以采用C語言編程,方便簡單。子程序包括A/D采樣、周期性判斷、FFT變換、延時、LED驅動、LCD顯示等。系統(tǒng)程序流程圖如圖2所示,限于篇幅,文中僅介紹FFT變換子程序。系統(tǒng)通過模式選擇按鍵進入不同的功能。對頻率的指示采用兩種頻率等級計算方法:線性方法和對數(shù)方法。線性方法是在最低頻率點和最大頻率點之間進行15等分,得到各個頻率點及其對應的幅度,然后根據(jù)這些頻點計算出中心頻率點及其對應的幅度;對數(shù)方式是在最低頻率點和最大頻率點之間采用對數(shù)函數(shù)計算15個頻率等級點及其對應的幅度。同時,系統(tǒng)也采用了按鍵模式來控制各個頻段對應的音量強弱。系統(tǒng)輸入信號自動增益的檔位、按鍵模式、對各個頻點下的幅度及總的幅度會顯示在LCD液晶屏上。

4 測試方法與結果分析

 


    測試中,輸入信號經過音頻輸入預處理電路,系統(tǒng)處理的電壓在0~3.3 V范圍內。同時,在硬件系統(tǒng)測試之前,要驗證自編的FFT算法對信號處理的準確性。
    首先任意選擇一個WAV音頻信號進行自編FFT程序的測試。測試中借助了MATLAB軟件中自帶的FFT子程序,設定一個采用頻率,選取不同的采樣點128和1 024,應用MATLAB進行頻譜分析,觀察采樣點選擇不同信號對頻域分析的影響,得到的仿真結果如圖3所示。對其進行信號頻譜分析的結果與自編FFT程序在STM32F103單片機上運行的結果進行數(shù)據(jù)對比分析,測試數(shù)據(jù)誤差小于0.1%,頻譜圖形狀幾乎與MATLAB仿真波形一致,證實了自編FFT算法的正確性。

    結合仿真分析結果,對系統(tǒng)選定的采樣頻率為fs=23.81 kHz,采樣點數(shù)為1 024,又知輸入信號的最大頻率為10 kHz,則測定的采樣頻率fs>20 kHz,滿足香農采樣定理,故fs選定符合理論分析結果。在此采樣頻率下,最小采樣頻點為23.25 Hz,最大采樣頻點為10.74 kHz,分別采用線性方法和對數(shù)方法實現(xiàn)頻率分析和處理。
    然后采用方波和不同頻率的正弦波作為輸入信號,對FFT變換結果進行量化,根據(jù)能量定理,檢驗各頻率點對應的功率值;同時觀察最大幅值在數(shù)組的位置P,以及被測信號頻率f、采樣頻率fs、采樣點數(shù)N(測試中取N=1 024)之間的關系是否滿足公式f=(fs/N)×P。對系統(tǒng)運行得到的頻譜分析數(shù)據(jù)與采用MATLAB軟件進行FFT分析的結果進行對比,觀測到兩種方法在相同頻點處信號的幅度和功率數(shù)據(jù)變化不大,由此驗證了所設計的STM32F103單片機系統(tǒng)進行信號頻域分析的準確性。
    最后,任意選擇手機播放的男聲、女聲演唱的MP3歌曲作為輸入信號進行測試,觀測播放時15個頻率等級、每一個頻率等級下31個等級的音量強弱的LED指示情況以及32個總音量等級的LED指示情況,觀察音樂幅度、頻率的LED指示效果,根據(jù)運行情況進行程序調試,同時觀測LCD顯示的最大4個功率(即幅度值)所在的頻率點以及總功率并記錄數(shù)據(jù)。
    以正弦信號作為輸入信號的總功率測量和單個頻率分量測量得到的結果分別如表1和表2所示,測試結果表明測試數(shù)據(jù)和用電腦模擬的結果很接近。

    應用STM32F103 ARM最小控制系統(tǒng)和快速傅里葉變換(FFT)算法,并結合LED點陣技術,本文設計并實現(xiàn)了一個音樂頻率幅度彩燈指示器。系統(tǒng)的硬件電路采用模塊化設計,各模塊之間串口少,調試方便;音頻輸入信號預處理電路具有自動增益和電壓抬高功能,頻率等級分析方法分為線性均分和對數(shù)處理兩種,可以通過按鍵進行方法選擇,同時頻率等級的大小由LED燈的個數(shù)指示,且指示結果較準確;每一頻段的大小及該頻段下音量的強弱和所有頻段下的總音量強弱都能由LED燈的亮度變化進行指示。分別采用標準方波信號和正弦信號進行測試,同時借助MATLAB的FFT分析結果,驗證了自編FFT算法在STM32F103單片機系統(tǒng)中運行的準確性,然后應用任意音頻輸入信號進行測試,測試結果實現(xiàn)了比賽題目的基礎要求和提高要求,證實了所設計的音樂頻率幅度指示器具有較好的頻率等級和音量等級指示效果,而且整個系統(tǒng)的設計方案與實現(xiàn)都具有重要的理論研究意義和實用意義。
參考文獻
[1] 周圍,姚麗娜.基于FFT變換的快速信道估計算法[J].重慶郵電大學學報,2010,22(5):551-554.
[2] 鄧小平,張賢,譚書偉,等.基于FFT算法的音頻信號分析儀[EB/OL].(2011-03-15).[2011-06-05].http://www.paper.edu.cn.
[3] 王平,江華麗,鄭孔華,等.基于單片機的音頻信號分析儀的設計[J].現(xiàn)代電子技術,2009(19):122-124.
[4] 周杰英,陳曉帆,王濤,等.點陣LED多功能動態(tài)顯示實驗系統(tǒng)設計[J].實驗室研究與探索,2010,29(9):36-40.
[5] 張立科.單片機典型外圍器件及應用實例[M].北京:人民郵電出版社,2006.
[6] 吳國偉.嵌入式操作系統(tǒng)原理及應用開發(fā)[M].北京:北京航空航天大學出版社,2007.

此內容為AET網站原創(chuàng),未經授權禁止轉載。