找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2179|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

語音識(shí)別跳舞機(jī)器人設(shè)計(jì)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:375381 發(fā)表于 2018-7-20 10:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1 緒論        1
1.1 選題的背景及意義        1
1.2 國內(nèi)外的研究現(xiàn)狀以及發(fā)展趨勢(shì)        1
1.3 工作的預(yù)期成果        2
1.4 主要研究?jī)?nèi)容        2
2 系統(tǒng)總體設(shè)計(jì)方案        2
3語音識(shí)別功能        3
3.1 LD3320語音模塊的介紹        3
3.2 LD3320主要特色功能        4
3.3 內(nèi)部單元模塊        4
3.4 關(guān)鍵詞的錄入        5
4 單片機(jī)及各個(gè)模塊的介紹        5
4.1 STC單片機(jī)簡(jiǎn)介        5
4.2 電機(jī)驅(qū)動(dòng)模塊        6
4.2.1 L298N芯片        6
4.2.2 PWM調(diào)速        6
4.3數(shù)碼管        7
4.3.1 數(shù)碼管的應(yīng)用        7
4.3.2 數(shù)碼管的結(jié)構(gòu)        7
4.4 穩(wěn)壓電路        8
4.5 加速、減速        9
5 系統(tǒng)軟、硬件設(shè)計(jì)        9
5.1 系統(tǒng)仿真及軟件設(shè)計(jì)        9
5.2 實(shí)物圖        12
結(jié)論        12
參考文獻(xiàn)        14
附錄        15
致謝        22




1 緒論
1.1 選題的背景及意義
當(dāng)前,機(jī)器人只是能夠?qū)θ祟愡M(jìn)行簡(jiǎn)單模仿。這遠(yuǎn)遠(yuǎn)達(dá)不到人類所需求的功能。人們一直都在尋求一種方式能讓機(jī)器識(shí)別出人類語言。因此,為了適應(yīng)人類科學(xué)技術(shù)的發(fā)展與對(duì)于人機(jī)交流日益增長(zhǎng)的需求,語音識(shí)別技術(shù)應(yīng)運(yùn)而生。比如玩具市場(chǎng),擁有高科技技術(shù)的智能化玩具發(fā)展迅速。電子化的玩具逐漸取代傳統(tǒng)的玩具成為發(fā)展潮流。雖然我國是玩具生產(chǎn)大國,但在高科技玩具領(lǐng)域依然有很大的發(fā)展空間。所以,增加對(duì)該方面研究的重視程度,在技術(shù)的創(chuàng)新方面和推動(dòng)我國經(jīng)濟(jì)快速發(fā)展的方面,都有其現(xiàn)實(shí)的意義。除此之外,機(jī)器人還能夠取代我們完成危險(xiǎn)性的工作或者具有重復(fù)性以及精確度高的工作。利用語音識(shí)別的方法,機(jī)器人可以把人類所說的話轉(zhuǎn)化為機(jī)器人可識(shí)別命的令。與機(jī)器人進(jìn)行語音交互是人類夢(mèng)寐以求的事情。最近幾年,語音識(shí)別技術(shù)的發(fā)展迅猛,成績(jī)顯著且逐漸步入市場(chǎng)。
1.2 國內(nèi)外的研究現(xiàn)狀以及發(fā)展趨勢(shì)
近幾年,單片機(jī)越來越便宜,使用的數(shù)量越來越多。國外機(jī)器人性能越來越強(qiáng),器件集成化,模塊化逐漸成為發(fā)展趨勢(shì)。其不僅方便使用還在很大程度上減小維修時(shí)的工作量�;赑C機(jī)的開放型控制器逐漸代替?zhèn)鹘y(tǒng)的模式成為新型的高科技技術(shù)。目前機(jī)器人的特點(diǎn)不再是追求全自治系統(tǒng)而是追求人機(jī)交互技術(shù)。除此之外,新興起的VR技術(shù)也在機(jī)器人中得到很大的應(yīng)用。
機(jī)器人的制造及應(yīng)用水平,代表了一個(gè)國家的制造業(yè)水平,發(fā)展機(jī)器人產(chǎn)業(yè)應(yīng)上升到國家戰(zhàn)略高度。機(jī)器人的廣泛使用是我國從制造業(yè)大國走向制造業(yè)強(qiáng)國的重要手段和途徑。
我國對(duì)機(jī)器人的學(xué)習(xí)起步時(shí)間相比于國外較晚,但發(fā)展迅猛,在國內(nèi)外占據(jù)了一定的市場(chǎng)。從1970-1980的剛剛開始起步,到1980-1990進(jìn)行逐步探索,再到1990至今開始應(yīng)用,我國機(jī)器人發(fā)展越來越快。蛇形機(jī)器人的問世表明我國制造機(jī)器人的能力又向前邁進(jìn)了一大步。
對(duì)于我國來說,機(jī)器人的制造還存在局限性。在機(jī)器人的制造時(shí)還有部分零件需要進(jìn)口,不能實(shí)現(xiàn)獨(dú)立自主的創(chuàng)造。所以未來的工作主要是研究機(jī)器人的核心控制器。該控制器還需具有自主性,實(shí)現(xiàn)從中國制造向中國創(chuàng)造的轉(zhuǎn)變。除此之外,還應(yīng)形成一個(gè)完善的標(biāo)準(zhǔn),實(shí)現(xiàn)模塊化的結(jié)構(gòu),以便于后期的改造集成。更好的與傳感器結(jié)合,結(jié)合VR技術(shù)以及正在蓬勃發(fā)展的人機(jī)交互技術(shù)才能更好的實(shí)現(xiàn)智能化。
綜合國內(nèi)外機(jī)器人研究和應(yīng)用現(xiàn)狀,機(jī)器人的研究正在超智能化、模塊化、系統(tǒng)化、微型化、多功能化及高性能、自診斷、自修復(fù)趨勢(shì)發(fā)展,以適應(yīng)多樣化、個(gè)性化的需求向更大更寬廣的應(yīng)用領(lǐng)域發(fā)展。
1.3 工作的預(yù)期成果
本次設(shè)計(jì)希望能夠通過LD3320語音識(shí)別模塊識(shí)別語音指令并把相似度最高的關(guān)鍵字所代表的內(nèi)容發(fā)送給單片機(jī),以達(dá)到控制機(jī)器人前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn)和加減速的目的,同時(shí)可以使數(shù)碼管顯示“1”,“2”,“3” 或“4”。
1.4 主要研究?jī)?nèi)容
本文主要研究當(dāng)機(jī)器人加入了語音識(shí)別功能時(shí)出現(xiàn)的問題及解決辦法。語音識(shí)別的實(shí)現(xiàn)分為3部分:關(guān)鍵字的寫入,ID的設(shè)置,識(shí)別過程。除此之外,還詳細(xì)描述語音識(shí)別系統(tǒng)將識(shí)別結(jié)果傳遞給主控單片機(jī)后,單片機(jī)是如何驅(qū)動(dòng)電機(jī)以及如何對(duì)數(shù)碼管進(jìn)行控制。
根據(jù)以上內(nèi)容,我們可以大致了解本次設(shè)計(jì)所需要做的工作。下面,我們著重介紹該語音識(shí)別機(jī)器人系統(tǒng)的總體設(shè)計(jì)方案。
2 系統(tǒng)總體設(shè)計(jì)方案
本次設(shè)計(jì)中,首先通過麥克風(fēng)將語音信號(hào)傳入語音識(shí)別芯片,當(dāng)語音模塊與參考模式庫中的關(guān)鍵詞列表相比對(duì)后,將識(shí)別結(jié)果傳送給主控制器。然后,主控制器分別控制數(shù)碼管的顯示和直流電機(jī)轉(zhuǎn)動(dòng)。
語音識(shí)別機(jī)器人原理圖如下:
圖2-1 語音識(shí)別機(jī)器人原理
本次設(shè)計(jì)分為兩個(gè)大的部分:語音識(shí)別部分和由STC控制的電路部分。第一步,語音識(shí)別模塊部分和由STC控制的電路部分都進(jìn)行初始化工作,主要包括變量的設(shè)定,設(shè)置定時(shí)器的工作方式,還有關(guān)于中斷的設(shè)置等。然后對(duì)語音模塊寫入關(guān)鍵詞列表,打開循環(huán)系統(tǒng),檢測(cè)是否有信號(hào)觸發(fā)系統(tǒng)工作,如果是,則開始定時(shí)。在此次定時(shí)結(jié)束之前,檢測(cè)是否有聲音的輸入,如果有,就進(jìn)行匹配;沒有的話,就開始下一次的循環(huán)。通過頻譜分析的方法檢測(cè)是否為關(guān)鍵詞列表中的詞,不是的話就進(jìn)行下一次循環(huán),是的話就作為最佳的結(jié)果輸出給單片機(jī)的P3^0到P3^7引腳,并由單片機(jī)控制數(shù)碼管和電機(jī)。
圖2-2為實(shí)現(xiàn)該語音識(shí)別機(jī)器人的流程圖。

圖2-2 語音識(shí)別機(jī)器人流程圖
接下來,介紹本次設(shè)計(jì)中的語音識(shí)別部分的知識(shí)。
3語音識(shí)別功能
3.1 LD3320語音模塊的介紹
LD3320芯片的優(yōu)勢(shì)是其采用了非特定人語音識(shí)別技術(shù)。即任何人在指令正確的前提下,都可以控制�;贚D3320可以輕松實(shí)現(xiàn)多人使用的功能。
語音識(shí)別是完成語音控制的核心技術(shù)。通過語音實(shí)現(xiàn)人機(jī)交互成為目前研究的難點(diǎn)和熱點(diǎn)。這次設(shè)計(jì)所用到的語音模塊是運(yùn)用STC11L08XE單片機(jī),配合ICRoute公司的高性能LD3320語音識(shí)別芯片,分別實(shí)現(xiàn)語言控制系統(tǒng)的主控制模塊、總體結(jié)構(gòu)和語音識(shí)別模塊的軟硬件設(shè)計(jì)。運(yùn)用該模塊實(shí)現(xiàn)了基于非特定人語音識(shí)別系統(tǒng)的設(shè)計(jì)。
語音的識(shí)別過程主要有兩個(gè)階段:訓(xùn)練階段與識(shí)別階段。無論是訓(xùn)練還是識(shí)別階段,輸入的語音都必須經(jīng)過預(yù)處理和特征提取兩個(gè)過程。其中訓(xùn)練階段是利用用戶輸入的多次訓(xùn)練語音,通過預(yù)處理和特征提取兩個(gè)過程,得到特征參數(shù),最后利用特征參數(shù)建模,完成訓(xùn)練語音參考模型庫的建立。識(shí)別階段是將輸入的語音特征矢量參數(shù)和參考模式庫中的參考模型進(jìn)行相似性度量比較,然后把相似度最高的輸入特征矢量作為識(shí)別結(jié)果輸出,從而達(dá)到語音識(shí)別的目的。
工作原理圖如圖3-1所示:

圖3-1語音識(shí)別原理框圖
3.2 LD3320主要特色功能
1、非特定人語音識(shí)別技術(shù):不需要用戶進(jìn)行錄音訓(xùn)練。
2、可動(dòng)態(tài)編輯的識(shí)別關(guān)鍵詞語列表:只需要把識(shí)別的關(guān)鍵詞語以字符串的形式傳送進(jìn)芯片,即可以在下次識(shí)別中立即生效。比如,用戶在單片機(jī)的編程中,簡(jiǎn)單地通過設(shè)置芯片的寄存器,把諸如“你好”這樣的識(shí)別關(guān)鍵詞的內(nèi)容動(dòng)態(tài)地傳入芯片中,芯片就可以識(shí)別這樣設(shè)定的關(guān)鍵詞語了。
3、真正單芯片解決方案:不需要任何外接的輔助Flash和RAM,真正降低系統(tǒng)成本。
4、內(nèi)置高精度A/D和D/A通道:不需要外接AD芯片,只需要把麥克風(fēng)接在芯片的AD引腳上。
5、高準(zhǔn)確度和實(shí)用的語音識(shí)別效果。
6、支持用戶自由編輯50條關(guān)鍵詞語:在同一時(shí)刻,最多在50條關(guān)鍵詞語中進(jìn)行識(shí)別,終端用戶可以根據(jù)場(chǎng)景需要,隨時(shí)編輯和更新這50條關(guān)鍵詞語的內(nèi)容。
3.3 內(nèi)部單元模塊
LD3320語音識(shí)別模塊的主控制單元STC11L08XE能更好的處理數(shù)據(jù)且輸入輸出端口方便控制。其內(nèi)部就包含一個(gè)很可靠的復(fù)位電路,適用于干擾大,速度要求快的環(huán)境。其內(nèi)部包含CPU、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、定時(shí)器、計(jì)數(shù)器、輸入輸出接口、看門狗、片內(nèi)\片外振蕩電路、UART串口等。
3.4 關(guān)鍵詞的錄入
關(guān)鍵詞列表的形成是LD3320中關(guān)鍵的部分。STC11L08XE單片機(jī)可以在收到外部一個(gè)觸發(fā)后,啟動(dòng)定時(shí)識(shí)別過程并且在這個(gè)時(shí)間段內(nèi)說出想要識(shí)別的關(guān)鍵詞語。超過這個(gè)時(shí)間后,需要用戶再次觸發(fā)才能啟動(dòng)一個(gè)識(shí)別過程。也可以使用反復(fù)識(shí)別的方法,沒有語音時(shí),則識(shí)別過程定時(shí)結(jié)束后再啟動(dòng)一個(gè)新的識(shí)別過程。有語音時(shí),則在根據(jù)識(shí)別作相應(yīng)處理后,再次開啟新的識(shí)別過程。當(dāng)需要的關(guān)鍵詞語錄入完畢后,可以適當(dāng)錄入一些類似的詞語。這些類似的詞被稱作“垃圾關(guān)鍵詞語”,這是為了減少錯(cuò)誤識(shí)別的情況。例如,針對(duì)“北京”這個(gè)詞,我們可以在補(bǔ)充“北方”,“南京”這種類似的詞。當(dāng)識(shí)別出“北京”后,我們可以斷定結(jié)果是正確的。如果出現(xiàn)“北方”,“南京”,就可以判斷是由于雜音造成的錯(cuò)誤,并且接著啟動(dòng)一次檢測(cè)。采用該方法,可以很大程度上減少錯(cuò)誤識(shí)別出現(xiàn)的情況。因?yàn)橹挥凶R(shí)別結(jié)果在所指定的關(guān)鍵詞中才被認(rèn)為是有效的詞語。
關(guān)鍵詞語的錄入是通過拼音串的形式錄入模塊中的。在錄入拼音串時(shí)要同步錄入相應(yīng)的ID。用這個(gè)ID指代該關(guān)鍵詞語。相應(yīng)的,語音模塊識(shí)別出相似度最高的詞也是通過該ID傳出。終端用戶在說語音指令時(shí),可能對(duì)同一詞匯有不同的發(fā)音習(xí)慣。比如“打開電燈”和“開燈”,“打開燈”,“把燈打開”。我們可以用同一個(gè)ID來指代這些意思相同的詞匯。另外,還可以把添加的垃圾關(guān)鍵詞語的ID都標(biāo)記為一個(gè)值。這樣在程序中就很容易識(shí)別錯(cuò)誤的詞匯。
充分利用LD3320的50條可動(dòng)態(tài)編輯的關(guān)鍵詞語,開發(fā)者可以把這些習(xí)慣發(fā)音都設(shè)置進(jìn)芯片,這樣無論用戶怎么說,都會(huì)被識(shí)別出來,進(jìn)一步增加終端用戶的良好體驗(yàn)。
4 單片機(jī)及各個(gè)模塊的介紹
4.1 STC單片機(jī)簡(jiǎn)介
單片機(jī)全稱是單片微型計(jì)算機(jī),內(nèi)部主要是將5個(gè)部分集成在芯片內(nèi),這5個(gè)部分分別為中央處理器、定時(shí)/計(jì)數(shù)器、只讀存儲(chǔ)器、隨機(jī)存儲(chǔ)器以及輸入和輸出接口電路。
隨著單片機(jī)的發(fā)展,適用于不同領(lǐng)域的單片機(jī)逐漸出現(xiàn)。單片機(jī)的優(yōu)勢(shì)是其在計(jì)算方面很強(qiáng)大并且計(jì)算用的時(shí)間很短。單片機(jī)的優(yōu)勢(shì)確保了其能夠應(yīng)用的行業(yè)非常全面,早就作為各行各業(yè)中的智能化器件,對(duì)各行各業(yè)的產(chǎn)品技術(shù)改造起到了不容忽視的作用。
在眾多的51系列單片機(jī)中,要算國內(nèi)STC公司的1T增強(qiáng)系列更具有競(jìng)爭(zhēng)力,因他不但和8051指令、管腳完全兼容,而且其片內(nèi)的具有FLASH工藝的大容量程序存儲(chǔ)器。STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,3個(gè)16位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外STC89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式�?臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。
4.2 電機(jī)驅(qū)動(dòng)模塊
4.2.1 L298N芯片
電機(jī)驅(qū)動(dòng)模塊部分所用的芯片為L(zhǎng)298N芯片,有4通道邏輯驅(qū)動(dòng)電路。內(nèi)含2個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接受標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。該芯片所采用的SMT工藝具有穩(wěn)定性高的特點(diǎn)。該模塊可以直接控制兩路直流電機(jī),方便控制直流電機(jī)速度和方向。
L298N有邏輯電源和動(dòng)力電源兩路電源,5V為邏輯電源,7.2V為動(dòng)力電源。EN_A、EN_B控制電機(jī)是否使能,IN1、IN2、IN3、IN4控制電機(jī)的正轉(zhuǎn)反轉(zhuǎn)以及轉(zhuǎn)速。本次使用的電機(jī)是線圈式的,從運(yùn)行狀態(tài)突然轉(zhuǎn)換到停止?fàn)顟B(tài)和從順時(shí)針狀態(tài)突然轉(zhuǎn)到逆時(shí)針狀態(tài)時(shí)會(huì)形成很大的反向電流,在電路中加上二極管的作用就是在產(chǎn)生反向電流的時(shí)候進(jìn)行泄流,保護(hù)芯片安全。
L298N的邏輯功能為當(dāng)EN_A,EN_B均為低電平時(shí),兩個(gè)電機(jī)沒有通電而不會(huì)工作或者斷電處于一種剎停狀態(tài)。當(dāng)EN_A,EN_B均為高電平時(shí),兩個(gè)電機(jī)使能,會(huì)根據(jù)IN1、IN2、IN3、IN4的狀態(tài)控制電機(jī)旋轉(zhuǎn)的方向以及速度。當(dāng)把“1”傳進(jìn)IN1端口,IN2為“0”時(shí),電動(dòng)機(jī)順著時(shí)間指針轉(zhuǎn),當(dāng)IN1為“0”,“1”信號(hào)傳進(jìn)IN2時(shí),電動(dòng)機(jī)就會(huì)以相反的方向轉(zhuǎn)。
4.2.2 PWM調(diào)速
PWM(脈沖寬度調(diào)制)是通過控制固定電壓的直流電源開關(guān)頻率,改變負(fù)載兩端的電壓,從而達(dá)到控制要求的一種電壓調(diào)整方法。PWM可以應(yīng)用在許多方面,比如:電機(jī)調(diào)速、溫度控制、壓力控制等等。
在PWM驅(qū)動(dòng)控制的調(diào)整系統(tǒng)中,按一個(gè)固定的頻率來接通和斷開電源,并且根據(jù)需要改變一個(gè)周期內(nèi)“接通”和“斷開”時(shí)間的長(zhǎng)短。通過改變直流電機(jī)電樞上電壓的“占空比”來達(dá)到改變平均電壓大小的目的,從而來控制電動(dòng)機(jī)的轉(zhuǎn)速。
圖4-1 PWM調(diào)速方波圖
上圖的方波周期為10ms,由圖顯而易見每個(gè)周期的脈沖寬度并不同。這是由于每個(gè)周期的占空比不同。明顯可以看出上圖為數(shù)字信號(hào),為了使其能控制模擬電路,我們可以改變?cè)摲讲ǖ闹芷�。假設(shè)方波的周期很小很小,這時(shí)電機(jī)的轉(zhuǎn)速就會(huì)顯示不同的狀態(tài)。假設(shè)一個(gè)時(shí)間段內(nèi)都是“1”時(shí),輪子順時(shí)針旋轉(zhuǎn),那么如果一個(gè)時(shí)間段內(nèi)“1”持續(xù)的時(shí)長(zhǎng)是9ms,轉(zhuǎn)速就會(huì)小于該時(shí)間段內(nèi)都是“1”時(shí)的轉(zhuǎn)速。這樣就能夠通過改變電平高低持續(xù)的時(shí)間來達(dá)到改變輪子轉(zhuǎn)速的目的。該方法不僅化簡(jiǎn)了硬件電路而且降低設(shè)計(jì)成本。
4.3數(shù)碼管
4.3.1 數(shù)碼管的應(yīng)用
共陰極數(shù)碼管是一類數(shù)字形式的顯示屏,通過對(duì)其不同的管腳輸入不同的電流,會(huì)使其發(fā)亮,從而能夠顯示時(shí)間、日期、溫度等所有可用數(shù)字表示的參數(shù)。由于它的價(jià)格便宜、使用簡(jiǎn)單、在電器,特別是家電領(lǐng)域應(yīng)用極為廣泛,空調(diào)、熱水器等等。絕大多數(shù)熱水器用的都是數(shù)碼管,部分家電使用液晶屏與熒光屏。
4.3.2 數(shù)碼管的結(jié)構(gòu)
在共陰極數(shù)碼管結(jié)構(gòu)中,各段發(fā)光二極管的陰極連在一起并且接地,某段發(fā)光二極管輸入為高電平時(shí),該段發(fā)光。一位數(shù)碼管的每一段劃都由一個(gè)發(fā)光二極管點(diǎn)亮,所以,一位數(shù)碼管有7個(gè)發(fā)光二極管構(gòu)成(加上小數(shù)點(diǎn)有8位)。
在a-dp各個(gè)引腳分別輸送高低電平,可以使數(shù)碼管分別表現(xiàn)出“0”-“9”,如要顯示“1”時(shí),要求b、c引腳輸入為高電平,a、d、e、f、g、dp輸入為低電平, 16進(jìn)制表示方式為“0x06”。
共陰極數(shù)碼管中的0-9的16進(jìn)制表示方法如下:
字符:  0     1     2      3     4     5     6     7     8     9     
字段碼:0x3f  0x06  0x5b   0x4f  0x66  0x6d  0x7d  0x07  0x7f  0x6f
下圖即為數(shù)碼管的結(jié)構(gòu):


圖4-2 數(shù)碼管原理圖
4.4 穩(wěn)壓電路
三端穩(wěn)壓集成電路LM7805。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。
圖4-3 電源模塊原理圖
外接一個(gè)電容用于穩(wěn)定LM7805內(nèi)部放大器的工作狀態(tài),同時(shí)改善電壓調(diào)整的過渡響應(yīng)。它的數(shù)值為生產(chǎn)廠家規(guī)定值,不得小于0.1微法,它的連接必須盡可能緊連LM7805的3腳。
4.5 加速、減速
整個(gè)系統(tǒng)的加速減速主要是通過兩個(gè)按鍵進(jìn)行控制,按鍵按下時(shí),系統(tǒng)的速度就會(huì)改變。下圖即為原理圖,當(dāng)按下上邊的按鍵時(shí),系統(tǒng)減速,按下下邊按鍵時(shí),系統(tǒng)加速。
圖4-4 加、減速原理圖
下一章,我們將會(huì)介紹各個(gè)模塊如何相連接,并且通過什么方式控制機(jī)器人的各種狀態(tài)顯示。
5 系統(tǒng)軟、硬件設(shè)計(jì)
語音控制機(jī)器人的結(jié)構(gòu)中,占首要地位的電子元器件為STC89C52單片機(jī)。其次為L(zhǎng)D3320語音模塊,兩個(gè)直流電機(jī)和L298N模塊,以LM7805芯片為核心的穩(wěn)壓電路模塊,以共陰極數(shù)碼管為主的顯示電路和各種小器件。
5.1 系統(tǒng)仿真及軟件設(shè)計(jì)
該系統(tǒng)中麥克風(fēng)收到的語音指令傳入到LD3320芯片后,通過頻譜分析進(jìn)行特征提取,然后與關(guān)鍵詞列表進(jìn)行對(duì)比。最后,將識(shí)別結(jié)果傳輸給STC單片機(jī),然后由主控單片機(jī)控制數(shù)碼管的顯示以及兩個(gè)電機(jī),使機(jī)器人完成設(shè)計(jì)所要求的前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),加減速等運(yùn)動(dòng)狀態(tài)并且同步顯示“1”,“2”,“3”或“4”。
圖5-1 LD3320功能框圖
下面介紹的是我的設(shè)計(jì)中,編程的主函數(shù)的一部分。
while(1)
  {
        if(Y1==0&&Y2==1&&Y3==1&&Y4==1&&Y5==1){car_go(20+level*10,20+level*10);num=1;}//前進(jìn)
         else
if(Y1==1&&Y2==0&&Y3==1&&Y4==1&&Y5==1){car_back(20+level*10,20+level*10);num=2;}//后退        
         else
        if(Y1==1&&Y2==1&&Y3==0&&Y4==1&&Y5==1){car_go(20+level*10,0+level*10);num=3;}//左轉(zhuǎn)
         else
        if(Y1==1&&Y2==1&&Y3==1&&Y4==0&&Y5==1){car_go(0+level*10,20+level*10);num=4;}//右轉(zhuǎn)
        }
該程序的含義為設(shè)置一個(gè)無限循環(huán),對(duì)Y1、Y2、Y3、Y4、Y5進(jìn)行實(shí)時(shí)監(jiān)測(cè),不同狀態(tài)執(zhí)行不同命令。Y1、Y2、Y3、Y4、Y5即為L(zhǎng)D3320芯片接收到指令并且識(shí)別正確后向主控單片機(jī)輸出的信號(hào)。比如當(dāng)Y1=0、Y2=1、Y3=1、Y4=1、Y5=1時(shí),執(zhí)行car_go(20+level*10,20+level*10)命令,機(jī)器人前進(jìn)。
如下圖5-3即為仿真中Y1=0、Y2=1、Y3=1、Y4=1、Y5=1時(shí)的運(yùn)動(dòng)狀態(tài)和數(shù)碼管的顯示:
圖5-2 語音識(shí)別機(jī)器人仿真
圖5-3 語音模塊輸出實(shí)際仿真
語音識(shí)別部分的實(shí)質(zhì)也是通過輸入指令后,模塊輸出相應(yīng)的二進(jìn)制字符串。如上圖可以看出語音識(shí)別模塊的輸出分別與主控單片機(jī)的P3^0,P3^1,P3^2,P3^3,P3^6連接,并向其輸入Y1、Y2、Y3、Y4、Y5的值。
電機(jī)驅(qū)動(dòng)模塊的實(shí)物中2個(gè)電動(dòng)機(jī)分別分布于機(jī)器人底部的左右兩邊,而且可以在底部的前端加上一個(gè)萬向輪,其中電機(jī)支配的是位于前端2個(gè)輪子,后端輪子的功能主要是固定,撐起整個(gè)硬件。由下圖中右圖可以看出,L298N芯片的IN1與主控單片機(jī)的P1^2連接,IN2與P1^3連接,IN3與P1^4連接,IN4與P1^5連接,達(dá)到控制電機(jī)的轉(zhuǎn)向與速度的目的。控制電機(jī)是否已經(jīng)通電的EN_A,EN_B引腳與主控單片機(jī)的P1^0,P1^1連接。
下圖中,左圖為單片機(jī)最小系統(tǒng)。單片機(jī)的最小系統(tǒng)就是由盡可能簡(jiǎn)單的電子元器件搭配起一個(gè)能夠正常工作的系統(tǒng)。本次單片機(jī)最小系統(tǒng)應(yīng)用的電子器件有晶振,電容,電阻等。
圖5-4 單片機(jī)最小系統(tǒng)及電機(jī)模塊仿真圖
圖5-5 數(shù)碼管顯示電路
通過P0口輸出的值控制數(shù)碼管的顯示。主控單片機(jī)的2^4引腳,2^5引腳,2^6引腳,2^7引腳與數(shù)碼管的1,2,3,4相連來選擇數(shù)碼管是否通電。
5.2 實(shí)物圖

圖5-6 實(shí)物圖
結(jié)論
人工智能正在逐漸改變?nèi)祟愔車沫h(huán)境,不再只是電影上的設(shè)想。不管是一個(gè)小小的快遞分揀機(jī)器人,還是可以簡(jiǎn)單與人類交流的機(jī)器人,都對(duì)人類的生活起到了不可小覷的作用。浙江是我國快遞流動(dòng)量最大的地方,最近在網(wǎng)絡(luò)上大量被轉(zhuǎn)載的一個(gè)視頻中,小小的機(jī)器人每小時(shí)可以處理將近2000個(gè)快遞包裹。這種小機(jī)器人能夠井然有序的將快遞搬到需要投遞的地方,大大增加了快遞運(yùn)輸?shù)臅r(shí)效性。它們不僅能夠減少人工分揀時(shí)容易出現(xiàn)的錯(cuò)誤情況,還能大大減少人類的工作量。這個(gè)例子很好的說明智能機(jī)器人緊緊圍繞我們的生活,而且越來越大眾化。機(jī)器人的使用讓生產(chǎn)力大大地提高,能夠幫助人類完成一些復(fù)雜重復(fù)性的工作。
通過仿真結(jié)果,可以看出當(dāng)顯示“1”,電動(dòng)機(jī)均正轉(zhuǎn),機(jī)器人前進(jìn),顯示“2”,電動(dòng)機(jī)均反轉(zhuǎn),機(jī)器人后退,顯示“3”或“4”,電動(dòng)機(jī)一個(gè)正轉(zhuǎn)一個(gè)反轉(zhuǎn),機(jī)器人左轉(zhuǎn)或右轉(zhuǎn),顯示“0”,機(jī)器人剎停。本次設(shè)計(jì)利用了LD3320芯片去完成語音識(shí)別的機(jī)器人的設(shè)計(jì),省去了復(fù)雜的鍵盤輸入控制。并且可以實(shí)現(xiàn)非特定人控制的目的,大大提高了實(shí)用性,以便于以后投入市場(chǎng)。
畢業(yè)設(shè)計(jì)是對(duì)大學(xué)對(duì)好的總結(jié),不但考核了我們對(duì)于大學(xué)知識(shí)的學(xué)習(xí)是否牢固,而且考驗(yàn)了我們對(duì)于已經(jīng)掌握的知識(shí)使用是否靈活。同樣,這也是我們學(xué)習(xí)知識(shí)的過程,在完成畢業(yè)設(shè)計(jì)的同時(shí),我們能接觸到我們沒有接觸過的領(lǐng)域。這也是我們完善知識(shí)儲(chǔ)備的一個(gè)過程。


















參考文獻(xiàn)
[1] 李磊.移動(dòng)機(jī)器人技術(shù)研究現(xiàn)狀與未來[J].機(jī)器人,2002,24(5):475-480.
[2] 趙勻,武傳宇,胡旭東等.智能機(jī)器人的研究發(fā)展及存在的問題[J].農(nóng)業(yè)工程學(xué)報(bào),2003,19(1):20-22.
[3] 劉幺和,宋庭新.語音識(shí)別與控制應(yīng)用技術(shù)[M].北京:科學(xué)出版社,2008,24-30.
[4] 涂時(shí)亮.單片微機(jī)軟件設(shè)計(jì)技術(shù)[M].北京:科學(xué)技術(shù)文獻(xiàn)出版社重慶社分社,1988,24-25.
[5] 朱謹(jǐn)強(qiáng),王宣因.機(jī)器人技術(shù)及其應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(2):47-49.
[6] 陸子明.單片機(jī)設(shè)計(jì)與應(yīng)用教程[M]. 電子工業(yè)出版社.2003.5
[7] 張晨燕,孫成立.非特定人孤立詞語音識(shí)別系統(tǒng)的片上實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2007(13):194-196.
[8] 丁向榮.STC系列增強(qiáng)型8051單片機(jī)原理與應(yīng)用[M].北京:電子工業(yè)出版社.2011.6
[9] 陳國呈編著.PWM逆變技術(shù)及應(yīng)用[M].中國電力出版社.2007.7.
[10] 謝自美.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試[M]. 華中理工大學(xué)出版社.2006.9
[11] 宋慶環(huán),才衛(wèi)國,高志.89C51單片機(jī)在直流電動(dòng)機(jī)調(diào)速系統(tǒng)中的應(yīng)用[M]。唐山學(xué)院,2008.4.
[12] 陳錕,危立輝.基于單片機(jī)的直流電機(jī)調(diào)速器控制電路[J],中南民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2003.9.
[13] 李維軍,韓小剛,李晉.基于單片機(jī)用軟件實(shí)現(xiàn)直流電機(jī)PWM調(diào)速系統(tǒng)[J],維普資訊,2007.9.
[14] 張?chǎng)?單片機(jī)原理與應(yīng)用[M]. 電子工業(yè)出版社.2001.5
[15] 耿德根,詹衛(wèi)前,李青. 單片機(jī)創(chuàng)新開發(fā)與機(jī)器人制作[M]. 北京航天航天大學(xué).2004.7
[16]潘永雄.新編單片機(jī)原理與應(yīng)用[M]. 西安電子科技大學(xué)出版社.2002.9









附錄
//主函數(shù)
#include <STC12C5A60S2.h>
#include <intrins.h>
#include <DELAY.h>
#include <Robot_car.h>
#include <shumaguan.h>
#define uchar unsigned char
#define uint unsigned int
sbit Y1=P3^0;
sbit Y2=P3^1;
sbit Y3=P3^2;
sbit Y4=P3^3;
sbit Y5=P3^6;
sbit K1=P2^1;
sbit K2=P2^0;
char num=0;
char level=1;
void main(void)
{
  car_init();         
  Y1=Y2=Y3=Y4=Y5=1;         
  while(1)
  {
if(Y1==0&&Y2==1&&Y3==1&&Y4==1&&Y5==1){car_go(20+level*10,20+level*10);num=1;}//前進(jìn)
         else
if(Y1==1&&Y2==0&&Y3==1&&Y4==1&&Y5==1){car_back(20+level*10,20+level*10);num=2;}//后退        
         else
        if(Y1==1&&Y2==1&&Y3==0&&Y4==1&&Y5==1){car_go(20+level*10,0+level*10);num=3;}//左轉(zhuǎn)
         else
        if(Y1==1&&Y2==1&&Y3==1&&Y4==0&&Y5==1){car_go(0+level*10,20+level*10);num=4;}//右轉(zhuǎn)
         else
        if(Y1==1&&Y2==1&&Y3==1&&Y4==1&&Y5==0){car_go(20+level*10,0);num=5;delayus(100000);
car_back(20+level*10,20+level*10);num=6;         delayus(100000);
        car_go(0,20+level*10);num=7;          delayus(100000);
        car_go  (20+level*10,20+level*10);num=8;          delayus(100000); }//停止
         xianshi2(level,num);
         if(K1==0)
         {        level++;if(level>3) level=1;
                 while(K1==0);
         }
         if(K2==0)
         {        level--;if(level<1) level=3;
                 while(K2==0);
         }
   }
}
//延時(shí)函數(shù)
#ifndef __delay_H__
#define __delay_H__
#define uchar unsigned char
#define uint unsigned int
unsigned char  flag=0;
uchar  l2=0;
uchar  l3=0;
void DELAY_MS(unsigned int a)//延時(shí)函數(shù) 1MS/次        
{unsigned int i;
while( --a != 0)
{               
  for(i = 0; i < 600; i++); //一個(gè) ; 表示空語句,CPU空轉(zhuǎn)。
}                                           //i 從0加到125,CPU大概就耗時(shí)1毫秒
}
void delayus(uint a)                           //延時(shí)1us左右
{
        uchar b;
        for(;a>0;a--)
                for(b=12;b>0;b--);
}
void delay(int num)
{//延時(shí)函數(shù)
while(num--) ;
}
#endif
//數(shù)碼管顯示部分
#ifndef _shumaguan_H_
#define        _shumaguan_H_
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit qian=P2^7;
sbit bai=P2^6;
sbit shi=P2^5;
sbit ge=P2^4;
uchar TB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
void delay1(uchar tt)
{
uchar i,j;
while(tt!=0)
{
  for(i=0;i<10;i++)
  for(j=10;j>0;j--);
  tt--;
}
}
void xianshi1(uint TT,uint YY)
{
  qian=0;
  P0=TB[TT%100/10];
  delay1(5);
  qian=1;
  bai=0;
  P0=TB[TT%10];
  delay1(5);
  bai=1;
  if(YY==1)          //H
{
  ge=0;
  P0=0x76;        //       0111 0110
  delay1(5);
  ge=1;
}
else        //L
{
  ge=0;
  P0=0X38;  // 0                                  0011 1000
  delay1(5);
  ge=1;
}
}
void xianshi(uchar x,uint S)
{
  qian=0;
  P0=TB[x%10];
  delay1(5);
  qian=1;
  bai=0;
  P0=0x40;
  delay1(10);
  bai=1;
  shi=0;
  P0=0x40;
  delay1(10);
  shi=1;
  ge=0;
  P0=TB[S%10];
  delay1(10);
  ge=1;
}
void xianshi2(uint x,uint y)
{
  qian=0;
  P0=TB[x%10];
  delay1(10);
  qian=1;
  ge=0;
  P0=TB[y%10];
  delay1(10);
  ge=1;
}
#endif
//電機(jī)函數(shù)
#ifndef _robot_car_H_
#define        _robot_car__H_
#include "delay.h"
#define  uchar unsigned char                  //0~255
#define  uint unsigned int                          //0-65536
sbit PWM1=P1^2;
sbit PWM2=P1^3;
sbit PWM3=P1^4;
sbit PWM4=P1^5;
sbit EN1=P1^0;
sbit EN2=P1^1;
uchar data t_0;
uchar data motor_r;
uchar data motor_l;
uchar data Value;
uchar data mid;
void motor_r_z(void)//右邊電動(dòng)機(jī)正轉(zhuǎn)
{
  motor_r=0x64+Value;
  EN1=1;
}
void motor_l_z(void)//左邊電動(dòng)機(jī)正轉(zhuǎn)
{
  motor_l=0x64-Value;
  EN2=1;
}
void motor_r_f(void)//右邊電動(dòng)機(jī)反轉(zhuǎn)
{
  motor_r=0x64-Value;
  EN1=1;
}
void motor_l_f(void)//左邊電動(dòng)機(jī)反轉(zhuǎn)
{
  motor_l=0x64+Value;
  EN2=1;
}
void car_go(uchar left_motor,uchar right_motor)//直行
{
  Value=right_motor;
  motor_r_z();
  Value=left_motor;
  motor_l_z();
}
void car_back(uchar left_motor,uchar right_motor)//后退
{
  Value=right_motor;
  motor_r_f();
  Value=left_motor;
  motor_l_f();  
}
void car_stop(void)//停止
{
  EN2=0;
  EN1=0;
}
void car_init(void)//小車初始化函數(shù)
{
TMOD=0x10; //T1工作在方式1
TH1=0xff; //裝入T1初值
TL1=0xf6;
TR1=1;//開T0中斷
ET1=1;//T0允許中斷
EA=1;
t_0=0;
EN1=EN2=0;
}
void time1(void) interrupt 3 using 2
{
TR1=0;
TH1=0xff;
TL1=0xf6;
++t_0;
ACC=t_0;
CY=0;
ACC-=motor_r;
if(CY==1)
{
PWM1=1;
PWM2=0;
goto PWM_2;
}
PWM1=0;
PWM2=1;
PWM_2:
ACC=t_0;
CY=0;
ACC-=motor_l;
if(CY==1)
{
PWM3=1;
PWM4=0;
goto HIGHT;
}
PWM3=0;
PWM4=1;
HIGHT:
ACC=t_0;


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表