基于MSPM0G3507主控的一輛智能(平衡) 小車(chē)
1 項目目的及實(shí)現功能
一般在弱電領(lǐng)域,對單片機學(xué)習和使用的通用路線(xiàn)就是使用開(kāi)發(fā)板進(jìn)行調試,但是開(kāi)發(fā)板有的大多是一些板載零件,沒(méi)有相應的執行機構。然而我們電子工程師常常需要一些執行機構進(jìn)行調試/ 分析/ 驗證圍繞單片機的設計方案;
小車(chē)(vehicle) 作為科研工程中一個(gè)常見(jiàn)的機電一體化執行機構模型,其包含了運動(dòng)學(xué)和動(dòng)力學(xué)兩個(gè)領(lǐng)域的物理和數學(xué)知識,所以摸索使用一款新單片機時(shí),可選一個(gè)小車(chē)做工程實(shí)踐平臺,特點(diǎn)如下:
①能評估選型一款MCU 硬件外設資源(如定時(shí)器PWM,ADC,I2C,SPI,SDIO,UART,GPIO,CAN,LIN 等);
② 能評估考量MCU功耗(如工作電壓,電流,溫度等);
③能通過(guò)經(jīng)典PID 等算法測試MCU 的數據處理能力。
不夸張地說(shuō),一輛可稱(chēng)為智能的小車(chē)(vehicle),硬件上大多會(huì )將一款MCU 所有的功能和外設都使用了,本項目用一款TI 的低功耗新產(chǎn)品MCU 主控MSPM0 G3507 來(lái)實(shí)現控制一輛小車(chē)(注: 不等同于mini 玩具車(chē)),在MSPM0G3507上運用PID控制算法和卡爾曼濾波算法完成小車(chē)軟硬件設計實(shí)踐平臺,讓其不僅可前后運動(dòng)/轉向運動(dòng),還可平衡態(tài)靜止等運動(dòng)態(tài)。此項目對于學(xué)習使用當今低碳時(shí)代下的電子領(lǐng)域的一款新MCU 應該還是很有實(shí)踐意義的。
2 項目整體設計思路
2.1 機械結構
此單片機實(shí)踐項目主要應用MSPM0G3507 主控對一個(gè)機械平臺- 小車(chē)(vehicle)進(jìn)行控制,使小車(chē)能在前進(jìn)/ 后退/ 左轉/ 右轉運動(dòng)時(shí),仍然保持動(dòng)態(tài)直立平衡狀態(tài),所以首先采用CAD 設計圖紙,制造組裝一個(gè)小車(chē)機械結構平臺,最終設計如下圖所示:
2.2 硬件:MCU主控選型
硬件電子部分主要基于TI LP-MSPM0G3507開(kāi)發(fā)板設計,如圖示,主控芯片是TI(德州儀器)公司的新產(chǎn)品MSPM0G3507.
MCU介紹:
MSPMOG3507器件提供具有內置錯誤修正碼(ECC)的128KB 嵌入式閃存程序存儲器和具有硬件奇偶校驗的32KB SRAM。這些器件還包含一個(gè)存儲器保護單元、7 通道DMA、數學(xué)加速器和各種高性能模擬外設,例如兩個(gè)12 位4MSPS ADC、一個(gè)可配置內部共亭電壓基準、一個(gè)12 位DAC、三個(gè)具有內置基準DAC 的高速比較器、兩個(gè)具有可編程增益的零漂移運算放大器和一個(gè)通用放大器。這些器件還提供智能數字外設,例如兩個(gè)16 位高級控制計時(shí)器、三個(gè)16 位通用計時(shí)器、一個(gè)32 位高分辨率計時(shí)器、兩個(gè)窗口式看門(mén)狗計時(shí)器以及一個(gè)具有警報和日歷模式的RTC。這些器件可提供數據完整性和加密外設(AES、CRC、TRNG)以及增強型通信接口(四個(gè)UART、兩個(gè)12C、兩個(gè)SPI 和一個(gè)CAN 2.0/FD)。
器件特性包括:
● 工作電壓為1.62V至3. V
● 具有存儲器保護單元且頻率高達80MHz的ARM32 位Cortex-M0+
● 具有內置ECC 的128KB 閃存和具有硬件奇偶校驗的32KB SRAM
● 兩個(gè)12 位4MSpS ADC
● 12 位DAC
● 兩個(gè)零漂移、零交叉斬波運算放大器
● 兩個(gè)16 位高級控制計時(shí)器
● 三個(gè)16 位通用計時(shí)器
● 一個(gè)32 位高分辨率計時(shí)器
● 60 個(gè)GPIO 引腳
LQFP64引腳排列(頂視圖)
2.3 硬件:開(kāi)發(fā)板平臺
LP-MSPM0G3507 開(kāi)發(fā)板特性
板載XDS110 調試探針
可用于超低功耗調試的EnergyTrace 技術(shù)
用于用戶(hù)交互的2 個(gè)按鈕、1 個(gè)LED 和1 個(gè)RGB LED
溫度傳感器電路
光傳感器電路
用于A(yíng)DC(高達4Msps)評估的外部OPA2365(默認緩沖模式)
板載32.768 kHz 和40 MHZ 晶體
ADC 輸入的RC 濾波器(默認未安裝)
開(kāi)發(fā)板硬件框圖
2.4 硬件框圖
小車(chē)系統硬件圖
小車(chē)各模塊信號流及供電
2.5 硬件實(shí)物
本項目硬件板卡主要圍繞TI LP-MSPM0G3507 開(kāi)發(fā)板進(jìn)行二次開(kāi)發(fā)擴展板SHEILD-PCBA,完成小車(chē)執行機構所需的外圍器件的實(shí)物如下(已經(jīng)過(guò)二次PCB集成)
2.6 硬件:開(kāi)發(fā)板原理圖概覽
總體概覽
MSPM0G3507最小系統電路圖
最小系統-晶振原理圖
最小系統-電源原理圖
XDS110調試模塊原理圖
2.7 硬件:開(kāi)發(fā)者二次開(kāi)發(fā)部分
車(chē)執行機構各電路模塊和 MSPM0G3507-MCU 外 設分配 / 連接表
IMU模塊(MPU6050)原理圖
編碼器模塊電路原理圖
驅動(dòng)隔離芯片+DMOS原理圖
驅動(dòng)電機轉速和 MCU 信號轉接板(自制)轉向控 制真值表:
以上二次開(kāi)發(fā)的原理圖最終 Layout 生成 PCB 實(shí)物 如圖所示(此板卡分成兩塊 PCB 由開(kāi)發(fā)者通過(guò) PCBEDA 設計提供)
小車(chē)用到的所有零部件集成組裝實(shí)物平臺,整體構 成圖如下
2.8 軟件部分:軟件流程圖
基于MSPM0G3507主控的智能(平衡)小車(chē)
2.8.1 軟件部分: 核心算法介紹
此小車(chē)項目選擇簡(jiǎn)單的串級PID 算法,所謂串級PID類(lèi)似于串聯(lián),它將PD直立環(huán)(balance)、PI速度環(huán)(velocity)和PD轉向環(huán)(turn)結果分別計算最后相加。得到輸出左右輪的PWMA 和PWMB 輸出。其極性代表轉向。三個(gè)環(huán)量“你追我趕”,“相互制約”才能保證一個(gè)動(dòng)態(tài)穩定的系統,具體計算公式如下:
其中直立環(huán)使用比例+ 微分變量(PD)進(jìn)行控制,比例系數計算小車(chē)傾角與平衡位置的差(Bias),而微分系數計算小車(chē)俯仰角的加速度。小車(chē)的直立情況與積分量無(wú)關(guān),主要與其位置和加速度有關(guān),具體計算公式如下:
速度環(huán)使用優(yōu)化后的限幅比例+ 積分變量(PI)進(jìn)行控制,比例系數計算小車(chē)左右輪速度之和和零之間差值(Encoder_Least),積分系數計算小車(chē)速度差累加和(Encoder_Integral)。由于速度控制與小車(chē)的加速度幾乎無(wú)關(guān),所以只是用PI控制,具體公式如下:
2.8.2 軟件部分:PID算法運行過(guò)程
2.8.3 軟件部分:PID算法調試步驟
參數整定:
平衡小車(chē)的具體參數受到車(chē)體結構和地面傾斜角度的影響,參數整定是一個(gè)極為枯燥耗時(shí)的工作。參數整定沒(méi)有好的方法,只能通過(guò)不斷嘗試,用“夾逼準則”才能找到最好的值。換言之,好的參數就是大量時(shí)間堆積出來(lái)的結果,學(xué)習使用PID 對于參數的調節不過(guò)分追求。但調出一個(gè)能用的參數也許花費點(diǎn)的時(shí)間,這里簡(jiǎn)單敘述一下參數調整的過(guò)程。對于串級PID 我們一般先調節直立環(huán),再調節速度環(huán),在調節完這兩個(gè)環(huán)節之后小車(chē)就能很好地走直線(xiàn)了,最后調節轉向環(huán),用于調節轉向。每個(gè)環(huán)的功能如下圖所示:
經(jīng)典口訣 :
2.9 編碼實(shí)現:將上述軟件流程及算法在MSPM0G 3507這款MCU開(kāi)發(fā)環(huán)境中編碼調試
以上軟件編碼調試可以在 TI-MSPM0G3507 中使用 CCS(TI 的 Code Composer Studio? IDE)或云 IDE 開(kāi) 發(fā)調試;Code Composer Studio IDE 支持 EnergyTrace? 技術(shù)。開(kāi)發(fā)人員可以輕松測量其應用的功耗,便于優(yōu)化 產(chǎn)品低功耗應用。
當然其他IDE 如IAR Embedded Workbench? IDE和Keil?μVision? IDE也可進(jìn)行正常調試MCU。MSPM0G3507軟件開(kāi)發(fā)的特色:低門(mén)檻,無(wú)需環(huán)境就可云IDE開(kāi)發(fā)調試,測試用例程序可以直接參照右圖調試;
本項目采用國內開(kāi)發(fā)人員使用較多的Keil MDKIDE(V5.39)
安裝好MSPM0G3507軟件支持包
安裝好TI MCU專(zhuān)用Sysconfig配置工具KEIL IDE的Tools工具欄
配置MSPM0G3507的Debug為CMSIS-DAP
配置MSPM0G3507專(zhuān)用XDS110板載調試器(LPMSPM0G3507開(kāi)發(fā)板板載)
配置MSPM0G3507的Flash大小為128KB
打開(kāi)安裝好的
例程,進(jìn)行配置。syscfg
配置本工程MCU底層文件.syscfg
打開(kāi)main文件,如圖
添加初始化各部外設代碼
配置定時(shí)器產(chǎn)生PWM
配置IIC初始化MPU6050
配置IIC初始化OLED初始化;
配置GPIO按鍵初始化;
添加/移植PID算法代碼;
2.10 MCU固件最終調試及測試結果
啟動(dòng)后配置。syscfg文件中各GPIO引腳與自制驅動(dòng)板一致后編譯程序,將PID代碼拷貝到工程中。參考前述方法進(jìn)行整定參數。不斷調試代碼,進(jìn)行如下測量項目,驗證是否達標。
小車(chē)平衡態(tài)實(shí)際調試視頻
基礎測試:
高級測試:
3 總結
本實(shí)踐項目采用MSPM0G3507 作為80MHz主控芯片對小車(chē)進(jìn)行MCU控制,對MPU6050 實(shí)現姿態(tài)角解算輸出,使用DMOS 芯片進(jìn)行直流電機驅動(dòng)調速,還采用霍爾編碼器進(jìn)行脈沖計數實(shí)現了小車(chē)左右電機速度讀取,霍爾編碼器的反饋信號可達到速度環(huán)的控制。反饋是控制的核心,此項目中MCU微控制器,主要作用就是獲取小車(chē)的反饋信息,做出相應的控制。
采用MSPM0G3507低功耗單片機制作小車(chē),做到了相比以往3.3 V供電的ARM Cortex-M3 系列單片機電壓降低至1.62 V仍然可以工作,且需要要的頻率80MHz 可以滿(mǎn)足PID 控制運算需要,運算功耗也明顯降低。低碳時(shí)代背景下,使用如TI 的MSPM0G3507 系列低功耗MCU 研發(fā)產(chǎn)品是時(shí)代趨勢。當下看來(lái)MSPM0G3507 比XXX32F103R系列ARM Cortex-M3單片機更具性?xún)r(jià)比。
(本文來(lái)源于《EEPW》202501)
評論