倪爽 蔡文杰 張燕 謝鵬飛
摘要:本文主要論述基于STM32的遙控小車,通過紅外用NEC編碼方式來控制小車,包括遙控模式和循跡模式。運動狀態(tài)包括控制小車向前、向后、左轉、右轉、停止、變速(用PWM控制電機轉速)運動。循跡模式用來模擬小車運行路徑,對AGV小車的設計提供路徑支持,需要用到避障模塊,在檢測到有物體后轉向、前進一段距離再次轉向,進入另一道路線,直至連續(xù)兩次檢測到前方有物體,小車停止。實驗結果表明,小車在一定程度上可以模擬AGV小車的運行路徑,搭配遙控模式,更加方便可靠。
關鍵詞:紅外控制;移動小車;STM32;AGV
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)07-0228-03
Abstract: This paper mainly discusses the remote control trolley based on STM32, which is controlled by NEC coding through infrared, including remote control mode and tracking mode. The motion state includes controlling the car to move forward, backward, turn left, turn right, stop and change speed (motor speed is controlled by PWM). Tracking mode is used to simulate the running path of AGV trolley, which provides path support for the design of AGV trolley. Obstacle avoidance module is needed. After detecting an object, it turns, advances for a certain distance and turns again, and enters another route, until the object in front is detected twice in succession, and the trolley stops. The experimental results show that the trolley can simulate the running path of AGV trolley to a certain extent, which is more convenient and reliable with the remote control mode.
Key words: Infrared Control;Small Car;STM3;AGV
1 引言
隨著時代的發(fā)展,現(xiàn)在的機器人技術已經滿足不了人們的需求,不論是功能型機器人還是搬運機器人,都有著很大的發(fā)展空間。本文基于STM32設計一款模擬AGV小車路徑規(guī)劃的程序,給自動導引小車( Automated Guided Vehicle,AGV)的設計提供一定的幫助。
由于紅外遙控是一種無線、非接觸控制技術,具有抗干擾能力強、信息傳輸可靠、功耗低、成本低、易實現(xiàn)等顯著優(yōu)點[1]。本文選擇紅外來和主控芯片交互。通過遙控來觀察小車各種運動狀態(tài),能夠基本實現(xiàn)小車正常循跡。在即將碰到墻壁的時候,避障模塊返回信號到對應端口,STM32控制小車轉彎,進入下一路段。
關于車輛避障的研究目前較少,如果可以通過機器學習來使得機器人有較高級的自動避障功能,那么實際生活中會發(fā)生天翻地覆的變化[2]。
2 整體架構
在控制端通過紅外遙控器和STM32進行通信。STM32作為整個系統(tǒng)的核心,分析請求的數(shù)據并且控制電機驅動模塊的邏輯電壓進而控制小車的運動狀態(tài)。圖1為小車的整體架構。
總體來說分為兩種運動模式,第一種為遙控,即按下按鍵,小車進行相應的運動。第二種為自動循跡,根據下載好的路徑,小車有了一定的“智能”化,不需要時刻控制小車的運動軌跡。
3 設計框圖
本文在硬件上面選用stm32F103RCT6,其優(yōu)勢是體積小,功能齊全。還有紅外遙控器、紅外接收器、避障模塊及L298N驅動模塊,電源用充電寶即可。
這里選擇PB0、PB1端口控制左電機,PB10、PB11端口控制右電機。PB9作為紅外接收端,PB6、PB7分別作為左右端的避障模塊來使用。
首先介紹電機驅動模塊,如圖3。
使用時,電機需要外接工作電壓,同時接地端要與開發(fā)板共地。用IN1-IN4的邏輯電壓分別控制OUT1-OUT4的輸出電壓,這樣便可以控制電機的轉動。
用IN1和IN2來控制電機的左輪,當IN1與IN2都為0時,電機處于停止狀態(tài)。IN1為1,IN2為0時,處于正轉。IN1為0,IN2為1處于反轉。
紅外選用常見的NEC編碼方式,由同步碼頭,地址碼,地址反碼,控制碼控制反碼組成[3]。
邏輯1由560us高電平加1680us低電平構成,邏輯0由560us高電平加560us低電平構成。同步碼頭由9ms低電平加4.5ms高電平構成。接收端收到的信號與之相反。
紅外避障模塊在檢測到前方有物體的時候,將OUT端口置零,以此來判斷是否有障礙。
4軟件部分
在主函數(shù)中先進行系統(tǒng)初始化,包括延時函數(shù)初始化,以及NVIC分組配置、調試程序時所需串口的初始化、外部顯示TM1638。然后進行定時器的初始化,本系統(tǒng)用定時器TIM2和定時器TIM3進行電機控制,用定時器TIM4來進行紅外輸入捕獲解碼。在紅外接收初始化完成之后就進入控制循環(huán),讀取紅外輸入的鍵值進行匹配,若鍵值有效,再次進行匹配,如果是遙控模式,STM32識別發(fā)射的紅外信號,控制小車運動,通過遙控器退出遙控。如果是循跡模式,根據寫入到STM32中的代碼進行運動。圖5為主函數(shù)流程圖。
具體的按鍵與鍵值匹配如表1。在接收到發(fā)射端的控制指令后,接收端控制小車做出相應動作。電機采用PWM調速,即改變直流電機電樞電壓的占空比來改變平均電壓,從而實現(xiàn)直流電機調速[4]。
而小車的運動函數(shù)以“前進”為例,前進要求兩個輪子同時前進。
void forward(void)
{
//右輪前進
TIM_SetCompare3(TIM2,5000);
TIM_SetCompare4(TIM2,speed); //前進調整數(shù)值
//左輪前進
TIM_SetCompare3(TIM3,speed); //調這個
TIM_SetCompare4(TIM3,5000);
}
這里涉及到PWM調速,首先在主函數(shù)中設置了定時器TIM3和定時器TIM2的ARR為4999和PSC為71,用函數(shù)TIM3_PWM_Init(4999,71)表示;使用TIM_SetCompare3(TIM3,speed)這個函數(shù)時將定時器TIM3的通道四比較值設為speed。當speed為0時,對應的通道持續(xù)高電平,此時,通道四5000表示對應端口持續(xù)低電平,這樣小車便全速前進。同樣的,后退,轉彎只需要改變比較值即可。
圖6為循跡模式的路徑。
在碰墻后觸發(fā)中斷,先關閉中斷,小車左轉,前進一個身位再次左轉,并且將下一次轉彎設置為右轉同時打開中斷,繼續(xù)前進。在右轉后,將下一次轉彎設置為左轉,重復上面操作。如果連續(xù)觸發(fā)中斷,表明循跡完成,小車停止。
5結論
以STM32為控制芯片制作的遙控小車,其中遙控模式反應靈敏,循跡運動略有不足,對于轉彎點的把握不到位,圖7為小車成品圖。
表2為轉彎時間與傾斜角度的關系,小車在轉彎后并不是直線。另外小車的負載和萬向輪的方向在一定程度也會干擾小車直線行駛。
經過數(shù)據分析,由于萬向輪的摩擦系數(shù)較大,初始萬向輪為直線行駛下至轉彎完成時間接近二次函數(shù),轉90度共需615ms。
該車可粗略模擬出循跡機器人行走路線,加之遙控控制,能夠基本完成小車的運動控制,對于AGV的設計提供一些基礎性的參考。
參考文獻:
[1] 李從宏. 基于功能碼的紅外遙控軟件解碼技術[J].單片機與嵌入式系統(tǒng)應用,2010(9):72-73.
[2] 衛(wèi)靜婷, 陳利偉.基于STM32的語言控制和自動避障智能小車的設計[J].電子測試,2018(8).
[3] 聶詩良, 李磊民. 紅外遙控信號的一種編碼解碼方法[J].儀表技術與傳感器,2004(8): 28-29.
[4] 蘭羽. 基于紅外傳感器 ST188 的自動循跡小車設計[J].電子設計工程,2013,21(3):64-66.
【通聯(lián)編輯:王力】