杜麗敏,王 巖
(長春大學(xué) 電子信息工程學(xué)院,長春130022)
兩輪自動平衡車憑借其運動靈活、體積小巧、經(jīng)濟環(huán)保等優(yōu)點逐漸被人們喜歡,并且在人們的生產(chǎn)生活中起著越來越重要的作用。兩輪自動平衡小車采用倒立擺工作原理,使小車保持平衡狀態(tài),其系統(tǒng)具有非線性、強耦合、不穩(wěn)定等特點[1]。因此,兩輪自平衡車不僅在市場中有很大的價值和前景,在驗證或校驗控制算法和控制理論上更有一個很好的實驗平臺[2]。文獻[3-4] 設(shè)計了基于LQR的最優(yōu)控制器,該控制算法具有較快的動態(tài)響應(yīng)速度,對于干擾具有良好的魯棒性;文獻[5]針對H和LQR兩種控制方法進行了對比分析,證明了前者在欠驅(qū)動系統(tǒng)的控制中具有一定的參考價值;文獻[6]針對兩輪平衡小車給出了硬件設(shè)計方案,以及基于PID的控制算法,實驗中驗證了設(shè)計方案的可行性。本文主要研究了PID控制算法在兩輪自動平衡小車中的應(yīng)用。首先,構(gòu)建以STM32F103ZET6單片機為核心的兩輪直立小車控制系統(tǒng);其次,對兩輪自動平衡小車進行了數(shù)學(xué)建模,驗證了PD控制算法可以使小車保持直立穩(wěn)定狀態(tài),進而基于PID設(shè)計了串級控制算法;最后將所設(shè)計的控制算法應(yīng)用在了實物中,實現(xiàn)了小車的直立和行走功能。
兩輪自動平衡小車系統(tǒng)包括STM32F103C8T6主控模塊、供電電路、姿態(tài)檢測模塊MPU6050、電磁檢測電路、藍牙模塊、L298N電機驅(qū)動電路及霍爾測速碼盤等,兩輪自動平衡小車系統(tǒng)結(jié)構(gòu)框圖如圖1所示。其中,姿態(tài)檢測模塊用于測量小車的車身姿態(tài)信息,電磁檢測模塊用于測量電磁信號,進而實現(xiàn)軌跡跟蹤,霍爾測試碼盤用于測量電機的轉(zhuǎn)速,通過藍牙模塊可實現(xiàn)小車的無線控制功能。
兩輪自動平衡小車系統(tǒng)采用的供電電源的電壓為12 V,由3個18650鋰電池串聯(lián)組成;一節(jié)18650鋰電池充滿電時會達到4.2 V,標稱容量一般為2 000 mAh,在容量上滿足系統(tǒng)要求。電機驅(qū)動模塊需要5 V電源,MPU6050和單片機需要3.3 V電源,因此需要LM7805和LM1117穩(wěn)壓模塊進行調(diào)壓,如圖2和圖3所示。
姿態(tài)檢測模塊用于測量兩輪自動平衡小車的車身姿態(tài),并將車身姿態(tài)信息傳給單片機,經(jīng)過卡爾曼濾波處理后,與參考值做差形成閉環(huán)控制,實現(xiàn)直立和行走功能。
圖4為MPU6050模塊實物圖。作為本次設(shè)計采用的姿態(tài)檢測模塊,它和加速度計、角速度計組合的方案相比,優(yōu)勢在于解決了加速度計和角速度計之間的時間軸之差的問題。用戶可以自己選擇MPU6050的測量范圍,角速度計可測范圍為±250°/秒,±500°/秒,±1000°/秒,±2 000°/秒,加速度計可測范圍為±2 g,±4 g,±8 g,±16 g,選擇的方式是用戶自己設(shè)置寄存器,主控模塊可以采用I2C和MPU6050進行通訊來讀取數(shù)據(jù)。
直流電動機驅(qū)動選擇L298N,它包含4路驅(qū)動電路,可以驅(qū)動兩個直流電動機,輸出電壓最大可以達到46 V,最大瞬時峰值電流可達到3 A,連續(xù)工作時的電流為2 A。改變單片機PWM輸出信號的占空比,即L298N的IN1~IN4輸入部分,就可以實現(xiàn)直流電機的調(diào)速。L298N模塊電路如圖5所示。
在小車的兩邊裝有離車軸中心線對稱的電感,當車身兩邊的電感和導(dǎo)線的距離相同時,根據(jù)電磁學(xué)原理可知兩個電感感應(yīng)出來的電動勢大小是一樣的,當車身偏離導(dǎo)線時,兩個電感和導(dǎo)線的距離不相同,此時離導(dǎo)線遠的電感感應(yīng)出來的電動勢小于離導(dǎo)線近的電感感應(yīng)出來的電動勢,這兩個感應(yīng)電動勢的差值可以代表小車偏離導(dǎo)線的位置。由于電感感應(yīng)的電動勢是微弱信號,而且是交流信號,因此需要進行相應(yīng)的處理,再由單片機ADC模塊進行讀取。電磁檢測電路如圖6所示。需要測量的電磁信號通過LC電路選頻之后,經(jīng)LM358放大到合適的大小,再將其輸出的交流信號經(jīng)過二極管整流轉(zhuǎn)化為直流信號,濾波后,送往單片機的ADC模塊,從而得到小車偏離目標線路的偏差,完成軌跡跟蹤的功能。
兩輪自動平衡小車數(shù)學(xué)模型可以按照一級倒立擺數(shù)學(xué)模型來分析和建立,一級倒立擺數(shù)學(xué)模型受力分析如圖7所示。
設(shè)小車的質(zhì)量為m,小車偏離平衡點的角度為θ,小車的重心距離支撐點的長度為L,干擾力為N,偏離方向上的合力為F,對小車平衡系統(tǒng)建立數(shù)學(xué)模型。首先建立的數(shù)學(xué)模型是假定小車運動加速度為0m/s2,并且沒有阻尼力的情況下,那么數(shù)學(xué)模型如式(1)所示。
(1)
在角度θ很小時,sinθ≈θ,則數(shù)學(xué)模型可以近似認為如式(2)所示。
(2)
將上面的式子進行拉普拉斯變換,可得到:
mLs2θ(s)=mgθ(s)+N(s)。
(3)
進而得到角度和干擾力的傳遞函數(shù)如下:
(4)
根據(jù)公式(4)設(shè)計控制算法,結(jié)構(gòu)如圖8所示。
設(shè)輸入量R(s)為0,即對小車進行直立控制,采用比例和微分PD控制算法,在擾動信號N(s)的作用下,其傳遞函數(shù)為:
(5)
此時系統(tǒng)的兩個極點為:
(6)
如果系統(tǒng)穩(wěn)定,兩個極點必須都位于S平面的左半面,即滿足Kp>gm,KD>0。從而在理論上證明了PD控制算法在滿足上述參數(shù)整定條件時可以使系統(tǒng)穩(wěn)定。
兩輪平衡小車在平衡的狀態(tài)下附加一個角度值,車身會在姿態(tài)控制的作用下自動進行加速前進或者后退。根據(jù)以上的分析可以讓姿態(tài)控制和速度控制形成雙閉環(huán)控制系統(tǒng),即串級PID控制,圖9為串級PID的結(jié)構(gòu)圖。
采用PD控制算法的姿態(tài)控制環(huán)作為兩輪自動平衡小車串級控制系統(tǒng)的內(nèi)環(huán),用PI控制算法的速度控制環(huán)作為兩輪自動平衡小車串級控制系統(tǒng)的外環(huán);此時速度控制器的輸出值作為姿態(tài)控制環(huán)的輸入值。通過實驗分析,雙閉環(huán)串級PID控制系統(tǒng)可在一定的角度下完成行走功能。兩輪自動平衡小車平衡實物圖如圖10所示。
平衡車傾斜角的測量是通過6軸運動處理組件MPU6050來測量的,此模塊內(nèi)部集成了一個加速度計和一個角速度計,加速度計會由于平衡車的微小抖動而產(chǎn)生較大的噪聲,而角速度計輸出的角速度信號會發(fā)生漂移,誤差會隨著時間的增加而不斷變大。
卡爾曼濾波算法是一種遞歸算法,它根據(jù)不同的數(shù)據(jù)樣本來尋求最優(yōu)估計值,該算法根據(jù)上一時刻的估計值得到當前的預(yù)測值,再對當前時刻的測量值進行處理來更新當前時刻的估計值;因為預(yù)測的值和測量的值都存在一定的噪聲,且預(yù)測的值和傳感器測量的值都符合正態(tài)分布,所以處理的原則是:將兩個正態(tài)分布相乘得到一個期望值更接近真實值、方差更小的正態(tài)分布,遞推計算使處理得到的數(shù)據(jù)為最優(yōu)值。正態(tài)分布如圖11所示。
線性卡爾曼濾波分為五步:
第一步:根據(jù)上一時刻的最優(yōu)估計值來推斷出當前時刻的預(yù)測值,如公式(7)。
(7)
第二步:計算預(yù)測估計協(xié)方差矩陣,如式(8)。
(8)
其中,Pk|k-1是預(yù)測估計協(xié)方差矩陣,Qk-1為系統(tǒng)噪聲協(xié)方差。
第三步:計算卡爾曼增益,如式(9)。
(9)
其中,Kk為卡爾曼增益矩陣,Hk為觀測模型矩陣,用于將估計值轉(zhuǎn)化與測量值同一單位,Rk為測量噪聲協(xié)方差。
第四步:更新這一時刻的最優(yōu)估計,如式(10)。
(10)
第五步:更新這一時刻的估計協(xié)方差矩陣,如式(11)。
Pk=(1-KkHk)Pk|k-1,
(11)
其中,Pk為這一時刻的估計協(xié)方差矩陣。
系統(tǒng)軟件由加速度和角速度數(shù)據(jù)測量、卡爾曼濾波算法、小車的速度測量、直流電機PID算法和串口程序等組成,軟件程序流程圖如圖13所示。上電后首先進行系統(tǒng)初始化,然后等待定時中斷產(chǎn)生,在中斷函數(shù)中采集姿態(tài)數(shù)據(jù),并進行相應(yīng)的濾波處理,同時讀取電機轉(zhuǎn)速和電磁信號,并根據(jù)遙控器端通過藍牙發(fā)來的指令進行PID運算,輸出控制量,實現(xiàn)小車的直立或者行走控制。
設(shè)計了一個基于單片機的兩輪自動平衡小車系統(tǒng),詳細地介紹了其數(shù)學(xué)模型的建立,并給出了直立狀態(tài)穩(wěn)定的PD控制算法,以及小車行走的串級PID控制算法;并列出了卡爾曼濾波算法的實現(xiàn)步驟以及硬件電路的設(shè)計。通過調(diào)節(jié)控制算法的參數(shù),最終實現(xiàn)了小車的直立和行走功能。