基于線性CCD的兩輪自平衡智能小車控制系統(tǒng)設(shè)計(jì)
近年來(lái),隨著技術(shù)的不斷進(jìn)步,兩輪自平衡小車以其結(jié)構(gòu)簡(jiǎn)單、輕盈小巧、運(yùn)動(dòng)靈活、高效節(jié)能等特點(diǎn),在許多個(gè)領(lǐng)域得到了較大的發(fā)展。本文設(shè)計(jì)并制作了一臺(tái)兩輪小車,用飛思卡爾公司生產(chǎn)的MK60DN512ZVLQ10單片機(jī)作為核心控制器,加速度計(jì)MMA7260和陀螺儀ENC03作為車身姿態(tài)控制測(cè)量元件,實(shí)現(xiàn)兩輪小車的自平衡。根據(jù)設(shè)定速度與小車速度的偏差控制電機(jī)的電壓,以實(shí)現(xiàn)速度控制,并利用線性CCD采集賽道信息,根據(jù)路徑的彎度控制小車兩個(gè)輪子的轉(zhuǎn)速實(shí)現(xiàn)轉(zhuǎn)向控制,從而實(shí)現(xiàn)兩輪直立車的尋跡方案。
1 系統(tǒng)組成
系統(tǒng)主要由單片機(jī)核心控制器、直立控制模塊、速度控制模塊、方向控制模塊等功能模塊構(gòu)成。直立控制模塊包含陀螺儀及加速度計(jì),將它們安裝在小車的重心位置,這樣能保證傳感器不會(huì)太敏感或太遲鈍,兩者的數(shù)據(jù)融合使小車能保持一定的傾角前進(jìn)。速度控制模塊:電機(jī)驅(qū)動(dòng)模塊驅(qū)動(dòng)直流電機(jī)運(yùn)轉(zhuǎn),通過(guò)安裝于左、右輪的編碼器測(cè)速,與設(shè)定速度進(jìn)行比較,控制小車按設(shè)定速度行駛。方向控制模塊:通過(guò)安裝于小車運(yùn)動(dòng)上方支架上的線性CCD,控制兩輪實(shí)現(xiàn)差速轉(zhuǎn)彎,以控制運(yùn)動(dòng)方向,系統(tǒng)框圖如圖1所示。
2 各個(gè)控制模塊
2.1 直立控制模塊
兩輪車行走的首要條件是車的直立平衡,我們?cè)O(shè)計(jì)的參考方案如圖2所示。它是通過(guò)陀螺儀ENC03采集到車傾斜的角速度w,通過(guò)加速度計(jì)采集車傾斜的角度θacc,與陀螺儀積分得到的角度θ比較,得到偏差量e2(t)經(jīng)過(guò)比例1/Tg轉(zhuǎn)換作為反饋量給陀螺儀,偏差量e1(t)與陀螺儀采集到的角速度相加再積分作為車傾斜的角度θ。由于陀螺儀會(huì)有積分誤
差及溫漂,采用加速度計(jì)就可以減少陀螺儀的誤差,加速度由于受外界的干擾比較大,瞬間值不夠準(zhǔn)確,所以配合陀螺儀的使用,兩者共同作用來(lái)采集車模的傾角。
2.2 速度控制模塊
電機(jī)驅(qū)動(dòng)采用4個(gè)BTS7960組成H橋電路來(lái)驅(qū)動(dòng)直流電機(jī)的轉(zhuǎn)動(dòng),另外采用MK60N512VMD10單片機(jī)兩路脈沖計(jì)數(shù)器,通過(guò)編碼器分別測(cè)出小車左、右輪的脈沖量。利用4路PWM分別控制兩個(gè)電機(jī)的正反轉(zhuǎn)。如圖3所示,當(dāng)開關(guān)QA、QD接通,電機(jī)為正向轉(zhuǎn)動(dòng),開關(guān)QB、QC接通則電機(jī)反向轉(zhuǎn)動(dòng),從而實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),電流的大小,決定電機(jī)的轉(zhuǎn)速,通過(guò)PWM占空比來(lái)決定電流的大小,從而間接地控制了電機(jī)的轉(zhuǎn)速。
小車的速度控制是建立在小車直立的基礎(chǔ)上的,通過(guò)給小車一個(gè)設(shè)定速度,然后將編碼器測(cè)得的小車實(shí)際速度與設(shè)定速度進(jìn)行比較,偏差量作為反饋量,經(jīng)過(guò)比例PSPEED、積分ISPEED的和作為速度的輸出,進(jìn)一步控制PWM的輸出從而使小車按設(shè)定速度行走,如圖4所示。
2.3 方向控制模塊
小車運(yùn)行方向控制是通過(guò)兩個(gè)輪子的差速來(lái)實(shí)現(xiàn),而差速是由線性CCD采集賽道信息來(lái)計(jì)算彎道兩邊黑線與直道時(shí)兩邊黑線的偏差值來(lái)確定。我們比賽使用的CCD型號(hào)為TSL1 401,屬于線性CCD,與面陣CCD相比,線性CCD只是采集一行的數(shù)據(jù),而這一行數(shù)據(jù)是由線性CCD傳感器128個(gè)光電二極管通過(guò)積分電路所采集的圖像灰度值。
對(duì)于采集回來(lái)的128個(gè)數(shù)據(jù),要確定一個(gè)閾值Th,一般情況下為200左右(還能通過(guò)撥碼開關(guān)根據(jù)現(xiàn)場(chǎng)環(huán)境亮度來(lái)選擇幾個(gè)不同的閾值Th),來(lái)區(qū)分開白色跑道與其它顏色灰暗的非跑道區(qū)域。對(duì)于白色跑道反饋回來(lái)的值肯定是比其它反饋回來(lái)的值大,取這些數(shù)的一個(gè)中值來(lái)作為閾值,來(lái)區(qū)分賽道的黑白點(diǎn)(除了白色賽道,其余都是黑點(diǎn)),就可以判別
出白色跑道,然后就可以計(jì)算出彎道時(shí)與正常跑道的偏差值,將兩邊的偏差值相減再轉(zhuǎn)換成電壓值加到方向輸出函數(shù)中,就可以控制小車的轉(zhuǎn)向了。程序框圖如圖5所示。
由于比賽的賽道有虛線,所以我們將采集到128個(gè)點(diǎn)的數(shù)據(jù)從中間(第64個(gè)點(diǎn)的數(shù)據(jù))往兩邊處理(左邊64-0跟右邊64-127的情況是一樣的),目的是尋找兩邊的黑點(diǎn),與設(shè)定的閾值Th相比,如果小于閾值Th,再判斷3個(gè)點(diǎn)是否都小于閾值Th,如果是,則認(rèn)為是檢測(cè)到了賽道邊上的黑線。
程序?qū)崿F(xiàn)部分(左邊64-0的64個(gè)點(diǎn)檢測(cè)部分):
3 結(jié)束語(yǔ)
文中討論了基于線性CCD的兩輪自平衡小車控制系統(tǒng)的設(shè)計(jì)思想及實(shí)現(xiàn)方法,對(duì)系統(tǒng)中通過(guò)線性CCD完成對(duì)賽道識(shí)別的方向控制模塊,以及直立控制模塊、速度控制模塊等模塊的軟硬件進(jìn)行了分析,并給出了關(guān)鍵程序段。通過(guò)測(cè)試及參加飛思卡爾智能車比賽,證明這個(gè)系統(tǒng)是合理的,也提高了小車運(yùn)行的速度。開展對(duì)兩輪自平衡車的深入研究對(duì)提高我國(guó)在這一領(lǐng)域的科研水平、擴(kuò)展機(jī)器人的應(yīng)用背景等具有重要的理論及現(xiàn)實(shí)意義。