王鵬
摘 要:本論文以兩輪自平衡車的控制系統(tǒng)為主要的研究對(duì)象,以兩輪自平衡車能夠自主穩(wěn)定站立與運(yùn)行進(jìn)行整體的研究與設(shè)計(jì)。對(duì)兩輪自平衡車進(jìn)行了數(shù)學(xué)建模,并進(jìn)行仿真與分析,為控制系統(tǒng)提供了理論基礎(chǔ)。選擇了以STM32F103C8T6單片機(jī)為主控制器,MPU6050作為姿態(tài)的檢測(cè),TB6612為驅(qū)動(dòng)器,HC06藍(lán)牙模塊為無線傳輸?shù)姆桨?。硬件設(shè)計(jì)主要包括了主控制器的電路、MPU6050電路、驅(qū)動(dòng)電路、藍(lán)牙電路、電源電路以及電源電壓檢測(cè)電路等等。軟件設(shè)計(jì)主要包括PWM的軟件設(shè)計(jì)和算法的軟件設(shè)計(jì)。對(duì)姿態(tài)的解算中卡爾曼濾波算法和PID算法進(jìn)行了詳細(xì)的介紹,PID算法主要包括了小車的三種方式:平衡PD、速度PI、方向PD的控制算法。最后對(duì)各個(gè)模塊進(jìn)行驗(yàn)證,通過調(diào)試小車基本能完成前、后、左、右運(yùn)動(dòng)。
關(guān)鍵詞:自平衡;STM32F103C8T6;卡爾曼濾波;PID
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2018)18-0043-03
1 概述
對(duì)于當(dāng)今社會(huì)的發(fā)展?fàn)顩r來說,在一些特殊的領(lǐng)域中,移動(dòng)機(jī)器人的研究變得越來越具體和進(jìn)步。當(dāng)僅僅允許一些設(shè)備在凹凸不平的地面上行走以及在一些狹窄的環(huán)境運(yùn)行時(shí),就要對(duì)兩輪平衡車進(jìn)行研究了。兩輪自平衡機(jī)器人是具有環(huán)境感知、動(dòng)態(tài)決策規(guī)劃、行為控制以及執(zhí)行功能的特點(diǎn),本文主要是通過數(shù)學(xué)建模的方式為調(diào)試部分提供一定的理論基礎(chǔ),通過系統(tǒng)軟、硬件的設(shè)計(jì)以及調(diào)試使小車能最終實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)的功能。
2 數(shù)學(xué)建模及Matlab仿真
小車模型的數(shù)學(xué)分析,其模型如圖1所示,小車的質(zhì)量為m,受到的重力為mg,小車的重心高度為l。小車在外力的狀態(tài)下的角加速度為X(t),輪子的加速度為a(t)可列出微分方程:
(1)
當(dāng)角度β很小時(shí),,,a(t)=0,這時(shí)將微分方程簡(jiǎn)化。為保證系統(tǒng)是穩(wěn)定的,加入反饋環(huán)節(jié),給小車一個(gè)加速度,傳遞函數(shù)H(s):
(2)
注意:。
利用Matlab進(jìn)行仿真,調(diào)節(jié)兩個(gè)參數(shù)時(shí),用的是控制變量的方法,調(diào)節(jié)小車時(shí)考慮到反應(yīng)時(shí)間、速度的大小等。為了找出規(guī)律,首先給的干擾信號(hào)一定以及確定一個(gè)的值,然后調(diào)節(jié)的值,過小時(shí),角度會(huì)發(fā)生振蕩的變化;接近但又小于準(zhǔn)確值時(shí),會(huì)出現(xiàn)超調(diào)的現(xiàn)象;過大時(shí),角度自恢復(fù)的時(shí)間會(huì)變長,如圖2所示,通過對(duì)比發(fā)現(xiàn)隨著的增大,角度自恢復(fù)時(shí)的幅值會(huì)變小[1-2]。
為了找出合適的反應(yīng)時(shí)間,可以改變的值。而僅僅改變的值時(shí),調(diào)大時(shí)角度的波形又會(huì)超調(diào)或者振蕩;調(diào)小時(shí)反應(yīng)時(shí)間會(huì)變長,如圖3所示,通過對(duì)比發(fā)現(xiàn)隨著值的增大,角度自恢復(fù)時(shí)的幅值也會(huì)變小。想得到更短的反應(yīng)時(shí)間就必須調(diào)大的值,這時(shí)也要相應(yīng)的增大的值。由于的值大于2時(shí)就會(huì)有毛刺,波形也基本上穩(wěn)定不了,所以的值不能超過1。
通過以上的分析可以得出:的值應(yīng)在0-2之間,的值應(yīng)在0-1之間。、分別表示為比例系數(shù)、微分系數(shù)或積分系數(shù),本系統(tǒng)的平衡控制、速度控制、方向控制剛好可以利用這種方式最終調(diào)節(jié)小車電機(jī)的PWM,這種控制方式可以稱為PID控制,整個(gè)系統(tǒng)主要就是根據(jù)小車的角度與角速度來對(duì)小車進(jìn)行調(diào)節(jié)。
3 系統(tǒng)總體方案設(shè)計(jì)
3.1 總體方案設(shè)計(jì)
采用STM32 F103 C8T6做主控制器來對(duì)各種數(shù)據(jù)進(jìn)行處理;MPU6050進(jìn)行姿態(tài)的檢測(cè);TB6612FNG芯片來驅(qū)動(dòng)電機(jī);HC06藍(lán)牙來控制平衡車的幾個(gè)動(dòng)作;鋰電池對(duì)小車的整個(gè)系統(tǒng)進(jìn)行供電,整個(gè)系統(tǒng)的結(jié)構(gòu)框圖如圖4所示。首先要給整個(gè)系統(tǒng)進(jìn)行供電,當(dāng)小車出現(xiàn)傾倒時(shí),主控制器STM32F103C8T6通過IIC的方式讀取由MPU6050模塊測(cè)得的小車的角度與角加速度,然后STM32進(jìn)行數(shù)據(jù)的處理在通過驅(qū)動(dòng)模塊來驅(qū)動(dòng)兩個(gè)電機(jī)使小車達(dá)到平衡。STM32讀取編碼器的位移來測(cè)得小車的速度,從而達(dá)到小車能夠前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。而上位機(jī)是通過藍(lán)牙模塊來進(jìn)行控制小車的運(yùn)行狀態(tài)[3-5]。
3.2 驅(qū)動(dòng)電路設(shè)計(jì)
TB6612的PWM引腳是直接與STM32的PWM端相連的,具體的作用是通過改變PWM波的占空比來控制電機(jī)的速度。VM的供電電壓在12V以內(nèi),其中加兩個(gè)電容主要是對(duì)其進(jìn)行濾波。而電容是對(duì)5V的電壓濾波使其更穩(wěn)定,如圖5所示。
4 系統(tǒng)軟件設(shè)計(jì)
4.1 單片機(jī)軟件設(shè)計(jì)
整個(gè)系統(tǒng)軟件涉及到了定時(shí)器,時(shí)間一到,定時(shí)器就開始執(zhí)行,串口接收中斷也是一樣的。由于小車的姿態(tài)的獲取、編碼器數(shù)值的獲取、算法的實(shí)現(xiàn)、PID控制以及電機(jī)的PWM都需要在中斷的條件下進(jìn)行的,在進(jìn)行編程的時(shí)候需要對(duì)定時(shí)器是否計(jì)時(shí)完成進(jìn)行判定,從而再執(zhí)行具體的功能,如圖6所示[6]。
4.2 PID控制軟件設(shè)計(jì)
本文采用的主要是平衡PD控制、速度PI控制以及轉(zhuǎn)向PD控制。在第二章是已經(jīng)講述了、分別表示為比例系數(shù)、微分系數(shù),所以在得到角度與角速度的穩(wěn)定值后就可以直接得出一個(gè)PWM值了,但是在實(shí)際中有考慮車身重心角度所帶來的影響。在進(jìn)行平衡控制的時(shí)候小車也能直立,但是系統(tǒng)本身存在穩(wěn)態(tài)誤差,小車會(huì)不停地?cái)[動(dòng),要解決這個(gè)問題就必須加上速度反饋來補(bǔ)償穩(wěn)態(tài)誤差。這里要注意由于車輪的速度反饋信號(hào)中往往存在著噪聲,對(duì)速度進(jìn)行微分運(yùn)算會(huì)進(jìn)一步加大噪聲的影響,所以不能應(yīng)用微分運(yùn)算。通過測(cè)量小車擺動(dòng)時(shí)的速度以及位移,利用比例積分的方法減小穩(wěn)態(tài)誤差,使小車靜止在一點(diǎn)。這時(shí)需要編碼器來測(cè)量車輪的速度,然后經(jīng)過積分得到位移。平衡時(shí)車輪的速度與位移所得到的PWM可以使小車穩(wěn)定在一個(gè)小的范圍內(nèi)[7]。整體控制如圖7所示。
5 系統(tǒng)調(diào)試
本系統(tǒng)由于MPU6050所得到的角度與角速度是不穩(wěn)定的,所以要利用卡爾曼濾波器進(jìn)行濾波處理。這里主要調(diào)試的是過程噪聲的數(shù)值,過程噪聲的值接近0,如果調(diào)大一點(diǎn)就會(huì)超調(diào)。圖8所示是濾波前與濾波后的角度波形的對(duì)比。
在對(duì)小車的平衡進(jìn)行調(diào)試時(shí),運(yùn)用試湊法的方式P、D兩個(gè)參數(shù)進(jìn)行設(shè)定。在第2部分時(shí),已經(jīng)得到了的值應(yīng)在0-1之間,當(dāng)g取,l取0.05m,所以k1得值大約為200,k2的值大約為0-2。調(diào)節(jié)P的大小,P大約為200時(shí)給小車一個(gè)傾角的時(shí)候,它會(huì)向傾斜的方向運(yùn)動(dòng)。這時(shí),然后就要增加D的值了,直接把D增加到小車抖動(dòng)時(shí),再改變P的值,就這樣一個(gè)一個(gè)試下去,最后找到小車穩(wěn)定時(shí)的P、D值(304,1.1)。但是這樣小車會(huì)來回?cái)[動(dòng),所以要加上速度的PI調(diào)試,讓小車能在一個(gè)很小的范圍內(nèi)靜止,最后經(jīng)過大量的數(shù)據(jù)驗(yàn)證,得到了一個(gè)合適的P、I值(91,0.4)。對(duì)著四個(gè)參數(shù)調(diào)試小車就能夠平衡了,使它能夠前進(jìn)就很簡(jiǎn)單了,只需要把兩個(gè)藍(lán)牙接收的指令添加進(jìn)去就可以了。為了讓小車能夠轉(zhuǎn)向,也要用到PD控制,主要控制兩電機(jī)的速度差就可以了,調(diào)試的方式與上面的一樣,得到的P、D為(42,0.58)。
6 結(jié)語
總的來講,設(shè)計(jì)已經(jīng)基本上能夠滿足要求。本論文的重點(diǎn)是數(shù)學(xué)建模,從而找出合適的比例、微分系數(shù)。而系統(tǒng)硬件、系統(tǒng)軟件的設(shè)計(jì)以及調(diào)試使小車能夠最終實(shí)現(xiàn)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)的功能。PID調(diào)試的時(shí)候需要大量數(shù)據(jù)的驗(yàn)證,這一步操作十分的麻煩,很難調(diào)到一個(gè)理想的狀態(tài)。平衡PD、速度PI的調(diào)節(jié)是小車自主站立以及前進(jìn)后退,轉(zhuǎn)向PD的調(diào)試使小車能夠做左右轉(zhuǎn)彎的動(dòng)作。兩輪自平衡車目前只能實(shí)現(xiàn)一些基本的功能,仍然有很大的發(fā)展空間,由于時(shí)間緊迫,原本的好多想法也沒能完成,比如說在小車上加上其他的功能。還有就是在硬件的選型上,用的都不是有高性能的芯片,比較容易出現(xiàn)問題。小車的穩(wěn)定性能也不是太好,一些算法也有待提高。
參考文獻(xiàn)
[1]王振運(yùn).基于RT-Thread和STM32的雙輪自平衡機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[D].中北大學(xué),2016.
[2]張明路,丁承君,段萍.移動(dòng)機(jī)器人的研究現(xiàn)狀與趨勢(shì)[J].河北工業(yè)大學(xué)學(xué)報(bào),2004,(2):110-115.
[3]陳波.基于神經(jīng)網(wǎng)絡(luò)PID控制的兩輪自平衡小車研究[D].西南交通大學(xué),2014.
[4]丁鳳一種新型兩輪自平衡小車的建模與控制[D].華中科技大學(xué),2012.
[5]付夢(mèng)印,鄧志紅.Kalman濾波理論及其在導(dǎo)航系統(tǒng)中的應(yīng)用[M].第二版.北京:科學(xué)出版社,2010.
[6]譚文龍.一種改進(jìn)的二級(jí)倒立擺LQR控制器參數(shù)優(yōu)化方法[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)),2012,(3):85-88.
[7]徐國保,尹怡欣,周美娟.智能移動(dòng)機(jī)器人技術(shù)現(xiàn)狀及展望[J].機(jī)器人技術(shù)與應(yīng)用,2007,(2):29-34.