伍懿君
河源理工學校 廣東 河源 517000
有關(guān)法律、法規(guī)要求汽車不得在人行道、廣場、公園、游樂場和大型會場等類似的場所上行駛,而步行又累時,平衡車可以為人代步。平衡車功能豐富,其主要控制功能包括:對平衡和速度的控制、轉(zhuǎn)彎、前進及后退等。而其控制部分的核心僅為兩個驅(qū)動電機,控制上述所有功能。因此,控制軟件部分的設計非常關(guān)鍵。本文的主要工作是提供了一種平衡車控制部分的軟件設計方案,具有對平衡車進行轉(zhuǎn)彎、前進及后退等功能控制的功能。在軟件的實現(xiàn)上,本軟件根據(jù)駕駛員身體重心改變造成的俯仰方向變化,首先利用控制算法對控制值進行計算,然后控制驅(qū)動電機驅(qū)動平衡車完成相應動作。
本文所設計的軟件整體設計流程圖如圖1所示。
圖1 軟件整體設計流程圖
本文主要介紹平衡小車加速度檢查程序,平衡 PID 控制程序的實現(xiàn)。
設計中把MPU60505模塊采集的X軸,Y軸,Z軸空間坐標采集的數(shù)據(jù)進行清零;此參數(shù)初始化操作,目的是避免數(shù)據(jù)干擾,保證系統(tǒng)能可靠運行[1]。進入MPU6050模塊加速度的采集,通過判斷X軸,Y軸,Z軸空間發(fā)生的變化,實現(xiàn)控制小車電機的運行。傳感器輸出電壓中的 模數(shù)轉(zhuǎn)換經(jīng)由模塊自帶的 ATD 模塊進行。此外,還需要對加速度計和陀螺儀的輸出進行監(jiān)測和轉(zhuǎn)換,進而確定陀螺儀檢測的角速度以及加速度計檢測的角度保障MPU60505模塊在X、Y、Z軸的數(shù)據(jù)等于0、0、0,在一條水平線上,實現(xiàn)平衡。
主函數(shù)程序定義如下:
PID控制器由積分單元(I)、比例單元(P)及微分單元(d)組成,其輸入為兩輪平衡車身在重力方向上的傾角e(T),輸出U(T)為電機控制,采用直流電機,調(diào)速方式為電壓調(diào)節(jié)。實際應用中的路面不是理想的光滑條件,輪子與地面之間存在靜摩擦。當控制占空比很小時,電機電樞通電,然而由于靜摩擦的作用,轉(zhuǎn)子相對不轉(zhuǎn)動[2]。因此,考慮到實際路面情況,有必要增加一個死區(qū)時間常數(shù),用以控制平衡車的運動,以提高系統(tǒng)的靜態(tài)穩(wěn)定性。
平衡是兩輪平衡車的基礎功能,實際應用中還需要有左右轉(zhuǎn)彎、前進及后退等動作。在這些工作過程中,會出現(xiàn)車體與駕駛員重心方向不在同一垂直線上的情況,控制器根據(jù)重心變化做出相應的控制。以前進運動為例,車體重心向前傾斜,傾角發(fā)生變化,控制器控制電機轉(zhuǎn)動,使轎廂向傾斜方向移動,慣性力和重力分量被轎廂加速度抵消,使小車平衡前進。這個原理用來控制小車的前進和后退。在速度控制方面,為了可靠快速地控制車速,系統(tǒng)以編碼器作為車速反饋環(huán)節(jié),形成了車速控制閉環(huán)[3]。速度控制也是由PID控制器完成,以車速偏差作為控制器的輸入,其輸出為傾角,以控制車速。而速度控制和平衡控制是對立的,平衡車的基本要求是要有良好的平衡控制,速度控制會對平衡控制造成干擾,為了盡可能減少此類干擾,速度控制應盡量做到平滑。在本文設計的系統(tǒng)中,平衡控制周期為8ms,系統(tǒng)的速度控制周期設定為46ms,相對于平衡控制周期更長、更平滑,以最小化速度控制對平衡控制的干擾并保證一定的速度控制。為防止系統(tǒng)因調(diào)節(jié)過于頻繁而產(chǎn)生振蕩,采用了帶死區(qū)時間的PID算法。PID 控制程序如下:
程序流程如圖2所示:
圖2 程序流程
本文的主要工作是提供了一種平衡車控制部分的軟件設計方案,具有對平衡車進行轉(zhuǎn)彎、前進及后退等功能控制的功能。本設計開發(fā)使用C語言進行代碼編程,此編程工具為Arduino IDE軟件,軟件設計采用模塊化,能夠?qū)υO計的邏輯更加清楚明了,方便調(diào)試。同時,Arduino IDE軟件是方便易用的集成開發(fā)環(huán)境和調(diào)試工具,可以快速高效地進行一系列的開發(fā)。