蔣 龍 羅 亮 王 欣
(西南科技大學信息工程學院 四川綿陽 621010)
?
基于積分分離PID控制的自平衡小車設計
蔣 龍 羅 亮 王 欣
(西南科技大學信息工程學院 四川綿陽 621010)
以STM32F103VET6作為控制核心芯片,采用帶加速度計的陀螺儀MPU6050構成小車姿態檢測裝置,采用雙路驅動器TB6612FNG驅動帶數字編碼器的直流電機搭建了自平衡小車系統。采用積分分離式PID算法實現了車身平衡的快速穩定控制。經實驗證明積分分離式PID算法能夠快速、穩定地控制小車系統達到平衡狀態。
積分分離式PID 平衡小車 姿態檢測
兩輪自平衡小車是一種典型的欠驅動系統(underactuated system)、非完整系統(nonholonomic system),其核心問題是對小車的平衡控制和運動控制[1]。常見的平衡小車控制算法有普通PID算法、模糊控制算法和神經網絡算法等[2]。普通的PID算法能夠有效實現小車系統的平衡控制,但當小車系統的傾角比較大時,算法速度很容易跟不上,導致小車趨于發散狀態,以至于無法維持自身的平衡狀態;模糊控制算法和神經網絡算法在一定程度上可以解決這一問題,但在線運算時需要控制器提供大量的內存存儲數據,對控制器的性能要求特別高。基于以上控制算法的不足,本文采用了積分分離式PID算法對小車進行控制,使其可在大范圍傾角內快速達到平衡,并且該算法占用主控芯片內存不大,對控制器的要求也不高。
系統總體設計框圖和實物圖如圖1所示,自動平衡小車系統主要由陀螺儀MPU6050、驅動器TB6612FNG、控制器STM32F103ZET6和帶編碼器的直流電機組成。小車系統采用兩塊7.5 V鋰電池串聯,利用LM2578和LM2576分別把串聯電壓轉換為12 V和5 V電壓給系統供電。
小車系統的主控制器通過定時器中斷,利用I2C協議讀取陀螺儀MPU6050檢測的姿態信息,并經過主控器的卡爾曼濾波和數據融合處理后,與串口通信,把姿態信息實時顯示在上位機上,采用積分分離式PID算法控制定時器輸出PWM波形,再利用雙路驅動器TB6612FNG驅動電機。小車系統采用帶光柵編碼器測速的直流電機,通過光柵測速把電機速度反饋給控制器,形成負反饋控制系統。本系統的主控制器通過串口實時向上位機發送姿態檢測信息,同時也便于積分分離式PID算法的參數整定;串口通信還可以把控制小車系統穩定的時間,即調節時間顯示在上位機上,為測試實驗指標提供一定的實驗條件。

圖1 系統總體設計框圖和實物圖Fig.1 Overall system design diagram and physical map
2.1 主控制器
本系統的主控芯片采用了ST公司的STM32F103ZET6,該主控芯片是擁有64KSRAM,512K嵌入式高速F1ash閃存的Cortex-M3的微控制器,操作頻率可達72 MHz。STM32F103ZET6支持I2C和USART通信,擁有多達112個快速I/O端口,所有I/O口可以映像到16個外部中斷,幾乎所有端口均可容忍5 V信號,驅動能力一般為3.3 V。該主控芯片具有多達11個定時器,2個16位帶死區控制和緊急剎車的高級定時器,能夠產生用于電機控制的PWM波。
2.2 陀螺儀MPU6050
MPU6050是全球首例9軸運動處理傳感器。它集成了3軸MEMS陀螺儀、3軸MEMS加速度計以及一個可擴展的數字運動處理器DMP(Digital Motion Processor),可用I2C接口連接一個第三方的數字傳感器,比如磁力計[3]。MPU6050對陀螺儀和加速度計分別用了3個16位的ADC,將其測量的模擬量轉化為可輸出的數字量,通過I2C協議與控制器實時發送姿態信息。
2.3 TB6612FNG模塊接口電路設計
TB6612FNG是東芝半導體公司生產的一款直流電機驅動器件,它具有大電流MOSFET-H橋結構,雙通道電路輸出,可同時驅動2個電機。TB6612每通道輸出最高1.2 A的連續驅動電流,啟動峰值電流達2 A/3.2 A(連續脈沖/單脈沖);4種電機控制模式:正轉、反轉、制動和停止;PWM支持頻率高達100 kHz;芯片內設計有低壓檢測電路與熱停機保護電路。TB6612FNG接口電路圖為圖2所示。

圖2 TB6612FNG接口電路圖Fig.2 VTB6612FNG interface circuit
2.4 帶數字編碼器的直流電機模塊
本系統采用自帶編碼器測速碼盤的直流減速電機,工作電壓為:6~24 V,額定電壓為12 V,最高轉速可達到1 000 r/min,減速比為1:30。編碼器采用448線AB相輸出,448線碼盤保證了測速精度,也就是電機轉一圈輸出448×30個脈沖。電機模塊帶有高速4腳霍爾芯片,保證輸出波形為理想的矩形波,用示波器檢測相當穩定,也可以直接接入微處理器觸發中斷,不需要對觸發信號進行任何其他處理。
3.1 總體軟件設計
軟件設計的總框圖如圖3所示。

圖3 軟件設計的總框圖Fig.3 Overall block diagram of the software design
將自平衡小車軟件設計的功能劃分為6個任務來完成,分別為:陀螺儀MPU6050的姿態檢測信息的獲取、數據的濾波和數據融合算法的實現、串口通信協議的實現、定時器1產生PWM波驅動驅動器控制電機、對編碼器負反饋的中斷處理、積分分離PID平衡算法的實現。
姿態信息是利用I2C的高速傳輸協議進行加速度和角度位置信息的傳送;為了減小誤差、提高精度,采用了卡爾曼一階濾波對數據進行處理,對多傳感器的數據利用數據融合算法進行數據融合,實現高效且精確地處理多傳感器的效果;采用主控芯片內部串口功能,實現本系統與電腦的通信;驅動電機是利用高級定時器1產生兩路PWM波驅動TB6612FNG來控制電機;在控制算法上,本系統采用的積分分離PID算法控制在經典PID算法的基礎上進行一定的優化,通過對姿態位置信息的校準,控制電機的轉速大小和方向,實現系統快速達到平衡,并維持平衡狀態。
3.2 積分分離PID控制算法
PID控制器主要由比例單元(P)、積分單元(I)和微分單元(D)組成,如公式(1):
(1)
對于傳統PID控制算法,3個調節參數對系統分別起到不同的作用和控制效果。比例系數只與偏差成正比,可迅速反應誤差,從而減小穩態偏差,但其無法消除偏差;積分控量以消除誤差;加大比例和積分系數,均會使系統出現不穩定,超調增大或者發生震蕩,通過微分控制則可以減小超調,克服振蕩,提高系統的穩定性,也加快系統的動態響應速度,縮短調整過程,改善動態性能。在一般的PID控制系統中,當開工、停工或大幅度下降給定值時,由于短時間內產生很大偏差,加上系統有滯后,常會產生嚴重的積分飽和現象,這往往造成很大的超調和長時間的振蕩[4-5]。
針對平衡小車實際運行情況,本文主要采用的是積分分離式PID控制算法[6]。積分分離式PID控制算法如式(2)所示:
(2)
上式中,β稱為邏輯系數,當|ek|≤x時,β=1,采用PID控制;當|ek|>x時,β=0;采用PD控制。對姿態檢測模塊采用的積分分離式PID控制原理如圖4(a)所示,通過陀螺儀檢測輸入角速度和角加速度數據融合后,比較誤差大小,選擇邏輯系數為1還是為0,即選用PID控制輸出或PD控制輸出給小車系統。

圖4 積分分離式PID控制原理圖Fig.4 Separate integral PID control schematic
對伺服電機驅動模塊采用的積分分離式PID控制原理圖如圖4(b)所示,通過電機驅動器輸入電壓驅動電機,測量光柵測速編碼器轉速矢量,比較干擾誤差的大小,選擇邏輯系數為1還是為0,即選用PID控制輸出或PD控制輸出控制量給直流電機。
由于本系統有姿態角度信息和速度信息兩個負反饋誤差[7],為了更好地減小誤差對本系統的影響和更進一步地優化系統的穩定性,本系統對伺服電機驅動模塊和姿態檢測模塊均采用積分分離式PID算法,積分分離式PID控制算法的程序框圖如圖5所示,給定值為Ak,測量值為Yk,計算出誤差值ek,控制器進行判斷處理,判斷是進行PD控制還是PID控制。
有時候控制系統輸入量會發生較大抖動,如果僅是采用PD算法,PD計算出來的電機控制就會大于電機可控范圍,而采用積分分離式PID則可以解決輸出不可控的情況。而且本系統采用雙積分分離式PID優化算法,很大程度上提高了對平衡小車的穩定性控制精度。
實驗條件為在平整的地面改變小車的傾角大小,通過串口通信實時接收傾角信息和時間信息。每個傾角測試50次,記錄成功平衡次數,取50次達到平衡穩定所需的時間為最終控制的時間,測試誤差帶取3%誤差帶,即本小車系統達到目標角的正負1.5°左右,視為小車系統已經達到平衡狀態。因安裝姿態檢測模塊時沒有實現完全水平,本小車系統平衡穩定時檢測的目標角為0.7°左右。

圖5 積分分離式PID控制算法的程序框圖Fig.5 Separate integral PID control algorithm block diagram
如圖6所示,該圖為小車達到平衡狀態時位置狀態信息,X為水平面的旋轉角速度,Y為垂直平面的旋轉角度,Z為豎直平面的旋轉角度。試驗測試數據如表1所示,從表中數據可以看到,采用積分分離式PID的平衡控制算法,平衡小車可以在大角度干擾下,快速地達到相對平衡狀態,且效果顯著。

圖6 串口實時顯示小車位置信息Fig.6 Serial Real-time display car location information

初始傾角/(°)10-1015-1520-2025-25平衡時間/s1.21.21.41.53.23.56.16.8成功次數/次5050504948484645成功率/%1001001009896969290
采用STM32F103和MPU6050陀螺儀設計的自平衡小車,利用積分分離式PID控制算法進行控制,小車能夠快速并穩定的保持平衡狀態,可控角度變化范圍大。該系統具有一定的抗干擾性,即在一定的干擾下也可以保持平衡。試驗結果表明本系統穩定性較好,在維持平衡狀態的情況下,還具有一定的負載能力。
[1] 鄭曉偉,陳萬米.基于DSP的兩輪自平衡小車系統的研究[J].工業控制計算機,2012,25(9):33-35.
[2] 黃亞新,耿安坤,陳樓,等.兩輪自平衡小車的PID控制[J].電子世界,2012,15(3):81-82.
[3] 丁鳳.一種新型兩輪自平衡小車的建模與控制[D].武漢:華中科技大學,2012.
[4] 鄧先智.Smith-RBF-PID控制算法在工業平縫機腳踏板調速模塊中的應用[J].西南科技大學學報,2014,29(1):65-69.
[5] 楊久紅,王小增.積分分離PID算法的電阻爐溫度控制系統[J].計算機測量與控制,2012,20(1):66-69.
[6] 湯進舉.注塑機微控制系統研究[D].浙江:浙江大學,2002.
[7] 畢效輝,于春梅.自動控制原理[M].北京:科學出版社,2008. 19-46.
Integral Separation PID Control Based on Self-balanced Car Design
JIANG Long, LUO Liang, WANG Xin
(SchoolofInformationScienceandEngineering,SouthwestUniversityofScienceandTechnology,Mianyang621010,Sichuan,China)
Based STM32F103VET6 control core chip, with accelerometer gyroscope MPU6050 constitute trolley posture detection device, with dual drive TB6612FNG drive with digital encoders DC motor a self-balanced car system was built. Integral separate PID algorithm was used to achieve a rapid and stable control of body balance. The experimental testing indicate integral separation PID algorithm can quickly and stably control the car system to reach equilibrium.
Integral separate PID; Balanced car; Attitude detection
2015-02-11
西南科技大學教改試點班“電子設計競賽大學生創新實踐班”項目資助(190004)。
蔣龍(1993—),男,本科生,專業方向為自動化。E-mail:1417700745@qq.com
TP13
A
1671-8755(2015)02-0088-05