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

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

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