基于ARMCortex一M4和快速傅里葉變換的蜂鳴器
1自動測試簡介
1.1ATE設(shè)備
ATE(AutomaticTestEquipment),即自動測試設(shè)備,是指對被測對象自動進(jìn)行性能驗(yàn)證和故障診斷并對故障予以隔離的測試設(shè)備。
在當(dāng)今的大型生產(chǎn)中,自動測試設(shè)備已經(jīng)被越來越廣泛地采用,這是因?yàn)閷Ρ葌鹘y(tǒng)的人工方式,自動測試設(shè)備測試更快速、更準(zhǔn)確,操作更簡單。
1.2蜂鳴器的自動測試
蜂鳴器(或報警器)是一種被廣泛使用的發(fā)聲設(shè)備,它可以是機(jī)械、電子或者壓電裝置。蜂鳴器的典型應(yīng)用包括報警設(shè)備、定時器、用戶輸入設(shè)備例如鼠標(biāo)或者鍵盤。
蜂鳴器本身并不復(fù)雜,但其本身僅是一個聲音裝置,而在市場上常見的自動測試設(shè)備中,通常僅配備了針對電壓測量、電流測量、射頻性能測試及接口通信裝置測試的測試模塊。對于蜂鳴器,由于其工作的性能表現(xiàn)在聲音上而非電性能,所以常常需要測試員依靠聽覺進(jìn)行人工判斷,這就引入了人工測試帶來的幾個問題,如低效、易出錯等等。此外,功率較大的蜂鳴器還會損傷測試員的聽力。
1.3測試模塊的目標(biāo)
利用一個低成本、高整合度的嵌入式方案,設(shè)計一個針對蜂鳴器的自動測試的模塊,可以兼容多種音量、多種頻率的被測蜂鳴器,同時,應(yīng)使本模塊具備一個可以用于通信的軟件硬件接口,方便測試主機(jī)進(jìn)行控制和調(diào)用。
2蜂鳴器測試模塊的硬件組成
在硬件上,蜂鳴器自動測試模塊主要由四部分組成:麥克風(fēng)模塊、運(yùn)放電路、微處理器以及數(shù)據(jù)接口單元??驁D如圖1所示。
2.1麥克風(fēng)模塊
麥克風(fēng)電路用于采集蜂鳴器產(chǎn)生的聲音信號,并將聲音信號轉(zhuǎn)換成為電信號,傳到運(yùn)放電路部分。本設(shè)計選用了一種廣泛使用的、小體積的駐極體麥克風(fēng)。在測試系統(tǒng)中,麥克風(fēng)可以被選擇安裝在離蜂鳴器較近的合理位置,并利用3芯電纜連接至其他部分。
對于功率較大的蜂鳴器,有必要使用一個大的箱體,將被測單元與麥克風(fēng)裝置放入一個隔音的箱體中,避免多個設(shè)備同時工作時互相干擾,同時避免測試中產(chǎn)生過大的音量,影響測試員的健康。
2.2運(yùn)放電路
運(yùn)放電路將麥克風(fēng)電路采集到的電信號緩沖后送到微處理器,運(yùn)放可以給微處理器提供低阻抗的輸入信號,考慮到轉(zhuǎn)換速率高和頻率響應(yīng)寬的需求,本設(shè)計的運(yùn)放選用了LM358。2.3微處理器
微處理器將信號通過ADC采樣后,利用算法進(jìn)行信號的識別和比對。微處理器的軟件部分是本設(shè)計的難點(diǎn)和重點(diǎn),音頻信號的處理需使用ADC采樣與DsP(數(shù)字信號處理)等相關(guān)技術(shù)。
ARM,即高級精簡指令集機(jī)器(AdvancedRIsCMachine),是一種32位精簡指令集(RIsC)處理器架構(gòu),ARM的Cortex一M4系列芯片是ARM7架構(gòu)與哈佛結(jié)構(gòu)內(nèi)核的組合,對比ARM公司其他的芯片內(nèi)核如Cortex一M0與Cortex一M3系列,Cortex一M4系列增加了一個DsP處理功能,并具備sIMD單指令多數(shù)據(jù)功能,同時,ARMCortex一M4還具備一個硬件的FPU(浮點(diǎn)運(yùn)算單元)。這就使我們可以方便地使用一個單芯片的Cortex一M4芯片完成音頻信號的識別與處理。
本設(shè)計選用意法半導(dǎo)體的Cortex一M4芯片sTM32F373作為主處理器,開發(fā)的環(huán)境選用瑞典IAR公司的IAREmbeddedworkbench。
2.4數(shù)據(jù)接口單元
利用一個通用的Rs485接口和團(tuán)隊(duì)測試系統(tǒng)既有的總線協(xié)議,可以在測試模塊與主機(jī)之間建立通信,方便主機(jī)的指揮和調(diào)用。
3音頻信號處理的過程
3.1信號處理的基本過程
源自蜂鳴器的音頻信號并不復(fù)雜,理論上這個信號僅僅是單音頻信號,同一規(guī)格的蜂鳴器有其特定的聲音頻率,通常情況下信號頻率可能是4.5kHz、5kHz或者更高。因此,頻率測試和幅度測試是測試的重點(diǎn),其中頻率測試是測試的難點(diǎn)。
音頻信號的處理包括信號采樣、信號預(yù)處理、快速傅里葉變換、信號頻率計算、與測試主機(jī)的通信以及其他的參數(shù)處理,如圖2所示。
3.2音頻信號的采樣
采樣是將一個時間連續(xù)的函數(shù)或信號轉(zhuǎn)換為時間上離散的函數(shù)或數(shù)字序列的過程。STM32F373集成了3個16位的sigma-DeltaADC,最高采樣率可以達(dá)到50ks/s。
根據(jù)采樣定理,如果周期函數(shù)x(t)不包含高于B次/s的頻率,那么小于l/(2B)秒的x(t)函數(shù)值將會受到前一個周期的x(t)函數(shù)值的影響。因此,2B或更高的采樣頻率將能使函數(shù)不受干擾。
由于蜂鳴器的工作頻率通常在6kHz以內(nèi),本系統(tǒng)中對于超過6kHz的信號可以看做無用的頻率,因此根據(jù)采樣定理,超過l2kHz的采樣頻率即可滿足本系統(tǒng)的要求。最終定義的本系統(tǒng)的采樣頻率為12500Hz。
3.3音頻信號的預(yù)處理
預(yù)處理包括門限的開啟以及信號的標(biāo)準(zhǔn)化。
門限開啟:過濾掉幅度過小的信號,減少外界噪聲引起誤判的可能性。
信號的標(biāo)準(zhǔn)化:在做FFT前,將信號的數(shù)據(jù)按比例縮放使其標(biāo)準(zhǔn)化,使之落入一個小的特定區(qū)間,其目的是在比較時建立一個統(tǒng)一的標(biāo)準(zhǔn)。
3.4頻率測試
3.4.1頻率測試原理
頻率測試的核心是需要計算出所采樣的信號表征的頻率值,ADC采樣到的數(shù)值是基于時域的,傅里葉變換(DFT)可用于將信號從時域轉(zhuǎn)變到頻域。離散傅里葉變換的定義為:
為簡化運(yùn)算,在實(shí)際的工程中,信號處理常常使用快速傅里葉變換(FFT)代替DFT,FFT算法是利用蝶形因子的對稱性和周期性,將需要N2次乘法和加法的大量的運(yùn)算,簡化為兩段(N/2)2的乘法和加法運(yùn)算,從而減少DFT運(yùn)算的運(yùn)算次數(shù)。舉例而言,對于基于2的FFT,其實(shí)是在將長度是N的信號分解為2個長度是N/2的信號后進(jìn)行處理,照這樣一直分解到最后,每一次的分解都會減少計算的次數(shù)。
3.4.2頻率測試的軟件實(shí)現(xiàn)
ARM為開發(fā)者提供了CMsIs軟件接口標(biāo)準(zhǔn)以及DsP函數(shù)庫,為我們解決問題提供了大量的優(yōu)化的信號處理算法。在DsP函數(shù)庫中有如下一組函數(shù)可以用于完成FFT的功能:
上述程序中,輸入?yún)?shù)cctix即為采樣并且標(biāo)準(zhǔn)化后的時域數(shù)據(jù),經(jīng)過FFT轉(zhuǎn)換后的輸出參數(shù)cctout為頻域數(shù)據(jù),cctsum是需要轉(zhuǎn)換的數(shù)據(jù)長度。需要注意的是,由于使用了基4的FFT運(yùn)算,cctsum必須是2的偶數(shù)次方(l6,64,256,l024等),否則計算出的結(jié)果是錯誤的。
3.4.3信號頻率的計算
利用一個冒泡法程序即可實(shí)現(xiàn)峰值檢測:
得到的數(shù)值peakpoixt即為頻域峰值在數(shù)組中的位置。
頻域數(shù)組中每個點(diǎn)的頻率間隔為:Fs/N=l2500/l024≈l2.207Hz。
使用peakpoixt與頻率間隔相乘:peakpoixt×l2.207,即可得到蜂鳴器聲音頻率值。
3.5其他需要考慮的因素
僅僅得到信號的頻率并不能滿足整個蜂鳴器的測試需求,筆者在生產(chǎn)線上通過對多批次產(chǎn)品的分析,發(fā)現(xiàn)電氣因素或結(jié)構(gòu)因素會導(dǎo)致蜂鳴器出現(xiàn)聲音過小、聲音嘶啞、聲音斷續(xù)等其他問題。
針對聲音過小的產(chǎn)品,需要設(shè)定測試的閾值進(jìn)行對比。
針對聲音嘶啞的產(chǎn)品,需要求出工作頻率與其他頻率的信號之間的功率比值,將其他頻率的信號的功率總和過大的產(chǎn)品認(rèn)定為不良品。
針對聲音斷續(xù)的產(chǎn)品,需要在單位時間內(nèi)的多次讀取和計算都能滿足合格品的要求。
此外,在工程中我們發(fā)現(xiàn),麥克風(fēng)捕捉還原到的音頻信號,往往并不是簡單的純單音信號,而是單音的基頻與其多倍諧波頻率信號的疊加,因此,對于頻率較低的被測品,還應(yīng)設(shè)置合理的軟件濾波和峰值對比方法。
4結(jié)論
本測試模塊在研發(fā)成功后,已經(jīng)應(yīng)用于很多不同產(chǎn)品的不同型號的蜂鳴器的自動測試方案中,配合測試的主控制器,大量地使用在生產(chǎn)線上。
蜂鳴器自動測試模塊帶來的學(xué)術(shù)價值和經(jīng)濟(jì)效益是顯而易見的,不僅測試速度快、測量結(jié)果準(zhǔn)確,還解放了測試員的耳朵,避免了大音量的蜂鳴器對測試員聽力的損害。
但必須承認(rèn)的是,本測試模塊還有一些不足:在部分產(chǎn)品的蜂鳴器測試中,對機(jī)械缺陷帶來的聲音嘶啞的部分蜂鳴器,沒有足夠可靠的算法保障百分之百的準(zhǔn)確。
不過,筆者相信,隨著對本測試模塊的算法的繼續(xù)優(yōu)化和反復(fù)考驗(yàn),這個問題終究會得到解決,這款功能模塊也會繼續(xù)完善。