基于MSPM0G3507主控的一辆智能(平衡) 小车
1 项目目的及实现功能
一般在弱电领域,对单片机学习和使用的通用路线就是使用开发板进行调试,但是开发板有的大多是一些板载零件,没有相应的执行机构。然而我们电子工程师常常需要一些执行机构进行调试/ 分析/ 验证围绕单片机的设计方案;
小车(vehicle) 作为科研工程中一个常见的机电一体化执行机构模型,其包含了运动学和动力学两个领域的物理和数学知识,所以摸索使用一款新单片机时,可选一个小车做工程实践平台,特点如下:
①能评估选型一款MCU 硬件外设资源(如定时器PWM,ADC,I2C,SPI,SDIO,UART,GPIO,CAN,LIN 等);
② 能评估考量MCU功耗(如工作电压,电流,温度等);
③能通过经典PID 等算法测试MCU 的数据处理能力。
不夸张地说,一辆可称为智能的小车(vehicle),硬件上大多会将一款MCU 所有的功能和外设都使用了,本项目用一款TI 的低功耗新产品MCU 主控MSPM0 G3507 来实现控制一辆小车(注: 不等同于mini 玩具车),在MSPM0G3507上运用PID控制算法和卡尔曼滤波算法完成小车软硬件设计实践平台,让其不仅可前后运动/转向运动,还可平衡态静止等运动态。此项目对于学习使用当今低碳时代下的电子领域的一款新MCU 应该还是很有实践意义的。
2 项目整体设计思路
2.1 机械结构
此单片机实践项目主要应用MSPM0G3507 主控对一个机械平台- 小车(vehicle)进行控制,使小车能在前进/ 后退/ 左转/ 右转运动时,仍然保持动态直立平衡状态,所以首先采用CAD 设计图纸,制造组装一个小车机械结构平台,最终设计如下图所示:
2.2 硬件:MCU主控选型
硬件电子部分主要基于TI LP-MSPM0G3507开发板设计,如图示,主控芯片是TI(德州仪器)公司的新产品MSPM0G3507.
MCU介绍:
MSPMOG3507器件提供具有内置错误修正码(ECC)的128KB 嵌入式闪存程序存储器和具有硬件奇偶校验的32KB SRAM。这些器件还包含一个存储器保护单元、7 通道DMA、数学加速器和各种高性能模拟外设,例如两个12 位4MSPS ADC、一个可配置内部共亭电压基准、一个12 位DAC、三个具有内置基准DAC 的高速比较器、两个具有可编程增益的零漂移运算放大器和一个通用放大器。这些器件还提供智能数字外设,例如两个16 位高级控制计时器、三个16 位通用计时器、一个32 位高分辨率计时器、两个窗口式看门狗计时器以及一个具有警报和日历模式的RTC。这些器件可提供数据完整性和加密外设(AES、CRC、TRNG)以及增强型通信接口(四个UART、两个12C、两个SPI 和一个CAN 2.0/FD)。
器件特性包括:
● 工作电压为1.62V至3. V
● 具有存储器保护单元且频率高达80MHz的ARM32 位Cortex-M0+
● 具有内置ECC 的128KB 闪存和具有硬件奇偶校验的32KB SRAM
● 两个12 位4MSpS ADC
● 12 位DAC
● 两个零漂移、零交叉斩波运算放大器
● 两个16 位高级控制计时器
● 三个16 位通用计时器
● 一个32 位高分辨率计时器
● 60 个GPIO 引脚
LQFP64引脚排列(顶视图)
2.3 硬件:开发板平台
LP-MSPM0G3507 开发板特性
板载XDS110 调试探针
可用于超低功耗调试的EnergyTrace 技术
用于用户交互的2 个按钮、1 个LED 和1 个RGB LED
温度传感器电路
光传感器电路
用于ADC(高达4Msps)评估的外部OPA2365(默认缓冲模式)
板载32.768 kHz 和40 MHZ 晶体
ADC 输入的RC 滤波器(默认未安装)
开发板硬件框图
2.4 硬件框图
小车系统硬件图
小车各模块信号流及供电
2.5 硬件实物
本项目硬件板卡主要围绕TI LP-MSPM0G3507 开发板进行二次开发扩展板SHEILD-PCBA,完成小车执行机构所需的外围器件的实物如下(已经过二次PCB集成)
2.6 硬件:开发板原理图概览
总体概览
MSPM0G3507最小系统电路图
最小系统-晶振原理图
最小系统-电源原理图
XDS110调试模块原理图
2.7 硬件:开发者二次开发部分
车执行机构各电路模块和 MSPM0G3507-MCU 外 设分配 / 连接表
IMU模块(MPU6050)原理图
编码器模块电路原理图
驱动隔离芯片+DMOS原理图
驱动电机转速和 MCU 信号转接板(自制)转向控 制真值表:
以上二次开发的原理图最终 Layout 生成 PCB 实物 如图所示(此板卡分成两块 PCB 由开发者通过 PCBEDA 设计提供)
小车用到的所有零部件集成组装实物平台,整体构 成图如下
2.8 软件部分:软件流程图
基于MSPM0G3507主控的智能(平衡)小车
2.8.1 软件部分: 核心算法介绍
此小车项目选择简单的串级PID 算法,所谓串级PID类似于串联,它将PD直立环(balance)、PI速度环(velocity)和PD转向环(turn)结果分别计算最后相加。得到输出左右轮的PWMA 和PWMB 输出。其极性代表转向。三个环量“你追我赶”,“相互制约”才能保证一个动态稳定的系统,具体计算公式如下:
其中直立环使用比例+ 微分变量(PD)进行控制,比例系数计算小车倾角与平衡位置的差(Bias),而微分系数计算小车俯仰角的加速度。小车的直立情况与积分量无关,主要与其位置和加速度有关,具体计算公式如下:
速度环使用优化后的限幅比例+ 积分变量(PI)进行控制,比例系数计算小车左右轮速度之和和零之间差值(Encoder_Least),积分系数计算小车速度差累加和(Encoder_Integral)。由于速度控制与小车的加速度几乎无关,所以只是用PI控制,具体公式如下:
2.8.2 软件部分:PID算法运行过程
2.8.3 软件部分:PID算法调试步骤
参数整定:
平衡小车的具体参数受到车体结构和地面倾斜角度的影响,参数整定是一个极为枯燥耗时的工作。参数整定没有好的方法,只能通过不断尝试,用“夹逼准则”才能找到最好的值。换言之,好的参数就是大量时间堆积出来的结果,学习使用PID 对于参数的调节不过分追求。但调出一个能用的参数也许花费点的时间,这里简单叙述一下参数调整的过程。对于串级PID 我们一般先调节直立环,再调节速度环,在调节完这两个环节之后小车就能很好地走直线了,最后调节转向环,用于调节转向。每个环的功能如下图所示:
经典口诀 :
2.9 编码实现:将上述软件流程及算法在MSPM0G 3507这款MCU开发环境中编码调试
以上软件编码调试可以在 TI-MSPM0G3507 中使用 CCS(TI 的 Code Composer Studio™ IDE)或云 IDE 开 发调试;Code Composer Studio IDE 支持 EnergyTrace™ 技术。开发人员可以轻松测量其应用的功耗,便于优化 产品低功耗应用。
当然其他IDE 如IAR Embedded Workbench™ IDE和Keil®μVision® IDE也可进行正常调试MCU。MSPM0G3507软件开发的特色:低门槛,无需环境就可云IDE开发调试,测试用例程序可以直接参照右图调试;
本项目采用国内开发人员使用较多的Keil MDKIDE(V5.39)
安装好MSPM0G3507软件支持包
安装好TI MCU专用Sysconfig配置工具KEIL IDE的Tools工具栏
配置MSPM0G3507的Debug为CMSIS-DAP
配置MSPM0G3507专用XDS110板载调试器(LPMSPM0G3507开发板板载)
配置MSPM0G3507的Flash大小为128KB
打开安装好的
例程,进行配置。syscfg
配置本工程MCU底层文件.syscfg
打开main文件,如图
添加初始化各部外设代码
配置定时器产生PWM
配置IIC初始化MPU6050
配置IIC初始化OLED初始化;
配置GPIO按键初始化;
添加/移植PID算法代码;
2.10 MCU固件最终调试及测试结果
启动后配置。syscfg文件中各GPIO引脚与自制驱动板一致后编译程序,将PID代码拷贝到工程中。参考前述方法进行整定参数。不断调试代码,进行如下测量项目,验证是否达标。
小车平衡态实际调试视频
基础测试:
高级测试:
3 总结
本实践项目采用MSPM0G3507 作为80MHz主控芯片对小车进行MCU控制,对MPU6050 实现姿态角解算输出,使用DMOS 芯片进行直流电机驱动调速,还采用霍尔编码器进行脉冲计数实现了小车左右电机速度读取,霍尔编码器的反馈信号可达到速度环的控制。反馈是控制的核心,此项目中MCU微控制器,主要作用就是获取小车的反馈信息,做出相应的控制。
采用MSPM0G3507低功耗单片机制作小车,做到了相比以往3.3 V供电的ARM Cortex-M3 系列单片机电压降低至1.62 V仍然可以工作,且需要要的频率80MHz 可以满足PID 控制运算需要,运算功耗也明显降低。低碳时代背景下,使用如TI 的MSPM0G3507 系列低功耗MCU 研发产品是时代趋势。当下看来MSPM0G3507 比XXX32F103R系列ARM Cortex-M3单片机更具性价比。
(本文来源于《EEPW》202501)
评论