周牡丹+陳慶利+康若鵬+陳澤坤
摘 要: 介紹一種兩輪自平衡智能小車控制系統(tǒng)的實(shí)現(xiàn)方案。該系統(tǒng)以MC9S12XS128單片機(jī)作為主控芯片,采用一組激光傳感器進(jìn)行路徑檢測,使用ENC?03MA陀螺儀與MMA7361加速度計(jì)進(jìn)行小車直立自平衡檢測,利用BTS7960芯片進(jìn)行電機(jī)驅(qū)動(dòng),使用增量式編碼器進(jìn)行速度檢測,借助滑動(dòng)電阻器和液晶屏對參數(shù)進(jìn)行調(diào)整與觀測。在軟件方面,結(jié)合PWM技術(shù)和PID控制技術(shù)對小車的兩個(gè)直流電機(jī)的轉(zhuǎn)速進(jìn)行控制,可以實(shí)現(xiàn)兩輪小車的動(dòng)態(tài)自平衡快速尋跡運(yùn)行。實(shí)踐表明該設(shè)計(jì)達(dá)到了理想效果。
關(guān)鍵詞: 自平衡智能小車; 兩輪小車; 直立控制; 尋跡
中圖分類號(hào): TN710?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)20?0070?04
Design of a two?wheel self?balanced vehicle for race
ZHOU Mu?dan, CHEN Qing?li, KANG Ruo?peng, CHEN Ze?kun
(Department of Electronic Engineering, TKK College, Xiamen University, Zhangzhou 363105, China)
Abstract: An implementation scheme of control system for two?wheel self?balanced intelligent vehicle is introduced in this paper. In the system, MC9S12XS128 is used as a master microcontroller, some laser sensors are used to detect the path, ENC?03MA gyroscope and MMA7361 accelerometer are used for upright self?balanced detection of the vehicle, the chip BTS7960 is employed to drive the motor, the incremental encoder are used for the speed detection, and sliding resistors and LCD screen are utilized to adjust and observe the parameters. The speed of the two DC motors in the vehicle is controlled with PWM technology and PID control technology, so as to achieve the dynamic self?balance and fast tracking of the vehicle.
Keywords: self?balanced intelligent vehicle; two?wheel vehicle; upright control; tracking
0 引 言
兩輪自平衡小車系統(tǒng)與倒立擺系統(tǒng)相似,受控對象具有多變量、非線性、強(qiáng)耦合等特點(diǎn),在兩輪自平衡車的設(shè)計(jì)實(shí)現(xiàn)中必須著重解決系統(tǒng)的穩(wěn)定性、快速性、跟隨性等問題[1?2]。本文設(shè)計(jì)研究的兩輪自平衡小車是“智能車”競賽中的一種,要求在規(guī)定跑道上完成競速的比賽,需要競賽小車具備高度的穩(wěn)定性和快速性,所以設(shè)計(jì)的重點(diǎn)是在保證兩輪動(dòng)態(tài)自動(dòng)平衡的前提下盡可能地提高速度 [3?4]。在系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)中,不但要確保兩輪小車的自動(dòng)直立平衡,還需要考慮自動(dòng)尋跡的轉(zhuǎn)向控制,速度平穩(wěn)控制等。本文就自平衡小車的硬件系統(tǒng)構(gòu)成和單片機(jī)實(shí)現(xiàn)的軟件設(shè)計(jì)方案進(jìn)行詳細(xì)介紹。
1 系統(tǒng)的硬件結(jié)構(gòu)
自平衡小車的硬件系統(tǒng)主要由單片機(jī)模塊、傾斜角度檢測模塊、電機(jī)驅(qū)動(dòng)模塊、激光路徑檢測模塊、電機(jī)測速模塊、電源模塊及調(diào)試模塊等組成。車模控制系統(tǒng)的硬件電路總體框圖如圖1所示。
圖1 小車整體硬件電路框圖
1.1 電源模塊
自平衡車控制系統(tǒng)中,不同電路模塊的工作電壓電流各不相同。因此電源模塊需要對電池的電量進(jìn)行合理分配和進(jìn)行電壓調(diào)節(jié),保證各模塊的具有可靠的工作電壓。電源模塊中包含多個(gè)電壓變換的模塊電路。電池采用DC 7.2 V,2 000 mA·h鎳鎘充電電池,OLED顯示采用3.3 V電壓;單片機(jī)、編碼器等使用的5 V電壓;電機(jī)驅(qū)動(dòng)使用的7.2 V電壓;驅(qū)動(dòng)MOS管使用的12 V電壓。采用LM2940芯片來做5 V的穩(wěn)壓,采用ASM1117芯片把5 V電平降為3.3 V,采用MC34063芯片把電池電壓升壓到12 V。為了防止車子行進(jìn)過程中電池電壓的下降對車子性能的影響,還用一片MC34063對7.2 V的電池電壓進(jìn)行7.2 V的穩(wěn)壓。
1.2 單片機(jī)模塊
單片機(jī)選擇飛思卡爾MC9S12XS128微控制單元,它包括16位中央處理器、總線可以超頻至80 MHz,具有128 KB的FLASH存儲(chǔ)器、8 KB的RAM、2 KB的E2PROM、兩個(gè)異步串行通信接口、兩個(gè)串行外圍接口、一組8通道的輸入捕捉或輸出捕捉的增強(qiáng)型捕捉定時(shí)器、兩組8通道10路模/數(shù)轉(zhuǎn)換器、一組8通道脈寬調(diào)制模塊、29個(gè)獨(dú)立的數(shù)字I/O接口等[5]。MC9S12DG128完全能夠滿足自平衡車設(shè)計(jì)的需要,不必?cái)U(kuò)展外部存儲(chǔ)器資源。
1.3 角度與角速度檢測模塊
在車模傾斜角度的采集上,采用陀螺儀和加速度計(jì)相融合的方式獲得。
車模傾斜角速度可由安排在車模上的陀螺儀上測得,將角速度信號(hào)在時(shí)間上積分后便可以得到車模的直立傾斜角度。一般由陀螺儀測得的車模角速度噪聲很小,由角速度積分后得到的角度信號(hào)比較穩(wěn)定[6?7]。但是,如果角速度信號(hào)存在微小的誤差,經(jīng)過積分后就會(huì)形成累積誤差,最終無法得到正確的角度。本系統(tǒng)采用加速度計(jì)傳感器得到的角度對陀螺儀得到的角度進(jìn)行校正。根據(jù)物體的運(yùn)動(dòng)方向改變輸出信號(hào)的電壓值。如果物體受到重力作用,三軸加速度傳感器的z軸輸出電壓會(huì)根據(jù)其運(yùn)動(dòng)方向改變輸出電壓值,經(jīng)單片機(jī)A/D轉(zhuǎn)換后就可以計(jì)算出傾斜的角度。
本系統(tǒng)通過MMA7361三軸加速度計(jì)來矯正ENC?03MA陀螺儀的角度漂移,將重力加速度計(jì)和陀螺儀的角度互補(bǔ)融合來獲取車模傾角和角速度[8]。具體做法是:通過對比陀螺儀角速度積分后的角度與z軸重力加速度計(jì)所得到的角度,用兩個(gè)角度的偏差改變陀螺儀的角度輸出,從而使積分后的角度逐步跟蹤到準(zhǔn)確的角度值。
1.4 賽道檢測模塊
賽道信息的識(shí)別重點(diǎn)是使傳感器能夠感知更遠(yuǎn)距離以獲取更多的路面信息[9?10]。而激光傳感器接收性好,周圍光線對其幾乎沒有影響,檢測距離滿足要求。本系統(tǒng)的激光傳感器安放在車子頂部,這樣可以帶來更遠(yuǎn)的前瞻性和更好的接收角度。使用74HC573鎖存器進(jìn)行激光的驅(qū)動(dòng),單片機(jī)A口輸出數(shù)字信號(hào)到鎖存器的D口進(jìn)行開關(guān)控制,由Q口輸出信號(hào)對激光進(jìn)行點(diǎn)亮。由于激光接收管需要接受某一個(gè)固定范圍波長的光波,因此在鎖存器的使能端加上一個(gè)180 kHz的調(diào)制信號(hào),此調(diào)制信號(hào)由555定時(shí)器產(chǎn)生。激光調(diào)制與發(fā)射電路如圖2和圖3所示。
圖2 NE555脈沖調(diào)制電路
圖3 74HC573驅(qū)動(dòng)紅外發(fā)射器電路
1.5 電機(jī)驅(qū)動(dòng)模塊
電機(jī)驅(qū)動(dòng)采用英飛凌的BTS7960半橋驅(qū)動(dòng)芯片構(gòu)成H橋驅(qū)動(dòng)電路。BTS7960電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)電流大,最大電流可達(dá)43 A;內(nèi)阻小(只有16 mΩ),功耗小;具有死區(qū)時(shí)間、過溫、過電壓、過電流、短路保護(hù)等功能。兩片BTS7960芯片構(gòu)成H橋驅(qū)動(dòng)電路如圖4所示,通過兩路PWM信號(hào)進(jìn)行電機(jī)的正反轉(zhuǎn)和速度控制。該電路結(jié)構(gòu)簡單,控制方便,驅(qū)動(dòng)效率較高,輸出功率也能滿足對小車直立控制的要求。
1.6 參數(shù)的觀測方案
前期調(diào)試時(shí),用串口在線觀測數(shù)據(jù),讀取陀螺儀零偏移量、加速度計(jì)傳感器的A/D值、激光點(diǎn)亮和采集信號(hào)的值、編碼器的碼數(shù)值等。后期在跑道上測試平衡小車直立的時(shí)候改用了LCD顯示屏來顯示相關(guān)的參數(shù)。雖然LCD的顯示效果很好,不受外界電磁脈沖干擾,電磁兼容性好。但是由于它占用了11個(gè)I/O口,體積太大,非常占用有限的板上空間。最后選用OLED顯示,OLED具有屏幕小、重量輕、分辨率較高、視角寬、發(fā)光效率高、響應(yīng)快等特點(diǎn),而且只要占用4個(gè)I/O口,大大節(jié)省了I/O口的資源。
圖4 BT7960構(gòu)成的H橋電機(jī)驅(qū)動(dòng)電路
2 控制方案及實(shí)現(xiàn)
自平衡小車的控制通過單片機(jī)編程實(shí)現(xiàn),單片機(jī)實(shí)現(xiàn)的主要功能有:
(1) 總體的程序運(yùn)行流程控制:初始化、車模的啟動(dòng)和結(jié)束;
(2) 系統(tǒng)的界面:狀態(tài)顯示、參數(shù)的設(shè)定;
(3) 車模傾斜角度計(jì)算、速度計(jì)算及路徑檢測;
(4) 車模的動(dòng)態(tài)平衡控制:直立控制、速度控制、方向控制;
(5) 電機(jī)的PWM輸出。
在程序結(jié)構(gòu)的設(shè)計(jì)上,把不需要精確的時(shí)間周期的車模程序運(yùn)行流程控制和系統(tǒng)的界面設(shè)定放在主程序中。把需要精確執(zhí)行周期的直立控制、速度控制、方向控制等程序放在中斷內(nèi)執(zhí)行。主程序和中斷程序之間用全局變量進(jìn)行數(shù)據(jù)通信。程序框架如圖5所示。
2.1 主程序
在單片機(jī)初始化完成后,進(jìn)入直立狀態(tài)檢測,由陀螺儀和加速度計(jì)融合后的角度值來判斷小車是否處于直立狀態(tài)。如果是處于直立狀態(tài)的話,馬上啟動(dòng)車模的直立控制、方向控制以及速度控制。車模跌倒與否取決于在一定時(shí)間內(nèi)加速度計(jì)的值是否超過一定傾角閾值,如果跌倒則關(guān)閉相應(yīng)的程序段代碼執(zhí)行進(jìn)行直立檢測,直至斷電或者重新獲取直立條件值。
圖5 程序框架
2.2 中斷程序
車模運(yùn)動(dòng)控制可分解成三個(gè)基本控制任務(wù):
(1) 控制直立平衡:通過控制兩個(gè)電機(jī)正反向運(yùn)動(dòng)保持車模直立平衡狀態(tài)。
(2) 控制車模速度:通過調(diào)節(jié)車模的傾角來實(shí)現(xiàn)車模速度控制,本質(zhì)上還是通過控制電機(jī)的轉(zhuǎn)速控制車輪速度。
(3) 控制車模方向:通過控制兩個(gè)電機(jī)之間的轉(zhuǎn)動(dòng)差速實(shí)現(xiàn)車模轉(zhuǎn)向控制[11]。
傳統(tǒng)的PID算法具有對數(shù)學(xué)模型要求不高、參數(shù)整定方便的優(yōu)點(diǎn)。在車模控制中的直立、速度和方向控制三個(gè)環(huán)節(jié)中,都使用比例微分(PD)控制。中斷服務(wù)程序完成車模的角度、速度和方向控制的周期調(diào)用。具體調(diào)用的子函數(shù)主要實(shí)現(xiàn)以下四個(gè)任務(wù):
(1) 角度計(jì)算和直立控制。通過單片機(jī)的ADC讀取陀螺儀和加速度計(jì)的數(shù)值。通過陀螺儀信號(hào)獲得車模的角速度和傾角,由重力加速度計(jì)z軸信號(hào)得到的傾角來補(bǔ)償陀螺儀的漂移。根據(jù)車模角度和角速度,采用PD控制,計(jì)算車模電機(jī)的控制量。直立控制函數(shù)5 ms調(diào)用1次,程序如下:
void Get_AV(void) // 陀螺儀角速度計(jì)算
{
int Vout;
Vout = GyroVout;
AV_Gyro = (float)(Vout ? V_Gyro_OFFSET) * R_Gyro ? RGyroVout / 50;
}
void Get_Angle(void) //陀螺儀角度計(jì)算
{
int Vout;
Vout = AccVout;
Angle_Acc = (float)(V_ACC_OFFSET ? Vout) * R_ACC;
}
void Angle_Control() //直立的PD控制函數(shù)
{
g_AngleOut = ANGLE_P * Angle + ANGLE_D * AV_Gyro;
}
(2) 速度計(jì)算與速度控制。根據(jù)50 ms內(nèi)左、右車輪上兩個(gè)編碼器脈沖數(shù)計(jì)算電機(jī)轉(zhuǎn)速。由采集的電機(jī)速度設(shè)定值,采用PD控制,計(jì)算電機(jī)的控制量。為了減少車模速度控制對直立控制的影響,速度控制應(yīng)更加平滑,速度的輸出變化量被平均分配到10個(gè)直立角度控制的5 ms中斷函數(shù)周期中。這樣不但可保證車模直立的平衡性,又可保證車模速度控制的平穩(wěn)性。程序如下:
void Pulsecount() //兩個(gè)電機(jī)速度的計(jì)算
{
int leftSpeed;
if(g_LeftOut > 0) leftSpeed=?PACNT;
else leftSpeed=PACNT;
Left_Travel +=leftSpeed;
PACNT = 0;
}
(3) 路徑識(shí)別與方向控制。在車模頂上左、右對稱安裝有8個(gè)激光發(fā)射管和4個(gè)接收管。由于激光的距離較近,接收管如果同時(shí)點(diǎn)亮,會(huì)發(fā)生接受干擾和概率性的接收錯(cuò)誤。因此采用循環(huán)右移分時(shí)點(diǎn)亮同步接收的工作方式。所謂分時(shí)點(diǎn)亮是指在同一時(shí)刻只允許一個(gè)激光管點(diǎn)亮,同步接收是指在點(diǎn)亮激光管的同時(shí)開啟想要接收激光信號(hào)I/O口。每10 ms通過采集到的車模距離中心線的位置偏差,采用PD控制,計(jì)算電機(jī)的控制量。為了使方向控制更平滑,也將方向控制的輸出變化量平均分配到2個(gè)5 ms的直立角度控制周期中。
(4) 根據(jù)前面的直立控制、速度控制和方向控制函數(shù)計(jì)算的控制量進(jìn)行線性加權(quán)疊加,就可分別得到左右兩個(gè)電機(jī)的輸出電壓控制量。為了提高車模在靜態(tài)下的穩(wěn)定性,需要增加死區(qū)補(bǔ)償。為了保證輸出量不超出PWM的滿量程范圍,需要對輸出增加飽和處理。最終,電機(jī)驅(qū)動(dòng)信號(hào)由單片機(jī)的PWM模塊產(chǎn)生。程序如下:
void MotorSpeed_Out(void)
//電機(jī)的PWM計(jì)算函數(shù),該函數(shù)5 ms調(diào)用一次
{
if(g_LeftOut >= 0)
{
if(g_LeftOut > 700) g_LeftOut = 700;
PWMDTY01 = g_LeftOut + DEAD_VAL;
PWMDTY23 = 0;
}
else
{
if(g_LeftOut < ?700) g_LeftOut = ?700;
PWMDTY01 = 0;
PWMDTY23 = ?g_LeftOut + DEAD_VAL;
}
if(g_RightOut >= 0)
{
if(g_RightOut > 700) g_RightOut = 700;
PWMDTY45 = g_RightOut + DEAD_VAL;
PWMDTY67 = 0;
}
else
{
if(g_RightOut < ?700) g_RightOut = ?700;
PWMDTY45 = 0;
PWMDTY67 = ?g_RightOut + DEAD_VAL;
}
}
3 結(jié) 語
本文針對基于智能車競賽的自平衡小車的設(shè)計(jì)問題進(jìn)行了研究,給出了自平衡小車的硬件系統(tǒng)和單片機(jī)實(shí)現(xiàn)的軟件實(shí)現(xiàn)方案。實(shí)驗(yàn)表明,本方案對光線的抗干擾性強(qiáng),電機(jī)驅(qū)動(dòng)性能良好,小車能夠沿著賽道行進(jìn),車身保持動(dòng)態(tài)自動(dòng)平衡,行駛平穩(wěn)快速,該車在2012年福建省電子設(shè)計(jì)競賽中表現(xiàn)突出。
參考文獻(xiàn)
[1] 趙建偉,阮曉鋼.柔性兩輪直立式自平衡仿人機(jī)器人的建模及控制[J].機(jī)器人,2009,31(2):179?186.
[2] 郜園園,阮曉鋼,宋洪軍,等.兩輪自平衡機(jī)器人慣性傳感器濾波問題的研究[J].傳感技術(shù)學(xué)報(bào),2010,23(5):696?700.
[3] 阮曉鋼,程懷玉,孫亮.自平衡機(jī)械系統(tǒng)勻速行走模糊控制[J].控制工程,2009,16(4):481?484.
[4] 福建省電子設(shè)計(jì)競賽秘書處.2012福建省全國大學(xué)生電子設(shè)計(jì)競賽D題題目要求[M].福州:福建省電子設(shè)計(jì)競賽秘書處,2012.
[5] 劉偉.基于MC9S12XS128微控制器的智能車硬件設(shè)計(jì)[J].電子設(shè)計(jì)工程,2010,18(1):102?104.
[6] 王曉宇,閆繼宏,臧希喆,等.兩輪自平衡機(jī)器人多傳感器數(shù)據(jù)融合方法研究[J].傳感技術(shù)學(xué)報(bào),2007,20(3):668?6772.
[7] 董錕,韓帥,孫繼龍,等.兩輪自平衡智能車系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(1):71?74.
[8] 蔣緯洋,鄧遲,肖曉萍.兩輪自平衡小車系統(tǒng)制作研究[J].國外電子測量技術(shù),2012(6):76?79.
[9] 傅繼奮,孫漢旭,王亮清,等.自平衡兩輪機(jī)器人的控制系統(tǒng)設(shè)計(jì)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)薪,2004,11(6):75?77.
[10] 李龍輝,梅迎.電磁導(dǎo)航直立自平衡智能車的電控系統(tǒng)設(shè)計(jì)[J].汽車實(shí)用技術(shù),2013 (4):26?29.
[11] 飛思卡爾競賽秘書處.第七屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽電磁組直立行車參考設(shè)計(jì)方案(版本2.0)[M].北京:飛思卡爾競賽秘書處,2012.
int Vout;
Vout = GyroVout;
AV_Gyro = (float)(Vout ? V_Gyro_OFFSET) * R_Gyro ? RGyroVout / 50;
}
void Get_Angle(void) //陀螺儀角度計(jì)算
{
int Vout;
Vout = AccVout;
Angle_Acc = (float)(V_ACC_OFFSET ? Vout) * R_ACC;
}
void Angle_Control() //直立的PD控制函數(shù)
{
g_AngleOut = ANGLE_P * Angle + ANGLE_D * AV_Gyro;
}
(2) 速度計(jì)算與速度控制。根據(jù)50 ms內(nèi)左、右車輪上兩個(gè)編碼器脈沖數(shù)計(jì)算電機(jī)轉(zhuǎn)速。由采集的電機(jī)速度設(shè)定值,采用PD控制,計(jì)算電機(jī)的控制量。為了減少車模速度控制對直立控制的影響,速度控制應(yīng)更加平滑,速度的輸出變化量被平均分配到10個(gè)直立角度控制的5 ms中斷函數(shù)周期中。這樣不但可保證車模直立的平衡性,又可保證車模速度控制的平穩(wěn)性。程序如下:
void Pulsecount() //兩個(gè)電機(jī)速度的計(jì)算
{
int leftSpeed;
if(g_LeftOut > 0) leftSpeed=?PACNT;
else leftSpeed=PACNT;
Left_Travel +=leftSpeed;
PACNT = 0;
}
(3) 路徑識(shí)別與方向控制。在車模頂上左、右對稱安裝有8個(gè)激光發(fā)射管和4個(gè)接收管。由于激光的距離較近,接收管如果同時(shí)點(diǎn)亮,會(huì)發(fā)生接受干擾和概率性的接收錯(cuò)誤。因此采用循環(huán)右移分時(shí)點(diǎn)亮同步接收的工作方式。所謂分時(shí)點(diǎn)亮是指在同一時(shí)刻只允許一個(gè)激光管點(diǎn)亮,同步接收是指在點(diǎn)亮激光管的同時(shí)開啟想要接收激光信號(hào)I/O口。每10 ms通過采集到的車模距離中心線的位置偏差,采用PD控制,計(jì)算電機(jī)的控制量。為了使方向控制更平滑,也將方向控制的輸出變化量平均分配到2個(gè)5 ms的直立角度控制周期中。
(4) 根據(jù)前面的直立控制、速度控制和方向控制函數(shù)計(jì)算的控制量進(jìn)行線性加權(quán)疊加,就可分別得到左右兩個(gè)電機(jī)的輸出電壓控制量。為了提高車模在靜態(tài)下的穩(wěn)定性,需要增加死區(qū)補(bǔ)償。為了保證輸出量不超出PWM的滿量程范圍,需要對輸出增加飽和處理。最終,電機(jī)驅(qū)動(dòng)信號(hào)由單片機(jī)的PWM模塊產(chǎn)生。程序如下:
void MotorSpeed_Out(void)
//電機(jī)的PWM計(jì)算函數(shù),該函數(shù)5 ms調(diào)用一次
{
if(g_LeftOut >= 0)
{
if(g_LeftOut > 700) g_LeftOut = 700;
PWMDTY01 = g_LeftOut + DEAD_VAL;
PWMDTY23 = 0;
}
else
{
if(g_LeftOut < ?700) g_LeftOut = ?700;
PWMDTY01 = 0;
PWMDTY23 = ?g_LeftOut + DEAD_VAL;
}
if(g_RightOut >= 0)
{
if(g_RightOut > 700) g_RightOut = 700;
PWMDTY45 = g_RightOut + DEAD_VAL;
PWMDTY67 = 0;
}
else
{
if(g_RightOut < ?700) g_RightOut = ?700;
PWMDTY45 = 0;
PWMDTY67 = ?g_RightOut + DEAD_VAL;
}
}
3 結(jié) 語
本文針對基于智能車競賽的自平衡小車的設(shè)計(jì)問題進(jìn)行了研究,給出了自平衡小車的硬件系統(tǒng)和單片機(jī)實(shí)現(xiàn)的軟件實(shí)現(xiàn)方案。實(shí)驗(yàn)表明,本方案對光線的抗干擾性強(qiáng),電機(jī)驅(qū)動(dòng)性能良好,小車能夠沿著賽道行進(jìn),車身保持動(dòng)態(tài)自動(dòng)平衡,行駛平穩(wěn)快速,該車在2012年福建省電子設(shè)計(jì)競賽中表現(xiàn)突出。
參考文獻(xiàn)
[1] 趙建偉,阮曉鋼.柔性兩輪直立式自平衡仿人機(jī)器人的建模及控制[J].機(jī)器人,2009,31(2):179?186.
[2] 郜園園,阮曉鋼,宋洪軍,等.兩輪自平衡機(jī)器人慣性傳感器濾波問題的研究[J].傳感技術(shù)學(xué)報(bào),2010,23(5):696?700.
[3] 阮曉鋼,程懷玉,孫亮.自平衡機(jī)械系統(tǒng)勻速行走模糊控制[J].控制工程,2009,16(4):481?484.
[4] 福建省電子設(shè)計(jì)競賽秘書處.2012福建省全國大學(xué)生電子設(shè)計(jì)競賽D題題目要求[M].福州:福建省電子設(shè)計(jì)競賽秘書處,2012.
[5] 劉偉.基于MC9S12XS128微控制器的智能車硬件設(shè)計(jì)[J].電子設(shè)計(jì)工程,2010,18(1):102?104.
[6] 王曉宇,閆繼宏,臧希喆,等.兩輪自平衡機(jī)器人多傳感器數(shù)據(jù)融合方法研究[J].傳感技術(shù)學(xué)報(bào),2007,20(3):668?6772.
[7] 董錕,韓帥,孫繼龍,等.兩輪自平衡智能車系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(1):71?74.
[8] 蔣緯洋,鄧遲,肖曉萍.兩輪自平衡小車系統(tǒng)制作研究[J].國外電子測量技術(shù),2012(6):76?79.
[9] 傅繼奮,孫漢旭,王亮清,等.自平衡兩輪機(jī)器人的控制系統(tǒng)設(shè)計(jì)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)薪,2004,11(6):75?77.
[10] 李龍輝,梅迎.電磁導(dǎo)航直立自平衡智能車的電控系統(tǒng)設(shè)計(jì)[J].汽車實(shí)用技術(shù),2013 (4):26?29.
[11] 飛思卡爾競賽秘書處.第七屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽電磁組直立行車參考設(shè)計(jì)方案(版本2.0)[M].北京:飛思卡爾競賽秘書處,2012.
int Vout;
Vout = GyroVout;
AV_Gyro = (float)(Vout ? V_Gyro_OFFSET) * R_Gyro ? RGyroVout / 50;
}
void Get_Angle(void) //陀螺儀角度計(jì)算
{
int Vout;
Vout = AccVout;
Angle_Acc = (float)(V_ACC_OFFSET ? Vout) * R_ACC;
}
void Angle_Control() //直立的PD控制函數(shù)
{
g_AngleOut = ANGLE_P * Angle + ANGLE_D * AV_Gyro;
}
(2) 速度計(jì)算與速度控制。根據(jù)50 ms內(nèi)左、右車輪上兩個(gè)編碼器脈沖數(shù)計(jì)算電機(jī)轉(zhuǎn)速。由采集的電機(jī)速度設(shè)定值,采用PD控制,計(jì)算電機(jī)的控制量。為了減少車模速度控制對直立控制的影響,速度控制應(yīng)更加平滑,速度的輸出變化量被平均分配到10個(gè)直立角度控制的5 ms中斷函數(shù)周期中。這樣不但可保證車模直立的平衡性,又可保證車模速度控制的平穩(wěn)性。程序如下:
void Pulsecount() //兩個(gè)電機(jī)速度的計(jì)算
{
int leftSpeed;
if(g_LeftOut > 0) leftSpeed=?PACNT;
else leftSpeed=PACNT;
Left_Travel +=leftSpeed;
PACNT = 0;
}
(3) 路徑識(shí)別與方向控制。在車模頂上左、右對稱安裝有8個(gè)激光發(fā)射管和4個(gè)接收管。由于激光的距離較近,接收管如果同時(shí)點(diǎn)亮,會(huì)發(fā)生接受干擾和概率性的接收錯(cuò)誤。因此采用循環(huán)右移分時(shí)點(diǎn)亮同步接收的工作方式。所謂分時(shí)點(diǎn)亮是指在同一時(shí)刻只允許一個(gè)激光管點(diǎn)亮,同步接收是指在點(diǎn)亮激光管的同時(shí)開啟想要接收激光信號(hào)I/O口。每10 ms通過采集到的車模距離中心線的位置偏差,采用PD控制,計(jì)算電機(jī)的控制量。為了使方向控制更平滑,也將方向控制的輸出變化量平均分配到2個(gè)5 ms的直立角度控制周期中。
(4) 根據(jù)前面的直立控制、速度控制和方向控制函數(shù)計(jì)算的控制量進(jìn)行線性加權(quán)疊加,就可分別得到左右兩個(gè)電機(jī)的輸出電壓控制量。為了提高車模在靜態(tài)下的穩(wěn)定性,需要增加死區(qū)補(bǔ)償。為了保證輸出量不超出PWM的滿量程范圍,需要對輸出增加飽和處理。最終,電機(jī)驅(qū)動(dòng)信號(hào)由單片機(jī)的PWM模塊產(chǎn)生。程序如下:
void MotorSpeed_Out(void)
//電機(jī)的PWM計(jì)算函數(shù),該函數(shù)5 ms調(diào)用一次
{
if(g_LeftOut >= 0)
{
if(g_LeftOut > 700) g_LeftOut = 700;
PWMDTY01 = g_LeftOut + DEAD_VAL;
PWMDTY23 = 0;
}
else
{
if(g_LeftOut < ?700) g_LeftOut = ?700;
PWMDTY01 = 0;
PWMDTY23 = ?g_LeftOut + DEAD_VAL;
}
if(g_RightOut >= 0)
{
if(g_RightOut > 700) g_RightOut = 700;
PWMDTY45 = g_RightOut + DEAD_VAL;
PWMDTY67 = 0;
}
else
{
if(g_RightOut < ?700) g_RightOut = ?700;
PWMDTY45 = 0;
PWMDTY67 = ?g_RightOut + DEAD_VAL;
}
}
3 結(jié) 語
本文針對基于智能車競賽的自平衡小車的設(shè)計(jì)問題進(jìn)行了研究,給出了自平衡小車的硬件系統(tǒng)和單片機(jī)實(shí)現(xiàn)的軟件實(shí)現(xiàn)方案。實(shí)驗(yàn)表明,本方案對光線的抗干擾性強(qiáng),電機(jī)驅(qū)動(dòng)性能良好,小車能夠沿著賽道行進(jìn),車身保持動(dòng)態(tài)自動(dòng)平衡,行駛平穩(wěn)快速,該車在2012年福建省電子設(shè)計(jì)競賽中表現(xiàn)突出。
參考文獻(xiàn)
[1] 趙建偉,阮曉鋼.柔性兩輪直立式自平衡仿人機(jī)器人的建模及控制[J].機(jī)器人,2009,31(2):179?186.
[2] 郜園園,阮曉鋼,宋洪軍,等.兩輪自平衡機(jī)器人慣性傳感器濾波問題的研究[J].傳感技術(shù)學(xué)報(bào),2010,23(5):696?700.
[3] 阮曉鋼,程懷玉,孫亮.自平衡機(jī)械系統(tǒng)勻速行走模糊控制[J].控制工程,2009,16(4):481?484.
[4] 福建省電子設(shè)計(jì)競賽秘書處.2012福建省全國大學(xué)生電子設(shè)計(jì)競賽D題題目要求[M].福州:福建省電子設(shè)計(jì)競賽秘書處,2012.
[5] 劉偉.基于MC9S12XS128微控制器的智能車硬件設(shè)計(jì)[J].電子設(shè)計(jì)工程,2010,18(1):102?104.
[6] 王曉宇,閆繼宏,臧希喆,等.兩輪自平衡機(jī)器人多傳感器數(shù)據(jù)融合方法研究[J].傳感技術(shù)學(xué)報(bào),2007,20(3):668?6772.
[7] 董錕,韓帥,孫繼龍,等.兩輪自平衡智能車系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(1):71?74.
[8] 蔣緯洋,鄧遲,肖曉萍.兩輪自平衡小車系統(tǒng)制作研究[J].國外電子測量技術(shù),2012(6):76?79.
[9] 傅繼奮,孫漢旭,王亮清,等.自平衡兩輪機(jī)器人的控制系統(tǒng)設(shè)計(jì)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)薪,2004,11(6):75?77.
[10] 李龍輝,梅迎.電磁導(dǎo)航直立自平衡智能車的電控系統(tǒng)設(shè)計(jì)[J].汽車實(shí)用技術(shù),2013 (4):26?29.
[11] 飛思卡爾競賽秘書處.第七屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽電磁組直立行車參考設(shè)計(jì)方案(版本2.0)[M].北京:飛思卡爾競賽秘書處,2012.