李修池 陳歡歡 羅聰 嚴(yán)萍
【摘要】介紹了一種以飛思卡爾的16位單片機(jī)MC9S12DG128和ISD4004系列語(yǔ)音芯片為核心的電池管理語(yǔ)音報(bào)警系統(tǒng),以電動(dòng)汽車電池管理系統(tǒng)為平臺(tái),采用硬件SPI方式通信,實(shí)現(xiàn)了電池管理的電壓檢測(cè)報(bào)警、電流過(guò)流報(bào)警、溫度檢測(cè)及溫度異常報(bào)警、絕緣監(jiān)測(cè)報(bào)警、SOC監(jiān)測(cè)報(bào)警等功能。為了滿足靈活錄音的需要,設(shè)計(jì)了耳機(jī)插口錄音模式和駐極式話筒錄音模式。測(cè)試結(jié)果表明語(yǔ)音系統(tǒng)能夠?qū)崟r(shí)、精準(zhǔn)地進(jìn)行播報(bào),且在惡劣環(huán)境中工作穩(wěn)定。
【關(guān)鍵詞】MC9S12DG128 語(yǔ)音系統(tǒng) ISD4004 語(yǔ)音錄放 多種方式
在數(shù)字電子技術(shù)迅猛發(fā)展的今天,語(yǔ)音的應(yīng)用已隨處可見(jiàn),如微信、銀行排隊(duì)系統(tǒng)和公交站臺(tái)播報(bào)系統(tǒng)等。語(yǔ)音是人類信息的主要載體之一,是自然界最動(dòng)聽(tīng)、和諧的聲音,其在不同領(lǐng)域的應(yīng)用給人們的生活帶來(lái)了極大的方便。在汽車行業(yè),將語(yǔ)音用于汽車電池管理的意外報(bào)警上,極大地提高了電池管理的安全性和可靠性。以全順系列電動(dòng)汽車整車控制為平臺(tái),設(shè)計(jì)了以MC9S12DG128和ISD4004為核心的語(yǔ)音系統(tǒng),本系統(tǒng)可實(shí)現(xiàn)電池管理的電壓檢測(cè)報(bào)警、電流過(guò)流報(bào)警、溫度檢測(cè)及溫度異常報(bào)警、絕緣監(jiān)測(cè)報(bào)警、SOC監(jiān)測(cè)報(bào)警等功能。
1語(yǔ)音系統(tǒng)平臺(tái)的介紹
本電動(dòng)汽車電池管理的結(jié)構(gòu)框圖如圖1所示,其分為主控模塊和子模塊。其中,子模塊與主控模塊通過(guò)內(nèi)部低速CAN通訊,每個(gè)子模塊分別負(fù)責(zé)獨(dú)立完成電池的電壓采集、溫度采集、單體均衡保護(hù)、CAN通訊等功能。主控模塊則有兩個(gè)功能,一是對(duì)子模塊發(fā)過(guò)來(lái)的信息進(jìn)行處理(主要完成電池信息的收集處理、SOC的估算、電池故障診斷和電池SOH的估算、電池組的熱管理、故障診斷等),并在以上功能完成后進(jìn)行相應(yīng)的語(yǔ)音報(bào)警;二是與上位機(jī)和整車控制器的通訊,通過(guò)外部CAN把電池管理系統(tǒng)采集到的數(shù)據(jù)發(fā)送到上位機(jī)進(jìn)行數(shù)據(jù)分析、處理、顯示和保存。
2語(yǔ)音系統(tǒng)的設(shè)計(jì)
動(dòng)汽車電池管理選用飛思卡爾的16位單片機(jī)MC9S12DG128作為主模塊的控制器[1],其具有較強(qiáng)的數(shù)據(jù)處理能力和控制功能,尤其是內(nèi)部的雙CAN通道,優(yōu)化了電池管理系統(tǒng)結(jié)構(gòu)。MC9S12DG128與語(yǔ)音報(bào)警系統(tǒng)采用硬件SPI方式進(jìn)行通信。由于需要語(yǔ)音播報(bào)的話語(yǔ)時(shí)間較長(zhǎng),故選用可錄音16分鐘的ISD4004-16M芯片。
2.1語(yǔ)音系統(tǒng)的硬件設(shè)計(jì)
語(yǔ)音報(bào)警系統(tǒng)選用的ISD4004系列芯片[2]采用CMOS技術(shù),內(nèi)含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動(dòng)靜噪及高密度多電平閃爍存貯陳列。ISD4004和MC9S12DG128的通信為SPI同步串行數(shù)據(jù)傳輸協(xié)議[3],其通信時(shí)序如圖2所示。
ISD4004-16M主要用到的引腳有:音頻模擬輸入ANA_IN+、ANA_IN-,音頻模擬輸出AUDIO_OUT,片選信號(hào)SS,串行數(shù)據(jù)輸入MOSI,串行數(shù)據(jù)輸出MISO,串行時(shí)鐘SCLK等,其與控制器的接口為SS(PP3)、SCK(PP2)、MOSI(PP1)、MISO(PP0)。通過(guò)對(duì)MC9S12DG128以上四個(gè)接口的操作就可完成語(yǔ)音的錄入和回放,具體操作時(shí)序如圖3所示。
2.1.1電源轉(zhuǎn)換電路
ISD4004為3V單電源工作,故采用低壓差線性調(diào)壓器LM1117-3.3來(lái)給ISD4004供電,其自帶電流限制和熱保護(hù)功能,輸出電流可達(dá)800mA,電路圖如圖4所示。
2.1.2耳機(jī)插口錄音電路
耳機(jī)插口錄音(AUDIO_IN)電路[4]如圖5所示,該電路可以實(shí)現(xiàn)電腦或其他音源通過(guò)對(duì)錄線將語(yǔ)音錄進(jìn)芯片。錄音時(shí),只要將耳機(jī)插口(AUDIO_IN)和電腦或其他音源通過(guò)對(duì)錄線連接即可。當(dāng)選用本方式錄音時(shí),盡量將音源的音量調(diào)?。≧69為輸入音量調(diào)節(jié)電位器),這樣可以避免錄音時(shí)語(yǔ)音信號(hào)失真而得到較好的音質(zhì)。
2.1.3駐極式話筒錄音電路
駐極式話筒錄音(personMIC)電路如圖6所示,其中P24為駐極式話筒。在該錄音電路中,只要對(duì)著錄音口說(shuō)話或播放原音就可以完成普通的現(xiàn)場(chǎng)錄音。錄音時(shí),語(yǔ)音信號(hào)由駐極式話筒輸入,由于其轉(zhuǎn)化成的電信號(hào)很微弱,為了提高信號(hào)信噪比,更好的抑制噪聲,該電信號(hào)需先經(jīng)過(guò)三極管Q18放大后再加到ISD4004-16芯片的反向模擬輸入端ANA_IN-。
2.1.4放音電路
本電路[5]可以實(shí)現(xiàn)兩種方式放音,喇叭(SPEAK)放音和耳機(jī)插口(AUDIO_OUT)放音方式。由于語(yǔ)音芯片輸出的語(yǔ)音信號(hào)很微弱,無(wú)法直接驅(qū)動(dòng)揚(yáng)聲器,所以該信號(hào)需要通過(guò)功率放大電路進(jìn)行放大后再由揚(yáng)聲器發(fā)出清晰的聲音,功率放大模塊選用LM386功率放大器。放音電路如圖7所示,ISD4004芯片的音頻信號(hào)輸出引腳為AUDOUT。由于輸出音頻信號(hào)里的直流分量若直接加在LM386芯片上會(huì)使LM386芯片飽和而不能發(fā)出聲音,所以要先經(jīng)過(guò)電容C38隔直流。圖中的R70是輸出音量控制電位器,在1腳和8腳間接電容C47是為了將電壓增益調(diào)至任意值,如圖7,此時(shí)電壓增益為200。本設(shè)計(jì)中喇叭放音方式選用的SPEAK是阻值為8歐,功率為0.5W的喇叭,經(jīng)過(guò)多次測(cè)試,音質(zhì)很好。
2.2語(yǔ)音系統(tǒng)的軟件設(shè)計(jì)
語(yǔ)音系統(tǒng)程序主要包括ISD4004初始化、SPI通信、錄音和放音子程序。其功能是使系統(tǒng)實(shí)現(xiàn)實(shí)時(shí)、精確的錄音和播音,并且容易操作,易于批量生產(chǎn),語(yǔ)音播報(bào)系統(tǒng)總流程如圖8所示。
2.2.1SPI通信初始化
串行外設(shè)接口SPI允許MC9S12DG128和ISD4004進(jìn)行高速的同步數(shù)據(jù)傳輸從而完成語(yǔ)音播報(bào)。啟用SPI通信時(shí),需先對(duì)SPI控制寄存器的SPI使能位、主/從選擇位、數(shù)據(jù)次序位等進(jìn)行設(shè)置。
2.2.2錄音和放音子程序
在本程序中可實(shí)現(xiàn)兩種方式錄音和放音:分段錄放音和一次性錄放音。ISD4004的初始地址為0X0000,地址的計(jì)算方法如下:ISD4004-16錄音時(shí)間為16min即960s,根據(jù)4004性能,960s被分為2400個(gè)地址,則每個(gè)地址的分辨率為960s/2400=0.4s,則有以下關(guān)系存在:
add_length[i]=[T[i]/0.4] i∈[1,2399],T[i]∈[0,960]
add[i+1]=add[i]+add_length[i]
其中,[T[i]/0.4]表示的是大于T[i]/0.4的最小整數(shù),T[i]為錄第i段語(yǔ)音所需的秒數(shù),add_length[i]為第i段語(yǔ)音所占用的地址數(shù),add[i]為第i段語(yǔ)音的起始地址。
(1)分段錄音、分段放音:假設(shè)要對(duì)第i+1段語(yǔ)音進(jìn)行錄音,則要確定錄音起始地址。先估算第i段錄音時(shí)間T(要求比實(shí)際錄音時(shí)間稍長(zhǎng)),計(jì)算出T/0.4的值,若出現(xiàn)小數(shù)則往上取最小整值,再把該整值加至第i段起始地址,加出的16進(jìn)制數(shù)就是本次錄音起始地址,最后調(diào)用rec(add)進(jìn)行錄音即可,如此循環(huán)直至錄音完畢。放音時(shí)直接根據(jù)錄音起始地址調(diào)用play(add)即可實(shí)現(xiàn)播放任意段音。
(2)一次性錄音,分段放音:首先確定錄音起始地址,再調(diào)用rec(add)一次性錄音完畢,要求每句話之間有較明顯的停頓。第一次放音時(shí),首先測(cè)出第一句話的放音時(shí)間T(要求比實(shí)際錄音時(shí)間長(zhǎng),但不得長(zhǎng)于0.4s),然后調(diào)用play(add)進(jìn)行放音,經(jīng)時(shí)間T后停止放音;第二次放音時(shí),亦先確定放音地址,放音地址的確定如下:先測(cè)出前一次(這里即第一次)放音和停頓總時(shí)間T1,計(jì)算T1/0.4的值,若出現(xiàn)小數(shù)則往上取最小整值,則([T1/0.4]+add)就是第二次放音地址,依此類推,循環(huán)下去,目前所測(cè)試系統(tǒng)語(yǔ)音地址映射表如表1所示,相應(yīng)錄、放音程序如表1:
void rec(ucharadd) //錄音程序
{
send_data4004(0xffff,ISDPOWERUP);delay_nms(30);
send_data4004(0xffff,ISDPOWERUP);
delay_nms(60);
send_data4004(add,RECSET);//錄音地址為add
delay_nms(5);
send_data4004(0xffff,RECCUR);
delay_nms(5);
}
voidplay(ucharadd) //放音程序
{
send_data4004(0xffff,ISDPOWERUP);
delay_nms(30);
send_data4004(add,PLAYSET);//放音地址為add
delay_nms(5);
send_data4004(0xffff,PLAYCUR);
}
2.2.3應(yīng)注意的問(wèn)題
(1)若選擇耳機(jī)插口錄音方式,錄音過(guò)程中應(yīng)控制聲源音量稍小,因?yàn)殡娔X輸出的模擬音頻信號(hào)幅度過(guò)大會(huì)對(duì)錄入芯片的語(yǔ)音信號(hào)造成失真從而影響音質(zhì)。
(2)若想自動(dòng)或循環(huán)播放其中的某些地址不連續(xù)的語(yǔ)音,必須在前一段放音結(jié)束后延時(shí)一定時(shí)間,才能確保放音正常。
3結(jié)語(yǔ)
在實(shí)驗(yàn)室和嘈雜的工廠中,對(duì)制作好的電路板(圖8)進(jìn)行了100多次測(cè)試,發(fā)現(xiàn)本語(yǔ)音系統(tǒng)音質(zhì)好,能夠?qū)崟r(shí)、準(zhǔn)確、清晰的播音,且在惡劣的環(huán)境中工作穩(wěn)定,反應(yīng)良好,并設(shè)計(jì)了獨(dú)立的接口,可以很好的進(jìn)行移植。
參考文獻(xiàn):
[1]王少卿,霍迎輝.ATmega128在開(kāi)發(fā)應(yīng)用中應(yīng)注意的問(wèn)題[J].微型機(jī)與應(yīng)用,2004,(2):15-16.
[2]道客巴巴.ISD4004系列語(yǔ)音芯片中文資料.http://www.doc88.com/p-13075450055.html,2011-12-28.
[3]楊易華,吳效明,岑人經(jīng).基于ISD4004的紅外遙控醫(yī)院語(yǔ)音播報(bào)系統(tǒng)的設(shè)計(jì)[J].醫(yī)療衛(wèi)生裝備,2009,30(10):17-19.
[4]王立華.通信電纜斷點(diǎn)故障自動(dòng)檢測(cè)報(bào)警電路的設(shè)計(jì)[J].自動(dòng)化儀表,2010,31(12):58-60.
[5]洪耀球、劉浪、李香泉.電動(dòng)汽車參數(shù)檢測(cè)及報(bào)警顯示系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(5):1197-1198.