本设计的研究初衷来源于灭火机器人比赛,比赛场地将采用国际标准比赛场地,比赛场地平面图如图1所示。比赛场地的墙壁高为33cm,厚为2 cm,由木头做成。墙壁刷成白色。比赛场地的地板是被漆成黑色的光滑木制板。场地中所有的走廊和门口都是46 cm的开口,一个白色的2.5 cm宽的白色带子或白漆印迹表示房间人口,在距离火焰30 cm的圆上有一条2.5 cm宽的白线。根据要求,该机器人要在模拟的四室一厅房间内完成发现并确认火源、灭火和回家(回到出发点H)等功能。
图1 灭火机器人设计模拟场地
本文以STM32F103嵌入式芯片为核心,完成灭火机器人的软、硬件设计。当机器人启动后,前部和左右的红外测距传感器为机器人的避障功能和沿墙走方式 提供参考信号。机器人的运动速度以及运动方向由处理器输出的PWM信号来控制。火焰传感器检测房间内火源,发现火源后机器人朝向火源方向行走,底部的灰度 传感器检测地面白线判断机器人是否靠近火源,控制机器人暂停,启动风扇灭火,灭火后回家。
1 系统硬件设计
根据设计要求,本系统主要由STM32F103、传感器模块、直流电机驱动模块、风扇模块、电源模块等构成。系统框图如图2所示。
图2 灭火机器人系统硬件设计框图
1.1 机器人整体布局
机器人左右两轮分别用两个转速和力矩完全相同的直流电机进行驱动,机器人前部装一个万向轮,这样,可以轻松地使机器人改变运行方向和运动速度。机器人前面装有风扇、火焰传感器和红外传感器,头部底侧装有灰度传感器,左右两侧各有3个红外测距传感器,两侧的传感器可以分别测量不同范围内的障碍物距离。
1.2 微控制器模块
系统传感器模块要不断采集环境信息,要求控制芯片有较高的实时处理能力和较高的处理速度,因此,系统选用嵌入式芯片STM32F103该芯片使用ARM先进架构的Cortex—M3内核,CPU频率可达72 MHz,具有两个16位ADC用于高速采集数据采集,15个I/O端口用于连接外部设备。I/O端口作为输入口读取检测端口和传感器组的数据,作为输出端口用于驱动电机和风扇。4个PWM定时器用于驱动大功率直流电机。芯片具有速度快、功耗低、可靠性高、实时性强等优点。
1.3 传感器模块
传感器模块主要由红外测距传感器、火焰传感器和灰度传感器三类组成。
红外测距传感器主要检测障碍物(墙壁),防止机器人撞墙。本设计采用光电式红外传感器E18-D80NK,它是集红外发射模块和红外接收模块于一体的数字传感器,有效检测范围为3~80 cm可调,指向角≤15°。根据比赛场地特点,本设计采用7个此类传感器,这样的传感器布局可以采集所需的各种信号,准确测障,灵活调整运行方向,保证机器人运动过程中不碰壁。传感器的分布如图3所示。
图3 灭火机器人传感器模块
火焰传感器用来检测火源,寻找火源位置。采用5路火焰传感器组成火焰传感器组,传感器组的设计如图4所示,这种结构可以探测180°范围内火焰信号源。机器人在房间门口就可检测房间内是否有火源,若无火源则直接退出该房间循迹下一个房间,大量节省了时间。
图4 灭火机器人火焰传感器
地面灰度传感器安装于机器人前部的底座上,用于检测地面反射光线的强度。本设计选用QTI灰度传感器,该器件可作为红外接收器和发射器,内嵌日光过滤器,可防止日光的干扰。其数字信号输出主要用来检测比赛场地中火源周围的白线,控制机器人在有火源的白色圆弧处暂停。
1.4 电机驱动模块
为了控制机器人的运动速度和方向,设计了一种H桥驱动电路。该电路以IRF4905和IRF3205 MOS管为开关元件,以IRF1210为栅极驱动芯片。主控芯片产生的PWM信号控制驱动芯片,进而控制机器人左右轮的转速和万向轮的转向。驱动电路的电路图如图5所示。灭火风扇的电机采用大功率MOs驱动器,由伺服电机输出端的信号驱动。
图5 直流电机驱动模块电路图
1.5 其他模块
为保证系统正常工作和顺利灭火,系统还包括电源模块、时钟模块和风扇模块。以电源模块为例,电源模块通过专用的电源转换芯片7805产生传感器所需的5 V电源,通过LM1117产生主控制器所需的3.3 V电源。电源模块如图6所示。
图6 灭火机器人电源模块图
2 系统软件设计
系统软件采用C语言编程,主要包括主程序、运动控制程序、灭火程序和回家程序等部分,主要用到的算法有沿墙走算法和趋光走算法。在程序设计中,通过传感器采集信息,按照沿墙走算法控制机器人的行动,当发现火源后按照趋光走算法迅速、准确地靠近火源、灭火并回家。程序运行中应避免机器人碰撞障碍物(墙壁)。主程序控制流程图如图7所示。
图7 灭火机器人主程序控制流程图
机器人运动控制程序采用沿墙走算法,由ADC采样程序、电机开启、电机停止、电机速度和方向控制程序、延时程序等部分构成。通过红外测距传感器采集的信息,全方位地判断障碍物的情况,控制机器人的下一步运动方式,主要有直走、后退、左微调、右微调、左转弯、右转弯等。
机器人灭火程序主要完成火源的寻找、确认以及灭火任务并回家。在机器人检测到房间内有火源时,采用趋光走算法,根据火焰传感器组的状态,调整机器人运动角度,使其直面火源方向前进。当检测到房间内火源周围白线时,停止运动,开启风扇灭火;当检测不到火源时,灭火成功。最后,启动回家模式,该模式采用沿墙走避障算法。
该软件系统具有很大的灵活性,因为各程序是分模块设计的,当比赛规则改变时,只需通过主程序调用不同的模块即可完成新的任务。
3 结果与分析
对本系统进行性能测试,测试中首先对电机进行测试,电机在正常工作电压下,调整软件系统的PWM控制值,可以实现电机的调速、直行前进、后退、左微转、右微转、左转90°和右转90°等功能。然后对机器人在比赛场地进行灭火实验,共进行30次实验,随机地把点燃的蜡烛放在各个房间的指定位置。机器人都能顺利地找到火源,灭火回家且所用时间均在1 min之内,试验中没有出现碰壁现象。此数据表明机器人能平稳地按照靠墙走原则完成任务。整个系统具有很快的响应速度、较高的稳定性和较强的抗干扰能力。