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