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