本系统以 ATmega32 单片机为核心,它是一种基于增强 RISC 结构、低功耗的 8 位单片机,特点为:① 片内具有 32 KB 的可编程 Flash,2 KB 的片内 SRAM 数据存储器,1024 字节片内在线可编程 EEPROM 数据存储器;② 片内含 JTAG 接口;③ 外围接口——两个带有独立、可设置预分频器的 8 位定时器/计数器,一个 16 位定时器/计数器,四个通道的 PWM 输出,8 路 10 位 ADC,32 个可编程的 I/O 口;④ 低功耗,最高工作频率为 16 MHz。根据灭火比赛的规则要求,系统配以碰撞传感器、灰度传感器、火焰传感器和红外传感器,通过两路 PWM 控制两只电机以驱动灭火机器人,另外一路灭火电机由 I/O 口通过光电耦合器直接驱动。

图 1 系统总体结构
一、系统电源部分
系统采用单电源供电电路比较简单,但考虑到电动机起动瞬间电流很大,会造成电源电压不稳、影响单片机和输入电路工作的稳定性和可靠性,因此采用双电源供电方案,将电机电源和单片机电源完全隔离:单片机以及传感器电路使用 8 V 供电,电动机使用 12 V 供电。提高电动机的供电电压可以提高机器人的运行速度,从而提高灭火的成绩。
二、电机驱动部分
机器人需要控制在一个合适的速度行驶,在灭火过程中既要以较快的速度找到火源,又要防止因为碰撞而影响比赛成绩。小车的速度由两只直流电机控制,驱动芯片选用 L298:它是性能较优越的小型直流电机驱动芯片之一,可用来驱动两个直流电机或者双极性步进电机,在 6~46 V 的电压下可以提供 2 A 的额定电流,还具有过热自动关断功能和反馈电流检测功能。为保证 L298 正常工作,建议加装片外续流二极管,由 ATmega32 单片机直接输出两路 PWM 驱动 L298N:改变 PWM 调制脉冲占空比可以实现精确调速——脉冲频率对电机转速有影响,脉冲频率高则连续性好但带负载能力差,脉冲频率低则反之;通过 PD2 和 PD3 两根 I/O 口线控制电机的转动方向。

图 2 电机驱动电路
三、传感器部分
灭火比赛需要机器人在尽量不碰撞墙壁的基础上尽可能快地找到蜡烛并将火灭掉:在完成任务的过程中首先需要不碰撞墙壁,然后需要判断前方是否有火焰,在找到火焰后需要判断蜡烛旁边的白线;如果碰撞墙壁,需要机器人能检测出来并进行处理,否则就会发生机器人卡死的情况,那就不能完成任何任务。

图 3 红外传感器发射与接收电路
图 3 所示为红外传感器的发射和接收电路。红外发射管采用脉宽调制(PWM)驱动,工作在 38 kHz 的频率下,以减少发射电路的功耗;脉冲发生器由 NE555 构成,通过外部的电位器 R1 来调节占空比和脉冲频率。由于红外肉眼不可见,所以电路中加入一个 LED 指示灯来指示红外发射管是否在工作——该 LED 和红外发射管串联,当红外发射管正常工作时该 LED 灯会点亮。接收电路采用西门子公司生产的红外专用集成接收芯片 SFH506-38,它只有接收到 38 kHz 的脉冲波时才会起作用,内部集成了选频、滤波、放大电路,对外只有 3 个引脚:① 脚为信号输出端、② 脚为接地端、③ 脚为电源端,所以使用起来非常方便、效果比较理想。

图 4 灰度传感器电路
灰度传感器是模拟传感器,有一只发光二极管和一只光敏电阻,安装在同一面上。灰度传感器利用不同颜色的检测面对光的反射程度不同、光敏电阻对不同检测面返回的光其阻值也不同的原理进行颜色深浅检测。
火焰传感器是模拟传感器,它利用红外敏感型元件对红外信号强度的检测并将其转换为机器人可以识别的信号,从而来检测火焰信号。火焰传感器可以用来探测波长在 700~1000 nm 范围内的红外线,探测角度为 60°,其中红外线波长在 880 nm 附近时其灵敏度达到最大。碰撞传感器使用碰撞开关,通过 I/O 口可直接作为数字量输入。
四、LCD 显示及其它电路
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。这里采用 2 行 16 个字的 DM-162 液晶模块,通过与单片机连接、编程完成显示功能。

图 5 LCD 显示电路
本系统中采用了 US-100 超声波测距模块,可实现 2 cm~4.5 m 的非接触测距功能,拥有 2.4~5.5 V 的宽电压输入范围,静态功耗低于 2 mA,自带温度传感器对测距结果进行校正,同时具有 GPIO、串口等多种通信方式,内带看门狗,工作稳定可靠。遥控可以使机器人的操作更加方便,本系统中要通过智能手机遥控机器人,而智能手机的信号正是通过蓝牙发出,因此只需在机器人上安装蓝牙模块;由于机器人只接受数据、不发送数据,所以只需蓝牙的从机模块即可。系统采用了型号为 HC-06 的蓝牙模块,其中编号 06 就表示其为从机模块——在蓝牙模块的命名规则中,偶数命名的型号出厂时就确定了从机并无法更改,用户不可以自己切换主机或者从机,但可以通过 AT 指令集对蓝牙模块进行配置,AT 指令集较少,包括修改蓝牙名(限于从机)、修改密码、修改波特率、询问版本号等几个基本功能。