附件里面含有基于STM32F103RCT6的平衡小車設(shè)計資料,供大家學(xué)習(xí)交流
完整的Word格式文檔51黑下載地址:
平衡小車.rar
(14.29 MB, 下載次數(shù): 49)
2018-9-27 17:19 上傳
點擊文件名下載附件
通過基于32位單片機的兩輪車平衡系統(tǒng)大型實驗,使學(xué)生能綜合應(yīng)用“微機原理”、“計算機控制技術(shù)”、“單片機的原理及應(yīng)用”,“電子技術(shù)”以及“自動控制理論”等課程的基礎(chǔ)知識。初步掌握單片機控制系統(tǒng)的硬件設(shè)計、控制器算法設(shè)計及應(yīng)用程序設(shè)計,以及硬軟件調(diào)試和控制系統(tǒng)調(diào)試。為畢業(yè)設(shè)計及今后計算機控制系統(tǒng)設(shè)計開發(fā)打下良好基礎(chǔ)。 設(shè)計基于單片機的兩輪平衡車控制器,用于控制兩輪小車的直立平衡,具體要求如下 : - 控制兩輪平衡車保持動態(tài)站立平衡
- 傾角≤15°時具有良好的抗干擾性
3、與上位機進行通信,通過上位機實現(xiàn)動態(tài)調(diào)參和姿態(tài)數(shù)據(jù)的傳輸,將姿態(tài)數(shù)據(jù)繪制成曲線。 - TM4C1294單片機或STM32單片機
- 兩輪車
- 外圍檢測、驅(qū)動模塊等
- 微型電子計算機
系統(tǒng)包括上位機(臺式電腦)和下位機(單片機兩輪平衡車控制系統(tǒng))兩部分。上位機用于顯示小車的實時姿態(tài)及傳送控制參數(shù)和指令給下位機。下位機由控制器模塊、傳感器模塊、顯示模塊、電機驅(qū)動模塊、藍牙串口模塊等組成,硬件組成框圖如下圖。  圖1 兩輪平衡車系統(tǒng)硬件組成 控制器采用TM4C1294或STM32單片機,陀螺儀及加速度計采用MPU-6050三軸運動處理傳感器,電機編碼器采用AB相光電編碼器,顯示模塊采用OLED液晶顯示屏,電機驅(qū)動模塊采用L298N電機驅(qū)動器,藍牙模塊采用HC-05模塊。在控制過程中,陀螺儀及加速度計測量小車的姿態(tài)信息,編碼器測量小車的速度信息,控制器根據(jù)控制算法計算出相應(yīng)的脈寬調(diào)制PWM信號,通過控制直流電機的轉(zhuǎn)矩來保持平衡,同時通過藍牙模塊將小車的實時狀態(tài)信息傳送至上位機并可接受上位傳送的指令。 2.主要模塊硬件電路 (1)單片機最小系統(tǒng) a)基于TM4C1294單片機 選用TM4C1294核心板,TM4C1294 微處理器是Cortex-M4 系列單片機中一種,并采用TI的核心板,如圖2。核心板將芯片端口信號引致插針,方便實驗選取連接。實驗系統(tǒng)引腳連接圖如圖3。 圖2 TM4C1294核心板 圖3 TM4C1294最小系統(tǒng)電路圖 b)基于STM32單片機 控制器采用STM32F103RCT6單片機,該控制器是一種基于 Cortex M3 內(nèi)核的高性能 MCU,運行時鐘最高為 72 MHz,運算速度高達 1. 25 DMIPS/MHz,片上64 kB Flash ROM、20 kB RAM,內(nèi)含 7個定時器,可輸出多路 PWM 信號又可配置成增量型編碼器接口 ,尤其適合于車輪測速傳感器輸出的 AB 相脈沖信號的處理。核心板實物如圖4,實驗系統(tǒng)電路連線如圖5。 圖4 STM32核心板 圖5 STM32F103RCT6最小系統(tǒng)電路圖 (2)系統(tǒng)電源 選用智能小車專用12V鋰電池為系統(tǒng)供電,該電池參數(shù):11.1V/ 3000mAh/ 5C。電池輸出端接至電機驅(qū)動模塊L298N,為其提供工作電壓,并利用該模塊中5V穩(wěn)壓電路輸出的+5V電壓為其它的模塊供電,將L298N模塊的+5V輸出連到單片機最小系統(tǒng)板,經(jīng)最小系統(tǒng)板的3.3V穩(wěn)壓電路輸出3.3V,供傳感模塊、藍牙模塊、顯示模塊等其它模塊電路供電。
圖6 系統(tǒng)供電框圖 (3)傳感器模塊 選擇MPU6050模塊作為小車姿態(tài)檢測。該模塊采用InvenSense公司的 MPU6050 芯片作為核心,該芯片內(nèi)部整合了 3 軸陀螺儀和 3 軸加速度傳感器,并可利用自帶的數(shù)字運動處理器(DMP: Digital Motion Processor)硬件加速引擎,通過主 IIC 接口,向應(yīng)用端輸出姿態(tài)解算后的數(shù)據(jù)。有了DMP,我們可以使用 InvenSense 公司提供的運動處理資料庫,非常方便的實現(xiàn)姿態(tài)解算,降低了運動處理運算對操作系統(tǒng)的負荷,同時大大降低了開發(fā)難度。MPU6050模塊實物如圖7,MPU6050模塊電路如圖8。 圖7 MPU6050模塊實物圖 圖8 MPU6050模塊測量電路圖 從圖8可以看出,模塊自帶了3.3V超低壓差穩(wěn)壓芯片,給MPU6050供電,因此外部供電可以選擇:3.3V/ 5V都可以。模塊通過P1排針與外部連接,引出了 VCC、GND、IIC_SDA、IIC_SCL、MPU_INT 和 MPU_AD0 等信號,其中,IIC_SDA 和 IIC_SCL 帶了 4.7K上拉電阻,外部可以不用再加上拉電阻了,另外MPU_AD0 自帶了10K下拉電阻,當(dāng)AD0懸空時,默認IIC 地址為(0X68)。各引腳的詳細描述如表1所示。 表1 MPU6050 六軸傳感器模塊引腳說明 
(4)電機驅(qū)動模塊 實驗系統(tǒng)采用L298N驅(qū)動模塊,L298N是ST公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動芯片。該芯片采用15腳封裝。主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;額定功率25W。內(nèi)含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電動機和步進電動機、繼電器線圈等感性負載;采用標(biāo)準(zhǔn)邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作。使用L298N芯片可以驅(qū)動兩臺直流電機。功率部分的供電電壓范圍是2.5-48V,邏輯部分5V供電。一般情況下,功率部分的電壓應(yīng)大于6V否則芯片可能不能正常工作。L298N驅(qū)動模塊實物如圖9。模塊電路如圖10。 圖9 L298N驅(qū)動模塊實物 圖10 L298N驅(qū)動模塊電路圖 如圖模塊內(nèi)部含7805穩(wěn)壓芯片,供L298N的Vss邏輯電壓+5V,IN1~IN4分別為電機1和2的邏輯控制端, IN1~IN4接至單片機,由單片機控制,經(jīng)L298N后輸出兩路電機控制電壓,OUT1、OUT2和OUT3、OUT4。 表2 L298N邏輯功能表
In3,In4的邏輯圖與表2相同。由表2可知當(dāng)ENA為高電平,輸入電平為一高一低,電機正或反轉(zhuǎn)。同為低或高電平電機剎停。其中IN1、IN2控制電機M1;IN3、IN4控制電機M2。調(diào)速就是改變高電平的占空比。 (5)速度檢測電路 使用的是固定在電機軸上的霍爾編碼器。霍爾編碼器是一種通過磁電轉(zhuǎn)換將輸出軸上的機械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器;魻柧幋a器是由霍爾碼盤和霍爾元件組成;魻柎a盤是在一定直徑的圓板上等分地布置有不同的磁極。霍爾碼盤與電動機同軸,電動機旋轉(zhuǎn)時,霍爾元件檢測輸出若干脈沖信號,為判斷轉(zhuǎn)向,一般輸出兩組存在一定相位差的方波信號。 
圖11 霍爾編碼器工作原理示意圖 實際使用的小車上是一款增量式輸出的霍爾編碼器。編碼器有 AB 相輸出,所以不僅可以測速,還可以辨別轉(zhuǎn)向。根據(jù)下圖的接線說明可以看到,我們只需給編碼器電源5V 供電,在電機轉(zhuǎn)動的時候即可通過 AB 相輸出方波信號。編碼器自帶了上拉電阻,所以無需外部上拉,可以直接連接到單片機 IO 讀取。在實驗系統(tǒng)中,只檢測了一路脈沖信號,通過它的頻率測量得到電機的轉(zhuǎn)速。 
圖12 霍爾編碼器實物圖 (6)OLED顯示模塊 顯示模塊用于顯示系統(tǒng)角度、PID參數(shù)等信息,采用0.96 寸 OLED 顯示屏,分辨率為 128*64, 多種接口方式:IIC 接口方式。共四根引出線:1. GND 電源地;2. VCC 電源正(3~5.5V);3. SCL OLED 的 D0 腳,在 IIC 通信中為時鐘管腳;4. SDA OLED 的 D1 腳,在 IIC 通信中為數(shù)據(jù)管腳。模塊實物圖如圖13。 
圖13 OLED顯示模塊實物圖 五、系統(tǒng)軟件設(shè)計 1. 控制原理 (1)直立控制 兩輪小車平衡控制是通過負反饋來實現(xiàn)的,控制器算法采用PD控制,維持小車在直立位置保持平衡。直立控制控制原理框圖如圖14。  (2)速度控制 實驗要求小車的控制目標(biāo)是直立平衡,并不要求行駛,似乎不需要速度控制,但是實際上小車的平衡是動態(tài)的平衡,在調(diào)整姿態(tài)的同時會產(chǎn)生位移,因此加上速度控制環(huán),有利于小車的平衡和抗擾動。速度控制原理框圖如圖15。 
圖15 兩輪車控制原理框圖 2. 陀螺儀漂移和加速度傳感器數(shù)據(jù)的預(yù)處理 車體傾角測量由陀螺儀和加速度傳感器實現(xiàn),單獨使用陀螺儀或加速度傳感器都無法完成傾角的測量。由于陀螺儀低頻漂移的影響,積分后低頻擾動會產(chǎn)生較大誤差;加速度計解算的姿態(tài)角會受到平衡車運行中機體高頻振動的影響, 輸出角度中攜帶較大分量的高頻干擾。 二者在頻域上具有互補特性,采用互補濾波器對這兩種傳感器數(shù)據(jù)融合,可提高姿態(tài)角度測量的精度和動態(tài)響應(yīng)的性能。偏移角度數(shù)字融合濾波算法模型如圖15所示。其數(shù)字形式為 
為第n次濾波后的角度; 為第n-1次濾波后的角度;a為高通濾波系數(shù); 為陀螺儀的角速度值;dt為采樣時間;b為低通濾波系數(shù); 為加速度計的值。其中a,b滿足a+b=1。

圖16 數(shù)字融合濾波算法模型 3. 軟件流程圖 兩輪平衡小車軟件設(shè)計包括主程序設(shè)計和各個模塊的子程序設(shè)計。實現(xiàn)了如下功能:1)控制功能:通過傳感器測量小車的偏移角度、角速度、運行速度來進行PID運算,實現(xiàn)小車的動態(tài)平衡;2)人機接口:包括兩個按鍵KEY0、KEY1,串口模塊和顯示模塊,其中KEY1按下小車停止控制,KEY0按下小車正常工作(這部分功能只在STM32系統(tǒng)上實現(xiàn));串口模塊實現(xiàn)實時姿態(tài)數(shù)據(jù)的傳輸和控制指令的發(fā)送,顯示模塊實時顯示小車的姿態(tài)數(shù)據(jù)。 (1)主程序 程序控制周期為10ms,在這10ms內(nèi)完成姿態(tài)數(shù)據(jù)的測量以及顯示,主程序流程圖如圖3所示。 
圖17 主程序流程圖 (2)角度測量子程序 小車的偏移角度、角速度通過加速度計和陀螺儀測量。采用MPU6050芯片,角速度值用陀螺儀直接進行測量,角度值采用加速度計和陀螺儀進行數(shù)字互補濾波后讀取。程序框圖如圖18。 MPU6050與單片機的通信采用IIC通信協(xié)議。其器件地址和寄存器地址及配置如下所述。 器件地址:0xD0 電源管理寄存器地址:0x6C 典型值:0x00 陀螺儀配置寄存器地址:0x1B 典型值:0x18 陀螺儀采樣分頻寄存器地址:0x19 典型值:0x07 加速度計配置寄存器地址:0x1C 典型值:0x01 配置寄存器地址:0x1A 典型值:0x06 陀螺儀x軸數(shù)據(jù)地址(高位在前,低位在后):0x43,0x44 y軸地址:0x45,0x46 Z軸地址:0x47,0x48 加速度計x軸數(shù)據(jù)地址(高位在前,低位在后):0x3B,0x3C Y軸地址:0x3D,0x3E Z軸地址:0x3F,0x40   (3)速度測量子程序 小車的速度測量采用光電編碼器來測量,通過10ms內(nèi)脈沖的數(shù)量來反映小車的運行速度。速度測量可選取定時器設(shè)置為編碼器模式,首先讀取定時器當(dāng)前計數(shù)值,延時10ms后再次讀取,通過兩次讀取的差值來計算小車的運行速度。其具體程序流程圖如圖19所示。 (4)PID控制算法 由于機械器件的約束和積分作用,實際控制過程中會出現(xiàn)積分飽和,導(dǎo)致偏移角度超調(diào)量較大,極易使小車失控。故對小車速度環(huán)的控制算法進行改進,采用遇限削弱積分法改進后的算法流程圖如圖20所示。

(5)人機接口程序 人機接口軟件設(shè)計主要包括OLED顯示器,按鍵,串口模塊與上位機通信軟件的設(shè)計。按鍵控制小車的控制通斷,KEY1鍵按下后小車停止控制,電機停轉(zhuǎn);KEY0鍵按下后小車正常運行。顯示輸出子程序在每次控制后將小車的姿態(tài)信息通過藍牙傳送給上位機。 與上位機通信的子程序根據(jù)上位機的數(shù)據(jù)格式進行數(shù)據(jù)傳輸,采用USART2串口與藍牙HC-05連接,推薦的通信參數(shù)為波特率:9600,數(shù)據(jù)位:8,校驗位:0,停止位:1。數(shù)據(jù)的格式如下所述。其每個數(shù)據(jù)為float型,先將每個float型數(shù)據(jù)轉(zhuǎn)換為ASCII碼,然后根據(jù)數(shù)據(jù)格傳送給上位機,同理,接受的上位機的數(shù)據(jù)也為ASCII碼,需將其轉(zhuǎn)為float型。 上位機每次發(fā)送的數(shù)據(jù)都是四個,因此兩者發(fā)送的數(shù)據(jù)格式一致,其格式如圖21所示。溫度控制實驗平臺上位機只繪制溫度曲線,其接受的數(shù)據(jù)格式如圖22所示,兩輪平衡車上位機繪制偏移角度和行駛速度曲線,其接受的數(shù)據(jù)格式如圖23所示。源程序如usart.c文件所示。 
圖21 上位機傳送的數(shù)據(jù)格式 
圖22上位機接受的數(shù)據(jù)格式 
圖23 上位機接受的數(shù)據(jù)格式 OLED顯示器采用IIC通信,其源程序如oled.c文件所示。按鍵中斷采用外部中斷,設(shè)置為上拉輸入,按下后為低電平。其源程序如boad.cexti.c文件所示。 4. 上位機使用說明 上位機可使用USART轉(zhuǎn)串口或藍牙進行數(shù)據(jù)傳輸。使用藍牙時,應(yīng)先將藍牙與電腦完成配對后方可開啟上位機,否則無法打開串口。 下位機給上位機傳輸數(shù)據(jù)時,每次傳輸?shù)臄?shù)據(jù)時間間隔應(yīng)大于100ms。 建議打開串口前先設(shè)置好曲線的參數(shù),采樣周期為兩次數(shù)據(jù)傳輸?shù)臅r間間隔;曲線下限值為曲線的最小值,上限值為曲線的最大值。 上位機傳輸四個參數(shù)時,參數(shù)不能為空,必須四個參數(shù)都有數(shù)據(jù)。
|