APP下载

人工智能小车底盘控制系统设计

2021-11-17上海电子工业学校

电子世界 2021年20期
关键词:车灯字节刹车

上海电子工业学校 张 帆

人工智能小车底盘控制系统是针对人工智能教学硬件的小车类底盘所开发的独立控制系统。该系统使用STM32F3芯片高性能MCU,在Keil5和STM32CubeMX开发环境,集成了四路步进电机的驱动控制算法,小车车轮(麦克纳姆轮)的行驶向量换算,三路车灯控制,由串口驱动的红外激光测距传感器(TOF),并提供了一路IIC通讯扩展接口。人工智能小车底盘控制系统成本低,响应快,运行稳定,可靠性高。

1 STM32 MCU和开发工具介绍

系统采用STM32F303系列MCU,芯片外型如图1所示,工作电压为2.0--3.6V,使用ARM Cortex-M4内核(DSP、FPU),运行于72MHz。其具有,存储容量范围512K字节;4个可编程增益的运算放大器;7个快速和超快速比较器;144MHz的快速电机控制定时器等优点。

图1 STM32F303系列MCU

开发环境采用Keil5和STM32CubeMX,STM32CubeMX其作为一个可视化的配置工具如下图2、3所示,通过一个循序渐进的过程,可以非常轻松地配置STM32微控制器和微处理器。对于开发者来说,确实大大节省了开发时间。ST正在逐渐停止对标准外设库的更新,主推HAL库。STM32CubeMX就是以HAL库为基础,(HAL全称Hardware Abstract Layer,意为硬件抽象层),HAL库是STM32开发生态中极为重要的组成部分,不过它不单独提供,而是以STM32CubeMX拓展包的形式提供。

图2 STM32CubeMX

拓展包中除HAL库之外,也有Fatfs、FreeRTOS、STemWin等组件,可以在STM32CubeMX中选择性的使用。与标准外设库相比,HAL库封装得显得更加紧凑,并且源代码通过对外设的对象化,使“层”的特点非常明显,大部分外设也都通过句柄操作,极难见到寄存器的影子。

2 人工智能小车底盘功能

人工智能小车底盘功能分别有电源管理模块、IIC扩展接口、步进电机驱动、麦克纳姆轮算法、测距传感器五个模块组成。结构如图4所示。

图4 人工智能小车底盘功能

(1)电源管理:系统提供一个心跳维持机制,用来配合IP5306电源模块进行多路供电管理;关机时停止心跳,待超时(30s)后电源模块自动停止输出;开机后恢复心跳,即启动电源模块;心跳的发送间隔为2s,低电平有效。

(2)IIC扩展接口:系统提供一个基于IIC通讯总线协议的扩展接口,以从机模式运行,实时监听接口命令;该接口可与其它IIC从机设备共享总线,最多可达255个。

(3)步进电机驱动:系统集成了四路高性能步进电机驱动程序,具备动态细分的PWM驱动能力,可实现低速静音模式与高速大扭矩的实时无缝切换;默认的驱动频率范围为108至900Hz,对应1:25减速步进电机的转速为12.96至108RPM,调速步进为8RPM;四路驱动可单独控制启停、调速及刹车等。

图3 STM32CubeMX操作界面

(4)麦克纳姆轮算法:针对四轮小车的行驶动作,通过内置的转换算法提供了简单可靠的控制方式,只需要定义横移X、竖移Y、自转A三个参数即可将对应转换后的驱动信号输出至四路步进电机;基础的算法原理如下(不包含数值校验及格式化等):

当X>0时则小车向左横移,反之当X<0时则小车向右横移;

当Y>0时则小车向前行驶,反之当Y<0时则小车向后行驶;

当A>0时则小车向左自转,反之当A<0时则小车向右自转。

(5)测距传感器:系统支持一路飞行时间(TOF)测距传感器通过异步串口协议进行数据通讯,提供10Hz刷新速率的准实时测距数据反馈,可用于安全驾驶等教学场景的应用。

3 系统初始化流程

开机后系统进入初始化流程,首先执行系统时钟的配置,然后依次初始化GPIO、IIC1、定时器1、定时器2、USART1,流程如图5所示,默认时钟配置的单片机主频为72MHz,两路定时器为步进电机驱动提供基准时序以及电源管理芯片的心跳维持机制。

图5 系统初始化流程

4 步进电机驱动

动态细分步进驱动部分由一个72KHz的全局定时器提供时序基准,由数个计数器来实现GPIO的PWM信号输出;动态细分机制则是通过一个包含多组正弦、余弦数据表的数组,由当前转速来决定使用哪一组数据表的基本原理来实现;当转速越低时,驱动波形越接近正弦波,可有效的降低电机的噪声与抖动;当转速越高时,驱动波形越接近方波,使得平均驱动电流上升,可提供相对较大的扭矩力;此外因为步进电机的驱动原理,当阻力较大时会出现丢步打滑,利用这个特性可有效的防止在教学过程中出现学生手指卡住导致受伤等的安全隐患。

当系统进入定时器中断后,依次判断四路电机当前的各计数器状态,转速大于0或者小于0时按细分表来设置对应GPIO的电平高或低,反之则停止电机驱动信号的输出即停止转动。

当电机转速发生变更时,系统将进行平滑过渡,在每个定时器中断周期进行最大12Hz的幅度更新,待多个周期后到达目标转速;此机制可有效避免转速变更较大时的驱动电流瞬间激增以及电机出现振动影响整车的平衡。

5 测距传感器

系统通过异步串口(USART)接口协议进行测距传感器的数据通讯,默认支持红外激光型测距传感器,测距范围为0至200cm,接口波特率为9600,刷新频率为10Hz;每次读取数据后缓存至内存变量中待后续使用,即实现了无等待响应的效果。

6 车灯及状态灯

系统可控制四路指示灯,分别为三路车灯与一路状态灯;其中车灯分别为左前灯、右前灯、刹车灯,可在教学场景中模拟实际车辆转向倒车等场景;状态灯用来表示当前小车的启动或熄火状态。

7 IIC接口流程

IIC接口用于扩展对接其它设备如主控板或者各种外部传感器等,接口运行在从机模式下,使用标准的100KHz收发速率,可与其它从机设备共享总线;当系统初始化流程结束后,则进入IIC接口命令的监听循环中,当收到命令后则执行指定的操作或返回对应的数据,详细的命令数据格式,请参照第八节。IIC接口流程如图6所示。

图6 IIC接口流程图

8 IIC控制命令

8.1 接口协议

8.2 发动与熄火

(1)小车发动命令(如表1所示)指令:EN

表1 小车发动命令表

参数:无

(2)小车熄火命令(如表2所示)

表2 小车熄火命令表

指令:OF

参数:无

8.3 车灯控制

(1)打开车灯命令(如表3所示)

表3 打开车灯命令表

指令:LT

在作物苗期,壮苗指数被广泛应用于衡量幼苗生长状况,用来反映幼苗质量的高低,壮苗指数越大,苗越健壮[8],地下部鲜重是衡量根系生物量累积的重要指标[9]。由表3可见,昼温30℃时,随夜温的降低地下部鲜重增加,夜温25、20℃处理的甜瓜幼苗地下部鲜重较夜温30℃处理分别提高5.0%和70%。夜温为15℃时,25/15℃温度处理的甜瓜幼苗地下部鲜重最大,为0.54 g,比其他2个处理分别高出35%、64%。壮苗指数呈相同的趋势,25/15℃温度处理下壮苗指数最大,为0.88。

参数:第一个字节的数值表示车灯类型,1表示左前灯、2表示右前灯、3表示刹车灯。

(2)关闭车灯命令(如表4所示)

表4 关闭车灯命令表

指令:LF

参数:第一个字节的数值表示车灯类型,1表示左前灯、2表示右前灯、3表示刹车灯。

8.4 行驶控制

(1)小车行驶命令(如表5所示)

表5 小车行驶命令表

指令:CS

参数:第一个字节的数值表示横移的方向,1表示左移、0表示右移;第二个字节的数值表示横移的速率,范围为0-100;第三个字节的数值表示前进或后退,1表示前进、0表示后退;第四个字节的数值表示前进或后退的速率,范围为0-100;第五个字节的数值表示自转的方向,1表示左转、0表示右转;第六个字节的数值表示自传的速率,范围为0-100。

8.5 高级行驶控制

(1)车轮控制命令(如表6所示)

表6 车轮控制命令表

指令:MS

(2)刹车控制命令(如表7所示)

表7 刹车控制命令表

指令:MB

参数:第一个字节的数值表示右前轮是否刹车,1表示刹车;第二个字节的数值表示左前轮是否刹车,1表示刹车;第三个字节的数值表示左后轮是否刹车,1表示刹车;第四个字节的数值表示右后轮是否刹车,1表示刹车。

8.6 测距传感器

(1)获取测距数值命令(如表8所示)

表8 获取测距数值命令表

指令:SG

参数:无

返回:整型值,表示当前测距数值。

8.7 行驶信息

(1)获取当前车轮速率命令(如表9所示)

表9 获取当前车轮速率命令表

指令:VG

参数:第一个参数的数值表示车轮类型,1表示右前轮、2表示左前轮、3表示左后轮、4表示右后轮。

返回:第一个参数表示转动方向,1表示正转、0表示反转;第二个参数表示转动速率,范围为0-100。

结束语:本文通过STM32F303系列MCU作为主控器,整体构建了人工智能小车底盘控制系统。系统内置了针对步进电机的高性能动态细分驱动算法,步进电机来驱动步进电机从而带动麦克纳姆轮小车进行平面内的全向移动,并对算法优化实现低速下的细分驱动以及高速时的方波驱动,进行无缝切换,以同时实现低速低噪声与高速大扭矩的效果,同时,通过独立的IIC通讯控制接口,实现高速实时响应主控系统的下发命令并执行,大大的提高了底盘控制系统的性能。

猜你喜欢

车灯字节刹车
No.8 字节跳动将推出独立出口电商APP
南非的车灯会说话
No.10 “字节跳动手机”要来了?
简谈MC7字节码
车灯
STP与无线调车灯显设备结合技术探讨
为什么突然刹车时人会向前倾?
还有94分
刹车系统:跑得快也要刹得住
刹车边遇到爱