陳木桂 張謙 黃睿 馬澤龍 歐周



摘要:設計的光電平衡智能車方案以MC9S12XS128微控制器為核心控制器,采用TSL1401系列線性CCD作為采集跑道數據信息的傳感器,用以對采集到的數據信息進行處理、計算分析后得出小車的行駛路徑。在小車的直立、速度、方向控制上,硬件選擇的是飛思卡爾公司的加速度傳感器MMA7260、村田公司的陀螺儀ENC-03,軟件控制采用PID控制算法,根據跑道的不同要求設計不同的控制策略。由于小車是直立兩輪行走,需要對小車的機械結構方面進行設定,提高小車直立地在跑道上行走的穩定性。在調試方面,通過使用串口、LED狀態指示燈等調試工具進行大量的硬件與軟件測試,以此得出最終的設計方案。經實際結果測試,該智能車設計制作方案確實可行。
關鍵詞:智能車;MC9S12XS128單片機;直立控制;線性CCD;PID
中圖分類號:G642.0? ? ?文獻標志碼:A? ? ?文章編號:1674-9324(2019)39-0076-05
隨著技術的發展,機械的智能化已經被廣大群眾所需要,而智能車輛則是其中的一個研究方向。智能車不需要經過人為操控就能按照設定,自動行駛在道路上,能自行智能判斷處理前方出現的各種道路情況。智能小車是在發展現代智能汽車的背景下興起的一個設計項目。如現在的全國大學生智能車競賽[1],就是這類項目。競賽要求不同組別的賽車在使用每組不同設定的汽車模型的基礎上,在一系列單片機中選擇適合的作為汽車核心控制模塊,再加上如電機驅動電路等其他電路,另外還有重要的用來識別道路的傳感器,配合程序的編寫,制作一個能夠辨認給定的路線,并在行駛過程中智能地作出反應,無須人為操控的模型汽車。
本系統設計采用的是光電平衡組的方案,采用TSL1401CL線陣CCD傳感器作為路徑檢測采集模塊、16位微控制器MC9S12XS128作為控制核心、陀螺儀和重力加速度計用來進行傾角計算、編碼器采集計算車體速度、電機驅動電路運行電機等作為小車的主要硬件組成部分,配合適當的控制算法作為小車的軟件系統,其中穿插各種不同參數的調試,最終得到一個可以直立穩定行駛的智能車。
一、總體設計
智能車是在規定的車模框架上,搭建設計好的硬件結構,再通過各類傳感器收集到的信息傳輸到核心控制單元進行分析計算處理,傳輸適當的指令到電機,使其能適應各類跑道信息元素,完成循跡任務。本文采用了光電平衡組的方案,光電平衡組要求小車使用兩個輪子,車身穩定直立地在跑道上循跡行進。因此,平衡小車的控制系統主要包括直立控制、速度控制、方向控制。
1.直立控制。平衡小車選用的模型由兩個電機來控制,車模所需要的直立控制在這里是由負反饋進行平衡調節的[2]。直立小車與日常常見的車模不同,只有兩個輪子接觸地面,并只通過兩個輪子行駛,所以小車在每一時刻只會在車輪前進或者后退這兩個方向上傾斜。因而要控制小車的平衡,只需要控制輪子的前后加速(電機正反運動),抵消在一個維度上小車前后傾斜的趨勢就能達到預期的效果。
要達到車體不同時刻的平衡需求,就需要知道此刻車體的傾斜角度。本設計選用重力加速度傳感器MMA7260來測量車模傾角。MMA7260是一款三軸加速度計,可以測量三個方向上的加速度模擬信號,用于計算三維加速度。因為車子在行駛時抖動較大,會使得通過加速度計計算出的加速度與實際數值產生偏差,以致無法根據輸出信號準確得出車模的傾角。所以,在加速度計的基礎上,再增加陀螺儀ENC-03,ENC-03利用了旋轉坐標系中的物體會受到科里奧利力的原理,在器件中利用壓電陶瓷做成振動單元,當旋轉器件時會改變振動頻率從而反映出物體旋轉的角速度。對陀螺儀的角加速度進行積分,使之跟隨重力加速度計的測量值,可獲取一個平滑的傾角值,利用該傾角值進行PD計算并控制電機正反轉以維持小車直立。
2.平衡小車的速度控制。平衡小車的速度控制是通過正反饋來實現的,如果在小車處于平衡的狀態下,給小車一個前進速度,車模就需要往行駛的正方向上傾斜,以得到加速度。但從直立控制方面來說,前傾角需要車輪在反方向上運動得到,車輪會向后運動。如此循環往復,小車很快就會倒下。如果初始化時先給定小車一個向前的傾角,直立控制調節為保持車體直立狀態,會加速前進,這就達到前進的目的。而車模小于前傾角可以進行車模減速,同樣的比前面傾角要小的角度會帶來車模的減速,所以車體的傾角可以用來控制速度。
3.平衡小車的方向控制。本系統在設計時,使用線性CCD作為小車的循跡模塊,它可以采集跑道的變化信息,并將采集到的信息反饋給單片機,使得單片機能根據當前的跑道信息進行判斷,并做出對應的控制指令。跑道是由白色的行走區域和兩邊的黑邊(邊界)組成,由于白色和黑色的色值相差很大,在CCD采集到的數值中,對于跑道的邊緣會有明顯的突變。可以利用這突變來判斷路徑邊界。利用采集到的突變計算出跑道的中點,與設定的中點進行差值,再進行PID控制,使輸出疊加到左右兩輪(一加一減),兩輪就會產生速度差,從而達到轉向的目的。
二、系統硬件電路設計
硬件電路是智能車系統中重要的一部分,是軟件系統的基礎,也是系統運行的基礎[3]。在此設計中,小車的硬件系統是采用模塊化的方式來設計的。整個智能車系統包括7個模塊:單片機XS128微控制器、電源模塊、電機驅動模塊、上位機調試模塊、陀螺儀與加速度計模塊(計算傾角模塊)、編碼器測速模塊、線性CCD模塊。控制電路整體框圖如圖1所示。
1.單片機XS128微控制器。MC9S12XS128微控制單元是整個智能車系統的核心部分。MC9S12XS128是MC9S12系列的16位單片機,由16位中央處理單元(CPU12X)、128 KB程序Flash(P-Flash)、8 KB RAM、8 KB數據Flash(D-Flash)組成片內存儲器,同時還包括2個異步串行通信接口(SCI)、1個串行外設接口(SPI)、1個8通道輸入捕捉/輸出比較(IC/OC)定時器模塊(TIM)、16通道12位A/D轉換器(ADC)、一個8通道脈沖寬度調制模塊(PWM)以及獨立的輸入/輸出數字I/O口。通過電源模塊進行供電,并處理各種傳感器采集傳送來的數據(如CCD采集的跑道信息、編碼器采集的速度信息、陀螺儀與加速度計采集的傾角信息等),并對這些數據進行處理,形成適合當前路徑的控制信息傳送至電機,驅動電機完成循跡任務[4]。
2.電源模塊。電源模塊是整個智能車系統中最關鍵、最基礎的一部分,各個模塊要求的工作電壓也有所不同,所以還需要采用穩壓芯片來對電池輸出電壓進行調整,電機模塊所需電壓為7.2V;設計中選擇了7805對7.2V的電壓進行穩壓至5V,供線性CCD傳感器與編碼器使用;另外選擇了兩片1117將輸入電壓穩壓至3.3V,供給單片機以及陀螺儀、加速度計等使用。
3.電機驅動模塊。電機驅動模塊的性能好壞直接影響智能車的加速情況,由于直立平衡小車的車模使用兩個電機,并且要求能有足夠大的驅動電流,較小的驅動芯片內阻、開關的頻率高等特點,經過篩選,最終使用BTS7960作為驅動電機的芯片,每兩片7960驅動一個電機。電機模塊由單片機的PWM信號進行驅動,此模塊所需電壓為7.2V,由電池直接供電。
4.陀螺儀與加速度計模塊。由于平衡小車是直立行走,需要對小車的傾角數據進行采集,所以在硬件設計上采用了三軸加速度傳感器MMA7260和村田公司生產的ENC-03陀螺儀。計算傾角模塊電路使用的加速度傳感器采用的是低g值的傳感器MMA7260,輸出的信號足夠大,所以此電路主要是將陀螺儀信號進行放大濾波。在此設計中,車模的傾角與角加速度的計算都是使用單片機進行數據計算得來的,這屬于軟件設計部分,因而需要另外使用計算方法。
5.編碼器測速模塊。使用雙線編碼器作為測速模塊,由編碼器得到的信號傳送給單片機進行速度計算。實際檢測出的速度與想要設定的目標速度進行比較,就可以使用合適的算法將實際速度變化為目標速度,已達到加減速的效果。
由于XS128單片機只有PT7通道可以進行脈沖計數,而平衡小車需要對左右兩輪分別進行脈沖技術,在其中一個編碼器連接到單片機的PT7上后,還需要對另外一路編碼器進行脈沖計數,通過添加外部計數器CD4520的方法來實現第二路的測速。
6.線性CCD模塊。TSL1401CL線性傳感器由128×1列的光電二極管組成,當線性CCD連接單片機的一個AD通道時就可以讀取一行的128像素點的信息。而跑道信息的采集就依靠此傳感器不斷收集并傳送給單片機,該模塊是小車循跡行走極為重要的模塊。
三、車模機械結構設計
除了硬件電路需要設計小巧,車模的機械結構方面也需要注意重量。小車在直立行駛的情況下,受慣性影響較大,在不影響元器件的擺放與布線的情況下,盡可能地減少所需空間,這樣固定電路板也更為方便,整車如圖2所示。
1.車模底盤固定。未經過改裝的車模后輪的支架與底盤之間是活動連接的,這樣可以降低后輪震動對整體車模的影響[5]。但是,要保證車模在直立情況下車體的穩定性,需要將原有車模活動的后輪支架與底盤固定在一起。因此,使用了一塊接近矩形的廢置電路板(硬度足夠)對支架與底盤進行加固,增強車體的穩定性,防止底盤的抖動給傳感器帶來不必要的影響。固定底盤如圖3所示。
2.編碼器安裝。小車運行時需要對其速度進行檢測,就需要為小車增加兩個編碼器,用于測量左右輪的速度。為了便于安裝,這里使用了小塊的PCB板對編碼器和支架進行連接。連接好后,就需要對齒輪的咬合度進行調整。考慮到如果咬合過緊會增大摩擦,增加電機的負擔,而咬合過松容易損壞齒輪。在大致調整了咬合度后,用手旋轉倆輪子,根據轉動感受再進行微調,盡量使其咬合適當緊密,增大測速的精準性。編碼器的安裝效果如圖4所示。
3.電池位置選定。選用的車模對電池位置沒有要求,因此,可以根據重心以及美觀等各種因素選定電池固定的位置。在設計方案中,是根據低重心的前提來選定電池的位置,這樣的選擇會讓車子在運行過程中(尤其在轉彎處)更加穩定。此方案將電池安放在小車前進方向的正面。電池安裝位置的正面與側面如圖5所示。
4.主電路板安裝。此設計在一塊電路板上集合了電源電路、電機驅動模塊、陀螺儀和重力加速度計模塊等。第二路測速電路則另外加在一小板上(安裝于主電路板的下方),使用杜邦線連接主電路板。主電路板安裝在小車前進方向的背面,電機的上方。由于主電路板中含有陀螺儀和重力加速度計的測傾角模塊,所以主電路板的安裝一定要盡量保持水平,減少測量傾角產生的誤差。電路板的安裝如圖6所示。
5.線性CCD安裝。小車轉彎需要提前知道前方道路信息,所以線性CCD要有一定前瞻,因此需要架高線性CCD。由于小車設定的速度值并不算太高,所以只將CCD架至一定高度,能達到提前判斷的效果即可。而側方位的CCD是為了檢測直角的拐彎,小車只使用一個CCD作為判斷的傳感器就顯得有點力不從心,所以增加了一個輔助CCD,用于幫助小車進行直角左拐的判斷。主CCD與輔助CCD安裝與固定位置如圖7所示。
四、系統軟件設計與實現
小車是否能夠在跑道上正常地行走,除了穩定的硬件系統之外,還需要軟件系統的設計。這里主要有四個部分:直立控制、方向控制、速度控制以及單片機的初始化。
1.軟件系統程序的整體控制。軟件系統中的控制程序主要使用XS128單片機的PWN模塊、AD模塊、SCI模塊、TIM模塊、PIT模塊等。PWM模塊用于控制電機的運轉;AD模塊用于讀取線性CCD采集的跑道數據、加速度計和陀螺儀采集到的傾角數據等信息[6];SCI模塊主要用于串口調試;TIM模塊主要用于編碼器數據的采集;PIT模塊主要用于設置程序的定時中斷。
整個軟件系統程序采用的是PIT定時中斷和PID算法控制。主程序框圖如圖8所示。
2.直立控制。智能車的直立控制部分是整個軟件設計中最基礎也是最困難的一步,直立平衡組的小車最基本的要求就是小車直立。小車只有直立起來,才算做好了小車能夠運行的第一步。
要計算小車當前的傾角,需要知道小車在直立狀態下陀螺儀和加速度計的數值。在小車保持直立靜止時,連接單片機AD通道讀取的數值就是相應的零偏值。但是每次開機運行時,零偏值都會有所變化,所以在設計中選擇了每次開機都自動讀取零偏值的方法。
車模角度和角速度的計算的調試可以在設置好陀螺儀與加速度計各自的比例系數后,得到一個歸一化的數值,這個數值在-90到90之間,對陀螺儀讀出來的數值與重力加速度計讀出來的數值進行跟蹤,當這兩個比例系數設置相適宜的時候,加速度計Z軸輸出的變化量可以看到與陀螺儀角度的變化量是基本相同的,當改變車模傾角的時候,兩個歸一化的數值能進行相同的變化,并且變化基本相同。
另外,將加速度計歸一化得到的車模角度與陀螺儀歸一化得到的角速度乘以各自的系數可以算出當前車模的直立控制輸出量,由于每個加速度計與陀螺儀都不會相同,所以不同的加速度計與陀螺儀的使用的系數都無法作為參考,只能慢慢地采用不同的數據進行測試。通過不斷地修改測試,得出最適合的直立控制系數。
3.速度控制。小車在保持直立靜止狀態下得出的零偏值存在一定的偏差,由于這個偏差的存在,小車沒辦法一直保持直立平衡靜止狀態,會有一個加速運動。速度控制可以消除這一運動趨勢。小車的速度控制是進一步穩定車模的直立狀態的控制[7]。
由于直立車的速度控制實際是改變車模傾角,因此速度控制對于直立控制是一種擾動,速度控制周期不能過大,控制量要平滑輸出。設計中選擇速度控制的周期為100毫秒。
4.方向控制。線性CCD的成像區域基本可以認為是一條狀區域,CCD每采集一次數據,就能得到一行128個像素點的值。對于跑道來說,兩邊邊緣是黑色,而中央為白色,所以同樣亮度的情況下,一行采集到的點,中間的點的數值會比邊緣的值大。利用這個方法可以找到跑道的邊緣黑線,從而得以提取跑道中線,通過得出的中線值用以計算車模的電機差值驅動電壓。在車子拐彎的時候,例如在左拐彎的時候,采集到的就不是如同直線的效果,這時候CCD采集到的128個像素點左邊的黑色點就變成了白色,拐彎弧度大的時候有可能左邊變為全白,右邊的黑色像素點增多。
五、調試過程
在小車系統的設計制作和調試的過程中,無論是硬件電路的仿真、電路板的制作還是軟件系統的開發,都需要使用電腦作為輔助設計的工具。在設計電路板方面,設計中使用的輔助開發工具是Altium Designer。軟件開發方面選擇的是CodeWarrior軟件開發環境作為軟件開發與調試的工具,此開發環境有專門為MC9S12XS128單片機提供的全套開發工具,使用的是C語言進行編寫。
虛擬示波器Visual Scope軟件對重力加速度計和陀螺儀計算所得傾角進行追蹤,趨向車模實際傾角的數值(通過互補濾波來融合重力加速度計和陀螺儀值得到)與加速度計所得傾角的追蹤情況來比較,以此為基礎修改相應參數。角度融合情況對于小車的直立控制而言非常關鍵。圖9所示為虛擬示波器Visual Scope輸出的GravityAngle加速度計計算傾角、CarAngle陀螺儀加速度計融合后計算傾角兩者跟蹤正常的情況。
加速度計歸一化成角度信號的比例值可以通過測量加速度計Z軸+90度與-90度采集到的最大最小值的簡單計算得到:180/(MAX-MIN)。這樣就選定了加速度計的比例系數[8]。之后需要選定陀螺儀的比例系數,這個系數的大與小會影響到計算得到的陀螺儀角度與加速度所得傾角的追蹤效果。如果這個系數過小,傾角改變的時候,陀螺儀角度計算數據無法在短時間內跟上快速變化的角度;而過大,這時候會出現過沖的現象,角度突然改變,陀螺儀數據會突然增大。這些都是陀螺儀比例系數設置不正確的情況,系數基本適宜的情況下,陀螺儀與加速度計在車體有角度變化的時候,計算得到的角度變化基本是一致的。圖10是陀螺儀比例系數過大或者過小的輸出顯示。
在控制方面,PID控制算法在車模直立、速度、方向上都有使用。在直立控制上,這里選用比例P與微分D來進行控制,車身的傾角是通過加速度計和陀螺儀進行角度互補融合獲取的,而控制電機的驅動電壓,則是由計算得到的車身傾角與陀螺儀的角速度進行PD控制得來。加上比例參數P,相當于在車身傾斜的時候給車模一個回復力,幫助車子回到原來靜止直立的狀態,這個值在一定范圍內,越大越容易在短時間內恢復到原來的直立狀態。但是在這個值過大的情況下,車身由于快速回復車體位置,車模會來回擺動。這時微分參數D起到一個平緩的作用,能有效地減少車模擺動。
速度控制參數,是通過P和I(積分)來調整的,積分控制能使速度最終穩定在給定速度,比例控制能實現速度的快速調節。
方向控制參數,則是通過P和D來調整的。把安裝好CCD傳感器的小車放在黑白跑道上,此時的速度應該設置靜止的0速,當左右擺動車身,隨著小車漸漸增大比例參數,能明顯看到車模被擺在偏移跑道方向后,回到原來跑道正方向的速度逐漸加快。微分參數用來控制P值過大時產生的左右擺動,達到能迅速回到原方向上的結果。
六、結語
本文設計的光電平衡智能車完成小車的直立、速度、方向控制,系統包括單片機XS128微控制器、電源模塊、電機驅動模塊、上位機調試模塊、陀螺儀與加速度計模塊(計算傾角模塊)、編碼器測速模塊、線性CCD模塊,根據賽道的不同要求設計出不同的PID控制策略。測試結果表明,該智能車設計制作方案確實可行。
參考文獻:
[1]卓晴,黃開勝,邵貝貝.學做智能車:挑戰“飛思卡爾”杯[M].北京:北京航空航天大學出版社,2007.
[2]張陽,吳曄,滕勤.MC9S12XS單片機原理及嵌入式系統開發[M].北京:電子工業出版社,2011.
[3]Freescale半導體公司.MC9S12XS128中文版[Z].2009.
[4]邵貝貝.單片機嵌入式應用的在線開發方法[M].北京:清華大學出版社,2004.
[5]楊亭.電子CAD職業技能鑒定教程(proteI DXP 2004 SP2)[M].廣東:廣東人民出版社,2014.
[6]競賽秘書處.電磁組直立行車參考設計方案(版本2.0)[Z].2012.
[7]飛思卡爾半導體大學計劃部.Freescale智能車入門手冊(V0.6)[Z].2010.
[8]焦作,華潤,白志剛.由入門到精通—吃透PID2.0版[Z].2014.
Design of A Photoelectric Balance Smart Car
CHEN Mu-gui,ZHANG Qian,HUANG Rui,MA Ze-long,OU Zhou
(Department of Computer Science,Guangdong University of Education,Guangzhou,Guangdong 510303,China)
Abstract:The photoelectric balance smart car scheme designed in this paper uses the MC9S12XS128 microcontroller as the core controller and the TSL1401 series linear CCD as the sensor for collecting runway data information.Used to process the collected data information,calculate and analyze the travel path of the car.In the upright,speed and direction control of the car,the hardware selection is Freescale's acceleration sensor MMA7260,Murata's gyroscope ENC-03,software control uses PID control algorithm,and different control strategies are designed according to the different requirements of the runway.Since the trolley is an upright two-wheeled walk,it is necessary to set the mechanical structure of the trolley to improve the stability of the trolley walking upright on the runway.In debugging,a large number of hardware and software tests are performed by using debugging tools such as serial port and LED status indicator to obtain the final design.After the test,the smart car design and production plan is indeed feasible.
Key words:Smart car;MC9S12XS128 MCU;Upright control;Linear CCD;PID