聶茹
(華南理工大學(xué)廣州學(xué)院 電子信息工程學(xué)院, 廣東 廣州 510800)
當(dāng)今社會,生活向著智能化、便捷化發(fā)展,兩輪平衡車順應(yīng)時代潮流,成為適合多種場合使用的代步工具。兩輪平衡車具有輕便、節(jié)能環(huán)保、高效、能耗低等特點(diǎn),因此非常適合在空間狹窄、急轉(zhuǎn)角度大的工作場合作業(yè)。兩輪平衡車已經(jīng)是國內(nèi)外學(xué)者的熱門研究對象[1-2]。兩輪自平衡車系統(tǒng)集合電路設(shè)計、單片機(jī)、軟件算法編程、自動控制理論等多門學(xué)科的知識,是研究控制算法和傳感器測試的實(shí)驗平臺[3]。因此,對平衡車的控制難度大,控制算法復(fù)雜,對平衡車的研究具有理論研究意義和工程實(shí)踐價值。本文在STM32F103-C8T6微控制器和MPU6050芯片的基礎(chǔ)上,設(shè)計和實(shí)現(xiàn)兩輪自平衡車系統(tǒng)。
兩輪平衡車硬件系統(tǒng)主要由以下四部分組成:中央控制單元STM32單片機(jī)、姿態(tài)傳感器MPU6050、直流電機(jī)和H全橋電機(jī)驅(qū)動器。系統(tǒng)總體方案設(shè)計圖,如圖1所示。
系統(tǒng)通過卡爾曼濾波算法對陀螺儀和加速度計數(shù)據(jù)進(jìn)行融合,通過計算得到車身姿態(tài)傾角、角速度的最優(yōu)估計值。
圖1 系統(tǒng)總體方案設(shè)計圖
車身速度、最優(yōu)姿態(tài)角兩個信號將作為反饋量反饋回雙閉環(huán)控制系統(tǒng),從而產(chǎn)生兩路PWM波驅(qū)動電機(jī)前后轉(zhuǎn)動,維持車身的平衡與直立。硬件部分的工作主要分為以下幾個部分。
(1) 主控制器電路。根據(jù)平衡車系統(tǒng)的要求,選用基于ARM Cortex-M 內(nèi)核的STM32F103C8T6芯片作為主控制器。該芯片具有處理速度快、功率損耗低等優(yōu)點(diǎn),適合于雙輪自平衡車系統(tǒng)測量狀態(tài)多、實(shí)時性要求強(qiáng)和擴(kuò)展功能多等控制要求。
(2) 姿態(tài)傳感器電路。選用MPU6050作為傳感器芯片,芯片集成三軸加速度計和三軸陀螺儀。該芯片體積小、功耗低、精度高,與主控制器芯片能夠良好的通信以及傳輸數(shù)據(jù)。
(3) 電機(jī)驅(qū)動電路。通過大功率TB6612芯片的“H”橋電路,驅(qū)動直流電機(jī),實(shí)現(xiàn)調(diào)速控制。
(4) 電源電路。采用12 V鋰電池作為電力來源,電路中的傳感器和控制芯片等都是3.3 V供電,所以選擇通過二級降壓的方法,把12 V電壓通過開關(guān)電源降到5 V,然后再降到3.3 V,為傳感器和控制芯片供電。
本系統(tǒng)包括以STM32F103C8T6為核心的控制電路、復(fù)位電路和晶振電路,同時加入SWD接口和用戶指示燈能夠方便程序的調(diào)試。STM32F103C8T6芯片是由2.0 V-3.6 V的直流電壓供電[4],ARM32位內(nèi)核架構(gòu)。主控電路的時鐘電路采用8 MHz外部晶振作為時鐘源,還包含32.768 KHz的RTC時鐘,可以方便拓展電路。主控芯片采用低電平復(fù)位,當(dāng)主控芯片的復(fù)位引腳NRST按下時,引腳接地,芯片復(fù)位。為了簡化接口電路,采用SWD下載調(diào)試模式,SWD只需兩個IO口即可實(shí)現(xiàn)在線仿真調(diào)試。3.3 V的用戶指示燈用來指示電源狀態(tài),可以通過觀察LED指示燈狀態(tài),清楚判別核心板上電是否正常,從而防止芯片燒毀。
小車系統(tǒng)共使用兩種電壓,5 V和3.3 V,具體設(shè)計圖,如圖2—圖4所示。
圖2 5 V傳感器供電電路圖
圖3 主控CPU供電電路圖
圖4 3.3 V傳感器供電電路圖
電源部分采用12 V鋰電池作為輸入,分三路穩(wěn)壓,其中7805芯片為5 V傳感器供電,并為后級AMS1117芯片提供電源輸入端。AMS1117是一個正向低壓降穩(wěn)壓器,內(nèi)部集成過熱保護(hù)、限流電路,工作溫度范圍為-40 ℃—125 ℃。AMS117芯片有兩個電壓輸出版本,固定輸出版本和可調(diào)版本,本系統(tǒng)設(shè)計使用的是固定輸出的3.3 V版本。因此,5 V電壓經(jīng)過AMS117芯片得到3.3 V的電壓單獨(dú)給主控CPU供電,另外一路經(jīng)過AMS117芯片得到的3.3 V給傳感器、電機(jī)驅(qū)動芯片供電。
系統(tǒng)選用信濃公司42 mm的步進(jìn)電機(jī),該電機(jī)的步距角為1.8°,選用東芝半導(dǎo)體公司生產(chǎn)的TB6612直流電機(jī)驅(qū)動芯片驅(qū)動電機(jī)。TB6612具有大電流MOSFET-H橋結(jié)構(gòu),雙通道電路輸出,因此可以同時驅(qū)動兩個電機(jī)[5]。TB6612的外圍電路簡單,只要外接電源濾波電容即可驅(qū)動電機(jī)。電機(jī)驅(qū)動電路,如圖5所示。
圖5 電機(jī)驅(qū)動電路圖
通過控制AIN1、AIN2、PWMA便可以控制電機(jī)的轉(zhuǎn)動。
姿態(tài)傳感電路包括MPU6050供電電路和濾波電路。MPU6050是一個六軸傳感器芯片,集成有三軸加速度計,三軸陀螺儀體積小、成本和功耗低、精度高[6]。本設(shè)計方案中MPU6050與主控制芯片之間使用IIC協(xié)議交互通信、傳輸數(shù)據(jù)[7]。MPU6050姿態(tài)傳感電路,如圖6所示。
圖6 MPU6050姿態(tài)傳感電路圖
對于平衡車系統(tǒng)來說,顯示電路是需要的,可以顯示車體傾角、當(dāng)前運(yùn)行速度和電池電量等信息,給駕駛?cè)酥庇^的車體狀態(tài)當(dāng)前信息,將極大的方便駕駛和維護(hù)方面的工作。設(shè)計中采用1.3寸OLED顯示屏,集成有SSH1106驅(qū)動芯片,具有8 位并行數(shù)據(jù)接口,可直接與8位微處理器相連[8]。液晶顯示電路圖,如圖7所示。
圖7 液晶顯示電路圖
本系統(tǒng)軟件設(shè)計部分基于STM32單片機(jī)硬件平臺,主要實(shí)現(xiàn)兩輪自平衡車的直立平衡與簡單行走,軟件編程語言使用C語言,C語言簡單、可讀性強(qiáng)、容易修改。
該系統(tǒng)的軟件流程圖,如圖8所示。
圖8 軟件流程圖
為了保證穩(wěn)定的控制周期,這里用了一個15 m/s的定時中斷,確保穩(wěn)定的控制周期。系統(tǒng)上電后,首先初始化各個功能模塊和外設(shè)等,初始化中,為了防止初始過程中模塊的寫寄存器被中斷打斷,所以在為各個模塊、外設(shè)等初始化前,要先關(guān)閉控制器的所有中斷,之后開始對控制器內(nèi)部的各個模塊和外設(shè)進(jìn)行初始化,一切就緒后,開始進(jìn)行15 m/s的定時中斷,結(jié)束初始化的過程。每經(jīng)過15 m/s會自動跳轉(zhuǎn)到定時中斷函數(shù)里,進(jìn)入中斷函數(shù)后,首先讀取MPU6050傳感器的數(shù)據(jù),獲得數(shù)據(jù)后主控芯片將計算出車體的傾斜角度、角速度等姿態(tài)數(shù)據(jù),再進(jìn)行卡爾曼濾波得到精確的數(shù)值,根據(jù)精確的姿態(tài)數(shù)據(jù)輸出合適的PWM信號從而控制電機(jī)的轉(zhuǎn)動,保持車體的直立平衡、簡單的直立行走。
姿態(tài)傳感檢測是兩輪自平衡車系統(tǒng)的直立平衡中很重要的,因為系統(tǒng)是一個動態(tài)并且非線性的系統(tǒng),需要不斷地采集姿態(tài)的相關(guān)信息,及時調(diào)整姿態(tài)維持平衡。因此,系統(tǒng)選擇MPU6050首先得到車體的傾斜角、角速度,再進(jìn)行卡爾曼濾波融合得到更精確的信息。
卡爾曼濾波算法用在機(jī)器人智能控制、衛(wèi)星導(dǎo)航和計算機(jī)圖像處理領(lǐng)域中,MPU6050姿態(tài)傳感器的陀螺儀測得的角速度通過數(shù)學(xué)積分運(yùn)算得到的角度,總是會存在微小的偏差和漂移變化所造成的累積誤差,并且誤差會隨時間的增加逐漸增大,到最后無法輸出正確并且可以控制的角度信號,而使用卡爾曼濾波算法融合得到的角度值則非常穩(wěn)定??柭鼮V波算法的作用是根據(jù)上一次狀態(tài)預(yù)測出當(dāng)前狀態(tài),再與實(shí)際測得的狀態(tài)進(jìn)行比較,從而修正預(yù)估的當(dāng)前的狀態(tài)??柭鼮V波的使用,能夠有效防止噪點(diǎn)的出現(xiàn),并將數(shù)據(jù)進(jìn)行融合,從而糾正實(shí)際測量得到的曲線[9-10]。
當(dāng)雙輪平衡車車體傾斜時,系統(tǒng)采用PID算法進(jìn)行控制,通過對車體角度、車體角速度、車體速度和車體位置等數(shù)據(jù)進(jìn)行融合,輸出PWM信號驅(qū)動電機(jī),從而能夠保持車體的平衡。角度與角速度數(shù)據(jù)融合及輸出控制結(jié)構(gòu)框圖,如圖9所示。
圖9 角度與角速度數(shù)據(jù)融合及輸出控制框圖
其中,Kd,Kp,Ksp,Kis是PID控制器的相關(guān)參數(shù)。
根據(jù)MPU6050姿態(tài)傳感器的擺放位置,將陀螺儀的x軸的數(shù)據(jù)作為角速度進(jìn)行計算,加速度計的y軸的數(shù)據(jù)作為角度進(jìn)行計算。主控制器單片機(jī)分別讀取MPU6050陀螺儀的角速度值Gyro_x和加速度計的角度值A(chǔ)ccle_y,將得到MPU6050傳感器的10組數(shù)據(jù),如表1所示。
表1 角速度、角度零點(diǎn)偏移
對10組數(shù)據(jù)進(jìn)行平均值計算得到角速度、角度的零點(diǎn)偏移值大約是8LSB、1 100LSB。
以上10組數(shù)據(jù)可以通過轉(zhuǎn)換成實(shí)際的角速度、角度,如式(1)和式(2)。
Gyro_x=(Gyro_x-8)/16.4
(1)
(2)
本文提出了兩輪自平衡車系統(tǒng)的一種設(shè)計方案,并設(shè)計了以STM32F103C8T6為核心的系統(tǒng)硬件電路和以PID控制器為核心的軟件算法,成功組裝成樣機(jī)。樣機(jī)經(jīng)過多次測試,具有穩(wěn)定、實(shí)時的角度和角速度信號,能夠保持車體自我平衡以及簡單的直立行走,因此,該系統(tǒng)具有較大的研究價值和實(shí)用意義。