金愛國 ,金貴陽 ,孫千里 ,胡燕海
(1.寧波職業(yè)技術(shù)學(xué)院智能裝備研究所,浙江 寧波 315800;2.寧波大學(xué)機械工程與力學(xué)學(xué)院,浙江 寧波 315211)
近年來,智能小車的應(yīng)用范圍越發(fā)廣泛,涉及生活的方方面面,包括無人駕駛、物料搬運、自動分揀等,大大提高了工作效率與用戶體驗感[1-3]。而如何控制智能小車沿著預(yù)定的軌跡穩(wěn)定快速運行則是設(shè)計的難點所在[4-6]。
課題組基于全國大學(xué)生機器人大賽Robotac比賽中的障礙挑戰(zhàn)賽項目設(shè)計了一款基于PID算法的自動循跡布障小車。該小車基于模塊化設(shè)計理念,以STM32F429IGT6為主控核心,通過CAN總線分別對直流電機、灰度傳感器、電磁閥等進(jìn)行控制,使小車沿著循跡條快速運行,且在預(yù)設(shè)的位置完成布障任務(wù)[7-8]。
為提高自動小車運行的靈活性,車輪選用麥克納姆輪,以輕易地完成多個角度的移動[9]。通過直流電機對麥克納姆輪進(jìn)行控制,每個電機設(shè)有獨立的電機驅(qū)動板。通過改變四個電機的轉(zhuǎn)動方向,可以實現(xiàn)前后左右,左前左后,右前右后等旋轉(zhuǎn)動作。在自動車底盤四周的邊緣處依次安裝四個8路灰度傳感器模塊,用于不同方向的循線。小車還搭載了兩個電磁閥依次控制兩個氣缸運動,實現(xiàn)布障功能。為了防止車輛跑偏,在主控板上外接JY61陀螺儀模塊,實時糾正車輛的方向[10]。各功能模塊并聯(lián)在CAN總線上,與主控板上的微控制器進(jìn)行通信,大大提高了自動小車的實時性。自動小車整體結(jié)構(gòu)設(shè)計圖如圖1所示。
圖1 自動小車整體結(jié)構(gòu)設(shè)計圖
如上圖所示,將11.1 V鋰電池接到電源板上,通過電源板引電至各個模塊,分別給主控板、電機驅(qū)動模塊、電磁閥驅(qū)動模塊、灰度傳感器模塊同時供電。主控板通過CAN總線和電機驅(qū)動模塊、電磁閥驅(qū)動模塊、灰度傳感器模塊、JY61陀螺儀進(jìn)行通信,傳輸有關(guān)數(shù)據(jù)。
為提高布障效率和運行可靠性,該循跡小車硬件部分采用模塊化設(shè)計,包含電源板、主控板、電機驅(qū)動模塊、電磁閥驅(qū)動模塊、灰度傳感器模塊。主控板主要包含微控制器芯片STM32F429IGT6、電源轉(zhuǎn)化模塊、液晶顯示模塊、數(shù)據(jù)存儲模塊、CAN收發(fā)模塊、按鍵模塊、指示燈模塊。電機驅(qū)動模塊包含微控制器芯片STM32F103C8T6、指示燈模塊、電壓轉(zhuǎn)換模塊、按鍵模塊、CAN收發(fā)模塊等。電磁閥驅(qū)動模塊包含微控制器芯片STM32F103C8T6、電壓轉(zhuǎn)換模塊、氣缸控制模塊、CAN通信模塊、指示燈模塊?;叶葌鞲衅髂K包含微控制器芯片STM32F103C8T6、電源穩(wěn)壓部分、8路循跡光敏模塊、獨立按鍵、CAN通信模塊、指示燈模塊。電源板外接11.1 V-2 600 mAh鋰電池,設(shè)計多路接口,分別給主控板、電機驅(qū)動板、電磁閥驅(qū)動板供電。電源板單獨設(shè)計的目的如下:1)減少其主控板的發(fā)熱量,降低故障率,延長板子使用壽命;2)方便為后續(xù)新增加的功能模塊提供電源接口。
主控板設(shè)計框圖如圖2所示。電源轉(zhuǎn)換模塊將11.1 V電壓轉(zhuǎn)換為5 V和3.3 V的電壓,給各部分供電。OLED用于顯示自動小車運行狀態(tài)。獨立按鍵一共有五個,KEY1按鍵按下時,開始校驗自動小車正前方灰度傳感器模塊,校驗完畢時按下KEY5按鍵。類似地,分別按下KEY2、KEY3、KEY4按鍵,依次校驗自動小車左側(cè)、后方、右側(cè)灰度傳感器模塊,校驗完畢時按下KEY5按鍵。灰度傳感器模塊校驗值通過SPI總線保存到數(shù)據(jù)存儲器W25Q64中。通過觀察指示燈的閃爍情況判斷程序是否正常運行。微控制器1通過串口1讀取陀螺儀的數(shù)據(jù),從而實時修正小車的姿態(tài)。微控制器1通過CAN總線與各功能模塊進(jìn)行數(shù)據(jù)收發(fā)。
圖2 主控板設(shè)計框圖
電機驅(qū)動模塊設(shè)計框圖如圖3所示。微控制器1通過CAN總線發(fā)送命令給微控制器2,微控制器2通過調(diào)節(jié)PWM占空比的方式,經(jīng)過VNH5019芯片放大工作電流,控制直流電機的運動。獨立按鍵模塊只有一個按鍵KEY6,按下KEY6按鍵可以設(shè)置驅(qū)動板的ID號。如果是右前方的電機,則需將ID號設(shè)為1,ID號沿著逆時針方向遞增。通過觀察指示燈閃爍次數(shù)可以確定驅(qū)動板的ID號,通過觀察指示燈的閃爍情況可以判斷程序是否正常運行。
圖3 電機驅(qū)動模塊設(shè)計框圖
電磁閥驅(qū)動模塊設(shè)計框圖如圖4所示。微控制器1通過CAN總線發(fā)送命令給微控制器3,微控制器3通過輸出高低電平控制電磁閥的正向或者反向?qū)?,從而控制氣缸的收縮。電磁閥1正向?qū)?,氣?伸出,反向?qū)ǎ瑲飧?縮回;電磁閥2正向?qū)?,氣?伸出,反向?qū)?,氣?縮回。通過觀察指示燈的閃爍情況判斷電磁閥驅(qū)動板程序是否正常運行。
圖4 電磁閥驅(qū)動模塊設(shè)計框圖
灰度傳感器模塊設(shè)計框圖如圖5所示。微控制器4將采集到的循跡光敏模塊的信號通過CAN總線發(fā)送給微控制器1,判斷小車是否循著白線運動。如有偏差,微控制器1則發(fā)送控制命令給微控制器2,通過調(diào)節(jié)四個電機的轉(zhuǎn)動速度和方向來修正小車位置。
圖5 灰度傳感器模塊設(shè)計框圖
智能小車運行場地圖如圖6所示。自動小車可以在不同背景色的地面沿著白線行走,為了提高循線的穩(wěn)定性,在首次運行之前需要校驗灰度傳感器模塊的靈敏度。具體校驗方法如下:以循3 cm白線為例,將小車四個方向上的灰度傳感器模塊依次放到垂直于白線方向上,按下對應(yīng)的獨立按鍵,開始校驗,來回移動小車,通過觀察主控板上液晶顯示的UI界面的變化即可完成校驗。校驗完成之后即可開始循線。運行前,小車停放在啟動區(qū),觸發(fā)啟動按鍵之后,沿著左前方向運動到A點,循到白線之后沿著AB方向快速運動到B點,此時主控板微控制器1通過CAN總線發(fā)送命令給電磁閥驅(qū)動板上的微控制器3,微控制器3接收到命令之后使電磁閥1正向?qū)?,將氣?推出,從而完成B點的布障,隨后控制 電磁閥1反向?qū)ǎ瑢飧?縮回。之后沿著BC方向運動到C點,微控制器1發(fā)送命令給微控制器3,微控制器3收到命令后使電磁閥2正向?qū)?,將氣?推出,從而完成C點的布障,隨后控制電磁閥2反向?qū)ǎ瑢飧?縮回。之后沿著CD方向運動到D點,微控制器1發(fā)送命令給微控制器3,微控制器3收到命令之后使電磁閥2正向?qū)?,將氣?推出,從而完成D點的布障,隨后控制電磁閥2反向?qū)ǎ瑢飧?縮回。之后小車沿著DA方向回到A點,停止運動。也可以通過修改程序讓小車循環(huán)往復(fù)地沿著ABCD方向行走。經(jīng)性能測試,小車布置完所有障礙物只需要10.5 s,且任務(wù)完成度為100%。
圖6 智能小車運行場地圖
課題組設(shè)計了一款基于STM32的自動循跡布障小車。在硬件電路設(shè)計方面,將電源板和主控板單獨設(shè)計,主要有以下優(yōu)點:1)減少主控板的發(fā)熱量,延長板子使用壽命,降低故障率;2)方便后續(xù)為新增加的功能模塊提供電源接口。同時,為了提高小車與各模塊之間通信的實時性,主控模塊與各模塊之間采用CAN總線進(jìn)行數(shù)據(jù)傳輸。經(jīng)測試,該智能小車具備快速自動循白線、推桿布障等功能,通過反復(fù)調(diào)試及算法優(yōu)化,能夠保障小車在10.5 s時穩(wěn)定地完成所有任務(wù)。