丛玉华 吴洪佳 朱惠娟 朱娴 谢玲
(南京理工大学紫金学院 江苏省南京市 210023)
《嵌入式控制系统》课程,是很多高校自动化专业的专业核心课程,是一门多学科交叉领域的课程,课程教学目标是使学生了解嵌入式控制系统的基本知识和原理,掌握嵌入式控制系统的接口开发技术和系统设计流程与方法,掌握嵌入式控制系统的软件设计技术等。课程以基于嵌入式计算机的自动控制系统为载体,一方面介绍这类系统的设计原理与方法,另一方面讲述如何将自动控制理论应用于实际的自动控制系统,是专业基础理论与实际工程设计的接口课程,是一门兼顾理论与应用技术、实践性较强的课程。两轮自平衡小车为移动机器人的一种,为自动控制理论和嵌入式技术结合的有机载体,采用它作为嵌入式控制系统课程的综合实验平台,有助于提高学生的理论联系实际的能力和系统开发设计的能力。下面将介绍两轮自平衡小车实验平台的设计和实现。
两轮自平衡小车,作为自动控制系统综合实验开发平台,主要服务于三方面:
图1:系统总体功能图
图2:系统总体结构图
(1)自动控制基础理论,考察学生对开环控制、闭环控制、系统性能、PID 控制方法等的理解和掌握;
(2)嵌入式控制技术,锻炼学生对嵌入式控制系统的硬件及接口设计能力和硬件基础上的软件编程能力;
(3)系统开发思路,加深学生对系统工程开发流程的理解,提升学生系统开发能力。为此,实验平台总体的功能和结构设计如下。
图3:机械框架图
图4:主控子系统构成图
图5:主控器总体接口设计图
图6:最小系统电路图
对两轮自平衡小车系统最基本的要求是空闲时能保持直立,有任务时须实现前进、后退、左转和右转,所用动作都基于对小车车轮的控制。为此,要实现两轮自平衡小车的基本控制,需要系统具备功能如图1所示。
图7:电机驱动模块电路及接口图
图8:姿态传感器电路及接口图
图9:OLED 的电路及接口图
图10:按键/LED 电路及接口图
为实现上述功能,两轮自平衡小车系统结构应包括:机械框架和控制系统,其中机械框架主要由小车底盘和左右车轮构成,控制系统又包含主控子系统和遥控子系统。具体结构如图2所示。
两轮自平衡小车机械框架由小车底盘和左右车轮构成,如图3所示。
控制系统由主控子系统和遥控子系统两部分构成。
3.2.1 主控子系统
图11:无线模块电路及接口图
图12:遥控器的摇杆电路及接口图
图13:直立控制结构框图
图14:速度控制原理框图
图15:转向控制原理框图
图16:系统整体实物图
图17:遥控器实物图
主控子系统含主控器模块、电机模块、传感器模块、人机接口模块;如图4(a)所示。
3.2.1.1 主控器模块
(1)主控器。主控器采用STM32F103C8T6 芯片,该芯片是基于ARM Cortex-M3 内核的STM32 系列32 位的微控制器,程序存储器容量是64KB,系统频率为72MHz,具有48 个引脚,输入输出引脚为37 个。图5 为总体接口设计图。
(2)最小系统。以主控器为核心构成的最小系统,外围电路由电源电路、复位电路、振荡电路组成。电源电路:采用LDO对电池或USB 进行降压稳压后产生3.3V 电压供电,电池端采用AMS1117-3.3 稳压芯片,USB 端采用ME78M05K3G 稳压芯片。复位电路:采用低电平复位,共两种复位方式,上电复位、手动复位。振荡电路:该电路由晶振、起振电容及反馈电阻构成。晶振选择8MHZ,起振电容选用22pF,反馈电阻选择1MΩ,与主控器XTAL_IN 和XTAL_OUT 连接。图6 为最小系统电路图。
3.2.1.2 电机模块
(1)直流电机。系统使用了带编码器的型号为GM12-N20VA的减速电机,在6V 供电下额定转速约300 转/分,自带的霍尔传感器可获取电机实时转速。
(2)电机驱动。电机驱动模块选择TB6612FNG。有4 种控制模式:正转/反转/制动/停止;PWM 支持频率高达100 kHz。图7 为电机驱动模块接口图,电机控制端与PB2,PA5,PA12,PA11相连,PWM 输出引脚与PB0,PB1 相连。
3.2.1.3 传感器模块
(1)姿态传感器。采用MPU-6050 模块,内部整合了3 轴陀螺仪和3 轴加速度计测量小车姿态,可测俯仰角、横滚角和偏航角及其角速度,采用三个16 位ADC 进行模数转换,通过主IIC 接口与MCU 通信。采用传感器自带的DMP 数字运动处理器实现姿态解算。图8 为姿态传感器电路及接口图,MOPU6050 通过PB3,PB4,PB5 与STM32 相连。
(2)霍尔传感器。电机带有霍尔编码器引出AB 两相,STM32 的定时器有编码器模式,特定的GPIO 口可以直接连接电机上的编码器接口,读取脉冲获得速度值。霍尔传感器,左右编码器引脚与PA0,PA1,PB6,PB7 相连。
3.2.1.4 人机接口模块
OLED 显示屏:采用分辨率是128×64 的0.96 寸OLED,通过IIC 总线与STM32 主控器通信,实时显示小车的状态,图9 为其电路及接口图。按键及LED:按键及LED 用于状态显示,其电路及接口如图10所示。
3.2.2 遥控子系统
遥控子系统包括:通信模块和位置摇杆。具体构成如图4(b)所示。
(1)通信模块。无线通信模块采用nRF24L01,工作在2.4GHz~2.5GHz 频段。通过SPI 接口对输出功率频道选择和协议进行设置。图11 为其电路及接口图,通过SPI2 总线与主控器连接。
(2)位置摇杆。摇杆采用360°可转动摇杆,通过两个方向的电位器阻值变化确定摇杆当前位置,STM32 通过ADC 采集两个方向电压值计算位置,输出控制信号车。图12 为其电路及接口图,STM32 的PA4,PA5 引脚进行ADC 数据读取。
4.1.1 原理分析平衡小车在重力作用下,受到和角度成正比运动方向相反的回复力,空气中运动受到空气的阻尼力。为了让小车静止在平衡位置附近,不仅需要在电机上施加和倾角成正比的回复力,还需要增加和角速度成正比的阻尼力,阻尼力与运动方向相反。小车的平衡控制算法为:
a=kp*θ+kd*θ'
其中,θ 是俯仰角偏差,θ'是俯仰角速度偏差。只要测量平衡小车的俯仰角和俯仰角速度,据此通过PD 调节来输出小车的控制量a,就可以完成小车的直立控制。其中kp 为比例系数,kd 为微分系数。以上的输出控制量,直接关联施加在电机上面的电压,通过调节控制电机PWM 的占空比即可。图13 为直立控制结构框图。
4.1.2 程序实现
4.2.1 原理分析
当小车以一定的速度运行时,要让小车停下来,需要给小车施加更快的速度去平衡,是一个正反馈的效果。编码器可能存在的噪声,为防止噪声被放大并消除系统静差,速度控制使用PI 控制。小车的速度平衡控制算法为:
a1= kp*e(k)+ki*∑e(k)
e(k)是速度控制偏差,∑e(k)是速度控制偏差的积分。速度控制偏差为:测量值-目标值,为减缓速度值变化,防止速度控制对直立造成干扰,对速度值进行一阶低通滤波。用软件实现硬件RC滤波器效果,以抑制干扰信号。一阶低通数字滤波原理为:
Yn= qXn+(1-q)Yn-1
式中q 为数字滤波器的时间常数,此处q=0.8,采样周期为10ms。Xn为第n 次采样时的滤波器输入,Yn为第n 次采样时滤波器输出。速度控制原理框图如图14所示。
4.2.2 程序实现
4.3.1 原理分析
STM32 输出给电机用于控制其姿态的PWM 应为小车的直立环B_PWM 与速度环V_PWM 之和,如果有遥控左右则应该叠加相应的转向环的T_PWM分别控制左右电机。转向控制原理如图15所示。
4.3.2 程序实现
4.4.1 原理分析
通过STM32 的ADC 功能读取摇杆电位值,获得摇杆位置,通过无线模块与小车通信,控制小车的前进后退以及左转右转。前后和左右两个通道数值范围为0-20,中间值为10。
4.4.2 程序实现
两轮自平衡小车集成后如图16,图17 为遥控器。测试情况为,自平衡控制:直立环,机械中值取0,KP= -280,KD= -0.4;速度环,KP = -70;KI = -0.35;取得较好的自平衡效果。转向控制:将遥控器发来数据乘以20 以,加入左右轮的PWM 中,取得较好转向效果。
两轮自平衡小车系统,作为《嵌入式控制系统》课程综合实验平台,可以满足学生对自动控制原理基础知识的理解与应用,锻炼学生嵌入式开发技术和软硬结合的系统开发方法,因系统目前仅实现了自平衡小车的基本控制功能,后续可在此基础上拓展循迹、避障、追踪等功能,也可加入模糊控制、自适应控制等不同的控制算法优化控制效果,加深控制理论的学习和应用。