金愛國 ,金貴陽 ,孫千里 ,胡燕海
(1.寧波職業技術學院智能裝備研究所,浙江 寧波 315800;2.寧波大學機械工程與力學學院,浙江 寧波 315211)
近年來,智能小車的應用范圍越發廣泛,涉及生活的方方面面,包括無人駕駛、物料搬運、自動分揀等,大大提高了工作效率與用戶體驗感[1-3]。而如何控制智能小車沿著預定的軌跡穩定快速運行則是設計的難點所在[4-6]。
課題組基于全國大學生機器人大賽Robotac比賽中的障礙挑戰賽項目設計了一款基于PID算法的自動循跡布障小車。該小車基于模塊化設計理念,以STM32F429IGT6為主控核心,通過CAN總線分別對直流電機、灰度傳感器、電磁閥等進行控制,使小車沿著循跡條快速運行,且在預設的位置完成布障任務[7-8]。
為提高自動小車運行的靈活性,車輪選用麥克納姆輪,以輕易地完成多個角度的移動[9]。通過直流電機對麥克納姆輪進行控制,每個電機設有獨立的電機驅動板。通過改變四個電機的轉動方向,可以實現前后左右,左前左后,右前右后等旋轉動作。在自動車底盤四周的邊緣處依次安裝四個8路灰度傳感器模塊,用于不同方向的循線。小車還搭載了兩個電磁閥依次控制兩個氣缸運動,實現布障功能。為了防止車輛跑偏,在主控板上外接JY61陀螺儀模塊,實時糾正車輛的方向[10]。各功能模塊并聯在CAN總線上,與主控板上的微控制器進行通信,大大提高了自動小車的實時性。自動小車整體結構設計圖如圖1所示。

圖1 自動小車整體結構設計圖
如上圖所示,將11.1 V鋰電池接到電源板上,通過電源板引電至各個模塊,分別給主控板、電機驅動模塊、電磁閥驅動模塊、灰度傳感器模塊同時供電。主控板通過CAN總線和電機驅動模塊、電磁閥驅動模塊、灰度傳感器模塊、JY61陀螺儀進行通信,傳輸有關數據。
為提高布障效率和運行可靠性,該循跡小車硬件部分采用模塊化設計,包含電源板、主控板、電機驅動模塊、電磁閥驅動模塊、灰度傳感器模塊。主控板主要包含微控制器芯片STM32F429IGT6、電源轉化模塊、液晶顯示模塊、數據存儲模塊、CAN收發模塊、按鍵模塊、指示燈模塊。電機驅動模塊包含微控制器芯片STM32F103C8T6、指示燈模塊、電壓轉換模塊、按鍵模塊、CAN收發模塊等。電磁閥驅動模塊包含微控制器芯片STM32F103C8T6、電壓轉換模塊、氣缸控制模塊、CAN通信模塊、指示燈模塊。灰度傳感器模塊包含微控制器芯片STM32F103C8T6、電源穩壓部分、8路循跡光敏模塊、獨立按鍵、CAN通信模塊、指示燈模塊。電源板外接11.1 V-2 600 mAh鋰電池,設計多路接口,分別給主控板、電機驅動板、電磁閥驅動板供電。電源板單獨設計的目的如下:1)減少其主控板的發熱量,降低故障率,延長板子使用壽命;2)方便為后續新增加的功能模塊提供電源接口。
主控板設計框圖如圖2所示。電源轉換模塊將11.1 V電壓轉換為5 V和3.3 V的電壓,給各部分供電。OLED用于顯示自動小車運行狀態。獨立按鍵一共有五個,KEY1按鍵按下時,開始校驗自動小車正前方灰度傳感器模塊,校驗完畢時按下KEY5按鍵。類似地,分別按下KEY2、KEY3、KEY4按鍵,依次校驗自動小車左側、后方、右側灰度傳感器模塊,校驗完畢時按下KEY5按鍵。灰度傳感器模塊校驗值通過SPI總線保存到數據存儲器W25Q64中。通過觀察指示燈的閃爍情況判斷程序是否正常運行。微控制器1通過串口1讀取陀螺儀的數據,從而實時修正小車的姿態。微控制器1通過CAN總線與各功能模塊進行數據收發。

圖2 主控板設計框圖
電機驅動模塊設計框圖如圖3所示。微控制器1通過CAN總線發送命令給微控制器2,微控制器2通過調節PWM占空比的方式,經過VNH5019芯片放大工作電流,控制直流電機的運動。獨立按鍵模塊只有一個按鍵KEY6,按下KEY6按鍵可以設置驅動板的ID號。如果是右前方的電機,則需將ID號設為1,ID號沿著逆時針方向遞增。通過觀察指示燈閃爍次數可以確定驅動板的ID號,通過觀察指示燈的閃爍情況可以判斷程序是否正常運行。

圖3 電機驅動模塊設計框圖
電磁閥驅動模塊設計框圖如圖4所示。微控制器1通過CAN總線發送命令給微控制器3,微控制器3通過輸出高低電平控制電磁閥的正向或者反向導通,從而控制氣缸的收縮。電磁閥1正向導通,氣缸1伸出,反向導通,氣缸1縮回;電磁閥2正向導通,氣缸2伸出,反向導通,氣缸2縮回。通過觀察指示燈的閃爍情況判斷電磁閥驅動板程序是否正常運行。

圖4 電磁閥驅動模塊設計框圖
灰度傳感器模塊設計框圖如圖5所示。微控制器4將采集到的循跡光敏模塊的信號通過CAN總線發送給微控制器1,判斷小車是否循著白線運動。如有偏差,微控制器1則發送控制命令給微控制器2,通過調節四個電機的轉動速度和方向來修正小車位置。

圖5 灰度傳感器模塊設計框圖
智能小車運行場地圖如圖6所示。自動小車可以在不同背景色的地面沿著白線行走,為了提高循線的穩定性,在首次運行之前需要校驗灰度傳感器模塊的靈敏度。具體校驗方法如下:以循3 cm白線為例,將小車四個方向上的灰度傳感器模塊依次放到垂直于白線方向上,按下對應的獨立按鍵,開始校驗,來回移動小車,通過觀察主控板上液晶顯示的UI界面的變化即可完成校驗。校驗完成之后即可開始循線。運行前,小車停放在啟動區,觸發啟動按鍵之后,沿著左前方向運動到A點,循到白線之后沿著AB方向快速運動到B點,此時主控板微控制器1通過CAN總線發送命令給電磁閥驅動板上的微控制器3,微控制器3接收到命令之后使電磁閥1正向導通,將氣缸1推出,從而完成B點的布障,隨后控制 電磁閥1反向導通,將氣缸1縮回。之后沿著BC方向運動到C點,微控制器1發送命令給微控制器3,微控制器3收到命令后使電磁閥2正向導通,將氣缸2推出,從而完成C點的布障,隨后控制電磁閥2反向導通,將氣缸2縮回。之后沿著CD方向運動到D點,微控制器1發送命令給微控制器3,微控制器3收到命令之后使電磁閥2正向導通,將氣缸2推出,從而完成D點的布障,隨后控制電磁閥2反向導通,將氣缸2縮回。之后小車沿著DA方向回到A點,停止運動。也可以通過修改程序讓小車循環往復地沿著ABCD方向行走。經性能測試,小車布置完所有障礙物只需要10.5 s,且任務完成度為100%。

圖6 智能小車運行場地圖
課題組設計了一款基于STM32的自動循跡布障小車。在硬件電路設計方面,將電源板和主控板單獨設計,主要有以下優點:1)減少主控板的發熱量,延長板子使用壽命,降低故障率;2)方便后續為新增加的功能模塊提供電源接口。同時,為了提高小車與各模塊之間通信的實時性,主控模塊與各模塊之間采用CAN總線進行數據傳輸。經測試,該智能小車具備快速自動循白線、推桿布障等功能,通過反復調試及算法優化,能夠保障小車在10.5 s時穩定地完成所有任務。