適用于靶車停車入庫的語音測距系統(tǒng)設(shè)計
總體設(shè)計
語音測距系統(tǒng)要求實現(xiàn)以下功能:運動靶車入庫時,超聲波模塊(集成溫度補償)即實時測量靶車與庫區(qū)極限位置之間的距離,操作者按下遙控器,語音播報模塊激活,開始播報測量數(shù)據(jù)。
溫度測量采用1-Wire 器件DS18B20實現(xiàn),語音播報的核心器件是華邦公司出品的ISD1730,單片機選用51系列AT89S51。除此之外,還有LCD顯示、矩陣鍵盤、紅外遙控等單元,其中語音芯片ISD1700是整個系統(tǒng)的關(guān)鍵器件,本文著重介紹ISD1730的性能特點、電路設(shè)計及編程要點。圖1是系統(tǒng)結(jié)構(gòu)框圖。
圖1 總體結(jié)構(gòu)框圖
ISD1730是一種高集成度、高性能、高音質(zhì)的語音錄放芯片,內(nèi)部含有自動增益控制、麥克風(fēng)前置放大器、揚聲器驅(qū)動等電路;可處理多達255段語音信息,可以多段錄音并由片內(nèi)專門的存儲系統(tǒng)來管理;采樣率可在4KHz至12KHz間調(diào)節(jié),支持獨立按鍵和SPI兩種操作模式;帶負載能力強,可直接驅(qū)動小型揚聲器;具有4 種預(yù)設(shè)音效,錄音數(shù)據(jù)存儲在FLASH 內(nèi),不經(jīng)任何壓縮,因此有較好的音質(zhì)。
為便于單片機控制,本文將ISD1730置于SPI工作模式,根據(jù)芯片手冊,ISD1730可直接驅(qū)動8Ω阻抗揚聲器或普通耳機,但為增強帶負載能力,保證語音傳輸距離,在ISD1730的后置環(huán)節(jié)設(shè)計了功率放大電路—LM386,見圖2所示,功率放大電路能提供50倍以上的增益,可以驅(qū)動阻抗16Ω的揚聲器。
圖2 ISD1730語音錄放系統(tǒng)
超聲波測距單元
結(jié)合庫區(qū)的實際,本文采用分立元件,自行設(shè)計超聲波測距電路,如圖3所示。超聲波探頭中心頻率為40kHz,方向角60度,工作溫度-20—70℃,能滿足庫區(qū)工作的需要。圖4是設(shè)計的超聲波測距模塊實物。
圖3 超聲波測距單元原理圖
其他單元
其余單元功能如下,LCD單元用來顯示實驗數(shù)據(jù),便于系統(tǒng)調(diào)試。矩陣鍵盤單元用來實現(xiàn)按鍵輸入;紅外遙控單元負責(zé)整個系統(tǒng)的觸發(fā),一體化紅外接收頭與單片機Int0連接,當用戶按下遙控器按鍵時,Int0產(chǎn)生中斷,單片機發(fā)出語音播報指令。
軟件編程
ISD1730軟件設(shè)計
SPI相關(guān)命令
SPI模式下,ISD1730相關(guān)命令如表1所示。注意芯片管腳2連接一只藍色LED,用以指示語音芯片工作狀態(tài),為使能此LED,所有的指令碼bit4必須置1。
表1 ISD1730相關(guān)命令
ISD1730編程要點
ISD1730采用flash作為存儲器,內(nèi)存地址0x00~0xff,其中0x00~0x0f為音效存儲單元。實現(xiàn)語音播報,需預(yù)先錄制距離數(shù)據(jù),下列數(shù)組可以作為數(shù)據(jù)緩存:
unsigned char code voic_mem[]={ //定義語音儲存單元
0x10,0x13,0x14,0x17, //語音“0”、“1”起始地址和結(jié)束地址
0x18,0x1b,0x1c,0x1f, //語音“2”、“3”起始地址和結(jié)束地址
0x20,0x23,0x24,0x27, //語音“4”、“5”起始地址和結(jié)束地址
0x28,0x2b,0x2c,0x2f, //語音“6”、“7”起始地址和結(jié)束地址
0x30,0x33,0x34,0x37, //語音“8”、“9”起始地址和結(jié)束地址
0x40,0x43,0x44,0x47, //語音“百”、“十”起始和結(jié)束地址
0x48,0x4b,0x4c,0x4f, //語音“點”、“米”起始和結(jié)束地址
};
ISD1730的語音錄制有5種采樣頻率可選,采樣頻率越高,語音品質(zhì)越好,但可錄制的時間越短,采樣頻率取決于芯片ROSC管腳的外接電阻,錄音時長、采樣頻率與振蕩電阻的對應(yīng)關(guān)系見表2。
表2 錄音時長、采樣頻率與振蕩電阻阻值的對應(yīng)關(guān)系
圖2的接法設(shè)定采樣頻率為8kHz,根據(jù)ISD1730技術(shù)手冊,采樣頻率為8kHz時,每一內(nèi)存單元可錄制125ms語音,實驗時需要錄制16段語音,程序規(guī)劃每一語音片斷占用4個內(nèi)存單元,即每一語音片斷占用0.5s時長。
超聲波測距編程要點
距離測量與換算在 INT1 中斷服務(wù)子函數(shù)中完成,該子函數(shù)啟動計數(shù)器計算收到回波的時長,再根據(jù)超聲波傳播速度計算得到測量距離,在此注意增加延時函數(shù),確保測量完成。
超聲波傳播速度易受溫度影響,因此需增加溫度測量以修正超聲波傳播速度,從而實現(xiàn)對測量距離的補償。讀取溫度時應(yīng)注意數(shù)據(jù)轉(zhuǎn)換,將溫度低8位和高8位轉(zhuǎn)換為1個16位的數(shù),其高5位是相同的,代表符號,低11位,是溫度的二進制數(shù),其中高7位是溫度整數(shù),低4位是溫度小數(shù);如果是負溫度,則從溫度寄存器讀出的是補碼,應(yīng)將補碼取反加1得到原碼。
DS18B20的小數(shù)位可以這樣理解:單片機發(fā)出讀取溫度寄存器命令后,DS18B20會返回9組數(shù)據(jù),其中第一組數(shù)據(jù)的低4位代表溫度小數(shù)部分,換言之,即是把1度分解為16個4位二進制數(shù)來表示,則溫度小數(shù)部分的精度為1/16=0.0625。
應(yīng)用與測試
將本系統(tǒng)安裝在運動靶車上,靶車入庫時,按下遙控器,揚聲器持續(xù)播報靶車與極限位置之間的距離,當距離達到要求時,即控制靶車停止運行。經(jīng)實際測試,操作者用本系統(tǒng)在庫區(qū)外即可完成距離測量,測量距離最遠可達4米,效果令人滿意。