<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機的音頻信號分析儀的設(shè)計

          基于單片機的音頻信號分析儀的設(shè)計

          作者: 時間:2009-11-10 來源:網(wǎng)絡(luò) 收藏

          2.2 周期判定
          的頻率分量不但多,而且不具周期性。測量周期可以在時域也可以在頻域,但是由于頻域測量周期性時要求某些頻率點具有由規(guī)律的零點或接近零點出現(xiàn),所以對于較為復雜的、頻率分量較多且功率分布較均勻且低的就無法正確地分析其周期性。因此,對于的周期性判定,應(yīng)該在對信號進行FFT變換之前,直接調(diào)用周期判斷函數(shù)。周期性判定子程序流程圖如圖5所示。

          本文引用地址:http://www.ex-cimer.com/article/173569.htm

          2.3 FFT變換
          由于直接傅里葉變換的計算量與子樣本點數(shù)N的平方成正比,在N較大時,計算量太大,不適合在資源有限的嵌入式系統(tǒng)中實現(xiàn)。所以最常用基2 FFT算法,其主要思想是將N點直接傅里葉變換分解成多個較短的直接傅里葉變換,再利用旋轉(zhuǎn)因子的周期性、對稱性,在很大程度上節(jié)省了系統(tǒng)資源。
          MPLAB C30 C編譯器內(nèi)部提供了幾乎全部的數(shù)字信號處理軟件工具,通過DSPIC30F系列微處理器,只需調(diào)用Microchip公司提供的庫函數(shù),即可方便的實現(xiàn)數(shù)字信號處理。對于基2 FFT變換來說,其軟件流程圖如圖6所示。

          2.4 特征值提取
          對頻域分析起決定作用的量包括采樣頻率、采樣點數(shù)。通過FFT變換,得到離散化的幅度譜X(k),先將離散化的幅度值平方,再除于子樣本點數(shù)N,就可得到該頻率點對應(yīng)的功率值(功率=X(k)*X(k)/N)。


          3 結(jié) 語
          系統(tǒng)的主要性能指標為:輸入阻抗50 Ω;輸入信號電壓范圍(峰-峰值)100 mV~5 V;輸入信號包含的頻率成分范圍為200 Hz~10 kHz;頻率分辨力為100Hz(可正確測量被測信號中,頻差不小于100 Hz的頻率分量的功率值);輸入信號的總功率和各頻率分量的功率,檢測出的各頻率分量的功率之和不小于總功率值的95%;各頻率分量功率測量的相對誤差的絕對值小于10%,總功率測量的相對誤差的絕對值小于5%;以5 s周期刷新分析數(shù)據(jù),信號各頻率分量應(yīng)按功率大小依次存儲并可回放顯示,同時實時顯示信號總功率和至少前兩個頻率分量的頻率值和功率值,并設(shè)暫停鍵保持顯示的數(shù)據(jù)。DSP技術(shù)的信號分析具有性能穩(wěn)定、電路簡單、速度快、成本低、體積小的特點,適用于需要信號分析的嵌入式系統(tǒng)中,可以在更多領(lǐng)域進一步推廣和應(yīng)用,如環(huán)境監(jiān)測、語音識別、智能系統(tǒng)的控制等。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();