董靖川, 张 朝, 温 洋, 窦一喜, 赵鹏飞, 王 星
(天津大学 机械工程学院, 天津 300354)
基于STM32的低碳避障实验小车电控设计
董靖川, 张 朝, 温 洋, 窦一喜, 赵鹏飞, 王 星
(天津大学 机械工程学院, 天津 300354)
采用单片机为核心的控制电路实现智能避障和能量管理。电控部分以STM32F103C8T6型32位ARM单片机为核心,配置了转向舵机、离合器舵机作为执行元件,并通过超声波传感器组、光电测速传感器、MEMS陀螺仪作为反馈元件,控制小车运行的轨迹和速度。充分利用STM32单片机内置的硬件定时器、USART及中断功能实现了舵机的PWM控制及超声波测距、陀螺仪读数、测速等功能。测试表明,低碳避障实验小车的电控装置原理直观、接口丰富、编程方便、操作简单、运行可靠,能够满足机电工程类课程的创新实验和工程实践的教学需求。
低碳小车; STM32; 超声波测距; 舵机
智能避障小车系统属于一种简单的轮式机器人[1],可广泛应用于物流运输[2]、室内清洁[3]、环境监测[4]、目标搜寻[5]等各种工业及日常生活场合。智能避障小车需要实现环境信息的自感知、行为决策、路径规划、自动驾驶等功能,并且涉及到机械设计、传感器、电机、电路、自动控制、通信等方面的技术,属于典型的智能化的机电产品。
本文研究的自动控制低碳避障实验小车是一种以重力势能作为唯一前进驱动力的新型智能控制实验装置,符合绿色、智能的现代机电产品设计理念。该平台可以作为机械电子、自动化等相关专业高年级本科生的课程设计及综合实训的课题内容,使专业知识得到综合应用。小车的电控系统采用32位ARM为核心的单片机实现全数字控制,配备超声波传感器、光电测速传感器、MEMS陀螺仪、转向舵机、离合器舵机等测控元器件,可以实现小车的全自主避障行驶及能量管理。
低碳避障实验小车整车采用3轮结构,整体结构如图1所示。车辆前部的小轮是转向轮,后部的2个大轮中有一个是主动轮(驱动轮),另一个是从动轮。车辆行驶能量由车辆上方悬挂的1 kg重物的重力势能提供,经滑轮系传动,产生驱动力矩。后轮轴上安装有单向轴承超越离合器[6],可以通过棘轮和离合器舵机的作用,选择是否将驱动力传递到驱动轮上。具体原理:当离合器舵机杆与棘轮没有接触时,重物可以下落,并将驱动力矩通过单向轴承传递给主动轮,小车加速;当离合器舵机转动,使舵机杆卡住棘轮时,重物停止下落,此时单向轴承不再传递扭矩,小车依靠惯性行驶。车辆前部转向轮由转向舵机控制转角,实现车辆自动转弯。
为实现障碍探测,在小车前方安装有6个超声波测距传感器,组成超声波传感器组,其水平面上的分布如图2所示。其中正前方平行安装2路、左右垂直方向各安装1路,左右45°各安装1路。小车主动轮轴上安装有光电测速码盘,通过光电传感器实现测速。此外控制板上还安装有微机电(MEMS)陀螺仪,用于提供车辆转角、速度信息。控制电路由6节AA型干电池供电,控制电路和电池安装在小车底盘中央附近。
图1 小车结构示意图
图2 超声波传感器组的布置
小车的电控系统硬件功能框图如图3所示。控制电路核心采用基于32位ARM Cortex-M3核心的STM32F103C8T6单片机,采用LQFP48封装,内含64 KB Flash和20 KB SRAM存储器,主频可达72 MHz,并集成了丰富的片上外设[7]。该单片机采用3.3 V电压供电,IO管脚能够承受5 V电平,因此可以方便地连接各种5 V或3.3 V电压的电路模块。电池输出经过电源转换电路转换为3.3 V为单片机供电。按键、LED 指示灯连接到单片机的通用输入/输出(GPIO)管脚进行访问。程序下载接口采用SWD串行模式,接线少、速度快,既可实现程序下载,也可进行在线仿真调试。时钟采用外部8 MHz石英振荡器,由复位及时钟控制模块(RCC)的锁相环(PLL)电路产生72 MHz主频,实现高性能程序处理。2台舵机采用定时器TIM3的通道1、2的脉冲宽度调制(PWM)模式进行角度控制。测速编码器信号采用定时器TIM2的外部脉冲计数功能实现。超声波传感器选用了数字接口形式,由GPIO管脚进行控制。MEMS陀螺仪模块带有串行接口,连接到单片机的UART1接口上进行读写。由于充分利用了单片机自带的片上外设,因此主控板电路结构简单、工作可靠且成本较低。
图3 电控系统硬件功能框图
舵机是一种伺服电机,可以实现电机角度的位置控制,从而实现转向,广泛应用于智能小车、机器人、航模等领域。舵机结构一般包含小型直流电机、减速齿轮组、舵盘、位置反馈电位计、控制电路等,可以构成完整、紧凑的闭环位置伺服系统。在本文的避障实验小车中,舵机用于转向轮方向以及单向轴承离合器的控制。
常用舵机采用脉宽调试(PWM)信号控制,旋转角度范围为180°。PWM信号周期为20 ms,脉冲宽度为0.5~2.5 ms,对应舵盘0~180°转角[8],如图4所示。舵机的控制电路将PWM信号脉冲宽度作为指令,转化为电压信号,与位置反馈电位计的电压进行比较,获得偏差大小,放大后驱动电机向减少偏差的方向运动,实现定位。STM32系列单片机的定时器具有PWM工作模式,可以直接由硬件产生舵机的PWM控制波形。本设计采用TIM3定时器的输出通道1和输出通道2产生PWM控制信号。
图4 舵机PWM控制波形
超声波测距传感器的原理:通过超声波发射器向某一方向发射超声波,超声波遇到障碍物后发生反射,返回到超声波传感器。当声波在空气中的传播速度已知的情况下,通过检测超声波发射与接收间的时间间隔可以计算出超声波传播距离,从而获得传感器与障碍物间的距离。超声波测距具有方向性好、非接触式测量、适用的反射材质广泛等优点,广泛应用于各类距离测量仪器、避障机器人及汽车倒车雷达等场合。
低碳智能避障小车采用6个SR-04型超声波传感器模块组成超声波传感器组,检测多个不同方向上的障碍物,为智能避障决策算法提供依据。SR-04测距模块测量范围为2~400 cm,精度可达3 mm,含有完整的超声波发射器、接收器和控制电路。该模块与单片机连接时只需要“触发(TRIG)”和“回响(ECHO)”2个IO信号,时序如图5所示。具体流程:单片机GPIO口产生一个持续时间10 μs以上的TRIG高电平信号,触发SR-04模块启动一次检测;SR-04模块发送8个频率40 kHz的超声波脉冲信号,同时对返回信号进行检测;若有超声波信号返回,则ECHO口输出一个高电平,高电平持续时间为超声波发射到返回的总传播时间,单片机可对高电平时间进行测量。假设检测到ECHO信号高电平时间为techo,声速为vs(15 ℃下约为340 m/s),则测试距离d为[9]
d=(techo×vs)/2
图5 超声波测距时序
本文的避障小车前进速度采用对射式红外光电传感器和自制的光栅码盘实现测速。槽型红外光电传感器一端发射红外信号,另一端接收该信号,若槽内红外光线没有遮挡,则传感器输出低电平;若遮挡槽内光线,则输出高电平。自制的圆形光栅码盘采用不透明材料,沿圆周附近等间隔加工一圈镂空光栅,码盘同心安装在后主动轮轴上,并使光栅部分插入红外光电传感器的槽中。当后轮转动时,光栅使红外光线不断遮挡/透过,则通过传感器检测、整形后,输出一串频率与转速成正比的脉冲信号。通过对该脉冲信号频率进行测量,即可换算得到小车前进的实时车速。
微机电(MEMS)陀螺仪模块以MPU-6050传感器为核心,并带有串口输出功能,可以方便地与单片机接口。MPU-6050传感器集成了先进的3轴陀螺仪、3轴加速度计以及数字运动处理器(DMP)硬件加速引擎。模块内部集成了姿态解算器和卡尔曼滤波算法[10],能够在动态环境中稳定输出三维的加速度、角速度、姿态角数据。加速度量程和分辨率分别为±16g和6.1×10-5g,角速度量程和分辨率分别为±2000°/s和0.007 6°/s,姿态测量稳定度为0.01°。
在智能避障小车中,陀螺仪模块可用于惯性导航,与单片机UART1串口连接。模块每帧数据含有3个数据包,分别为加速度包、角速度包和角度包。每个数据包10个字节,含有包头、数据标识、数据、校验和等部分。当串口波特率设定为115 200时,每隔10 ms发送一个数据帧,数据输出刷新频率可达100 Hz。
STM32系列单片机片上外设丰富、功能多样、寄存器繁多,手工编写驱动程序相对复杂。STM32CubeMx软件是ST公司为STM32系列单片机开发的一套图形化配置工具[11],只要通过参数化的图形界面进行简单的配置,即可以自动生成C语言的驱动程序,含有所有初始化及标准功能使用的软件编程接口(API),从而大大提高了开发速度,驱动代码也可更加清晰、可靠。本文所述的小车控制器驱动程序借助STM32CubeMx工具设计、配置。
在STM32CubeMx工具中首先选择控制板所用的单片机型号STM32F103C8T6,软件会自动进入配置画面,显示单片机管脚功能信息,同时在左侧用树形列表列出片上外设的配置情况。需要设定的单片机基本配置包括:RCC模块的高速时钟(HSE)配置为外部晶振;SYS模块的DEBUG选项设置为Serial Wire串行模式,以支持SWD接口的程序下载及调试。另外,在时钟配置画面中,需要输入外部晶振频率8 MHz、系统时钟频率配置72 MHz、APB1外设36 MHz、APB2外设72 MHz、定时器模块时钟72 MHz,其他参数由系统自动计算即可。
外设配置方面,将定时器TIM2的时钟源设定为外部时钟ETR2模式,作为测速传感器输入,计数模式为增计数器,计数周期为0xFFFF。将定时器TIM3的CH1 和CH2通道设定为PWM模式,作为2台舵机的控制信号。将计数模式设定为增计数,预分频器(PSC)设定为71,使定时器基准频率为1 MHz(周期为1 μs),计数周期设定为19999,即PWM周期为20 ms,同时开启TIM3中断,作为20 ms周期实时控制程序入口。在软件中,设置TIM3脉冲宽度为1 500~2 500,对应1.5~2.5 ms的高电平时间,使舵机在0~180°范围旋转。TIM4设定为内部时钟,预分频为71(1 MHz),周期为0xFFFF,作为测量超声波传感器ECHO高电平信号持续时间的基准,分辨率为1 μs。USART1配置为异步模式,按照MEMS陀螺仪模块设定波特率为115 200,字长8位,无校验,停止位1位。与超声波传感器TRIG信号相连的管脚需要设定为GPIO的输出模式,与ECHO信号相连的管脚设定为GPIO的EXTI中断信号输入模式,设置为下降沿触发的中断。与按键、LED相连的管脚分别设定为普通的GPIO模式。完成上述配置工作后,点击Generate code选单即可完成C语言代码的自动生成。
在STM32CubeMx生成的代码基础上封装了一层接口以便于程序编写。主要内容有:
(1) 初始化函数。将SR04超声波传感器模块的TRIG信号置为低电平,启动3个定时器。
(2) 舵机输出函数。输入参数为舵机期望的旋转角度,自动计算出对应的PWM高电平时间并更改TIM3对应通道的比较寄存器数值。
(3) 超声波触发函数。拉高对应组的TRIG信号15 μs,然后等到ECHO信号由低变高,记录TIM4当前值作为ECHO信号上升沿时刻,并打开ECHO管脚的EXTI中断。
(4) 超声波中断函数。进入此函数表明ECHO信号下降沿到来,记录TIM4当前值作为ECHO下降沿时刻,并与ECHO信号上升沿时刻进行比较,得到超声波传播时间。
(5) 超声波距离计算函数。根据测量的超声传播时间(单位μs)计算障碍物距离(单位ms)。
(6) 测速函数。周期调用此函数,读取TIM2的计数值,根据2次计数值得差可以得到单位时间的脉冲数,再转换为小车的前进速度。
(7) MEMS陀螺仪函数。对UART1接收的数据包,进行校验,转换,获得小车三维加速度、速度、角度信息。
低碳避障实验小车的实时控制程序包含背景任务程序和中断处理程序2部分。主程序在完成初始化工作后,在无限循环中不断调用执行背景任务程序。由于背景任务程序优先级最低,随时可能被中断处理程序打断,因此适合执行非实时性的事务处理,如按键、LED的交互等。中断处理程序包含串口接收中断和实时控制终端。串口接收中断用于接收MEMS陀螺仪模块的数据包,每次接收一个字节并存入接收缓冲区内,供实时控制中断读取。实时控制中断是最核心的实时任务,基于TIM3定时器的PWM周期溢出中断,也就是每间隔20 ms进入一次该中断,并完成一次控制流程,其流程如图6所示。实时中断首先获取各个传感器获得的测量结果,然后调用用户编写的控制算法,实现避障、导航、能量管理等功能,并计算出舵机的角度指令,最后更新舵机的PWM输出数值。实时中断是周期执行的,因此可以在小车行进过程中实现连续的实时控制。
图6 实时控制中断流程
低碳避障实现小车电控平台具有丰富的传感器和强大的运算能力,可以灵活设计不同的控制算法实现各种任务。实验小车的功能的实现如下:
(1) 小车能量管理。由于驱动小车的重物的重力势能有限,为了延长小车行进距离,需要进行能量管理。设定2个临界速度v1和v2,且v1 (2) 避障。超声波距离传感器可以探测到各个方向上障碍物的距离,某个方向上探测到障碍物距离比较近,则小车向相反方向转向以避开。 (3) 导航。已知初始位置和方向,根据行驶过程中陀螺仪的角速度、角位移及行驶距离,可以计算小车的行进轨迹,从而实现惯性导航[12]。 (4) 沿墙行驶。设定一个与墙壁固定的距离,通过小车侧面的超声波传感器测量到墙壁的距离,与设定的距离进行比较得到距离偏差,调整转向轮角度以减少偏差。 将各种功能综合应用还能够实现各种更加复杂的任务,例如跨越坡道、搜索、清障、图形绘制等。测试表明,该电控系统功能丰富、编程灵活、工作可靠、操作简单,可以在大学生创新训练及工程实践等教学中推广使用。图7是低碳避障小车的实地测试场景。 图7 低碳避障小车测试 针对重力驱动的低碳实验小车的自动行驶需求,设计了一种以高性能的STM32F103C8T6型单片机为核心的电控装置。电控系统配置了转向轮舵机、离合器舵机、超声波传感器组、光电测速传感器和MEMS陀螺仪。充分利用单片机的硬件定时器、计数器、PWM、外部中断、USART等功能实现了与各传感/执行元件的接口。根据各模块的工作原理设计了控制器的硬件驱动程序,并在此基础上,构建了实时控制程序框架。实际测试表明,该电控装置原理直观、接口丰富、编程方便、操作简单、运行可靠,能够适应多种不同控制任务的要求。在教学中的应用表明,这套实验系统可以激发学生的兴趣,综合应用机电专业知识,可以满足创新实验和工程实践的需求。 References) [1] 余炽业,宋跃,雷瑞庭. 基于STC12C5A60S2的智能循迹小车[J]. 实验室研究与探索,2014,33(11):46-49, 121. [2] 赵韩,尹晓红,吴焱明. 非完整约束AGV轨迹跟踪的非线性预测控制[J]. 中国机械工程,2011(6):681-686. [3] 曾岑,陈进,蒋玉杰. 智能型室内清洁机器人的研究和发展探析[J]. 机械制造,2008(10):63-67. [4] 高宁,彭力,陈凯健. 粮仓环境检测智能巡检小车研制[J]. 现代电子技术,2010(1):153-155, 159. [5] 刘鹏飞. 基于无线传感器网络的声源目标搜寻多机器人系统[D]. 哈尔滨:哈尔滨工业大学,2010. [6] 李鹏,扈文庄,曾莉. 单向离合器轴承的工作原理及应用[J]. 轴承,2001(9):10-12, 47. [7] 杨伟,肖义平. 基于STM32F103C8T6单片机的LCD显示系统设计[J]. 微型机与应用,2014(20):29-31, 34. [8] 韩庆瑶,洪草根,朱晓光,等. 基于AVR单片机的多舵机控制系统设计及仿真[J]. 计算机测量与控制,2011(2):332-334, 349. [9] 张伟,陈迎,韩丽娜,等. 智能小车系统的设计[J]. 实验室研究与探索,2011,30(9):53-57, 62. [10] 陈晨,赵文宏,徐慧鑫, 等. 基于卡尔曼滤波的MEMS陀螺仪漂移补偿[J]. 机电工程,2013(3):311-313, 321. [11] 董靖川, 王太勇, 陆钢庆, 等. 基于Simulink的开放式伺服控制实验装置设计[J]. 实验技术与管理,2016, 33(9):126-129. [12] 黄洪加. 基于惯性传感器的室内惯性导航与定位系统[J]. 单片机与嵌入式系统应用,2015(2):7-9,43. Design on electric control for low-carbon and obstacle-avoiding experimental car based on STM32 Dong Jingchuan, Zhang Zhao, Wen Yang, Dou Yixi,Zhao Pengfei, Wang Xing (School of Mechanical Engineering, Tianjin University, Tianjin 300354, China) By using SCM as the core control circuit, the intelligent obstacle avoidance and the energy management are realized. The electric control system is based on the STM32F103C8T6 32-bit ARM SCM as the core. The steering gear and the clutch actuator are configured as the actuating elements, and by using the ultrasonic sensor group, photoelectric speed sensor and MEMS gyroscope as the feedback elements, the car running trajectory and speed are controlled. The functions such as the PWM control of the steering gear and ultrasonic distance measuring, gyroscope reading, speed measurement, etc., are realized by using the STM32 SCM built-in hardware timer, USART and interruptive function. The test shows that the principle of the electronic control device of the carbon-free obstacle-avoiding experimental car is intuitive, the interface is rich, the programming is convenient, and the operation is simple and reliable, which can meet the teaching needs of the innovative experiment and engineering practice for the mechanical and electrical engineering courses. low-carbon car; STM32; ultrasonic distance measuring; steering gear 2017-05-17 国家自然科学基金项目(51605328);江苏省工业装备数字制造及控制技术重点实验室开放研究基金课题(DM2015001);天津大学实验室建设与管理改革项目 董靖川(1983—),男,天津,博士,工程师,研究方向为机电一体化及数控技术. E-mail:new_lightning@aliyun.com 10.16791/j.cnki.sjg.2017.12.011 TP273 A 1002-4956(2017)12-0045-055 结语