趙繼強(qiáng) 陳建國(guó) 林榮群
福州大學(xué),福建 福州 350108
采用飛思卡爾9S12G系列單片機(jī)MC9S12G128MLL作為主控芯片,MC9S12G128MLL單片機(jī)自帶8位PWM通道和10位ADC通道,可使程序編寫更簡(jiǎn)潔,運(yùn)行速度更快,而且AD采樣精度高,為直立部分傳感器的數(shù)據(jù)采集提供了極大的方便。其系統(tǒng)可分為控制器模塊、電源模塊、電機(jī)驅(qū)動(dòng)模塊、循跡模塊、加速度傳感器和陀螺儀模塊等。
通過負(fù)反饋,可以實(shí)現(xiàn)車模的平衡控制。因?yàn)檐嚹奢喼?,車體只會(huì)在輪子滾動(dòng)的方向上發(fā)生傾斜。因此通過控制電機(jī)帶動(dòng)輪子轉(zhuǎn)動(dòng),抵消在一個(gè)方向上傾斜的趨勢(shì)便可以保持車體的平衡。
倒立擺之所以不能像單擺一樣可以穩(wěn)定在垂直位置,就是因?yàn)樵谒x平衡位置時(shí),所受到的回復(fù)力與位移方向相同。因此,倒立擺便會(huì)加速偏離垂直位置,直至倒下。為了使倒立擺能夠像單擺一樣穩(wěn)定在垂直位置,我們通過控制倒立擺底部車輪,使得它作加速運(yùn)動(dòng),該力與車輪的加速度方向相反,大小成正比。
小車運(yùn)行速度是通過控制車輪速度實(shí)現(xiàn)的,兩輪電壓之和決定了小車前進(jìn)速度。車輪通過小車兩個(gè)后輪電機(jī)經(jīng)由減速齒輪箱驅(qū)動(dòng),因此通過控制電機(jī)轉(zhuǎn)速可以實(shí)現(xiàn)對(duì)車輪的運(yùn)動(dòng)控制。
控制左右輪電機(jī)兩端的給定電壓,就能實(shí)現(xiàn)小車的轉(zhuǎn)向。小車的轉(zhuǎn)向速度與兩輪速度之差成正比。因此,兩輪電壓之差決定了小車的轉(zhuǎn)向速度。
采取模塊化編程思想,將系統(tǒng)程序分為各個(gè)不同模塊,每個(gè)模塊有相應(yīng)的接口,能夠?qū)崿F(xiàn)各個(gè)模塊的良好對(duì)接,且增加程序的可讀性、可移植性,方便后期的調(diào)試查錯(cuò)。
程序的主要流程圖如圖所示。程序上電運(yùn)行后,進(jìn)行單片機(jī)的初始化。初始化的工作包括兩部分,一部分是單片機(jī)各個(gè)應(yīng)用模塊的初始化。第二部分是應(yīng)用程序初始化。
圖1 程序流程圖
初始化完成,進(jìn)入車模直立檢測(cè)子程序,判斷車模當(dāng)前狀態(tài)。該子程序通過讀取加速度傳感器的數(shù)值判斷 車模是否已經(jīng)處于直立狀態(tài),當(dāng)傾角近似為零時(shí),可認(rèn)為車模處于直立狀態(tài)。直立狀態(tài)判斷成立,則啟動(dòng)車模直立控制、車模方向控制以及車模速度控制。接下來程序進(jìn)入主循環(huán),主循環(huán)中主要是進(jìn)行上述三種車模運(yùn)動(dòng)控制,并一直發(fā)送檢測(cè)數(shù)據(jù),包括:當(dāng)前車模傾角、當(dāng)前車模速度、當(dāng)前車模方向。同時(shí)檢查車模是否跌倒,跌倒判斷可以通過車模傾角是否超過一定范圍進(jìn)行確定。一旦車模跌倒,則停止車模運(yùn)行,然后重新進(jìn)入車模直立判斷過程。車模的直立控制、速度控制以及方向控制都是在中斷程序中完成,其中涉及分時(shí)控制思想,并且通過全局標(biāo)志變量確定是否進(jìn)行這些閉環(huán)控制。
1)角度、速度、方向檢測(cè)模塊
角度檢測(cè)模塊:在車模上安裝陀螺儀,可以測(cè)量車模傾斜角速度,將角速度信號(hào)進(jìn)行積分便可以得到車模的傾角。
速度檢測(cè)模塊:讀取安裝在車輪上的編碼器所返回的脈沖數(shù),通過計(jì)算獲取當(dāng)前速度值。
方向檢測(cè)模塊:通過讀取紅外反射式光電傳感器返回的高低電平信號(hào),分析得出當(dāng)前車體所朝的方向。
2)PWM輸出模塊
該模塊子函數(shù)中需要解決兩個(gè)問題,一個(gè)是電機(jī)的正反轉(zhuǎn)問題,一個(gè)是電機(jī)的轉(zhuǎn)速問題。第一個(gè)問題,通過初始化中設(shè)定的電機(jī)極性變量來確定,該變量的值決定了PWM波的輸出極性。第二個(gè)問題,通過初始化中設(shè)定的電機(jī)PWM輸出值變量決定,并且有左電機(jī)和右電機(jī)之分。
3)車模運(yùn)動(dòng)控制模塊
該模塊由三部分組成:直立平衡控制、速度控制、方向控制。車輪由電機(jī)驅(qū)動(dòng),因此可通過控制電機(jī)轉(zhuǎn)速實(shí)現(xiàn)對(duì)車輪的運(yùn)動(dòng)控制。車模運(yùn)行速度調(diào)整時(shí)間相對(duì)較長(zhǎng),此時(shí),電機(jī)速度與施加在其上的電壓成正比。通過傳統(tǒng)的PID反饋控制,便可以精確控制電機(jī)的轉(zhuǎn)速,從而控制車模的運(yùn)行速度。具體控制如圖2所示。
圖2 PID控制
具體的調(diào)用是在中斷函數(shù)中執(zhí)行,中斷函數(shù)中采用了分時(shí)執(zhí)行的思想。使用DSC的一個(gè)定時(shí)器,產(chǎn)生1ms的周期中斷。中斷服務(wù)程序的任務(wù)被均勻分配在0-4的中斷片段中,因此每個(gè)中斷片段中的任務(wù)執(zhí)行的周期為5ms,頻率為200Hz。
這些任務(wù)包括:1)編碼器脈沖的讀取與清除。累積電機(jī)轉(zhuǎn)動(dòng)角度和電機(jī)速度,為后面車模速度控制提供平均數(shù)。2)啟動(dòng)AD轉(zhuǎn)換。進(jìn)行20次模擬量采集,然后計(jì)算各通道模擬量的平均值。3)車模直立控制過程。包括車模角度計(jì)算、電機(jī)PWM輸出等。4)車模速度控制。在這個(gè)時(shí)間片段中,進(jìn)行0-19計(jì)數(shù),在其中第0片段中,進(jìn)行速度PID調(diào)節(jié),速度調(diào)節(jié)的周期為100ms。5)車模方向控制。根據(jù)讀取光電傳感器返回的高低電平信號(hào),計(jì)算偏差數(shù)值,然后計(jì)算電機(jī)控制電壓數(shù)值。
加速度傳感器和陀螺儀在車體中的位置對(duì)于直立部分的穩(wěn)定調(diào)試有重要影響。將帶有陀螺儀和加速度計(jì)的電路板固定在整個(gè)車模質(zhì)心的位置或車模底部,可以最大程度減少車模運(yùn)行時(shí)前后振動(dòng)對(duì)于測(cè)量?jī)A角的干擾。此外,由于車子在調(diào)試過程中難免出現(xiàn)碰撞和傾倒,從而引起的車體振動(dòng)易導(dǎo)致傳感器相對(duì)位置的改變,可以用熱熔膠將其固定在車體上,有效防止由于傳感器位置的改變而引起的參數(shù)不匹配。
利用串口示波器來捕捉車模實(shí)時(shí)信息,并且對(duì)加速度傳感器所返回的角度值與陀螺儀所返回的角度值進(jìn)行比較,分析二者的匹配和跟隨狀況。調(diào)整陀螺儀的中心給定值,來補(bǔ)償角度測(cè)量的誤差。調(diào)試情況如圖。
將車子投入閉環(huán)運(yùn)行狀態(tài)。遵循先調(diào)直立控制部分,再調(diào)速度控制部分,最后調(diào)方向控制部分的原則。每一個(gè)模塊整定又遵循先調(diào)比例系數(shù)P,再調(diào)積分時(shí)間I,最后調(diào)微分時(shí)間D的順序。經(jīng)過反復(fù)調(diào)試,最后找到一組比較合適的參數(shù)。
本文介紹了直立循跡小車系統(tǒng)的控制方案?;诩铀俣葌鞲衅?、陀螺儀以及紅外光電傳感器的檢測(cè)信號(hào),通過對(duì)于小車平衡、速度和轉(zhuǎn)向的控制,實(shí)現(xiàn)了小車的直立循跡。經(jīng)過調(diào)試,小車能夠平穩(wěn)地行駛,達(dá)到預(yù)期的效果。核心MC9S12G128MLL單片機(jī)功能強(qiáng)大、性價(jià)比高,適合用于該控制系統(tǒng)。
[1]郭一楠, ??×? 趙峻 等. 過程控制系統(tǒng)[M]. 北京:機(jī)械工業(yè)出版社, 2009.2.
[2]李詩(shī)然. 基于直立小車的軟件設(shè)計(jì)[J]. 北京電力高等專科學(xué)校學(xué)報(bào)(自然科學(xué)版), 2012, 29(10).
[3]競(jìng)賽秘書處. 第七屆全國(guó)大學(xué)生“飛思卡爾”杯智能汽車競(jìng)賽電磁組直立行車參考設(shè)計(jì)方案[M]. 2.0. , 2012:66-67.