新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 具有語音辨識能力的聲控小汽車的實現

        具有語音辨識能力的聲控小汽車的實現

        作者:■ 西北大學電子系 張方輝 侯愛琴 時間:2005-04-28 來源:eaw 收藏

        摘    要:本文主要論述了如何用實現對非特定人語音的辨識,如何用實現對汽車的驅動控制,以及兩款之間無線通信的實現。
        關鍵詞:

        本文引用地址:http://www.104case.com/article/5431.htm

        方案設計與論證
        本系統為典型的實時控制系統,下面對系統的實現方案進行論證。
        方案:本設計中采用具有DSP處理功能的凌陽16位實現功能。由于SPCE061A具有A/D、D/A轉換接口,可以方便用于各種數據的采集、處理和控制輸出。A/D、D/A轉換接口與SPCE061A的DSP運算功能結合在一起,可實現語音辨識功能。
        通信方案:通信方式可用無線或紅外光方式,紅外光方式適合于近距離通信,電路較簡單;無線方式通信距離較遠,但電路復雜。考慮到汽車處于被控中(距離較遠),選擇無線作為載波來傳送信息。
        電機驅動方案:本系統在電機的驅動部分利用8050、8550等不同三極管的組合,構造一座“橋”。該橋的優點是原理簡單、易控制、帶負載能力強。在單片機的配合下,通過PWM的方法,實現了對驅動電機的輕松控速。
        電源供電方案:采用雙電源供電消除電機運轉產生的干擾,保證單片機正常工作。在電機驅動部分,為了保證兩組驅動電路都有較大的驅動電流,采用兩組電池并聯供電。

        系統框圖及工作原理
        系統的組成框圖如圖1所示, 通過麥克風輸入口輸入。SPCE061A的自動增益放大器把信號轉換為適合單片機處理的信號范圍。然后單片機對送來的信號進行分析、運算、處理、比較,識別出相應的命令。按照編碼,把控制碼序列從PA.0端口通過RF發送模塊串行發送出去,并有相應的語音播報。從PB.0接收到信號,通過檢測比較判斷出相應的命令。然后從C端口的低四位發出相應的控制信號,控制電機轉動并有相應的音效輸出。

        系統硬件設計及原理分析
        語音辨識部分
        該部分也即為SPCE061A的外接電路部分。語音辨識主要是通過軟件來實現,所以硬件電路主要是使SPCE061A芯片能正常工作所必需的電源、晶振以及麥克風和音頻驅動電路。控制碼序列的發送是通過IOA0串行發送(外接RF發送模塊)。
        電機驅動控制部分
        本系統的小車電機驅動控制部分利用8050、8550等不同的三極管組合成橋式電路,實現對驅動電機的控制,具體電路如圖2所示。控制過程如下:
        當PC.0/PC.2為高電平,PC.1/PC.3為低電平時,則Q1、Q2、Q3導通,Q4、Q5、Q6截止。其中Q1為激勵級,Q2、Q3為功放級。電流從VCC經Q2到電機“+”端,再到“-”端,最后經Q3入地,電機正轉;當 PC.0/PC.2為低電平,PC.1/PC.3為高電平時,則電機反轉;當都為低電平時,電機停轉。注意:不能讓兩個輸出口都為高電平,這樣會使Q1、Q2、Q3、Q4、Q5、Q6都處于導通狀態。會在功放級產生大電流致使三級管超過額定功率,從而導致發熱甚至燒壞。
        在速度控制方面,一般是通過改變加在電機兩端的電壓來實現的。可以連續改變(加直流電壓),也可以是斷續改變(加脈沖電壓)。為了簡單實用,本設計采用了脈寬調速,軟件調整。
        脈沖頻率對電機轉速也有影響,脈沖頻率高則連續性好,但帶負載能力差,頻率低則反之。經實驗發現,脈沖頻率在15~20Hz效果最佳。
        脈寬調速實質上是調節加在電機兩端的平均功率,通過計算可發現小車的速度與脈寬成正比。
        車載部分
        該部分也即SPC81A的外接電路部分,將SPC81A的時鐘振蕩源設置為RC振蕩,通過外接電阻實現。由其IOC的低四位端口輸出信號來控制驅動電路。注意將I/O口設置為緩沖式輸出,可以直接輸出高/低電平。接收RF信號主要是通過IOB0口外接一個RF接收模塊電路實現。               
        語音功能
        凌陽單片機自帶雙通道DAC音頻輸出,DAC1、DAC2轉換輸出的模擬量電流信號分別通過AUD1和AUD2管腳輸出。DAC輸出為電流型輸出,經三極管音頻放大,即可驅動喇叭放音。

        系統軟件設計
        本系統軟件分為兩個部分,包括手持語音辨識遙控系統的軟件部分和車載驅動控制系統的軟件部分。
        手持語音辨識遙控系統的軟件設計
        此部分是在SPCE061A的平臺上實現的。本系統軟件分為主模塊、2048(2K)時基中斷、FIQ_TIM的定時中斷、播放語音子程序以及數據發送子程序。此部分主要是完成非特定人語音辨識功能。辨識的流程圖如圖3所示,本設計主要是通過調用API函數實現。
        主模塊
        主模塊主要是控制整個系統程序的流程。系統上電后進行一系列的初始化,然后發出提示音“anybody here”,這時辨識可以開始,根據不同的辨識結果執行不同的動作。主模塊的流程圖如圖4所示。
        數據發送子程序
        本設計的數據發送采用串行發送機制,從端口IOA0口發送(外接RF發送模塊)。每個語音命令用八位碼元表示,在發送時,還要外加一位起始位和一位結束位。起始位用8ms的低電平表示;結束位用8ms的高電平表示。碼元“1”用占空比為1/4的高低電平表示;碼元“0”用占空比為1/2的高低電平表示。為保證數據被正確的收發,將每個語音命令連續發送10次。數據發送程序包括數據發送主程序、開始/結束位發送子程序、數據位發送子程序、碼元“1”發送子程序、碼元“0”發送子程序。
        車載驅動控制系統的軟件設計
        此部分的軟件系統主要是通過RF接收模塊接收相應的控制信號,根據相應的控制碼序列通過IOC口的低四位口,對電機發出相應的驅動信號,并同時帶有相應的音效輸出。此部分系統的軟件設計包括主控程序設計、數據接收程序設計等。
        主控程序設計
        主控部分主要是判斷數據接收是否完成,如果接收完成,就判斷此命令是哪一個命令,根據相應的命令執行相應的操作和音效輸出。
        中斷服務主程序
        中斷服務主程序主要判斷是哪一個中斷,然后完成相應的中斷服務,最后返回。
        數據接收程序
        數據接收主要是通過4KHz的中斷不斷地檢測輸入端口的狀態,然后根據相應的狀態值執行相應的操作。為保證能接收到數據,將每一電平長度的持續時間規定在一定范圍內。

        結語
        本設計中也存在著一些不足,在通信部分,由于只有8個命令,所以可以只用三個碼元表示,這樣可以提高傳輸效率,如果采用糾錯編碼機制進行收發,就可以提高正確性。這些都是可以改進的地方。■

        參考文獻
        1 SPCE061A PROGRAMMING GUIDE v1.0. sunplus technology co.,ltd 11/01/2002



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闽清县| 镇原县| 八宿县| 平顺县| 张掖市| 渝中区| 任丘市| 永宁县| 怀柔区| 吉林省| 东宁县| 海门市| 铅山县| 江山市| 大洼县| 沁水县| 左权县| 石河子市| 城市| 周至县| 黄梅县| 镇赉县| 波密县| 武穴市| 顺平县| 旺苍县| 抚松县| 蓬安县| 沙河市| 霍城县| 通州市| 眉山市| 灵寿县| 磐安县| 浦县| 大同市| 孝义市| 赤壁市| 张家界市| 隆昌县| 衡阳县|