趙龍云
(杭州職業技術學院,浙江 杭州 310018)
基于環境感知、決策規劃、自動行駛等多種功能的智能循跡小車具有成本低廉、易于維護等優點,隨著科技的發展,越來越多智能化設備廣泛應用在多種場合[1]。如化工原料及成品搬運、儀器儀表行業的元器件搬運、印刷出版業的紙張搬運、汽車工業的零部件搬運等,逐漸地改變了我們原有的生產生活方式。本文采用PT550A5C 環保光敏傳感器,以STM32F407 作為數據和邏輯處理控制器,創新地設計了以自動循跡為主要功能的小車系統,并搭建實物樣機進行試驗,驗證該方案的可靠性及系統功能的完整性。
如圖1 所示,本文所述的基于STM32F407 控制器的智能循跡小車主要由車體、供電系統、主控制器、灰度傳感器、OLED 顯示屏、電機驅動模塊等組成。

圖1 系統結構框
本文所述的循跡小車主控制器選用STM32F407 微處理器,車體底板前后端通過傳感器支架連接件與傳感器支架相連,循跡用的灰度傳感器模塊安裝在傳感器支架上,這種外伸的傳感器布置方式能讓傳感器緊貼地面,提高了傳感器對光照等外界環境的抗干擾性能,也可以使控制系統提前感知前方路徑變化,提高系統的預判性,增加系統穩定性。在車體底板下安裝4 個直流電機,由電機驅動器接收STM32F407 處理器發出的PWM 信號,對直流電機進行調速控制。為了保證控制系統的可靠性,在電機驅動端增加光耦隔離器件,起到控制信號隔離的作用,同時分別對左右兩側的電機進行單獨的PWM 占空比調速控制,這樣的控制方法可以得到左右不同的占空比輸出,從而控制左右直流電機達到不同的速度,實現轉彎和掉頭等動作。
意法半導體研發的STM32F407VGT6 是帶有DSP 和FPU 指令的高性能微處理器,具有高達180Mhz 工作頻率和浮點運算器,使得處理和運算循跡小車的傳感器數據所用時間更短,能夠使系統具有更好的實時性和穩定性。
灰度傳感器通過控制器的16 個AD 通道將模擬信號轉換為數字信號,通過DMA 通道傳輸,無須經過CPU 進行數據搬運,直接點對點將采集的數據存入數據暫存單元,供循跡算法使用,大大地提高了CPU 的效率,有利于信息數據的高效處理。
循跡傳感器采用PT550A5C 光敏二極管,光敏二極管是一種能夠將光信號轉化為電信號的電子器件,相比于傳統的光敏電阻它具有可靠性強、靈敏度高等特點,廣泛應用于科學研究和生產設備中[2]。本設計根據光敏二極管的特點和循跡小車的應用場景,設計出由光敏二極管和發光二極管組合的灰度傳感器模塊,此模塊由16 組光電傳感器呈“一字型”排布,能夠有效地識別路徑引導線。
如圖2 所示為灰度傳感器測試電路,STM32 的AD 通道測量電壓范圍為0~3.3V,VCC 為3.3V 供電,與控制器的AD 外設電壓匹配,D1 為發光二極管,用來給光敏二極管補光,減少外界光線對灰度傳感器的影響。D2 為光敏二極管,光敏二極管接收D1照射到白色引導線反射回來的光,當D2 在循跡引導線上時,接收反射回來的光線強,此時A1 處的電壓接近0V;當傳感器D2沒有在循跡引導線上時,接收反射回來的光線弱,此時A1 處的電壓接近VCC。利用光敏二極管的這種特性,我們就可以區分出深色地面與白色路線從而進行循跡,如圖3 所示。

圖2 灰度傳感器測試電路

圖3 灰度傳感器實物
小車的供電電源選用11.1V 的Lipo 電池,Lipo 電池具有很高的放電率同時也具有較輕的重量,提高小車運行效率。
由于電機在運行過程中會對供電系統產生沖擊,而單片機與傳感器系統工作時又對電源的質量有要求,所以此時應該將電機驅動回路的供電和單片機控制回路的電源進行隔離處理,電機驅動端直接通過電池供電,控制系統通過穩壓電路進行降壓,穩壓電路采用的是LM2596DC-DC 降壓芯片,在芯片具有寬壓輸出、外圍電路簡單、輸出損耗低等優點。穩壓電路原理圖如圖4所示。

圖4 穩壓電源模塊原理
小車采用單邊雙電機驅動的方式,而傳統的L298 電機驅動模塊功率較小,不能滿足需求,本設計使用半橋驅動器IR2104驅動MOS 管組成H 橋電路,再通過門電路組合,最后使電機驅動器既有L298 類似的靈活控制邏輯,又能夠有較大的輸出功率[3]。
直流電機在運行過程中,特別是在起停的瞬間會對供電電路產生沖擊,輕則為電源引入噪聲干擾精密器件,重則會擊穿原件、燒毀芯片,對整個系統造成危害。為了防止此類問題的發生,提高系統穩定性,本設計選用華羿微電子生產的80V 200A 大功率MOS 管搭建H 橋電路,同時使用光耦芯片對全部控制信號進行隔離,最大限度對整個系統進行保護。電機驅動模塊控制信號邏輯如表1 所示。

表1 電機接口控制邏輯
μC/OS-Ⅱ作為開源的嵌入式實時操作系統具有核心代碼可讀性強、多任務處理功能完善、實時性好、可裁剪、可固化、源碼開放、移植性好的特點[4]。同時,μC/OS-Ⅱ是搶占式的多任務操作系統,各個任務初始化時會被分配唯一且固定的優先級,整個系統以固定周期實時掃描,運行已就緒任務列表中優先級最好的任務。本方案從實現循跡小車的功能入手,針對傳感器數據采集、電機閉環控制、循跡路徑規劃等功能,設計出了既滿足基本功能,又兼具程序設計的合理化和可拓展性的調度任務。
本系統采用模塊化設計、分層結構,根據高內聚低耦合的程序設計思路,將系統分為驅動層和應用層。驅動層主要包含外設的底層驅動代碼,如OLED 的驅動代碼、ADC 采樣系統資源的初始化、提供電機驅動所需的PWM 信號的定時器配置代碼等。應用層主要負責上層應用的邏輯處理、各子任務調度、循跡邏輯的實施等。
針對不同的功能需求,對任務進行合理地劃分,可以大大減少編程難度,改善系統的動態響應和穩定性。設計根據系統任務的需求,采用靜態優先級設置,將系統任務進行劃分,賦予各個任務一定的優先級別。表2 為任務的優先級設置和具體劃分功能描述。

表2 任務劃分及優先級設置
本設計使用一塊0.96 寸雙色OLED 顯示屏對傳感器數據進行實時顯示,OLED 屬于一種電流型的有機發光器件,是通過載流子的注入和復合而導致發光的現象,發光強度與注入的電流成正比。OLED 具有分辨率高、功耗低等特點,廣泛應用于嵌入式設備。對OLED 顯示任務的定義是:無須嚴格的實時性要求,能夠在調試階段將各個傳感器數據正確顯示即可,所以將OLED數據顯示任務的掃描周期設置500ms,優先級是55。
ADC 采集的灰度傳感器數據是本設計能夠正常運行的基礎,如果灰度傳感器數據出錯或者實時性不好會導致循跡無法正常運行,所以將此任務優先級設置為最高,即任務優先級設置為11。
在ADC 采樣任務中,灰度傳感器采樣數值會受到外界光線干擾和傳感器供電噪聲的影響,偶爾出現異常數值,為了得到平滑的理想數據,需要對ADC 采集的原始數據進行濾波并進行歸一化處理。本設計采用快速濾波算法對傳感器數據進行處理,快速中值濾波具有代碼簡單、效率高等優點,非常適合嵌入式設備使用。利用歸一化算法將模-數通道采樣的數據范圍從0~1023歸一化至0~255 之間,將12 位數據轉化為8 位數據,減少運算的數據量,提高系統的運算效率,增加系統穩定性。
電機控制任務的主要目的是實時采集編碼器返回數據,根據循跡任務要求,對電機轉速進行閉環控制,提高系統穩定性。電機速度控制的穩定性決定了循跡系統是否穩定,所以將電機控制任務的優先級設置為僅次于ADC 采樣任務的第二高優先級,保證電機轉速控制的實時性。循跡小車電機的轉速控制采用PID控制中的增量式控制策略,根據單位時間速度傳感器反饋的電機速度信息,可以構建基于增量式PID 的速度閉環控制器。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 為采樣序號,在電機轉速閉環控制中,增量式PID 控制器的計算需要保存前兩次的偏差e(k)-e(k-1),增量輸出ΔU 可以直接作為電機控制返回值,因此參數整定和計算都較為方便[5]。
圖6 為小車循跡任務流程。循跡任務的掃描周期為10ms,不斷對ADC 采樣任務處理后的數據進行分析,計算當前小車前進的姿態,將小車與引導線的偏移值反饋給電機控制任務,經過電機控制任務的電機速度閉環控制器轉換為電機的電壓,從而實現循跡小車的直行、轉彎、加減速等功能。

圖6 循跡任務流程
循跡小車的整體設計效果如圖7 所示。16 組光電傳感器呈“一字型”均勻分布構成灰度傳感器模塊,通過傳感器支架連接件放置在車前。車中部由電池及主控電路板組成,小車的四個電機分別安裝增量式霍爾磁敏編碼器,此編碼器具有響應速度快、抗震強、傳輸距離遠等特點,為電機轉速控制提供有力保障。

圖7 循跡小車實物
本設計中的智能循跡小車,采用PT550A5C 光電傳感器為循跡模塊,單片機STM32F407ZGT6 為控制模塊,選用大功率N 溝道MOS 管構成H 橋為電機驅動模塊,LM2596 為電源模塊。通過μC/OS-Ⅱ嵌入式實時操作系統建立數據顯示、ADC 采集、電機閉環控制、循跡規劃4 個任務作為小車的軟件控制。
實驗結果顯示,該系統能夠出色地完成預定的循跡任務。此外,得益于μC/OS-II 操作系統的可拓展性,該系統還可以拓展自動識別、自動報警、自動保持安全距離、車速檢測及遙控等多種性能。