基于SPCE061A單片機的語音遙控小車設計_第1頁
基于SPCE061A單片機的語音遙控小車設計_第2頁
基于SPCE061A單片機的語音遙控小車設計_第3頁
基于SPCE061A單片機的語音遙控小車設計_第4頁
基于SPCE061A單片機的語音遙控小車設計_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1頁共20頁基于SPCE061A單片機的語音遙控小車設計作者:宇曉梅摘要:近年來,智能化和自動化技術在玩具制造領域中越來越被關注。本文介紹了一種基于SPCE061A單片機的語音遙控小車,重點討論了其硬件子系統的設計與實現。在環境背景噪音不太大,控制者的發音清晰的前提下,語音控制小車能對特定的語音指令做出反應,做出預想中的有限的動作。關鍵詞:單片機SPCE061A;語音識別;智能小車;1引言隨著計算機技術的發展,單片機作為計算機的一個分支,廣泛用于工業控制、智能儀器、家用電氣、高科技玩具等領域。語音技術的發展,縮短了人機界面的距離,增強了互動性和智能性。具有語音識別功能的智能遙控小車,集語音識別、無線遙控、機械控制于一體。以單片機為主控元件,完成前進、后退、轉彎等預定的工作,采用凌陽公司具有語音處理功能的SPCE061A作為控制核心可以方便的實現語音控制。2概述本文介紹了一個以凌陽公司具有語音處理功能的SPCE061A為控制核心,附加一定外圍電路組成的語音遙控小車系統。該小車可以通過簡單的I/O操作實現小車的前進、后退、左轉、右轉功能;配合SPCE061A的語音特色,利用系統的語音播放和語音識別資源,實現語音控制的功能;可以在行走過程中聲控改變小車運動狀態;在超出語音控制范圍時能夠自動停車。3硬件功能模塊電路設計3.1SPCE061A簡介SPCE061A是凌陽科技推出的又一個u’nSP(TM)系列產品16位結構的微控制器,主要包括輸入/輸出端口、定時器/計數器、數/模轉換、模/數轉換、串行設備輸入輸出、通用異步串行接口、低電壓監測和復位等部分,并且內置在線仿真電路ICE接口,內嵌32K字的閃存(FLASH),較高的處理速度使u’nSP(TM)能夠非常容易地、快速地處理數字信號。以u’nSP(TM)為核心的SPCE061A微控制器是適用于數字語音識別應用領域產品的一種經濟的選擇。3.2電源模塊圖1穩壓電源電路61板采用3節5號電池進行供電,其中的前后兩組電容用來去耦濾波,使其供給芯片的電源更加干凈平滑。為了獲得標準的3.3V電壓,在板子上加入SPY0029A三端穩壓器。兩個二極管,是為了防止誤將電源接反造成不必要損失而設置的,在操作過程中千萬不要將電源接反,因為反向電壓超過一定的值,二極管將會被損壞,達不到保護的目的。后面的零電阻及其電源、地分成不同的幾路是為了減少電磁干擾設置的。圖中的VDDH3為SPCE061A的I/O電平參考,如果該點接SPCE061A(PLCC84封裝,下面的介紹中當出現SPCE061A的引腳描述時,均指此封裝的芯片)的51腳,可使I/O輸出高電平為3.3V;VDDP為PLL鎖相環電源,接SPCE061A的7腳;VDD和VDDA分別為數字電源與模擬電源,分別接SPCE061A的15腳和36腳;AVSS1是模擬地,接SPCE061A的24腳;VSS是數字地,接SPCE061A的38腳;AVSS2接音頻輸出電路的AVSS2。3.3SPCE061A最小系統模塊最小系統接線如圖2所示,在OSCO、OSCI端接上32768HZ的晶振及諧振電容,在鎖相環壓控振蕩器的阻容輸入VCP端接上相應的電容電阻后即可工作,復位電路采用的是按鍵式復位模式,由一個按鍵和一個電阻及電容構成。其它不用的電源端和地端接上0.1uF的去耦電容提高抗干擾能力。圖2SPCE061A最小系統原理圖3.4語音提示模塊圖3為音頻輸出電路。SPCE061A內接2路10位精度DAC,只需要外接功放電路即可完成語音的播放。圖中的SPY0030是凌陽的一款音頻放大芯片,可以工作在2.4V~6V范圍內,最大輸出功率可達700mV。圖3音頻輸出電路圖3.5程序下載電路(ICE接口電路)SPCE061A芯片內部集成了ICE(在線仿真)接口,PC機通過Probe(在線調試器)或EZ_Probe(簡易下載線)與61板相連,就可方便地完成程序的下載、調試等。61板為Probe和EZ_Probe各自提供了一組接口,可通過S5跳線來選擇使用的接口類型。ICE接口部分電路如圖4所示。圖4ICE接口電路圖3.6語音遙控小車的技術要求小車采用語音識別技術,可通過語音命令對其行駛狀態進行控制。語音控制小車的主要功能:1.可以通過簡單的I/O操作實現小車的前進、后退、左轉、右轉功能;2.配合SPCE061A的語音特色,利用系統的語音播放和語音識別資源,實現語音控制的功能;3.可以在行走過程中聲控改變小車運動狀態;4.在超出語音控制范圍時能夠自動停車。

在對編程基礎知識了解后,基于對題目要求的理解和思考,我們確定實現方案。可以通過簡單的I/O操作實現小車的前進、后退、左轉、右轉功能;配合SPCE061A的語音特色,利用系統的語音播放和語音識別資源,實現語音控制的功能;可以在行走過程中聲控改變小車的運動狀態;實現能自動往返于起跑線與終點線間的智能流程,并具備人工遙控(我們選用語音控制)的功能。4總體設計4.1系統結構方案系統的結構框圖如圖5所示:圖5系統的結構框圖系統組成主要包括以下兩部分:SPCE061A精簡開發板、語音小車控制電路板。圖中的語音輸入部分MIC_IN、按鍵輸入KEY、聲音輸出部分的功率放大環節等已經做到了精簡開發板——61板上,為我們使用提供了很大的方便。在電機的驅動方面,采用全橋驅動技術,利用四個I/O端口分為兩組分別實現兩個電機的正轉、反轉和停三態運行。4.2系統控制方案小車的運動控制采用語音控制和中斷定時控制相結合,通過語音觸發小車動作,小車動作之后,隨時可以通過語音指令改變小車的運動狀態。在每一次動作觸發的同時啟動定時器,如果小車由于某些原因不能正常的接收語音指令,則只要定時時間到,中斷服務程序會發出指令讓小車停下來。5硬件設計說明小車分為三大部分:車體部分、61板、控制板。車體部分:小車車體主要為兩個電機驅動裝置,分前輪(方向)驅動和后輪(動力驅動)。在車體的下面有一個可以安裝3節AA電池的電池盒,整個小車的電源就是由它來提供的。在小車的底部有一個紅色的小開關,它負責控制整個小車的電源開通與關斷。61板:61板是小車的核心部分,它負責整個小車控制信號的產生,以及語音的播放和識別功能實現的。在不使用小車時可以將61板從小車上拆下來,61板仍然是完整的,可以用它來做其它的實驗或開發。控制板:系統的硬件方面,由于大部分的功能實現都是在61板上完成的,只有電機控制部分電路另外設計在一塊獨立的電路板上,我們稱之為控制板。控制板負責將來自61板的控制信號轉化為能夠驅動電動機的信號。下面詳細介紹小車的結構和運行原理以及控制電路板的結構和功能實現。5.1車體介紹語音控制小車為四輪結構,如圖6、7所示。其中前面兩個車輪由前輪電機控制,在連桿和支點作用下控制前輪左右擺動,來調節小車的前進方向。在自然狀態下,前輪在彈簧作用下保持中間位置。后面兩個車輪由后輪電機驅動,為整個小車提供動力。所以又稱前面的輪子為方向輪,后面的兩個輪子為驅動輪。圖6車體側視圖圖7車體頂視圖5.1.1小車的行走原理直走:由小車的結構分析,在自然狀態下,前輪在彈簧作用下保持中間狀態,這是只要后輪電機正轉小車就會前進,如圖8所示;倒車:倒車動作和前進動作剛好相反,前輪電機仍然保持中間狀態,后輪電機反轉,小車就會向后運動,如圖9所示;左轉:前輪電機逆時針旋轉(規定為正轉),后輪電機正轉,這時小車就會在前后輪共同作用下朝左側前進,如圖10所示;右轉:前輪電機反轉,后輪電機正轉,這時小車就是會在前后輪共同作用下朝右側前進,如圖11所示。圖8小車直走示意圖圖9小車倒車示意圖圖10小車左轉示意圖圖11小車右轉示意圖5.2控制板原理圖控制板主要包括:接口電路、電源電路和兩路電機的驅動電路,控制板原理圖如圖12所示。圖12控制板原理圖接口電路:接口電路負責將61板的I/O接口信號傳送給控制電路板,I/O信號主要為控制電機需要的IOB8~IOB11這四路信號,同時為了方便后續的開發和完善,預留了IOB12~IOB15以及IOA8~IOA15接口,可以在這些接口上添加一些傳感器。電源部分:整個小車有4個電源信號:電池電源,控制板工作電源,61板工作電源,61板的I/O輸出電源。系統供電由電池提供,控制板直接采用電池供電(VCC),然后經二極管D1后產生61板電源(VCC_61),通過61板的Vio跳線產61板的端口電源(V1)。二極管D作用:1、降壓,4節電池提供的電壓VCC最大可達到6V,D1可有效地降壓。2、保護,D1可以防止電源接反燒壞61板。5.2.1全橋驅動原理全橋驅動又稱H橋驅動,下面介紹一下H橋的工作原理:H橋一共有四個臂,分別為B1~B4,每個臂由一個開關控制,示例中為三極管Q1~Q4。如果Q1、Q2導通Q3、Q4關斷,如圖13所示,此時電流將會流經Q1、負載、Q2組成的回路,電機正轉。如果讓Q1、Q2關斷Q3、Q導通,如圖14所示,此時電流將會流經Q3、負載、Q4組成的回路,電機反轉。如果讓Q1、Q2關斷Q3、Q4也關斷,負載Load兩端懸空,如圖15所示,此時電機停轉。這樣就實現了電機的正轉、反轉、停止三態控制。如果讓Q1、Q2導通Q3、Q4也導通,那么電流將會流經Q1、Q4組成的回路以及Q2和Q3組成的回路,如圖16所示,這時橋臂上會出現很大的短路電流。在實際應用時注意避免出現橋臂短路的情況,這會給電路帶來很大的危害,嚴重的會燒毀電路。圖13B1、B2工作時的電路簡圖圖14B3、B4工作時的電路簡圖圖15B1~B4全部停止工作時的電路簡圖圖16B1~B4全部工作時的電路簡圖5.2.2動力電機驅動電路動力驅動由后輪驅動實現,負責小車的直線方向運動,包括前進和后退,后輪驅動電路是一個全橋驅動電路,如圖17所示:Q1、Q2、Q3、Q4四個三極管組成四個橋臂,Q1和Q4組成一組,Q2和Q3組成一組,Q5控制Q2、Q3的導通與關斷,Q6控制Q1和Q4的導通與關斷,而Q5、Q6由IOB9和IOB8控制,這樣就可以通過IOB8和IOB9控制四個橋臂的導通與關斷控制后輪電機的運行狀態,使之正轉反轉或者停轉,進而控制小車的前進和后退。圖17后輪電機驅動電路當IOB8為高電平、IOB9為低電平時Q1和Q4導通,Q2和Q3截止,后輪電機正轉,小車前進;反之當IOB8為低電平、IOB9為高電平時Q1和Q4截止,Q2和Q3導通,后輪電機反轉,小車倒退;而當IOB8、IOB9同為低電平時Q1、Q2、Q3和Q4都截止,后輪電機停轉,小車停止運動。注意:IOB8和IOB9不能同時置高電平,這樣會造成后輪驅動全橋短路現象。5.2.3方向電機控制電路方向控制由前輪驅動實現,包括左轉和右轉,前輪驅動電路也是一個全橋驅動電路,如圖18所示:Q7、Q8、Q9、Q10四個三極管組成四個橋臂,Q7和Q10組成一組,Q8和Q9組成一組,Q11控制Q8、Q9的導通與關斷,Q12控制Q7和Q10的導通與關斷,而Q11、Q12由IOB10和IOB11控制,這樣就可以通過IOB10和IOB11控制前輪電機的正轉和反轉,進而控制小車的左轉和右轉。圖18前輪電機驅動電路當IOB10為高電平、IOB11為低電平時Q8和Q9導通,Q7和Q10截止,前輪電機正轉,小車前輪朝左偏轉;反之當IOB10為低電平、IOB11為高電平時Q8和Q9截止,Q7和Q10導通,前輪電機反轉,小車前輪朝右偏轉;而當IOB10、IOB11同為低電平時Q8和Q9截止,Q7和Q10也截止,前輪電機停轉,在彈簧作用下前輪被拉回到中間位置,保持直向。注意:IOB10、IOB11不能同時為高電平,這樣會造成前輪驅動全橋的橋臂短路。結合以上對前輪和后輪的狀態分析,得到小車的運行狀態與輸入的對照表,如表1所示:表1基本的輸入與小車運動狀態對照表IBO11IBO10IBO9IBO8后電機前電機小車0000停轉停轉停0001正轉停轉前進0010反轉停轉倒退0101正轉正轉左前轉1001正轉反轉右前轉另外還有一些不常用的運行狀態,比如右后轉、左后轉等,結合以上對前輪和后輪的狀態分析,其端口對照如表4-2所示:表2輸入與小車運動狀態對照表IBO11IBO10IBO9IBO8后電機前電機小車0110正轉正轉右后轉1010正轉反轉左后轉注意:為了小車的安全請不要出現以下兩種組合情況:表3禁止的輸入狀態列表IBO11IBO10IBO9IBO8后電機前電機小車**111停轉*停11***停轉停6軟件設計說明6.1軟件設計思想系統軟件設計SPCE061A提供了很好的語音播放和錄制機制以及簡單的API接口編程,大大簡化了小車的軟件設計。在此主要闡述,語音辨識(包括:初始化部分、訓練部分、識別部分以及重訓部分)以及定時中斷控制部分的軟件設計。6.2系統的程序流程圖19系統總體程序流程圖語音遙控小車的主程序流程如圖19所示,分為四大部分:初始化部分、訓練部分、識別部分、重訓操作。初始化部分:初始化操作將IOB8~IOB11設置為輸出端,用以控制電機。必要時還要有對應的輸入端設置和PWM端口設置等。訓練部分:訓練部分完成的工作就是建立語音模型。程序一開始判斷小車是否被訓練過,如果沒有訓練過則要求對其進行訓練,并且會在訓練成功之后將訓練的模型存儲到FLASH,在以后使用時不需要重新訓練;如果已經訓練過會把存儲在FLASH中的模型調出來裝載到辨識器中。識別部分:在識別環節當中,如果辨識結果是名字,則進入自動往返流程狀態。如果辨識結果為動作指令小車會語音告知相應動作并執行該動作。重訓操作:考慮到有重新訓練的需求,設置了重新訓練的按鍵(61板的KEY3),循環掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓練標志位(0xe000單元),并等待復位。復位后,程序重新執行,當檢測到訓練標志位為0xffff時會要求重新對其進行訓練。下面詳細介紹以上提到的子程序。6.2.1語音識別的原理簡介在介紹子程序之前首先介紹一下語音識別的原理。語音識別的具體流程圖如圖20所示:圖20語音識別流程說明框圖語音識別主要分為“訓練”和“識別”兩個階段。在訓練階段,單片機對采集到的語音樣本進行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機對采集到的語音樣本也進行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進行對比,如果二者達到了一定的匹配度,則輸入的語音被識別。6.2.2訓練子函數圖21訓練流程圖當程序檢測到訓練標志位BS_Flag內容為0xffff,就會要求操作者對它進行訓練操作,訓練操作的過程如圖21所示:訓練采用兩次訓練獲取結果的方式,以訓練名字為例:小車首先會提示:給我取個名字吧,這時你可以告訴它一個名字;然后它會提示:請再說一遍,這時再次告訴它名字,如果兩次的聲音差別不大,小車就能夠成功的建立模型,名稱訓練成功;如果沒能夠成功的建立模型,小車會告知失敗的原因并要求重新訓練。成功訓練名稱后會給出下一條待訓練指令提示音:前進,參照名稱訓練方式訓練前進指令。依次訓練小車的名稱—前進指令—倒車指令—左轉指令—右轉指令,全部訓練成功子程序返回,訓練結束。下面是訓練部分的子程序,在訓練時如果訓練不成功TrainWord()返回值不為0,要求重復訓練,只有當訓練成功,TrainWord()返回0,進行下一條指令訓練。voidTrainSD(){while(TrainWord(NAME_ID,S_NAME)!=0);//訓練名稱while(TrainWord(COMMAND_GO_ID,S_ACT1)!=0);//訓練第1個動作while(TrainWord(COMMAND_BACK_ID,S_ACT2)!=0);//訓練第2個動作while(TrainWord(COMMAND_LEFT_ID,S_ACT3)!=0);//訓練第3個動作while(TrainWord(COMMAND_RIGHT_ID,S_ACT4)!=0);//訓練第4個動作}6.2.3語音識別子程序圖22語音識別部分流程圖

語音識別流程如圖22所示:首先獲取辨識器的辨識結果,判斷是否有語音觸發,如果有語音觸發則會返回識別結果的ID號,ID號對應名稱或者對應不同的動作。如果ID號為名稱,則進入運動自動往返程序流程;如果ID號為動作,則語音告知將要執行的動作,并執行該動作。

6.2.4動作子程序動作子程序包括:前進、倒車、左拐、右拐、自動往返子程序。

前進:由小車的結構原理和驅動電路分析知:只要IOB8為高電平,IOB9,IOB10,IOB11全部為低電平即可實現小車的前進。前進子程序包括語音提示、置端口數據、啟動定時器操作。voidGoAhead()//前進{PlaySnd(S_ACT1,3);//語音提示*P_IOB_Data=0x0100;//前進*P_INT_Mask|=0x0004;//開2Hz中斷__asm("intfiq,irq");uiTimecont=0;//清定時器}

倒車:由小車的結構原理分析和驅動電路分析知:只要IOB9為高電平,IOB8,IOB10,IOB11全部為低電平即可實現小車的倒退。倒退子程序包括語音提示、置端口數據、啟動定時器操作。voidBackUp()//倒退{PlaySnd(S_ACT2,3);//語音提示*P_IOB_Data=0x0200;//倒車*P_INT_Mask|=0x0004;//開2Hz中斷__asm("intfiq,irq");uiTimecont=0;//清定時器}

左轉:由小車的結構原理分析和驅動電路分析知:小車左轉需要兩個條件:1.前輪左偏2.后輪前進,這時對應的I/O狀態為:IOB8、IOB10為高電平,IOB9、IOB11為低電平。左轉子程序包括語音提示、置端口數據、啟動定時器操作。voidTurnLeft()//左轉{PlaySnd(S_GJG,3);//播放提示音*P_IOB_Data=0x0900;//前輪右偏Delay();//延時*P_IOB_Data=0x0500;//前輪左偏*P_INT_Mask|=0x0004;//打開2Hz中斷__asm("intfiq,irq");//允許總中斷uiTimecont=0;//清定時器}注:在左轉之前首先讓前輪右偏,然后再讓前輪朝左偏,這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實現轉彎。

右轉:由小車的結構原理分析和驅動電路分析知:小車右轉需要兩個條件:1.前輪右偏2.后輪前進,這時對應的I/O狀態為:IOB8、IOB11為高電平,IOB9、IOB10為低電平。右轉子程序包括語音提示、置端口數據、啟動定時器操作。

voidTurnLeft()//左轉{PlaySnd(S_GJG,3);//播放提示音*P_IOB_Data=0x0500;//前輪左偏Delay();//延時*P_IOB_Data=0x0900;//前輪右偏*P_INT_Mask|=0x0004;//打開2Hz中斷__asm("intfiq,irq");//允許總中斷uiTimecont=0;//清定時器}注:在右轉之前首先讓前輪左偏,然后再讓前輪朝右偏,這樣前輪的擺動范圍更大,慣性更大,擺幅也最大,能更好實現轉彎。6.2.5中斷控制流程雖然已經有了前進、后退以(通過直接呼叫小車的名字使其停車)等語音控制指令,但是考慮環境的干擾因素,小車運行時的噪音影響和有效距離的限制,小車運行后可能接收不到語音指令而一直運行。為了防止出現這種情況,加入了時間控制,在啟動小車運行的同時啟動定時器,定時器時間到停止小車的運行,該定時器借助于2Hz時基中斷完成,圖23所示為該程序的流程圖。可以在程序中修改uiTimeset參數來控制運行時間,當uiTimeset=2時,運行時間為1s,以此類推。圖232Hz中斷子函數7系統綜合7.1硬件連接調試過程圖24小車硬件連接圖硬件調試過程相對順利,實驗第一步就是按照實驗說明書對61板的元件進行焊接以及小車車體的連接安裝。由于車體焊接存在的問題,在程序調試過程中出現了一系列的硬件問題,但經過仔細分析后,這些問題都得到了解決,硬件的調試改進為軟件的實現調試打下了基礎。7.2程序調試過程分析

本次設計任務對軟件編寫調試的能力要求相對較高,程序調節是否順利決定了進度。由于初次接觸61的編程,所以在實習初期我們主要是學習和認知61的板以及61編程的基本知識,這是個學習深入的過程。

這個方案的確定是在查閱了,61資料“語音控制小車”的實現程序后得到的思路。基于對現有程序框架的理解,我們加入了自動往返程序流程。當然,程序的調試是不可能一兩次就能成功的。這其中遇到的問題有很多,其中就有硬件的問題以及對61編程的知識的理解的不夠而出現的調試困難。7.3總體結果分析

本設計綜合應用了SPCE061A豐富的軟硬件資源,成功的實現了語音控制功能。標準的C語言編程,豐富的語音資源函數為編程提供了很大的方便。該設計方案結構簡單,以單芯片實現了語音播放與識別以及電機控制功能,相當于“語音識別芯片+普通單片機”的功能。但是比“語音識別芯片+普通單片機”。該語音控制小車操作比較簡單,訓練和識別成功的幾率也比較高,是一個典型的語音識別方案。參考文獻[1].童詩白,華成英.模擬電子技術基礎(第三版)[M].高等教育出版社,2000.[2].雷思孝,李伯成等.單片機原理及實用技術--凌陽16位單片機原理及應用[

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論