馮蓉珍
(蘇州經貿職業技術學院 信息系,江蘇 蘇州 215009)
機器人小車是一個集環境感知、動態決策與規劃、行為控制與執行等多功能于一體的綜合系統。隨著傳感技術、計算機科學、人工智能及其他相關學科的迅速發展,機器人小車正向著智能化的方向發展[1]。智能機器人小車必須具有感知周圍環境、進行任務規劃和決策的能力,特別是在上下坡、彎道等不同的環境中需要實現速度控制、避開障礙物及沿某軌跡自主行走等功能,因此系統必須具有豐富的傳感器、功能強大的控制器以及靈活精確的驅動系統。本文設計了一種基于AT-mega128單片機的智能機器人小車控制系統,該系統將實時檢測到小車運行速度和設定速度的差值進行含bang-bang成分的PID運算,產生PWM信號控制電機轉速,實現對車速的快速調整和精確控制。同時利用灰度傳感器檢測地面灰度使得小車沿特定軌跡自主行走,在行走的同時還利用紅外傳感器檢測障礙物,實現避障功能。
系統由上位機和下位機組成。上位機包括PC、無線數據發射模塊和無線圖像接收模塊,下位機由CMOS攝像頭、測速模塊、單片機系統、紅外避障傳感器、地面灰度傳感器、PWM調速與電機驅動控制模塊等部分組成。整個系統的結構如圖1所示。搭載在小車上的CMOS攝像頭獲取道路的實時信息并通過無線通信發送給上位機;上位機對傳來的路況圖像進行處理,計算出小車的最佳運行速度并通過無線數據發送模塊將該速度值發送給下位單片機;下位單片機收到設定的速度值后,進行PID運算并產生PWM信號控制車速快速準確地達到設定值。本文主要探討下位單片機控制系統的設計。

圖1 系統結構框圖
PID控制器的參數整定是本控制系統設計的核心內容,它是指根據被控過程的特性確定PID控制器的比例系數、積分時間和微分時間大小。PID控制器的參數整定方法主要有理論計算整定法和工程整定法。一般采用工程整定法,該方法主要有臨界比例法、反應曲線法和衰減法。無論采用哪一種方法,都需要在實際運行中進行最后的調整與完善[2]。本系統采用臨界比例法,首先預設一個夠短的采樣周期讓系統工作,然后僅加入比例控制環節,直到系統對輸入的階躍響應出現臨界振蕩,記下此時的比例放大系統和臨界振蕩周期,最后在一定的控制度下根據“齊格勒-尼克爾斯經驗法”可計算得到PID控制器的參數Kp,Ki,Kd。
本系統對直流電機的調速控制采用引入了含bang-bang成分的PID算法來實現閉環控制小車速度,原理如圖2所示。

式中:U(k)是第 k 次輸出量,U(k)-U(k-1)為輸出增量,ek是第k次偏差,ek-1是第k-1次偏差。

圖2 增量式PID速度控制框圖
上位機把設定車速rk通過無線數據發送模塊發送給ATmega128單片機。單片機將測速模塊輸入的脈沖信號經過計算得到實際車速Vk,Vk和rk之差ek被輸入到PID控制器,通過PID運算后得出一個增量△U(k),根據該增量控制單片機內部的PWM直接輸出一個脈沖寬度隨U(k)變化的PWM信號,從而控制電機的轉速。
為了加快電機的響應速度,算法中還引入bang-bang成分,當車速大于/小于設定值的某一比例時電機將以最小或最大速度運轉,即當|rk-Vk|/rk>M(M 一般取 0.3~0.5) 成立時,算法將跳出 PID 控制模式,直接采用bang-bang的方式控制電機,這就使得小車的加減速比單純使用PID控制算法更加迅速。
除了運行速度,小車運行的穩定性也很重要。這就要求小車能夠根據行駛道路的復雜程度,如彎道、上下坡、直道等來實時給出小車的最佳運行速度,使之能穩定安全行駛,避免沖出彎道、爬不上坡或下坡速度過快而沖出道路等情況發生,這是由上位機根據無線攝像頭發送的圖像信息通過圖像處理完成的。
避障模塊中的紅外傳感器由一對紅外發射器和接收器組成,發射器發射紅外光線如遇障礙物則被反射回來,接收器接收到被反射的紅外線后輸出一高電平給單片機,單片機根據這個電平通過電機驅動與控制模塊控制小車自主躲避障礙物。
尋跡模塊中的三個灰度傳感器分別檢測地面灰度,把該灰度值發送給單片機自帶的A/D端口,通過A/D轉換后得到一個數值。單片機根據地面灰度值通過電機驅動與控制模塊控制小車沿著某種顏色的軌跡行走。
系統硬件以ATmega128單片機為控制核心,主要由單片機最小系統電路、測速電路、紅外避障電路、紅外尋跡電路、電機調速和驅動電路等組成。
單片機部分是整個系統的控制核心。從滿足系統功能方面考慮,本系統選擇Atmel公司生產的ATmega128單片機,它是AVR系列單片機中的高檔型,采用RISC結構,具有128K字節的支持ISP編程的FLASH存貯器和4K字節的片內SRAM,它還具有六個PWM通道,可實現任意2~16位、相位和頻率可調的PWM脈寬調制輸出,八通道10位A/D轉換和兩個全雙工硬件串口USART[3],方便和上位機獨立通訊。
單片機最小系統電路包括單片機復位、晶振等外圍電路。它負責將測速、避障等電路產生的輸入信號進行處理并通過自帶的硬PWM輸出控制信號給驅動放大電路,從而控制電機轉速,此方式產生的PWM信號比用定時器中斷產生的PWM信號實時性更好,而且不會占用系統的定時器資源,這也是本系統采用ATmega128單片機的原因之一。同時ATmega128內部自帶10位A/D轉換器,可以將尋跡傳感器檢測到的地面灰度電壓值進行模數轉換,從而對地面灰度值進行量化,實現小車尋跡功能。
測速模塊由黑白碼盤和光電傳感器組成。黑白碼盤貼在驅動輪的輪盤上,光電傳感器位于碼盤同側,如圖3所示。當光電傳感器中發射的紅外光投射到碼盤的黑白條紋上時,將被間隔地反射到傳感器接收端,接收端收到與輪子轉速成正比的光電脈沖信號,從而在傳感器的輸出端產生一定頻率的電脈沖信號,通過一非門輸入到單片機的外部中斷口。通過單片機對脈沖計數就可算出小車的移動距離L,L=∏*D*N/M(D為驅動輪外徑,M為碼盤的黑白條紋數,N為實測的電脈沖正負跳變次數),小車的行駛速度Vk=L/T(T為單位時間間隔)。通過對一次時間間隔內接收到的脈沖個數進行計數,再通過上式計算即可得到小車實際運行速度Vk。

圖3 黑白碼盤與光電傳感器
紅外避障電路的基本工作原理為晶振通過電容與非門產生一38Khz的脈沖信號,該信號作為載波控制紅外二極管將信號發射出去,遇到障礙物反射回來的信號被一體化接收頭接收并輸出高電平,若無障礙物則無返回信號,輸出低電平。單片機通過查詢信號輸入引腳的狀態來判斷是否有障礙物并輸出相應的控制信號,控制電機運行方向和速度。可以在小車不同方向上安裝紅外避障傳感器,本系統在小車的左前方和右前方各安裝一對。
本系統配有3路紅外收發一體灰度傳感器,發射管向地面發射紅外光線,接收管根據接收到的紅外光線的強弱,輸出某個電壓值,該電壓值輸入到單片機的A/D口,進行A/D轉換后得到一個0~1 023的數值,數值大小反映地面不同灰度,每種顏色都對應于一個數值范圍。例如,白色灰度值為 0~20,黑色為 1 000~1 023,單片機根據這些數值能判斷出傳感器所在地面的顏色,從而控制小車沿某種顏色的地面行走。3路傳感器并排放置,間距可根據顏色線寬度調整。
電機控制及調速模塊原理如圖4所示。圖中INPUT1~INPUT4為輸入控制的TTL電平信號,此4路信號經功放U7放大后驅動兩個電機,INPUT1和INPUT2控制小車左邊電機,INPUT3和INPUT4控制右邊電機,控制信號和電機轉動方向關系如表 1所示(表中“1”表示高電平,“0”表示低電平)。對電機的調速通過PWM實現,當INPUT1~INPUT4輸入的不是恒定的高低電平而是脈沖寬度可調的脈沖波形時,電機轉動的速度就變為可調,脈沖占空比越小則電機速度越慢,反之速度越快。

圖4 電機控制及調速模塊原理圖

表1 控制信號和電機轉動方向關系表
系統軟件由主程序和定時器中斷子程序、外部中斷子程序等組成。主程序主要進行一些變量的初始化、開中斷并等待定時器中斷和外部中斷的發生。PWM輸出、PID算法處理等均在T0中斷子程序中完成,其程序流程如圖5所示。外部中斷子程序負責對光電傳感器產生的脈沖信號進行計數。
首先判斷小車是否處于尋跡狀態,如果是則調用尋跡子程序:根據安裝在小車底部的三個灰度傳感器檢測到的地面灰度值來控制小車的運行方向。例如,假設要求小車沿著白線自主行走,當A/D轉換后的值介于0~20之間時,說明傳感器在白線上。若左側傳感器在白線上,說明小車在白線右側,應控制小車偏向左行走;若中間的傳感器在白線上,小車應繼續直行;若右側傳感器在白線上,應控制小車偏向右行走;若三個傳感器都不在白線上,應按某種算法行走,直到有一個傳感器在白線上為止。同樣,如果要讓小車沿其他顏色線行走,則應該根據A/D轉換后的值是否在此顏色對應的灰度值范圍,來控制小車的運動方向。
若不在尋跡狀態下,則調用避障子程序:單片機根據左右兩側傳感器傳來的信號,判斷正前方是否有障礙物,如果有,控制小車以設定速度后退并大幅度右轉,沒有則判斷左前方是否有障礙物;如果左前方有障礙物,以設定速度后退并小幅度右轉,沒有則繼續判斷右前方是否有障礙物;如果右前方有障礙物,以設定速度后退并小幅度左轉,否則說明無障礙物,調用調速子程序。
調速子程序流程如圖6所示。首先根據脈沖計數值計算出小車當前的實際車速Vk,把Vk和設定速度 rk 進行比較,假設 P=(rk-Vk)/rk,如果 P>0.5,說明當前車速離設定速度較遠,需要快速達到設定值,因此輸出最大設定PWM值;若0<=P<=0.5,則按照PID運算后輸出某個脈沖寬度的PWM值,控制電機快速達到設定值;若-0.3<=P<0,說明實際車速超過了設定速度某個范圍,則以最小設定 PWM 值來控制小車減速; 若-0.5<=P<-0.3,說明小車可能是下坡,需要減速以避免小車沖出軌道,因此讓電機停轉;若P<-0.5,說明坡度很陡,此時電機應反轉以快速降低車速,一般這種情況很少出現,P 在-0.3~-0.5 之間時已得到了修正。

圖5 定時器中斷程序流程圖

圖6 調速子程序流程圖
本智能小車控制系統以Atmega128單片機為控制核心,采用bang-bang+PID控制算法精確快速地控制小車速度,使之完成上下坡、走彎道等任務。同時還采用了紅外避障和尋跡傳感器,提高了小車行駛的安全性和智能性。該智能小車已成功應用于機器人競賽并取得較好成績。本小車還可作為移動機器人的載體,在功能上稍作擴展后即可應用于小區巡邏、實地勘測、智能玩具等領域。
[1]朱孟強,盧博友,雷永鋒,周茂雷.基于ARM的智能機器人小車控制系統設計[J].微計算機信息,2008,24(5-2):239.
[2]黃友銳,曲立國.PID控制器參數整定與實現[M].北京:科學出版社,2010.
[3]馬潮.高檔8位單片機ATmega128原理與開發應用指南(上)[M].北京:北京航空航天大學出版社,2004.
[4]李朝青.單片機原理及接口技術[M].北京:北京航空航天大學出版社,1994.
[5]周斌,李立國,黃開勝.智能車光電傳感器布局對路徑識別的影響研究[J].電子產品世界,2006(9):139-140.