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