程望斌,陳 久,楊路思,李至東,周玉嶸
(1.湖南理工學(xué)院 南湖學(xué)院,湖南 岳陽 414006;2.湖南理工學(xué)院 信息科學(xué)與工程學(xué)院,湖南 岳陽 414006)
自動導(dǎo)引車(AGV)集成化程度較高,其中起關(guān)鍵作用的是導(dǎo)航技術(shù)[1].目前采用的導(dǎo)引方式包括激光(超聲波)導(dǎo)引、磁導(dǎo)引、視覺導(dǎo)引、紅外導(dǎo)引與慣性導(dǎo)引等.激光導(dǎo)引方式定位準確,路線靈活多變,受天氣因素影響較小,但成本高昂,導(dǎo)引方式復(fù)雜,不太適合用于成本敏感和簡潔的場合.視覺導(dǎo)引方式路線設(shè)置簡單,靈活多變,但圖像識別的可靠性有待提高,易被環(huán)境影響.慣性導(dǎo)引方式準確性很高,靈活多變,但對陀螺儀精度和地面平整度要求較高.磁帶導(dǎo)引方式定位準確,線路比較容易改變,成本較低,使用簡單,但此種方式容易受到外部磁場干擾,不適用于有較高磁場的環(huán)境[2].
本文以STM32系列中的F103R8T6芯片為核心器件[3],進行自動導(dǎo)引小車優(yōu)化設(shè)計.主要設(shè)計要求為:(1)使用前驅(qū)模式來實現(xiàn)小車的運動;(2)使用SS41F磁敏傳感器來檢測磁導(dǎo)帶;(3)使用電機驅(qū)動模塊來控制電機的運動狀態(tài);(4)具有電源按鍵、復(fù)位按鍵和紅黃綠三個LED燈和蜂鳴器.
以STM32F103R8T6 為核心控制器設(shè)計自動導(dǎo)引小車控制系統(tǒng)[4],包括電機驅(qū)動、磁敏傳感器和電源等相關(guān)電路.系統(tǒng)總體設(shè)計如圖1所示.
在圖1 中,由軟件部分根據(jù)實際情況來控制LED的亮暗和蜂鳴器的響滅,電機的運轉(zhuǎn)也是按照實際情況來判斷.當(dāng)小車開始上電或復(fù)位時,其初始化順序為:LED 初始化、蜂鳴器初始化、電機初始化和磁敏傳感器初始化.在運行時先有3 秒的停留準備時間,然后各系統(tǒng)開始工作.
圖1 系統(tǒng)總體設(shè)計
硬件部分主要包括R8T6 控制器主控核心板、LED 指示燈模塊、按鍵模塊、磁敏傳感器模塊、蜂鳴器模塊和電機驅(qū)動模塊等.核心板模塊設(shè)計如圖2所示.
圖2 核心板模塊設(shè)計
R8T6 控制器是自動導(dǎo)引小車能正確沿軌道運行的基礎(chǔ)和關(guān)鍵.控制器通過判斷磁敏開關(guān)傳感器采集到的信號來確定車輛所處的位置,根據(jù)車輛位置進而控制聲光提示模塊和電機驅(qū)動模塊.在整個系統(tǒng)中,外圍設(shè)備主要包含蜂鳴器模塊、LED 模塊、SS41F 磁敏開關(guān)傳感器模塊和L298N 電機驅(qū)動模塊等.在這些硬件模塊中,需要配合合理的電路才能驅(qū)動[5].
程序部分采用模塊化的編寫方式,將每一個功能模塊寫成相對應(yīng)的文件.此方式可以通過分工盡快地實現(xiàn)各個模塊的功能,并根據(jù)實際情況來對各個功能模塊進行控制.首先對各個模塊進行初始化,然后控制相應(yīng)的模塊實現(xiàn)特定的功能,并在Keil uVision5的環(huán)境下編譯運行系統(tǒng)仿真,以實現(xiàn)相關(guān)功能.AGV運行主體程序如圖3所示.
圖3 AGV 運行主體程序流程
軟件程序主要分為四個模塊:電機控制模塊、LED 控制模塊、蜂鳴器控制模塊和磁敏傳感器控制模塊.其主體流程如圖4所示.
圖4 系統(tǒng)主體流程
這四個模塊中,除L298N 電機模塊用循環(huán)來控制,其余三個模塊全部都是在定時器中完成.包括SS41F 磁敏傳感器電壓值的獲取,控制LED 燈的狀態(tài)以及蜂鳴器的響滅(最終的響滅在定時器3 中完成).
在子程序中,電機控制與磁敏傳感器ADC值的獲取是重中之重,關(guān)系到小車是否能夠精確地跟隨導(dǎo)帶的前進或后退等操作.在電機控制模塊中,由于采用的是L298N電橋方案,只需給L298N的IN端與EN端發(fā)送相應(yīng)的控制信號,就可以實現(xiàn)控制電機的諸多操作.在四路磁敏傳感器ADC模塊中,采用定時器來完成.此方式可最大程度利用芯片資源,提高響應(yīng)效率.在定時器2的服務(wù)程序中,可通過全局變量來識別此時檢測到的小車狀態(tài).
先將蜂鳴器、LED 燈和磁敏傳感器等模塊都焊接好,然后正確地連接每一根杜邦線.硬件作品如圖5所示.
在圖5 中,小車采用前輪兩驅(qū)的方式來驅(qū)動,其設(shè)計方式更符合現(xiàn)實情況中小車的運行狀態(tài).將四路磁敏傳感器放置于小車底盤下來檢測磁導(dǎo)帶的位置信息,小車在每種狀態(tài)下都有相應(yīng)的提示信息(如LED 燈與蜂鳴器的各種狀態(tài)),以便于即時觀測與調(diào)試.
圖5 硬件作品實物
確保周圍除了磁導(dǎo)帶之外無其他強磁場干擾,如實驗環(huán)境本身就是處于強磁場中或者有大量磁性物質(zhì).當(dāng)然在磁導(dǎo)帶周邊也不放置障礙物.鋪設(shè)磁導(dǎo)帶作為此次實驗的預(yù)設(shè)路徑,要求磁導(dǎo)帶的N 極朝上,也就是無膠的一面保留在外,而有膠的一面(S 極)貼于平整地面,將小車頭部朝向正對磁導(dǎo)帶.
此時小車的兩個驅(qū)動輪在前方,磁敏傳感器也處于前方.在設(shè)置好這些環(huán)境之后,打開電源開關(guān).系統(tǒng)測試效果如圖6所示.
圖6 系統(tǒng)測試效果
在給整個系統(tǒng)通電后,開發(fā)板中的電源指示燈(紅色)將會一直亮起,同時核心板中的綠燈也會亮起.3秒后核心板中的綠燈將會熄滅,處理器芯片將會以20 Hz的速度開始讀取四個磁敏傳感器的輸出電平值.若某一個磁敏傳感器的數(shù)字量不大于2048,則說明此磁敏傳感器檢測到了磁導(dǎo)帶,通過處理這四個傳感器,可得知小車相對于磁導(dǎo)帶所處的位置.此時LED 燈模塊的狀態(tài)為全滅,蜂鳴器不發(fā)出警報.
采用類似上述方法,還能實現(xiàn)以下功能:
(1)位置自檢功能
四個磁敏傳感器離磁導(dǎo)帶都有一定的距離,SS41F 無法在此條件下檢測到N 極磁場,故其輸出電平值為輸入電壓值,其數(shù)字量大于2048(一般為4095).按照程序設(shè)計的思想,L298N 模塊中ENA 與ENB的輸入信號占空比為100%,此時為全速前進狀態(tài),LED 燈模塊中的紅燈亮起,蜂鳴器打開,蜂鳴器聲響的頻率為4500 Hz,占空比為50%,聲音聽起來比較清脆.
(2)直行功能
在直行前進的過程中,中間的兩個磁敏傳感器檢測到了磁導(dǎo)帶,此時芯片檢測到的電壓值數(shù)字量低于2048(一般為0).實驗表明,中間的兩個磁敏傳感器檢測到了磁導(dǎo)帶,說明此時小車并沒有偏離預(yù)設(shè)的磁導(dǎo)帶路徑,LED 燈模塊中的綠燈將會亮起,蜂鳴器不發(fā)聲,小車做全速前進直行運動,占空比為100%.還有一種特殊的情況也是這種運行方式,即當(dāng)最左邊或者最右邊的三個磁敏傳感器都檢測到了磁導(dǎo)帶,也認為小車沒有偏離路徑.
(3)轉(zhuǎn)向運動功能
左轉(zhuǎn)的情況是在確定了直行運行之后,當(dāng)最左邊的磁敏傳感器檢測到了磁導(dǎo)帶,小車的右電機運行速度快于左電機(右轉(zhuǎn)同理).當(dāng)最左邊的兩個磁敏傳感器檢測到了磁導(dǎo)帶,說明此時小車的行進路線已經(jīng)往右邊偏移了,小車應(yīng)當(dāng)為左轉(zhuǎn)前進狀態(tài),L298N 模塊中的ENA 輸入波形的占空比為40%,ENB 為100%;若最右邊的兩個磁敏傳感器檢測到了磁導(dǎo)帶,小車需要右轉(zhuǎn)前進運動,故L298N 模塊中的ENA 輸入波形的占空比為100%,ENB 為40%.
(4)后退功能
若磁敏傳感器之前已經(jīng)檢測到了磁導(dǎo)帶,但此時卻沒有檢測到磁導(dǎo)帶,則小車會作后退操作,其目的是返回之前位置,修正自身運動路徑.當(dāng)小車運動到磁導(dǎo)帶的終點或者偏離了磁導(dǎo)帶時,L298N中的IN 端同時取反改變輸入狀態(tài),小車將會作直行后退操作,ENA 與ENB的占空比為100%,即全速后退.小車亮紅燈,蜂鳴器發(fā)出警報,其發(fā)聲頻率為1125 Hz,占空比為50%,聲音比較低沉.此時小車的運動狀態(tài)為向后運轉(zhuǎn)狀態(tài),用于返回前一次檢測到的磁導(dǎo)帶的位置,再次修正自身運動路徑,此方式可在保持速度較快的情況下解決路線彎度過大問題.
(1)按下復(fù)位鍵,程序?qū)⒅匦麻_始從頭運行,核心板亮綠燈,蜂鳴器不發(fā)聲,小車處于靜止狀態(tài).
(2)在程序剛開始時,運行過了三秒沒有檢測到磁導(dǎo)帶,小車亮紅燈,蜂鳴器發(fā)出頻率為4500 Hz 占空比為50%的警報聲,小車直行前進運動.
(3)當(dāng)中間的兩個磁敏傳感器檢測到了磁導(dǎo)帶,綠燈亮起,小車直行,蜂鳴器不發(fā)聲.
(4)除去上述情況(3)之后,當(dāng)兩邊的磁敏傳感器檢測到磁導(dǎo)帶,小車向檢測到的磁帶的反方向運行,LED 燈模塊中的黃燈亮起,蜂鳴器不發(fā)聲.
(5)若運行一段時間后,沒有檢測到磁導(dǎo)帶,小車將會向后運動,紅燈亮,蜂鳴器發(fā)出頻率為1125 Hz占空比為50%的警報聲,小車做直行后退運動.
通過小車的運行測試來看,此次設(shè)計基本達到了系統(tǒng)設(shè)計目標,運行效果良好.
使用磁敏傳感器來檢測磁帶鋪設(shè)的路線狀況[6],并將檢測后的電壓值返回給單片機進行處理,處理后的結(jié)果用于反饋調(diào)節(jié)此時的運行狀態(tài),并通過不同顏色的LED 燈來顯示當(dāng)前偏離導(dǎo)軌的程度,在適當(dāng)?shù)那闆r下可以使用蜂鳴器來進行報警操作.本文設(shè)計的小車具有可靠性較強和操作簡單便捷等優(yōu)點,因此具有較好的應(yīng)用價值.