趙龍云
(杭州職業(yè)技術學院,浙江 杭州 310018)
基于環(huán)境感知、決策規(guī)劃、自動行駛等多種功能的智能循跡小車具有成本低廉、易于維護等優(yōu)點,隨著科技的發(fā)展,越來越多智能化設備廣泛應用在多種場合[1]。如化工原料及成品搬運、儀器儀表行業(yè)的元器件搬運、印刷出版業(yè)的紙張搬運、汽車工業(yè)的零部件搬運等,逐漸地改變了我們原有的生產(chǎn)生活方式。本文采用PT550A5C 環(huán)保光敏傳感器,以STM32F407 作為數(shù)據(jù)和邏輯處理控制器,創(chuàng)新地設計了以自動循跡為主要功能的小車系統(tǒng),并搭建實物樣機進行試驗,驗證該方案的可靠性及系統(tǒng)功能的完整性。
如圖1 所示,本文所述的基于STM32F407 控制器的智能循跡小車主要由車體、供電系統(tǒng)、主控制器、灰度傳感器、OLED 顯示屏、電機驅動模塊等組成。
圖1 系統(tǒng)結構框
本文所述的循跡小車主控制器選用STM32F407 微處理器,車體底板前后端通過傳感器支架連接件與傳感器支架相連,循跡用的灰度傳感器模塊安裝在傳感器支架上,這種外伸的傳感器布置方式能讓傳感器緊貼地面,提高了傳感器對光照等外界環(huán)境的抗干擾性能,也可以使控制系統(tǒng)提前感知前方路徑變化,提高系統(tǒng)的預判性,增加系統(tǒng)穩(wěn)定性。在車體底板下安裝4 個直流電機,由電機驅動器接收STM32F407 處理器發(fā)出的PWM 信號,對直流電機進行調速控制。為了保證控制系統(tǒng)的可靠性,在電機驅動端增加光耦隔離器件,起到控制信號隔離的作用,同時分別對左右兩側的電機進行單獨的PWM 占空比調速控制,這樣的控制方法可以得到左右不同的占空比輸出,從而控制左右直流電機達到不同的速度,實現(xiàn)轉彎和掉頭等動作。
意法半導體研發(fā)的STM32F407VGT6 是帶有DSP 和FPU 指令的高性能微處理器,具有高達180Mhz 工作頻率和浮點運算器,使得處理和運算循跡小車的傳感器數(shù)據(jù)所用時間更短,能夠使系統(tǒng)具有更好的實時性和穩(wěn)定性。
灰度傳感器通過控制器的16 個AD 通道將模擬信號轉換為數(shù)字信號,通過DMA 通道傳輸,無須經(jīng)過CPU 進行數(shù)據(jù)搬運,直接點對點將采集的數(shù)據(jù)存入數(shù)據(jù)暫存單元,供循跡算法使用,大大地提高了CPU 的效率,有利于信息數(shù)據(jù)的高效處理。
循跡傳感器采用PT550A5C 光敏二極管,光敏二極管是一種能夠將光信號轉化為電信號的電子器件,相比于傳統(tǒng)的光敏電阻它具有可靠性強、靈敏度高等特點,廣泛應用于科學研究和生產(chǎn)設備中[2]。本設計根據(jù)光敏二極管的特點和循跡小車的應用場景,設計出由光敏二極管和發(fā)光二極管組合的灰度傳感器模塊,此模塊由16 組光電傳感器呈“一字型”排布,能夠有效地識別路徑引導線。
如圖2 所示為灰度傳感器測試電路,STM32 的AD 通道測量電壓范圍為0~3.3V,VCC 為3.3V 供電,與控制器的AD 外設電壓匹配,D1 為發(fā)光二極管,用來給光敏二極管補光,減少外界光線對灰度傳感器的影響。D2 為光敏二極管,光敏二極管接收D1照射到白色引導線反射回來的光,當D2 在循跡引導線上時,接收反射回來的光線強,此時A1 處的電壓接近0V;當傳感器D2沒有在循跡引導線上時,接收反射回來的光線弱,此時A1 處的電壓接近VCC。利用光敏二極管的這種特性,我們就可以區(qū)分出深色地面與白色路線從而進行循跡,如圖3 所示。
圖2 灰度傳感器測試電路
圖3 灰度傳感器實物
小車的供電電源選用11.1V 的Lipo 電池,Lipo 電池具有很高的放電率同時也具有較輕的重量,提高小車運行效率。
由于電機在運行過程中會對供電系統(tǒng)產(chǎn)生沖擊,而單片機與傳感器系統(tǒng)工作時又對電源的質量有要求,所以此時應該將電機驅動回路的供電和單片機控制回路的電源進行隔離處理,電機驅動端直接通過電池供電,控制系統(tǒng)通過穩(wěn)壓電路進行降壓,穩(wěn)壓電路采用的是LM2596DC-DC 降壓芯片,在芯片具有寬壓輸出、外圍電路簡單、輸出損耗低等優(yōu)點。穩(wěn)壓電路原理圖如圖4所示。
圖4 穩(wěn)壓電源模塊原理
小車采用單邊雙電機驅動的方式,而傳統(tǒng)的L298 電機驅動模塊功率較小,不能滿足需求,本設計使用半橋驅動器IR2104驅動MOS 管組成H 橋電路,再通過門電路組合,最后使電機驅動器既有L298 類似的靈活控制邏輯,又能夠有較大的輸出功率[3]。
直流電機在運行過程中,特別是在起停的瞬間會對供電電路產(chǎn)生沖擊,輕則為電源引入噪聲干擾精密器件,重則會擊穿原件、燒毀芯片,對整個系統(tǒng)造成危害。為了防止此類問題的發(fā)生,提高系統(tǒng)穩(wěn)定性,本設計選用華羿微電子生產(chǎn)的80V 200A 大功率MOS 管搭建H 橋電路,同時使用光耦芯片對全部控制信號進行隔離,最大限度對整個系統(tǒng)進行保護。電機驅動模塊控制信號邏輯如表1 所示。
表1 電機接口控制邏輯
μC/OS-Ⅱ作為開源的嵌入式實時操作系統(tǒng)具有核心代碼可讀性強、多任務處理功能完善、實時性好、可裁剪、可固化、源碼開放、移植性好的特點[4]。同時,μC/OS-Ⅱ是搶占式的多任務操作系統(tǒng),各個任務初始化時會被分配唯一且固定的優(yōu)先級,整個系統(tǒng)以固定周期實時掃描,運行已就緒任務列表中優(yōu)先級最好的任務。本方案從實現(xiàn)循跡小車的功能入手,針對傳感器數(shù)據(jù)采集、電機閉環(huán)控制、循跡路徑規(guī)劃等功能,設計出了既滿足基本功能,又兼具程序設計的合理化和可拓展性的調度任務。
本系統(tǒng)采用模塊化設計、分層結構,根據(jù)高內(nèi)聚低耦合的程序設計思路,將系統(tǒng)分為驅動層和應用層。驅動層主要包含外設的底層驅動代碼,如OLED 的驅動代碼、ADC 采樣系統(tǒng)資源的初始化、提供電機驅動所需的PWM 信號的定時器配置代碼等。應用層主要負責上層應用的邏輯處理、各子任務調度、循跡邏輯的實施等。
針對不同的功能需求,對任務進行合理地劃分,可以大大減少編程難度,改善系統(tǒng)的動態(tài)響應和穩(wěn)定性。設計根據(jù)系統(tǒng)任務的需求,采用靜態(tài)優(yōu)先級設置,將系統(tǒng)任務進行劃分,賦予各個任務一定的優(yōu)先級別。表2 為任務的優(yōu)先級設置和具體劃分功能描述。
表2 任務劃分及優(yōu)先級設置
本設計使用一塊0.96 寸雙色OLED 顯示屏對傳感器數(shù)據(jù)進行實時顯示,OLED 屬于一種電流型的有機發(fā)光器件,是通過載流子的注入和復合而導致發(fā)光的現(xiàn)象,發(fā)光強度與注入的電流成正比。OLED 具有分辨率高、功耗低等特點,廣泛應用于嵌入式設備。對OLED 顯示任務的定義是:無須嚴格的實時性要求,能夠在調試階段將各個傳感器數(shù)據(jù)正確顯示即可,所以將OLED數(shù)據(jù)顯示任務的掃描周期設置500ms,優(yōu)先級是55。
ADC 采集的灰度傳感器數(shù)據(jù)是本設計能夠正常運行的基礎,如果灰度傳感器數(shù)據(jù)出錯或者實時性不好會導致循跡無法正常運行,所以將此任務優(yōu)先級設置為最高,即任務優(yōu)先級設置為11。
在ADC 采樣任務中,灰度傳感器采樣數(shù)值會受到外界光線干擾和傳感器供電噪聲的影響,偶爾出現(xiàn)異常數(shù)值,為了得到平滑的理想數(shù)據(jù),需要對ADC 采集的原始數(shù)據(jù)進行濾波并進行歸一化處理。本設計采用快速濾波算法對傳感器數(shù)據(jù)進行處理,快速中值濾波具有代碼簡單、效率高等優(yōu)點,非常適合嵌入式設備使用。利用歸一化算法將模-數(shù)通道采樣的數(shù)據(jù)范圍從0~1023歸一化至0~255 之間,將12 位數(shù)據(jù)轉化為8 位數(shù)據(jù),減少運算的數(shù)據(jù)量,提高系統(tǒng)的運算效率,增加系統(tǒng)穩(wěn)定性。
電機控制任務的主要目的是實時采集編碼器返回數(shù)據(jù),根據(jù)循跡任務要求,對電機轉速進行閉環(huán)控制,提高系統(tǒng)穩(wěn)定性。電機速度控制的穩(wěn)定性決定了循跡系統(tǒng)是否穩(wěn)定,所以將電機控制任務的優(yōu)先級設置為僅次于ADC 采樣任務的第二高優(yōu)先級,保證電機轉速控制的實時性。循跡小車電機的轉速控制采用PID控制中的增量式控制策略,根據(jù)單位時間速度傳感器反饋的電機速度信息,可以構建基于增量式PID 的速度閉環(huán)控制器。ADC采樣任務流程如圖5 所示。
圖5 ADC 采樣任務流程
增量式PID 控制算法見式(1)。
ΔU=Kp[e(k)-e(k-1)]K1e(k)+KD[e[k]-2e(k-1)+e(k-2)]。(1)其中:k 為采樣序號,在電機轉速閉環(huán)控制中,增量式PID 控制器的計算需要保存前兩次的偏差e(k)-e(k-1),增量輸出ΔU 可以直接作為電機控制返回值,因此參數(shù)整定和計算都較為方便[5]。
圖6 為小車循跡任務流程。循跡任務的掃描周期為10ms,不斷對ADC 采樣任務處理后的數(shù)據(jù)進行分析,計算當前小車前進的姿態(tài),將小車與引導線的偏移值反饋給電機控制任務,經(jīng)過電機控制任務的電機速度閉環(huán)控制器轉換為電機的電壓,從而實現(xiàn)循跡小車的直行、轉彎、加減速等功能。
圖6 循跡任務流程
循跡小車的整體設計效果如圖7 所示。16 組光電傳感器呈“一字型”均勻分布構成灰度傳感器模塊,通過傳感器支架連接件放置在車前。車中部由電池及主控電路板組成,小車的四個電機分別安裝增量式霍爾磁敏編碼器,此編碼器具有響應速度快、抗震強、傳輸距離遠等特點,為電機轉速控制提供有力保障。
圖7 循跡小車實物
本設計中的智能循跡小車,采用PT550A5C 光電傳感器為循跡模塊,單片機STM32F407ZGT6 為控制模塊,選用大功率N 溝道MOS 管構成H 橋為電機驅動模塊,LM2596 為電源模塊。通過μC/OS-Ⅱ嵌入式實時操作系統(tǒng)建立數(shù)據(jù)顯示、ADC 采集、電機閉環(huán)控制、循跡規(guī)劃4 個任務作為小車的軟件控制。
實驗結果顯示,該系統(tǒng)能夠出色地完成預定的循跡任務。此外,得益于μC/OS-II 操作系統(tǒng)的可拓展性,該系統(tǒng)還可以拓展自動識別、自動報警、自動保持安全距離、車速檢測及遙控等多種性能。