?

自平衡兩輪電動車運動控制系統的硬件設計及實現

2016-06-08 12:00王娜孫思遠
科技視界 2016年14期
關鍵詞:卡爾曼濾波傳感器

王娜 孫思遠

【摘 要】兩輪自平衡小車是一種不穩定系統,只有通過調節兩輪的運動快慢和方向才能使其達到動態的平衡。本文基于stm32系列單片機,從硬件原理開始分析說明,闡述了控制系統的硬件設計,對陀螺儀和加速度傳感器測量實際傾角的過程和方法做了仔細分析說明,并設計了雙閉環 PID 控制器,同時對系統中涉及的濾波算法和PID控制算法做了理論分析,給出了整個系統的軟件控制流程。通過實驗表明兩輪自平衡小車基本能夠實現直立控制。

【關鍵詞】平衡控制;PID控制器;卡爾曼濾波;STM32;傳感器

0 引言

移動機器人技術是目前科學技術發展最活躍的領域之一,而兩輪自平衡小車又是移動機器人研究中的一個重要領域[1],兩輪自平衡小車系統具有本質不穩定、多變量、非線性、強耦合等特點,并且涉及到復雜的運動學、動力學系統和很多控制算法[2]。本文在對該控制理論分析的基礎上通過PID控制和卡爾曼濾波,最終實現對平衡車的系統設計。

1 自平衡兩輪電動車的運動控制原理

由于該模型是單軸雙輪,所以在車體與豎直方向產生傾角的時候,小車就會在車體重力沿水平方向的分力作用下運動而不能保持靜止,但是我們可以通過電機控制兩個輪子的轉速和轉向,從而使其抵消其傾斜的趨勢,這樣便可以使兩輪小車保持自平衡。[3]

兩輪自平衡小車的總體控制原理如圖1所示。整個系統的核心是STM32F103C8T6單片機,該系統主要由運動處理傳感器、電機驅動、電源管理電路、串口通信、直流無刷電機和磁電編碼器組成。MPU6050內部集成陀螺儀和加速度計,分別用于測量角速度和角加速度,并將采集到的數據存放到FIFO寄存器,通過I2C協議傳輸給單片機后進行卡爾曼濾波,就可以得到正確的傾角。而電機的轉速則是由磁電編碼器返回到單片機并計算出一定時間內的計數來判斷車速的大小和方向。電機驅動則選用TB6612FNG來控制兩個直流電機的正轉、反轉、制動和調速功能。串口通信主要是進行程序的燒寫。電源模塊的主要作用是提供各電路工作所需的電源。

2 系統的硬件設計及實現

2.1 單片機選型

主控芯片采用STM32F103C8T6單片機,它作為一種高性能、低成本、低功耗的ARM Cortex-3內核單片機,比傳統的51單片機應用更加廣泛,體積更加小巧。最高時鐘頻率可達72MHz,而工作電壓只有3.3V,它的外設包括10個定時器、4路PWM、兩個12位模數轉換器、兩個12位數模轉換器、兩個I2C接口、五個USART接口和三個SPI端口。新產品外設共有12條DMA通道,可以用ARM內核的Keil工具進行編程。

2.2 系統電源的設計

本系統的電源共涉及三個電壓值,分別為12V、5V、3.3V。12V用于驅動電機,3.3V作為單片機和傳感器的邏輯電平,5V則作為驅動電機的電平,而且在供電設計時的壓降也不宜過大,否則容易使芯片發熱量過大。利用軟包電池組或者其他電池作為12V直流電源,先通過LM2596穩壓芯片將12V轉換為5V,再通過AMS1117-3.3將5V轉換為3.3V電源。其應用方式均可在相應芯片資料中得到。

2.3 測速系統的設計

測速設計采用的是AB相增量式霍爾編碼器,其原理是采用磁阻或者霍爾元件對變化的磁性材料的角度或者位移值進行測量,磁性材料角度或者位移的變化會引起一定電阻或者電壓的變化,通過放大電路對變化量進行放大,通過單片機處理后輸出脈沖信號或者模擬量信號,達到測量的目的。

其核心代碼如下:

Encoder_TIM= (short)TIM2 -> CNT; TIM2 -> CNT=0;

通過一段時間內計數器的計數個數來判斷速度大小,其具體速度值還需要進一步處理。

2.4 電機控制芯片選型

電機控制采用芯片TB6612FNG,它有6路輸入8路輸出,可控制兩個直流電機,邏輯電平輸入為5V,驅動電壓為12V。每四個輸出控制一個電機,每三個輸入都可以實現一組電機的正轉、反轉、制動。而速度的調節則由單片機的計時器提供的PWM波實現。

3 車身傾角的獲取

3.1 運動處理傳感器的選取和編碼

對于車身傾角的獲取采用MPU6050運動處理傳感器,它內部包含GYRO(陀螺儀)用于采集角速度和ACCEL(加速度計)用于采集加速度,由于陀螺儀的溫漂還集成了溫度傳感器。采集后的數據存入FIFO寄存器,可以輸出6軸旋轉矩陣,分別對應xyz軸的角度和角加速度。其并不需要AD轉換的步驟,而是利用I2C同步通訊與單片機傳輸數據,提高了系統運行效率。

其采集數據的核心代碼為:

MPU6050_FIFO[i][j-1]=MPU6050_FIFO[i][j];

該數組表示對第i個軸上的第j-1個數據進行更新,通過循環即可得到一段時間內的i*j的矩陣。為了減小噪聲干擾,可以取多組數據平均值即為該時刻的運動狀態。

3.2 傳感器數據的處理

在傳感器采集到數據后,就會通過I2C傳輸給單片機進行下一步處理,此時就可以得到FIFO寄存器中的數據。加速度計可以測量動態和靜態的線性加速度,則加速度計輸出的加速度與車身傾角的關系為:

?茲=tan-1(Ax/Ay)

其中Ax為x軸方向上的加速度,Ay為y軸方向上的加速度。在C程序中可以用math.h里面的函數計算,其代碼為:

angle_Y=atan2(Accel_X,Accel_Z)*180/PI;

根據小車模型及焊接方向即可確定傾角的旋轉軸,此處以y軸為例,為了計算簡便最好在設計之初確定好MPU6050的軸向。

陀螺儀的直接輸出值是相對靈敏軸的角速率,角速率對時間積分即可得到圍繞靈敏軸旋轉過的角度值,在C程序中利用累加即可完成。

4 整體的控制流程

首先對整個電路的工作方式進行設置,包括系統時鐘初始化、中斷初始化、ADC初始化、傳感器初始化等。然后傳感器開始工作,采集到的加速度經過公式轉換為角度值,而角速度經過積分得到角度或者直接進行濾波,這里采用互補濾波。

其中Ti表示積分時間常數;Td表示微分時間常數。經過濾波后的角度值為PD控制,而對編碼器返回的速度值為PI控制,最后輸出的增量值賦值給相應寄存器來調節PWM占空比,最后驅動電機轉動,使小車達到平衡。

5 結論

實際試驗表明我們的設計基本實現了控制小車防傾倒和行動的目的,對濾波算法和PID算法進行了說明,同時降低了硬件成本和能耗。我們將會在此基礎上做更進一步的深入研究,相信未來兩輪自平衡車技術也將會得到更大的發展。

【參考文獻】

[1]徐國華,譚民.移動機器人的發展現狀及其趨勢[J].機器人技術與應用,2001,14(3):7-14.

[2]鄭曉偉,陳萬米.基于DSP的兩輪自平衡小車系統的研究[J].工業控制計算機,2012,25(9):33-35.

[3]楊亞龍,劉金棟,孫玉環,丁婷.基于 STC12C5410AD 單片機的兩輪自平衡小車的系統設計[J].電子設計工程,2013,10(20):162-164.

[4]張洋,劉軍,嚴漢宇.原子教你玩STM32(庫函數版)[M].北京:北京航天航空大學出版社,2013.

[5]李寧.ARM MCU開發工具MDK使用入門[M].北京:北京航天航空大學出版社,2012.

[6]歐陽駿,李英芬,王小強,等.瘋狂STM32實戰講學錄[M].北京:中國水利水電出版社,2013.

[7]陳海宴.51單片機原理及應用——基于Keil C與Proteus(第2版)[M].北京:北京航天航空大學出版社,2010.

[8]何欽銘,顏暉.C語言程序設計[M].北京:高等教育出版社,2012.

[責任編輯:王偉平]

猜你喜歡
卡爾曼濾波傳感器
康奈爾大學制造出可拉伸傳感器
簡述傳感器在物聯網中的應用
“傳感器新聞”會帶來什么
跟蹤導練(三)2
基于遞推更新卡爾曼濾波的磁偶極子目標跟蹤
基于模糊卡爾曼濾波算法的動力電池SOC估計
基于擴展卡爾曼濾波的PMSM無位置傳感器控制
基于自適應卡爾曼濾波的新船舶試航系統
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合