基于STM32的运输机器人小车设计
2022-11-12陈桐焕赖忠喜金炜翔
陈桐焕 赖忠喜 金炜翔
(台州职业技术学院机电工程学院 浙江省台州市 318000)
1 引言
2021年浙江省第五届机器人竞赛中的运输机器人对抗赛比赛场地如图1所示,大小为4000×3200mm,场地地面喷涂了黑色哑光漆,并粘贴了若干宽为30mm的白色引导线,引导线围成的基本方格边长是400mm。场地上有11个黄色的圆环和两种颜色的增益环。竞赛分三轮,其中第一轮是在没有对手的情况下上场比赛,当在一分区、二分区和三分区分别收集到两个圆环时,即取得满分完成搬运任务。在第二、三轮竞赛中,要求在4分钟的比赛时间内,各队需要尽可能多的收集场上的圆环到本队的收集区,最后总分高的一队胜出。
图1:运输对抗场地示意图
2 小车整体方案设计
浙江省大学生机器人竞赛要求设计的运输机器人小车具有自主直线循迹、左右转弯90度、路径规划、抓取圆环、把圆环套在杆子上和推圆环等功能。根据此要求,对小车各模块进行设计,图2为运输机器人小车的整体结构框图,小车由主控模块、PWM电机驱动模块、传感器模块、动作执行模块、DC/DC电源模块、聚合物锂电池、键盘模块和OLED显示模块等构成。小车的底板材料采用5MM的亚克力板,在动力方面采用四个24V900转(最大扭矩为120kg.cm)的直流电机,轮胎采用直径为55MM摩擦力大的驼峰胎,传感器模块由12路循迹传感器和2路激光传感器所构成,其中12路循迹传感器用于小车直线循迹,前后2路激光传感器用于小车左右转90度。聚合物锂电池选用14.8V(4S)3300MAH的航模电池。采用三自由度的舵机机械臂来完成抓圆环和套圆环的任务,采用两个舵机和两块自制亚克力板来完成推圆环的任务。小车在工作时,STM32主控模块会根据循迹、激光等传感器采集的信息,给电机、舵机等模块下发指令并使其完成相应动作,从而完成圆环的收集任务。
图2:运输机器人小车整体结构框图
3 小车硬件设计
3.1 主控模块的选择
运输机器人小车的主控模块采用STM32F103VET6单片机,该芯片是意法半导体推出的一款基于cortex-M3内核架构的ARM单片机芯片,具有实时性优异,外设丰富及价格低等特点。STM32F103VET6单片机最高工作频率可达72Mhz,内部有512Kflash和64k RAM等,集成了80个I/O口,8个定时器(每个定时器有4个PWM通道),2个IIC接口,3个USART串口等资源,可满足设计要求。
3.2 DC/DC电源模块的设计
该机器人小车以14.8V航模锂电池作为电源,直接给PWM电机驱动模块提供电源,其它模块所需要的供电电源为5V和3.3V,其中5V主要为传感器模块和舵机提供电源,3.3V主要为STM32单片机、键盘模块和OLED显示器提供电源,14.8V转5V的转换芯片采用TI公司生产的LM2596S-5.0稳压器。该芯片是降压开关型集成稳压芯片,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性,只需要极少的外围器件便可构成高效稳压电路。5V转3V的转换芯片选用LDO稳压芯片XC6209B33,该芯片体积小巧,带负载能力强劲,具有高纹波抑制和低输入输出压差的特性,即使负载变化也能保证电路稳定的工作。
3.3 传感器模块的设计
传感器模块由12路红外循迹传感器和2路的激光传感器所构成,红外循迹传感器采用了红外反射式传感器ST188,如图3所示为1路红外循迹传感器电路原理图。其中R1为限流电阻选取600欧姆,由于单个传感器在检测过程中会出现较大的死区电压,因此在该传感器后加上电压比较器当作辅助电路,通过改变R33滑动变阻器的大小就可以改变ST188的测量灵敏度。激光传感器采用纳茵特激光传感器,其具有测量速度快、精度高和抗干扰能力强等优点,2路激光传感器分别安装在小车的正前方和正后方,主要用于检测小车左右转90度是否到位。
图3:1路红外循迹传感器电路原理图
3.4 PWM电机驱动模块的设计
PWM电机驱动模块采用英飞凌的BTN7971驱动芯片,BTN7971是大功率集成半桥驱动芯片,在单一封装中集成了PMOS和NMOS高低侧功率开关以及门驱动器,还集成了逻辑控制电路和一些保护检测功能,具有大电流、低阻抗、驱动能力强、高性能、发热小等众多优点,并且电路简单,容易布局连线。本设计中,小车左边两个电机由两片BTN7971B芯片组成的一个全桥驱动电路来进行驱动,右边两个电机驱动电路与左边完全相同。
PWM电机驱动电路原理图如图4所示,图中OUT_1和OUT_2接到直流电机的两端,BTNL_EN、PEML_1和PEML_2引脚都接到STM32单片机I/O口上,其中BTN_EN为使能端口,当其端口为低电平时芯片就进入休眠状态停止工作,当该端口为高电平时,则驱动芯片正常工作,PEML_1和PEML_2为控制信号,两者配合使用,当PWML_1设置为高或低电平信号时,分别表示对电机进行正反转控制,PEML_2是脉冲宽度调制信号,STM32单片机会根据PID控制算法来调整其输出脉冲占空比的大小,从而达到调整电机转速的目的。在锂电池的电源与地之间接100UF和100NF的电容,用于滤除电源的杂波和交流成分,减少电机造成的抖动。
图4:PWM电机驱动电路原理图
3.5 其它模块的设计
动作执行机构的舵机全部采用jx6221大扭矩金属齿轮数字舵机,其具有控制精度高和响应速度快等优点,该舵机工作电压为4.8-6.0V,转动角度为180°,死区设定为2um,尺寸为40.5×20.2×38 mm,重量62g,在工作过程中,STM32单片机通过TIM3的 4个通道和TIM4的第1个通道输出PWM波来控制5个舵机的动作。
键盘模块是由三个独立按键和三个电阻所构成,STM32单片机通过I/O端口电平的高低来判断按键是否按下,通过按不同的按键,小车可以选择不同的控制程序,从而确保小车在第二、三轮运输对抗赛中获胜。OLED显示模块采用0.96寸的OLED液晶显示器模块,通过I2C接口与主控模块实现通信,用于显示各种调试信息和运动状态信息等。
4 小车软件设计
本系统以KEIL uVision5作为程序编程软件,采用模块化的编程方法来编写具体的程序代码,运输机器人小车软件设计主要包括硬件底层功能子程序和机器人执行动作子程序,具体设计的函数如图5所示。在图5所编写的函数基础上,根据不同的路径规划和控制策略编写不同的控制程序,来完成相关的比赛任务。
图5:运输机器人小车软件设计框架
4.1 直线循迹函数
运输机器人小车直线寻迹函数使用PID 闭环控制,其编程思路如下:
首先对每一路循迹传感器赋予一个偏差值,如图6所示。
图6:循迹传感器赋予的偏差值
其次对每一路循迹传感器进行采集,若循迹传感器检测到白线时,就将对应的偏差值加到总的偏差值上,并将检测到白线的循迹路数加1,若循迹传感器检测到黑线时,则不做任何处理,当12路循迹传感器采集之后再将总的偏差值除以检测到白线的循迹传感器总路数作为PID控制的当前偏差值。
最后通过PID算法调整左右轮的转速,使小车在偏离直线时能够准确且速地返回预定轨迹。具体程序如下所示。
4.2 直行n个路口停止函数
直行n个路口停止函数编程思路为:小车若没有检测到十字路口,则一直循迹走直线,当检测到十字路口时,为避免误判断,延时10MS再次判断是否在十字路口,如果小车还在十字路口,小车继续循迹走直线,一直当小车走出十字路口为止,如果小车不在十字路口,则表示小车已经走过了一个路口,然后通过do…while语句依次循环走完n个路口再停止。具体程序如下所示。
图7为运输机器人小车实物图。
图7:运输机器人小车实物图
5 总结
本文设计并制作了一辆运输机器人小车,包含实现直线循迹、左右转90度、圆环抓取与搬运等功能的软硬件设计,经反复调试及算法优化,该小车能够在60.5S时间内完成第一轮竞赛的全部圆环收集任务。可为其它运输搬运小车提供参考。