張敏麗 郭紅壯 于源華
摘 要: 本設(shè)計(jì)基于PID算法設(shè)計(jì)了一種智能語(yǔ)音控制小車,主要包括電機(jī)驅(qū)動(dòng)模塊、語(yǔ)音識(shí)別模塊、單片機(jī)控制模塊。核心部分是采用STM32F101單片機(jī)和LD3320語(yǔ)音芯片實(shí)現(xiàn)語(yǔ)音智能控制,LD3320芯片對(duì)語(yǔ)音信號(hào)檢測(cè)和數(shù)據(jù)采集,并將數(shù)據(jù)傳送給STM32F101單片機(jī),STM32F101單片機(jī)對(duì)語(yǔ)音信息進(jìn)行分析,實(shí)現(xiàn)對(duì)小車的智能控制。系統(tǒng)主要硬件電路包括主控模塊電路、語(yǔ)音通信電路、電機(jī)驅(qū)動(dòng)電路。軟件設(shè)計(jì)主要包括單片機(jī)語(yǔ)音通信程序、數(shù)據(jù)處理分析程序、電機(jī)驅(qū)動(dòng)程序、PID算法的實(shí)現(xiàn)。使用L298N電機(jī)驅(qū)動(dòng)以及5V直流電機(jī),采用PID算法可以方便、靈活控制速度。在各模塊的軟件設(shè)計(jì)與仿真之后,經(jīng)過(guò)各模塊實(shí)物的制作以及測(cè)試,完成了智能操控系統(tǒng)兒童電動(dòng)車的制作。語(yǔ)音識(shí)別距離范圍5m;實(shí)現(xiàn)小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、加速、減速等功能。
關(guān)鍵詞: PID算法;STM32F101;LD3320;L298N;語(yǔ)音控制
1 系統(tǒng)結(jié)構(gòu)
1.1 系統(tǒng)整體結(jié)構(gòu)
本次設(shè)計(jì)中主要包含四個(gè)主要部分:語(yǔ)音芯片對(duì)語(yǔ)音正確的識(shí)別、單片機(jī)對(duì)關(guān)鍵詞的匹配、控制信號(hào)的發(fā)送、驅(qū)動(dòng)電路驅(qū)動(dòng)電機(jī)。
總體框圖如圖1所示:
1.2 系統(tǒng)硬件設(shè)計(jì)
在本設(shè)計(jì)中,硬件電路主要包括四大模塊:語(yǔ)音芯片電路、單片機(jī)控制電路、驅(qū)動(dòng)電路和電源電路。
1.2.1 主控模塊硬件電路設(shè)計(jì)
按照此次設(shè)計(jì)的要求,開(kāi)始對(duì)芯片種類的查找,翻看資料進(jìn)行優(yōu)缺點(diǎn)比較,要使用STM32作為本設(shè)計(jì)的主控芯片。STM32系列位微控制器使用來(lái)自于ARM公司具有突破性的Cortex-M3內(nèi)核,特別設(shè)計(jì)適用于集性能高、功耗低、實(shí)時(shí)應(yīng)用、競(jìng)爭(zhēng)性價(jià)格具有優(yōu)勢(shì)于一體的嵌入式領(lǐng)域[1]。
本次設(shè)計(jì)采用的STM32F101R8T6芯片,STM32芯片的脈寬是由兩種不同的寄存器通過(guò)確定頻率和根據(jù)占空比產(chǎn)生PWM信號(hào)來(lái)調(diào)節(jié)的。輸出三種PWM邊沿對(duì)齊模式來(lái)實(shí)現(xiàn)設(shè)計(jì)要求。使PWM控制信號(hào)的輸出更加方便,因此可按照需要選擇使用。組成STM32的最小系統(tǒng)電路有電源電路、復(fù)位電路以及振蕩電路等。51個(gè)GPIO,所有I/O口都可以連接到16個(gè)外部中斷;3個(gè)16位定時(shí)器,每個(gè)定時(shí)器有多達(dá)4個(gè)用于輸入捕獲/輸出比較/PWM或脈沖計(jì)數(shù)的通道和量編碼器輸入,1個(gè)16位帶死區(qū)控制和緊急剎車,用于電機(jī)控制的PWM高級(jí)控制定時(shí)器,2個(gè)看門狗定時(shí)器——獨(dú)立的和窗口型的[2]。
1.2.2 語(yǔ)音信號(hào)檢測(cè)電路設(shè)計(jì)
本設(shè)計(jì)采用的語(yǔ)音芯片是LD3320語(yǔ)音芯片,LD3320芯片是一種語(yǔ)音識(shí)別專用的集成芯片,無(wú)需提前錄入和模擬訓(xùn)練,不會(huì)限制特定的語(yǔ)音信息,能夠快速可靠并準(zhǔn)確的識(shí)別關(guān)鍵詞。每次在程序中可寫(xiě)入50個(gè)關(guān)鍵詞組,可以是單字、詞組或短句,識(shí)別句的內(nèi)容可隨時(shí)修改,輸入語(yǔ)音信息后,語(yǔ)音芯片會(huì)按照關(guān)鍵詞組一一比較。該芯片中包含了關(guān)于語(yǔ)音識(shí)別處理的一系列結(jié)構(gòu)和外部電路,包括AD/DA轉(zhuǎn)換器、麥克風(fēng)接口、聲音放大器、聲音輸出接口以及LED燈監(jiān)測(cè)系統(tǒng)等。不需要外接輔助的Flash和RAM,使用方便[3]。語(yǔ)音識(shí)別后的結(jié)果數(shù)據(jù)存儲(chǔ)在寄存器中,寄存器是暫存數(shù)據(jù)、指令和地址的,數(shù)據(jù)的傳遞都是通過(guò)對(duì)寄存器的操作來(lái)完成數(shù)據(jù)發(fā)送和數(shù)據(jù)接收的。例如在進(jìn)行語(yǔ)音識(shí)別的時(shí)候,存儲(chǔ)要匹配識(shí)別的關(guān)鍵詞語(yǔ)列表,設(shè)定輸入信號(hào)的識(shí)別模式,識(shí)別過(guò)程完成后獲取的識(shí)別結(jié)果都是通過(guò)讀/寫(xiě)寄存器來(lái)完成。在LD3320語(yǔ)音芯片在對(duì)語(yǔ)音檢測(cè)時(shí),可以對(duì)干擾噪音時(shí)間進(jìn)行判斷,根據(jù)時(shí)間長(zhǎng)度可以檢測(cè)出指令是否終止。該芯片與STM32控制器之間的通訊方式可以采用并行通信或SPI通訊的方式,本設(shè)計(jì)中選用并行接口通信,因?yàn)楫?dāng)單片機(jī)接收語(yǔ)音芯片發(fā)送的數(shù)據(jù)時(shí),必須先將串行數(shù)據(jù)通過(guò)并行數(shù)據(jù),然后再輸入到單片機(jī)。會(huì)產(chǎn)生誤差,影響識(shí)別的精確度。當(dāng)單片機(jī)需要向驅(qū)動(dòng)電路發(fā)送控制信號(hào)時(shí),也需要將數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù),并行傳送。語(yǔ)音模塊電路圖如圖2所示:
1.2.3 電機(jī)驅(qū)動(dòng)模塊
電機(jī)使用2個(gè)有刷直流電機(jī),高轉(zhuǎn)速控制靈活簡(jiǎn)便。L298N是雙H橋驅(qū)動(dòng)電機(jī)芯片,內(nèi)含四通道邏輯電路,可以用來(lái)驅(qū)動(dòng)一個(gè)兩相步進(jìn)電機(jī)或兩個(gè)驅(qū)動(dòng)電機(jī)、繼電器線圈等感性負(fù)載,是專門用作驅(qū)動(dòng)的集成電路[4]。最高輸出電流為4A,最高工作電壓為50V,在本設(shè)計(jì)中,輸出電流為2A,輸出電壓為5V,該電路可以外接檢測(cè)電路,將變化量反饋給單片機(jī)電路。有四種電機(jī)控制模式:正轉(zhuǎn)/反轉(zhuǎn)/制動(dòng)/停止;可對(duì)直流電機(jī)進(jìn)行PWM調(diào)速。
1.2.4 電源模塊
在本次設(shè)計(jì)的電路中,對(duì)L298N驅(qū)動(dòng)芯片和對(duì)電機(jī)的驅(qū)動(dòng)電源都采用5V供電,而單片機(jī)和語(yǔ)音芯片通過(guò)TTL轉(zhuǎn)換接口采用轉(zhuǎn)換出來(lái)的3.3V進(jìn)行供電,又因?yàn)閱纹瑱C(jī)要給驅(qū)動(dòng)電路發(fā)送控制信號(hào),所以單片機(jī)和驅(qū)動(dòng)電路的連接就是將兩個(gè)模塊的GND連接在一起,實(shí)現(xiàn)通信??梢杂萌?jié)AA電池供電,也可采用充電寶電源通過(guò)穩(wěn)壓芯片供電。由于不斷調(diào)試耗費(fèi)電池量大,而且充電寶優(yōu)可提供穩(wěn)定的5V電壓,環(huán)保且高效的給小車提供動(dòng)力。所以選擇充電寶供電。
2 系統(tǒng)軟件設(shè)計(jì)
2.1 STM32控制系統(tǒng)軟件設(shè)計(jì)
STM32控制系統(tǒng)程序采用C語(yǔ)言編程,KEIL開(kāi)發(fā)軟件進(jìn)行開(kāi)發(fā)。首先進(jìn)行初始化操作,將控制系統(tǒng)各個(gè)模塊進(jìn)行初始化,包括語(yǔ)音交互模塊、觸摸屏模塊以及串口通信的軟件初始化。當(dāng)按下啟動(dòng)開(kāi)關(guān)后才可正常工作,在工作時(shí),當(dāng)有語(yǔ)音輸入時(shí),語(yǔ)音識(shí)別模塊對(duì)關(guān)鍵詞一一分析比較,系統(tǒng)便會(huì)根據(jù)關(guān)鍵詞對(duì)應(yīng)控制小車來(lái)實(shí)現(xiàn)不同的動(dòng)作,LD3320芯片最多可以對(duì)50個(gè)關(guān)鍵詞進(jìn)行識(shí)別處理,因此可實(shí)現(xiàn)50種不同的控制動(dòng)作。文中對(duì)智能小車的動(dòng)作測(cè)試只有六種,如果以后要增加其他功能,可以根據(jù)設(shè)計(jì)要求繼續(xù)添加。
2.2 語(yǔ)音數(shù)據(jù)采集的設(shè)計(jì)
語(yǔ)音識(shí)別的操作順序是:語(yǔ)音輸入LD3320音頻處理器進(jìn)行處理,音頻采樣錄入識(shí)別列表,保存在存儲(chǔ)器中,MCU讀取存儲(chǔ)器,與關(guān)鍵詞相匹配開(kāi)始識(shí)別,識(shí)別結(jié)果發(fā)送給單片機(jī)。并準(zhǔn)備好中斷響應(yīng)函數(shù),打開(kāi)中斷允許位。在本次設(shè)計(jì)中,起初采用的就是觸發(fā)方式識(shí)別配合按鍵控制的,但由于每次啟動(dòng)識(shí)別都需要重復(fù)按鍵,所以就優(yōu)化了識(shí)別方式,改用了循環(huán)識(shí)別,使其更加智能化。
3 自整定模糊PID的算法實(shí)現(xiàn)
本設(shè)計(jì)采用PID調(diào)節(jié)方式來(lái)實(shí)現(xiàn)小車的運(yùn)動(dòng)狀態(tài)的變化。傳統(tǒng)的PID控制結(jié)構(gòu)如圖4所示:
在過(guò)程控制中模糊控制器與PID控制器的結(jié)合控制成為了很重要的研究方向。在本設(shè)計(jì)中,模糊控制在整個(gè)復(fù)合控制器中起輔助控制的作用,本質(zhì)為PID控制器。主要利用模糊控制器的反模糊化輸出來(lái)調(diào)節(jié)PID控制器的三個(gè)參數(shù),從而使PID控制器的三個(gè)參數(shù)能夠自調(diào)整達(dá)到提高控制性能的目的[5]。以模糊控制器來(lái)輔助PID控制器的模糊控制原理如圖5所示:
模糊控制器的輸入為預(yù)設(shè)值r(t)與反饋值得到的偏差e(t)以及偏差變化率Δe(t),輸出經(jīng)模糊控制器得到3個(gè)參數(shù)的增量ΔKp,ΔKi,ΔKd,再與預(yù)先整定的PID控制器的3個(gè)參數(shù)Kp0,Ki0,,Kd0求和。Kp=Kp0+ΔKp ;Ki=Ki0+ΔKi;Kd=Kd0+ΔKd。
這樣就實(shí)現(xiàn)了Kp,Ki,Kd的參數(shù)變化整定,進(jìn)而根據(jù)被控對(duì)象的特點(diǎn)變化而產(chǎn)生改變提高性能指標(biāo)。
4 結(jié)語(yǔ)
主要闡述了語(yǔ)音控制的智能小車的總體設(shè)計(jì)思路和系統(tǒng)框架結(jié)構(gòu),主要完成了智能語(yǔ)音小車的軟硬件設(shè)計(jì),并畫(huà)出了軟件流程圖。并采用模糊控制PID算法對(duì)直流減速電機(jī)的轉(zhuǎn)速進(jìn)行控制。在上位機(jī)繪制PID曲線方便PID參數(shù)整定。將分模塊和整機(jī)分別進(jìn)行測(cè)試,結(jié)果顯示該系統(tǒng)運(yùn)行穩(wěn)定,精確度較高,具有一定的抗干擾能力,可被廣泛應(yīng)用在教學(xué)、智能玩具和搬運(yùn)等場(chǎng)合,有很好的實(shí)用價(jià)值[6]。
參考文獻(xiàn):
[1]楊婉榮.PCR儀溫度控制系統(tǒng)的研究與設(shè)計(jì)[D].西安工業(yè)大學(xué),2014.
[2]蔣鳴東.利用STM32實(shí)時(shí)溫度采集及無(wú)線傳輸設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013,9(12):2929-2933.
[3]鄧天金,王昭武,余達(dá).基于單片機(jī)控制的多功能智能語(yǔ)音風(fēng)扇[J].電子世界,2017(23):21-22.
[4]肖順梅.智能康復(fù)訓(xùn)練器控制系統(tǒng)的設(shè)計(jì)與研究[D].南京理工大學(xué),2015.
[5]彭少康.PCR儀溫度檢測(cè)與控制系統(tǒng)的研究與設(shè)計(jì)[D].南華大學(xué),2016.
[6]冷雪鋒.基于PID的STM32智能小車機(jī)器人的設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2016,35(11):122-127.
*通訊作者: 于源華。