基于STM32的灭火机器人设计
2017-10-16姚蕴珍
姚蕴珍
【摘要】 本文以灭火机器人为研究对象,对该机器人的设计原理、主要思路以及实现方案做了详尽说明。灭火机器人要求能够在一间平面结构房子模型里运动,找到一根蜡烛并尽快将其熄灭。机器人主要由STM32F103微控制器、声音接收模块、火焰传感器模块、避障传感器模块、灭火模块、电机及电机驱动板组成,利用传感器组采集环境信号控制机器人的行动。机械结构为一个三轮小车,其中有两个较大的主动轮和一个较小的从动轮。两个主动轮所用的步进电机由TB6560电机驱动板控制带动。灭火算法由火焰传感器和避障传感器所感应到的信号判断运动方向和火焰位置,寻找到火源后利用风扇灭火。实验表明,该机器人行动灵活快速,具有很高的准确性和稳定性。
【关键词】 智能车 灭火 嵌入式
一、背景介绍
现在社会各种危险场所火灾频繁发生,火灾及时补救已成为亟待解决的问题。由于消防员在时间和人身安全方面存在的一些局限性,灭火机器人的理念应运而生。本文针对基于STM32的灭火机器人系统进行设计,以STM32F103嵌入式芯片为核心,完成灭火机器人的软、硬件设计。
二、总体思路
总体上,在机器人的设计中遵循稳中求快的基本原则。灭火机器人采用声音启动方式,车顶部装有一个声音接收模块,将接收到的固定频率的声音信号输送给主控芯片,控制小车启动。小车采用后轮驱动,车前方中间有一个万向轮从动。左右后轮各用一个直流步进电机驱动,通过控制两个轮子的转速达到前进和转向的目的。车体前侧半周装有红外避障传感器可以避免碰撞墙壁。车体前部两侧装有两组火焰传感器,通過火焰传感器检测火焰信号输送给主控芯片来控制小车的前进方向,自动寻找火源;当接近火源时,小车前侧底部的灰度传感器将信号传送给主控芯片以启动灭火程序。小车采用风扇灭火,灭火完成后执行回家程序。小车运动的控制是通过初始化PWM输出,更改自动重装值来控制PWM周期,从而设定步进电机的旋转速度。
三、硬件系统设计
整个系统以STM32F103为核心,设计了声音接收模块、避障传感器模块、火焰传感器模块、灰度传感器模块、电机驱动模块,同时辅助于一定的机械结构设计,使整个有机地结合在一起。
1、芯片。设计采用的主控芯片为 STM32。其特点:具有128K字节的可编程 Flash、 20K字节的片内SRAM 数据存储器、1024 个字节的片内在线可编程 E2PROM 数据存储器(含 JTAG 接口)、2 个分别独立可设置预分频器的 8 位定时器/计数器、一个 16 位定时器/计数器、4 个通道的 PWM输出、2 路 24 位 ADC、64 个可编程的 I/O 口(低功耗、最高工作频率为 16MHz)。
2、电源模块。驱动电路板中的电源模块为系统其它各个模块提供所需要的电源。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。本次采用外接线的方式,通过开关电源为系统提供12V 电压,避免了在调试过程中锂电池电压不足的情况。其中,直流减速电机采用12V 电压供电,对于单片机系统及传感器所需要的 5V 电压,采用集成 LM2596DC-DC 稳压芯片将 12V 电压降至 5V 以满足其供电要求。电源管理如图所示:
3、传感器模块。机器人能否顺利检查每个房间火源情况,准确找到火源并熄灭,关键取决于传感器。因此该系统设计选用红外避障传感器,远红外火焰传感器和地面灰度传感器,来实现传感器模块设计。采用 E18-D80NK 红外避障传感器,它是一种集发射与接收于一体的光电传感器。发射光经过调制后发出,接收头对反射光进行解调输出,有效避免了可见光的干扰。通过调节尾部的电位器旋钮,该传感器可以检测前方 3~80cm 的障碍物。该传感器具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点。广泛应用于机器人避障、流水线计件等众多场合。此外,本设计还用到了灰度传感器和火焰传感器。
四、软件系统设计
系统软件采用C语言编程,主要包括主程序、电机模块、时钟模块、声音模块、避障模块、灰度模块、寻房模块、检火模块、灭火模块和回家模块等部分。主要用到的算法有右手法则沿墙走算法和趋光走算法。首先,机器人通过避障传感器模块获取环境情况,利用右手法则找到第一个房间。通过PWM输出的电脉冲信号控制步进电机的角位移来控制小车的速度。而后,小车通过灰度传感器检测到房间入口,而后利用火焰传感器模块对房间进行火焰检测。如果未检测到火焰,则掉头继续寻找下一个房间;如果检测到火焰,则进入房间探测火焰位置,靠近火焰,灰度传感器检测到白线时,启动灭火模块进行灭火,灭火时小车左右摇摆确保火焰能扑灭。灭火后利用火焰传感器进行火焰检查,确认火焰完全熄灭后退房,最后,小车按照火焰所在的特定房间的回家路线回家。
五、问题与总结
在设计过程中可以发现,步进电机的速度与直流电机相比更难提高速度,需要单独设计程序来控制,否则很难达到与直流电机相比理想的行进速度。为此提出如下解决方案:(1)提高PWM的输出频率来提高步进电机的速度。(2)重新在电机驱动模块加入转弯、旋转较小角度的程序,来提高小车行进的准确性,如旋转45度、30度等。
参 考 文 献
[1] 绍贝贝. 单片机嵌入式应用的在线开发方法[M]. 北京:清华大学出版社.2004.10
[2] ST.STM32F103_x6x8xB数据手册,2009.
[3] 杜刚,电路设计与制板:Protel应用教程[M].北京:清华大学出版社,2006.
[4] 许中大. 电机控制[M]. 杭州:浙江大学出版社,2002
[5] 李朝青. 单片机原理及接口技术[M].北京:北京航空航天大学出版社,1994.3