基于STM32的可遙控智能跟隨小車的設(shè)計與實(shí)現(xiàn)
1、引言
智能小車是一個集自動控制、環(huán)境監(jiān)測、無線遙控等多功能于一體的綜合系統(tǒng),人們習(xí)慣稱其為移動輪式機(jī)器人,目前以單片機(jī)為核心的移動機(jī)器人還存在處理數(shù)據(jù)局限、控制不穩(wěn)定等不足之處,國內(nèi)市場暫時還沒有出現(xiàn)具有真正意義的跟隨性智能載物小車。本設(shè)計基于單片機(jī)的智能小車測距模塊、紅外遙控模塊和小車智能控制模塊,通過軟硬件設(shè)計調(diào)試,實(shí)現(xiàn)了小車的自動跟隨狀態(tài)。主要利用超聲波測距模塊實(shí)現(xiàn)小車與目標(biāo)之間距離的實(shí)時檢測,當(dāng)兩者距離較近小車就“緩慢跟隨”,一旦測得距離較遠(yuǎn),小車將“加快腳步”,直到追上目標(biāo),并且小車可以跟隨目標(biāo)一起轉(zhuǎn)彎,不會“跟丟”。
2、硬件設(shè)計
2.1、系統(tǒng)總體設(shè)計
為實(shí)現(xiàn)小車智能跟隨,采用了超聲波測距、電機(jī)驅(qū)動、紅外遙控等功能模塊設(shè)計。通過超聲波所測距離,判斷小車快速前進(jìn),慢速前進(jìn)或停止。小車以STM32為主控芯片,將2個超聲波測距模塊測得的距離值經(jīng)過運(yùn)算后,輸出兩路PWM(PuLSEWIDTHMODuLAON)波分別控制左右2個電機(jī)的轉(zhuǎn)速。電源給控制部分和電機(jī)驅(qū)動部分供電。另外STM32連接了LCD顯示模塊和紅外接收電路,分別用于顯示運(yùn)動、狀態(tài)信息和接收遙控器的控制信號。系統(tǒng)總體設(shè)計如圖1所示。
圖1 系統(tǒng)總體
2.2、超聲波測距模塊
超聲波是指頻率高于20KHz的聲波,超聲波在介質(zhì)中傳播時遇到不同的界面將產(chǎn)生反射、繞射、折射等原理在各行各業(yè)得到廣泛應(yīng)用。本設(shè)計所使用的測距模塊為HC-SR04超聲波模塊,該模塊測量范圍為3~400CM,精度最高可達(dá)3MM,由超聲波發(fā)射探頭、控制電路和驅(qū)動電路組成。模塊對外引出4個引腳分別為VCC、GND、TRIG和ECHO。測距需要IO口觸發(fā),即先給控制端TRIG至少10μS的高電平信號,模塊將自動發(fā)送8個40KHz的方波并自動檢測ECHO端是否有返回信號,若有返回信號則高電平持續(xù)時間即為超聲波在空氣中傳播的時間。由此可得:測試距離=(高電平時間&mes;聲速)/2。因此將模塊的VCC、GND接入系統(tǒng)電源,TRIG、ECHO端接單片機(jī)普通IO口即可實(shí)現(xiàn)超聲波測距。
2.3、電機(jī)驅(qū)動模塊
小車通過一個L298N電機(jī)驅(qū)動模塊驅(qū)動左右電機(jī)控制小車的運(yùn)動。電機(jī)采用PWM調(diào)速,即改變直流電機(jī)電樞電壓的的占空比來改變平均電壓,從而實(shí)現(xiàn)直流電機(jī)調(diào)速。除了2個電機(jī)對應(yīng)的PWM信號調(diào)速之外,該模塊還需要4路邏輯輸入控制電機(jī)M1、M2轉(zhuǎn)向,模塊連接如圖2所示。因此將PWM信號輸入端接入單片機(jī)定時器輸出,邏輯輸入端接單片機(jī)配置為輸出模式的IO口即可實(shí)現(xiàn)對該模塊的控制。
圖2 電機(jī)驅(qū)動模塊連接
2.4、紅外遙控
紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾能力強(qiáng)、信息傳輸可靠、功耗低、成本低、易實(shí)現(xiàn)等顯著優(yōu)點(diǎn)。本設(shè)計使用的是NEC編碼方式的遙控器,紅外接收選擇HS0038紅外遙控器接收頭,接收頭有3個引腳分別為VCC、GND和DATA。VCC、GND分別接系統(tǒng)的正、負(fù)極,DATA接入單片機(jī)定時器的一路輸入捕獲通道即可對紅外遙控信號進(jìn)行解碼。
2.5、LCD顯示
選擇LCD12864作為顯示模塊。該顯示屏支持中、英文字符顯示,顯示信息量大并且支持串行通信,控制十分方便。由于STM32主頻高達(dá)72MHz,故在本設(shè)計中選擇串行控制LCD12864,在滿足速度要求的條件下節(jié)省了IO口。除了將電源引腳、背光引腳接入系統(tǒng)電源并將PSB引腳接地之外,用單片機(jī)的3個IO口操作CS、SID、SCLK3個引腳便可實(shí)現(xiàn)對該顯示模塊的控制。
3、軟件設(shè)計
3.1、主程序設(shè)計
上電后先進(jìn)行系統(tǒng)初始化,包括時鐘配置、延時函數(shù)初始化以及調(diào)試程序時所需串口的初始化。然后進(jìn)行定時器的初始化,本系統(tǒng)中定時器分別用于PWM信號的產(chǎn)生、超聲波測距判斷高電平時間和輸入捕獲實(shí)現(xiàn)紅外解碼,故需要啟用3個定時器并進(jìn)行相關(guān)配置。在進(jìn)行LCD12864初始化和紅外接收初始化之后就進(jìn)入WHILE(1)循環(huán),判斷當(dāng)前模式,若為自動跟隨模式,就對2個超聲波測距模塊測得的距離數(shù)據(jù)進(jìn)行比例控制計算,并根據(jù)輸出量控制左右2個電機(jī)轉(zhuǎn)速;若為遙控模式,就根據(jù)紅外解碼得到的遙控器鍵值控制小車的運(yùn)動。主程序流程如圖3所示。
圖3 主程序流程
3.2、測距程序設(shè)計
實(shí)現(xiàn)測距,要先給超聲波模塊TRIG端10μS以上的脈沖,模塊將自動發(fā)送超聲波并接收返回信號,測量高電平時間即可通過計算得到距離值。程序的關(guān)鍵是高電平時間測量,本設(shè)計將STM32接ECHO的IO口配置為外部中斷IO,上升沿觸發(fā)中斷后立即打開定時器,直到判斷ECHO為低電平時關(guān)閉定時器,此時定時器計數(shù)寄存器的值便可以轉(zhuǎn)換為高電平時間,進(jìn)而得到距離。
3.3、紅外遙控和小車運(yùn)動控制
本設(shè)計使用的遙控器是NEC編碼方式。對于NEC碼,在接收頭收到的信號邏輯1應(yīng)該是560μS低加1680μS高,邏輯0應(yīng)該是560μS低加560μS高。NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。根據(jù)NEC協(xié)議內(nèi)容可以用定時器的輸入捕獲模式完成紅外解碼,同時掃描解碼結(jié)果,得到鍵值。實(shí)際測得本設(shè)計所用到的按鍵鍵值如表1所示。
表1 鍵值
小車左右側(cè)分別有一個驅(qū)動輪,利用電機(jī)驅(qū)動模塊可以實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)以及速度調(diào)節(jié),2個電機(jī)配合即可實(shí)現(xiàn)小車各個方向的運(yùn)動。小車右轉(zhuǎn)的程序如下:
VOIDMOVE_RIGHT(VOID)
{
IN1=1;
IN2=0;//IN1、IN2對應(yīng)左電機(jī),10正轉(zhuǎn)
IN3=0;
IN4=1;//IN3、IN4對應(yīng)右電機(jī),01反轉(zhuǎn)
PWM_LEfT(50);
PWM_RIGHT(50);
}
這段程序?qū)298N模塊的4路邏輯輸入進(jìn)行了配置并分別用占空比為50%的PWM信號控制左右電機(jī)。左電機(jī)正轉(zhuǎn)、右電機(jī)反轉(zhuǎn)體現(xiàn)在小車上就是小車原地向右旋轉(zhuǎn)。同理編寫MOVE_LEfT()、MOVE_fORWARD()、MOVE_BACKWARD()等幾個函數(shù)供外部調(diào)用。
3.4、比例控制程序設(shè)計
當(dāng)一個機(jī)器人被設(shè)計用來自動維持某一數(shù)值,如距離、壓力等,它一般都包含一個控制系統(tǒng)。在本設(shè)計中該系統(tǒng)由傳感器和電機(jī)組成,可以通過處理器編程對傳感器的輸入做出決定,從而控制輸出。對小車采用閉環(huán)控制中最常用的比例控制算法來維持其與目標(biāo)物體之間的距離,比例控制框圖如圖4所示。
圖4 比例控制
以上控制環(huán)路將不斷調(diào)整電機(jī)轉(zhuǎn)速使實(shí)測距離趨近目標(biāo)距離,對左右電機(jī)用同樣的控制環(huán)路分別控制,將使小車能跟隨目標(biāo)物轉(zhuǎn)彎、旋轉(zhuǎn),提高系統(tǒng)可靠性。程序設(shè)計如下:
GET_DISTANCE();//測距
DuTyCyCLE_LEfT=(SETDISTANCE-LEfTDISTANCE)*
KP+CENTER;//左側(cè)運(yùn)算
DuTyCyCLE_RIGHT=(SETDISTANCE-RIGHTDISTANCE)*
KP+CENTER;//右側(cè)運(yùn)算
PWM_LEfT(DuTyCyCLE_LEfT);
PWM_RIGHT(DuTyCyCLE_RIGHT);//更新PWM信號占
空比
……
4、系統(tǒng)測試
在環(huán)境溫度一定的室內(nèi)對小車的跟隨性能進(jìn)行測試,分別在不同跟隨距離下觀察小車是否能準(zhǔn)確跟隨,并測量響應(yīng)時間。系統(tǒng)測試結(jié)果如表2所示。
表2系統(tǒng)測試
5、結(jié)論
以STM32為控制芯片,設(shè)計并制作了一種可遙控智能跟隨小車。經(jīng)測試,在空曠地該小車可自動360°跟隨目標(biāo)物體,系統(tǒng)響應(yīng)快,保持距離準(zhǔn)確,同時小車可以由遙控器一鍵切換為遙控模式,使設(shè)計更為人性化。該小車成可實(shí)現(xiàn)多輛跟隨,可應(yīng)用于簡單的工廠搬運(yùn)或者超市、家居等生活場合。





