体感控制工程车设计
汤莉莉1,程升强1,黄伟2
(1.湖北大学知行学院计算机与信息工程学院,湖北 武汉 430011;2.湖北航天技术研究院总体设计所,湖北 武汉 430040)
摘要:本设计是在STM32F407VET6硬件平台上实现的一款基于体感控制技术的智能工程车,设计的主体结构由控制器端和小车端两部分组成.其中控制器端的体感控制部分借助MPU6050六轴传感器模块实现,其采集完控制器的姿态数据后,经自带DMP库进行解算得出相应的姿态解算数据,MCU再进行相应公式的换算,并调用相关的函数完成控制过程.整个系统采用蓝牙通信,为了达到精确控制的目的,运用PID算法完成相关控制过程.此外,还拓展摇杆按键和手机APP两种控制方式,可在不同的应用场景下切换不同的控制方式.
关键词:体感技术;姿态解析;蓝牙通信;摇杆;手机APP;PID算法
0 引言
体感互动控制视频技术,由于不再需要烦琐的机械操作,只需通过肢体语言动作,就可进行应用操作.例如通过一个手臂微微向上向下左右摆动,就可以轻松控制一台电视机的转换视频节目,达到控制设备的目的.尤其是近几年的体感控制类游戏的兴起,各大游戏公司都加大了对体感类游戏的开发力度,其中VR类游戏更是受到人们的普遍关注.虚拟VR技术结合体感控制技术,只需要手持控制器,戴上VR眼镜,通过操作控制器进行游戏操作,这对游戏用户也是一种崭新的游戏体验方式.本设计中,将利用STM32单片机把体感技术运用于传统的智能工程车中,为使用者提供一种全新的控制方式.通过控制器(手机或其他自制的控制器)的上下左右等的运动操作,不用繁琐地通过点击机械滑动按键或者点击手机上的APP等其他虚拟软件按键,就可控制一台工程车运动.通过体感自动控制系统可以开辟一个新的遥控工程车体感控制系统方式,不再受限于目前传统的红外、蓝牙、Wifi、无线等各种控制系统方式,更加便捷地控制一辆工程车,同时也便于企业推广遥控工程车.在STM32F407VET6强大的硬件平台下,结合实际的应用场景,亦可以通过加装其他一些模块,如摄像头模块、语言模块,拓宽工程车的应用场景.
1 整体设计方案
体感控制智能工程车可以实现的功能有:利用控制器端的MPU6050模块,通过蓝牙与工程车建立数据传输连接关系,达到通过操作控制器控制工程车行进方向的目的.除此之外,为了便于控制,还增加了手机APP和摇杆按键两种控制方式,可以根据实际需求进行切换.
结合实际需求采用STM32F407VET6作为主控芯片;通过MPU6050模块实现体感控制方式;辅助显示采用的是0.96英寸的OLED模块;电机驱动方面采用比传统的L298 N模块更为精密的TB6612模块进行电机驱动,可以进行较为精确的电机控制;在电机选择方面,选择带编码器的直流无刷电机,通过编码器结合Cortex-M4内核中的定时器的编码器模式[1],便于获取工程车当前的速度,对工程车的速度进行控制;为了达到精确转向的目的采用舵机完成这一过程.
![46e398bc19b667ed29a6b9670ec43c22.png](https://i-blog.csdnimg.cn/blog_migrate/ff12cb0a443578d8115e32e4e2dfaa9a.jpeg)
图1 控制端设计流程图
![c3f60651c195c14e334a297f90ccf831.png](https://i-blog.csdnimg.cn/blog_migrate/da6cd8c88cc6f1449f560f6cad75a8b9.jpeg)
图2 小车端设计流程图
1.1 控制器端设计 如下图所示,其中1、0表示键值;IIC与ADC表示外设与MCU建立数据通过该接口[2].系统运行后,控制器端对整个系统的时钟、GPIO以及其他使用的内部硬件资源与外设进行初始化.整个系统正常稳定工作后,判断最小系统板上的K1按键是否被按下和蓝牙从机是否被手机蓝牙连接,确定当前工程车的控制方式是体感控制、遥杆控制还是手机APP方式进行控制.
确定控制方式后,控制器端主控芯片就可以通过相应的接口,获取当前模块所传输的数据,通过控制板上的蓝牙传输给小车端,约定的数据传输格式为8位整型,高2位为控制方式(01为体感控制方式,10为遥杆按键控制方式),低4位为速度值.
1.2 小车端设计 如图2所示,小车端的设计流程为系统初始化稳定工作后,蓝牙从机接受来自控制器端的控制命令.STM32F407VET6通过串口接受到蓝牙发送的数据时,判断当前为哪种控制方式,再通过PID速度环进行公式换算后,输出相应的PWM值给电机驱动芯片.
舵机的控制直接通过TIM3输出PWM波进行控制,通过控制舵机转动的角度控制工程车的转向.芯片与TB6612电机驱动芯片的控制关系如表1[3].
表1 控制关系表
![ef2d1dc6db128d5c5eca8030ab798772.png](https://i-blog.csdnimg.cn/blog_migrate/830f321017c1a2489eb8d76eca4ee356.jpeg)
由表1可知,SBTY是整个系统的开关,当其为低稳压电平时,会自动关闭整个控制模块.ENA和ENB分别为2个直流稳压电机的实际使用功能引脚,实际上在使用中为2个PWM的输入引脚.IN1、IN2、IN3和IN4分别是方向控制引脚,其中X代表高电平或低电平.
1.3 手机APP端设计 本文中的设计流程中的智能手机平台APP端的开发设计是基于一个Android的系统语言进行设计开发的,通过编写好的Java设计语言在Eclipse平台上完成设计工作流程.可以通过手机APP客户端自行完成的停车设置和制动操作主要有:
1)通过手机APP上的一个虚拟制动按键功能,自动控制一辆工程车的制动行进速度和方向;
2)通过APP上的发送栏直接发送命令进行直接控制;
3)通过APP的接收栏可以显示工程车当前的速度[4].
2 设计方案特点及说明
本设计结合体感控制、摇杆按键控制以及手机APP控制为一体,以蓝牙为通信数据传输方式[5],基于STM32F407VET6平台设计一个工程车,充分利用MCU的内部的硬件资源,完成设计所需的全部要求,总结如下:
1)利用STM32F407VET6作为强大的硬件平台.
2)根据实际需求有3种控制方式可选择:体感控制、摇杆按键控制和手机APP控制.
体感量和姿态驱动控制器设计的主要原理:通过设计利用基于MPU6050的一个数字模拟器的运动量和姿态控制处理器(DMP),结合基于InvenSense 等所设计提供的一个比较通用化的嵌入式数字模拟运动量和姿态控制驱动系统数据库,将原始的模拟运动量和姿态控制计算器的数据直接转换成4个二元数据进行控制输出,得到4个二元的函数之后直接计算和控制输出欧拉角,从而直接得到它的快速航向旋转航向角(θYaw)、横向快速翻滚旋转俯仰角(θRoll)和航向旋转俯仰角(θPitch),进而直接得到一个体感姿态控制器当前的实际运动量和姿态[6].其具体实现公式如下:
![f9ae2da2bbba1ca64fd7168969bc5a2c.png](https://i-blog.csdnimg.cn/blog_migrate/e47c5bf9caceb4f1624b48972d4d76f9.png)
其中,公式中
quat
[0] ~
quat
[3]即为DMP解开运算后的4个二元数.它是欧拉格式的,也就是浮点数放大了倍数的,所以只需要先计算除以2
30
,其中
q
30
是一个欧拉常数即为107 3741 824,即是2
30
,然后可以带入公式,计算出欧拉角.上述转换计算公式的 57.3 是测量弧度的,该转换也称为测量角度,即180/π,这样转换得到的计算结果以度为测量单位.4个方向0 ~ 90°对应速度变化为0 ~ 3 m/s,起始位置为开机所处的位置.
摇杆按键控制方式是将该模块接入MCU的ADC(2个通道),利用模块内部的电位计(X轴与Y轴)处于不同位置时电压不同,判断当前遥杆所处的位置以及运动变化进而控制工程车的运动状态.X轴和Y轴2个方向的电压变化值都在0 ~ 500 V之间,当其处于中间位置时为(255 V,255 V),4个方向变化值(255~0 V或255~500 V)对应的速度变化为0~3 m/s.
手机APP控制方式是利用手机端蓝牙直接连接小车端的蓝牙从机进行控制操作的,在手机APP上进行相应的操作.
3)通过编码器可以实时采集工程车的当前速度,并上传到控制器端OLED或APP端进行显示.
4)运用PID技术对工程车进行精确控制.在本系统设计中小车端的加速度控制环路所采用的函数是快速离散化的2个增量式函数PID,公式定义如下:
![68d78fcd6839b503883829c7fc305054.png](https://i-blog.csdnimg.cn/blog_migrate/f2a0e8d80bed9d17fbb8812ade0cb98a.png)
其中k为输入采样时刻序号,k=0,1,…;uk为第k次采样时刻的计算机输出值;Kp为输入控制器的输入比例积分系数;Ti为输入控制器的输入积分刻度时间,也可简称输入积分刻度系数;Td为输入控制器的输入微分刻度时间,也可简称刻度微分系数;ek为第k次输入采样时刻每次输入的输出偏差系数值;ek-1为第k- 1次输入采样时刻每次输入的输出偏差系数值;ek-2为第k- 2次采样时刻每次输入的输出偏差系数值.
在实际的应用中uk为传入的速度值,uk-1为当前的速度值.△uk为两速度的差值,即为传输给电机驱动芯片TB6612的PWM值(对应速度的PWM值已由宏定义,不同电机值不同).采用PID控制的目的是为了让工程车快速稳定地达到预设的速度.
5)利用舵机进行工程车的精确转向.
3 方案难点及关键技术
本设计方案难点:
1)进行控制器端代码编写时,各个模块应用的系统资源有叠加,需充分分配好系统资源,其中应用层代码设计逻辑时序性要求较高;
2)运用PID进行工程车的速度控制,其数据采集的准确性要求比较高;
3)手机APP端代码的编写[7].
关键技术主要有:
1)自动体感温度控制自动技术;
2)PID自动控制;
3)手机客户端APP的编写;
4)蓝牙通信协议.
4 系统联调
本设计的调试分为两个部分进行,首先进行是体感控制和摇杆按键控制部分的调试,然后是蓝牙APP控制部分的调试.整体调试效果图如图3所示,控制端调试效果图如图4所示.
![219673381c561464c3878dfb7a81f5f3.png](https://i-blog.csdnimg.cn/blog_migrate/268500182e03d49d0986ad4e1201779f.jpeg)
图3 整体调试效果图
![dacf8aacd736fb32fe916b0fdd36bbdd.png](https://i-blog.csdnimg.cn/blog_migrate/68ab2e187601c1116de327d6fe79efe5.jpeg)
图4 控制端调试效果图
4.1 体感控制和遥杆按键控制部分 这部分的调试主要是小车端与控制器之间的调试,先给整个系统供电,待整个模块可以稳定工作后,按下蓝牙主机的复位按钮,等控制器上OLED上显示MPU6050和蓝牙模块正常工作后,连接小车端的蓝牙从机(连接成功与否,可以通过蓝牙模块上指示灯闪烁的频率确定).然后通过最小系统板上的K1按键选择控制方式为体感控制还是摇杆按键控制.
体感控制方式,蓝牙连接稳定正常后,通过改变控制器的姿态,工程车可以相应运动,表示该部分的调试成功,同理摇杆按键方式也相同.若失败则查看硬件连接是否正常,代码设置是否有误.根据已查的错误再进行修改,修改完之后,再进行调试.
4.2 蓝牙APP控制部分 这部分的调试是手机APP和工程车之间的调试,手机成功连接工程车的APP成功后,工程车上的蓝牙APP指示灯闪烁提示.然后在手机界面上进行相应的虚拟按键操作,例如按下虚拟按键“前”之后,工程车可以向前行驶,该部分的调试算成功.若失败则参考上一部分的调试方法再进行调试.
5 结束语
本设计是在STM32F407硬件平台上实现的一款基于体感控制的智能工程车,主体设计分为控制器端和小车端两部分,经过方案论证后,采用MPU6050作为体感控制模块,OLED模块作为液晶显示方式模块,其中采用2个蓝牙通信串口的HC-05模块作为蓝牙通信显示方式控制模块,在进行工程车速度环控制时加入PID进行精确控制.在体感控制的基础上,拓展摇杆按键控制和蓝牙APP控制2种方式,调试完成并可以实现全部的预设功能.
【本文载于湖北大学学报(自科版)2020年04期】
责任编辑:郭定和 / 微信编辑:江津