1 引言
在信息技术的飞速发展,计算机,通讯、消费电子三种技术合一的后PC的时代,虽然计算机和网络已经全面渗透到日常生活的每一个角落,但各种各样的新型嵌入式接入设备已经成为当前的主流产品。任何一个普通人都可能拥有几十种嵌入式技术的电子产品,小到手表、手机、mp3播放器、PDA等微型数字化产品,大到智能家电、网络家电、车载电子设备等都离不开嵌入式技术。作为嵌入式技术的一个重要的研究分支——机器人技术,目前在国内外研究的如火如荼,各种各样的工业机器人和服务机器人已经开始应用到人们的生产和生活当中,使用机器人的优势已经被人们广泛认可,并正在成为我们日常工作和生活的一部分。本文利用AT89S52设计了一种嵌入式智能寻迹机器人,在传感器、电机驱动和软件的控制下,能够智能地完成迷宫行走路线探测的任务,与传统的遥控玩具车相比,具有一定的独立性和智能性,是未来智能玩具车的一种雏形。
2 系统的硬件架构和工作原理
嵌入式智能寻迹机器人的硬件架构如图1。以单片机AT89S52为核心,外围由电机驱动模块、电机电源模块、主板电源模块、通讯模块、回避障碍模块以及在线编程模块等组成。红外光电传感器通过主板的P8、P9、P10接口连接到AT89S52的P0.5、P0.6和P0.7端口,其中P0.5 = 0,表示前方有障碍;P0.6 = 0 ,表示左方有障碍; P0.7=0,表示右方有障碍。左右电机通过主板的P5接口,连接到主板电机驱动模块。
上电后,通过传感器采集迷宫挡板的信号来控制端口P0的低五位,实现左右电机的正/反转,从而使机器人做左转、右转、直线前进等动作,完成在迷宫中从入口到出口的行进过程。
3 系统接口电路设计
3.1 微控制器模块
AT89S52是一个低功耗、高性能CMOS 8位单片机,片内有8KB ISP的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S52有40个引脚,片内有8KB Flash程序存储器,256B的RAM,32个外部双向输入/输出口,5个中断优先级,2层中断嵌套,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器等。
在开发过程中使用开发板,以方便程序的调试和整机的测试,待系统调试完成后,将单片机从开发板上取下,安装在机器人系统板的单片机座中,由于设计中的机器人需要完成的任务比较简单,因此只在机器人系统板的单片机系统中保留了晶振和复位电路,取消了JTAG编程口等冗余电路。
3.2 传感器模块
光电传感器的工作原理是传感器红外发射管发射出红外光,接收管根据反射回来的红外光强度大小来计数的,故被检测的部件或物体表面必须有黑白相间的部位用于吸收和反射红外光,这样接收管才能处于有效的截止和饱和区以达到计数的目的。传感器的检测与调节电路如图2所示。图中的R3用于调节比较器的门限电压,经示波器观察,输出波形相当规则,可以直接供单片机查询使用,而且经验证给此电路供电的电池压降较小。红外光电传感器通过主板P8、P9、P10接口连接到AT89S52的P0.5、P0.6和P0.7端口。其中P0.5 = 0,表示前方有障碍;P0.6 = 0 ,表示左方有障碍; P0.7=0,表示右方有障碍。
3.3 直流电机驱动电路与电源模块
直流电机通过主板的P5接口连接到主板的驱动模块上。本文采用L298作为电机的驱动芯片,L298的5、7、10、12四个引脚连接到单片机上,通过对单片机的编程就可以实现两组直流电机的正反转等功能。由于单片机的电压在4.8V左右,故采用VFM升压型电源芯片,为单片机及外围电路提供5V左右的电压。 4 软件设计模块
4.1 软件开发环境与搜索算法
本文采用Keil U Version2 作为系统的开发环境,在程序设计中采用C语言和汇编语言混合编程。在软件算法上,考虑到深度优先搜索算法的时空效率和迷宫地形的复杂程度成正比,即迷宫越复杂,搜索出口的时间就越长。本文采用了一种称为左手(或右手)法则的迷宫路径搜索策略,即在迷宫中一直沿着左侧(或右侧)的墙寻找,就可以找到出口。
相对于深度优先搜索法,左手(或右手)法则的空间占用与迷宫复杂程度无关,机器人搜索路径的选择只与当前结点有关,不需要回溯。同时,硬件的制造精度要求不高,不需要精确的控制机器人的移动距离和移动方向,方便了驱动设计。为便于算法的实现,本文设定了如下约束条件:
1.在算法中不管迷宫地形有多么复杂,均由直线、死路、丁字形、十字形、转角形和终点七个基本地形构成。
2.按分岔的多少将分岔口分为二岔口和三岔口(一般没有四岔口),而将分岔口前面的岔路按从右到左的顺序分别称为第一岔路、第二岔路、第三岔路(十字型才有)。二岔路有三种不同的形式,第一种是前进的路线右边出现一条岔路(右边的岔路称为第一岔路、前方称为第二岔路);第二种是在前进的路线左边出现一条岔路(前方称为第一岔路、左边的岔路称为第二岔路);第三种是丁字路口(右边的岔路称为第一岔路、左边的岔路称为第二岔路)。对于这三种情况,算法对应的程序由主程序、走直线子程序、左转子程序、右转子程序和校正子程序组成。主程序起到导向和决策的功能,决定机器人什么时候该做什么。机器人的其他功能通过调用具体的子程序来实现。
4.2 算法流程图描述
本文所采用的迷宫搜索算法流程如图3所示。接通电机和传感器电源后,单片机在程序的控制下,根据传感器检测到的值,决定电机的正转和反转。当P0.7=1时,表示左方没有障碍物,依据“右手”遍历算法,机器人将调用右转子程序;当P0.7=0并且P0.5=0时,机器人将调用左转子程序;否则机器人直线前进,如此反复检测并调整机器人的动作,直至机器人走出迷宫为止。
5 结论及其创新点
本文对基于AT89S52的嵌入式智能寻迹机器人的硬件架构进行了探讨,将左手(或右手)法则用于寻迹机器人行走路线搜索,重点讨论了基于AT89S52的光电传感器模块、直流电机驱动模块、电源模块等的电路实现技术,经过反复测试,机器人能够在软件的控制下,无需任何外界力量就可以智能地完成从迷宫入口走到出口的寻迹任务。创新点在于通过光电传感器自动感知障碍物,并利用软件控制机器人左/右转以及直线行走,对复杂路径探测是一种尝试,特别适合人无法到达的环境路径探测,系统成本低,可靠性高,反应灵敏,对智能玩具的设计与开发也具有一定的参考价值。