室内智能清洁机器人控制系统设计
摘要
室内智能清扫机器人本身具备有传感器检测、移动机器人功能,可以实现室内地面的自主化清洁,当按下启动键清洁机器人开始工作,这样就可以减轻家务人员的劳动量,在科技家具市场发展潜力巨大。
本文对现阶段室内智能清扫机器人研发现状进行了综述,总结国内外在该领域的成果与进展情况,在与其他相关机器人的基础上,设计出了一种方便家务人员打扫地面卫生的可行性方案。
清扫机器人由一个底盘,三个滚动的轮子及各种传感器组成。考虑到成本问题及可靠性能等,主控器选择了宏晶科技公司的STC89C52单片机,具有功能性和经济性兼顾的优点,且满足可控性强的要求。着重设计了红外避障传感器,液晶显示,红外台阶检测传感器以及清扫吸尘电机控制等电路。
关键词:清洁机器人;智能控制;单片机系统
1绪论
1.1课题设计的研究背景、目的与意义
室内智能清扫机器人本身具备有传感器检测、移动机器人功能,可以对室内地面进行全方位清洁,可以有效替代家务人员的工作量。在近些年来,室内智能清扫机器人的发展趋势已经吸引到国内外大量研究人员的注意。作为一款能够自动识别垃圾并进行打扫的清洁机器人来讲,它的出现正是追求智能化,科技化的一个集中表现。从作用表现的角度讲,清洁机器人有效降低了家务人员的工作量,适用于家庭及办公室室内清洁。因此,设计出一种能自主识别垃圾进行清洁卫生的机器人,是本课题着重研究讨论的方向。
结合各个传感器以及移动机器人的知识储备,本课题研究方向着重设计出一种价格便宜,全方位覆盖清洁,以及能够识别障碍物从而进行躲避的智能家庭清扫机器人,能够代替人力劳动,让家务活动更方便快捷,更具有科技化。在当代世界经济的快速发展下,人们的学习工作压力逐渐增加,因此为了减轻人们的劳动工作量,就成了新一代家电所追求的目标,而智能化家具是这一目标的最高体现。本课题介绍了智能清洁机器人在无人情况下能够自主进行打扫卫生,从而使得生活更加方便快捷。
通过收集相关资料,目前设计室内智能清洁机器人控制系统有多种方法,如基于arm的家用清洁机器人的控制系统设计[1]、基于labview的智能拖地小车系统设计[2]、基于单片机的智能清洁机器人[3]。
1.2国内外研究发展现状与趋势
1.2.1国外研究发展现状与趋势
在德国,由Kaercher生产的RC3000,是适应当时自动化风潮研发的家庭清洁机器人,首次实现了自主地面清洁功能。其采用随机移动模式,换言之,只有碰撞到障碍物,它才会改变移动方向,继续向前移动,直到遇到下一个障碍物才会改变方向。它的结构设计独特,使它能够去到比较狭小的地方例如咖啡桌和其他家具的下部。而且它拥有四种不同的清洁方式,根据地面环境及周边情况,可以设置不同的清洁方式进行打扫卫生;机器人内部安装了一个光敏传感器,在检测到前方有台阶的情况下,立即停止并向后移动。RC3000还有一个较成熟的功能,即自动充电。设计了一个配套的充电站,并且功能非常齐全,能够进行工作时间与模式的选定,同时具有红外放射功能,另外也提供了遥控自充电和垃圾处理等操作。该设备定位通过内置的红外功能实现,并发射导航信号,命令机器人在电量不足的情况下赶紧返回充电站。
在日本,旅客公司、JR公司等联合向市场推出了一款擦洗机器人,获得较好的市场反馈,其工作路径是将清洁物品撒到地面上,然后利用立式装置上配备的旋转刷来完成对地面的清洗工作,再将刷洗出来的的污水排到专门的容器里。通常自动清洗系统存在两个内置模式,一个是区域模式,也就是将需要清洁的地面划分为若干区块,另一种是路线图模式,也就是根据预先规划好的基于当前清扫区域而设计的路径图进行清扫工作。通常机器人存储空间能够容纳8张地图,并且采用了IC卡作为存储介质,该模式缺点在于,障碍物识别功能不全,因此只能在固定区域使用,或重复工作区域。
综上所述,国外在智能机器人的领域里发展的较为广泛,除了类似于高层建筑玻璃清洁机器人等常规机器人外,还在其他方面有着重大的研究的发现,尤其是在各个更为复杂的环境情况下。比如河水面清洁、不规则物体表面上清洁、太空上的表面清洁。所以,国外机器人的整体发展都较为完善。
1.2.2国内研究发展现状与趋势
现阶段机器人研究领域,国内属于后发方,哈工大、上交等也在清洁机器人方面上做了不少的研究,经过十几年的研究,国内的机器人技术也发展得较为完善了并在个别领域里还取得了不错的成果。在清洁机器人的相关技术领域里包含着许多研究方面,如机器视觉、机器人识别定位、扫描、路径规划、充电站的可靠性及电源节能管理等技术,为国内的机器人技术起步奠定了物质和技术基础,对将来的机器人现代化,先进化起到了不可替代的作用。
早在上世纪九十年代,哈工大就已经开始着重探索机器人技术,并且取得了一定成绩,与港中大合作开发了一款可以全方位移动的机器人。此机器人功能齐全,可执行的操作种类多。该机器人具有以下特点:采用全方位移动技术,机器人可以进行在狭窄环境下的的清洁任务,如狭窄的区域。另外还采用了开放式设计方案,采用了铰接结构,因此在需要时能够进行硬件拓展,同时也确保软件普适性和继承性,使得其功能实现更为全面和灵活,具有更好适应性;另外该机器人,能够适应外部较为嘈杂和拥挤的环境。红外避障传感器能更好地在面对障碍物时进行检测,信号反馈回来机器人根据返回来的信号做出转向的改变。此外,这款机器人还具备两种操控方式,一种是人为的用遥控器进行实时操控,另一种是自主运行对周边垃圾进行扫描,当按下启动键就可以自己运行起来;吸尘电机通过管道收缩以及电机的快速转动使得吸尘器吸力增加从而大大提高了吸尘效率。
综上所述,国内室内智能清洁机器人研究在于如何对周边障碍物进行检测躲避。
2清洁机器人的总体设计
2.1清洁机器人硬件总体设计
考虑到清洁机器人如何更方便的转向以及设计的成本问题,决定采用两个行走轮带动一个万向轮的行走机构(如图2-1所示):底盘为一圆盘,在此上面有两个带驱动电机驱动的左、右轮,这两个驱动电机可以有不同的速度,因此当两电机转速不同,两轮的速度就会有偏差,机器人就会改变前进的方向,从而可以让机器人左右转。而前面的万向轮没有电机驱动,只是起到一个支撑机器人的作用,随转向改变而改变。
图2-1行走机构示意图
2.2清洁机器人本体硬件结构
本文项目方案所涉及硬件系统构成如下:单片机STC89C52、状态显示器1602、两种传感器、控制机器人运行的按钮、三种电机驱动器等,这几个模块在单片机的控制命令下,可以对地面环境进行扫描打扫,从而可以按照人们的意愿使清洁机器人实现各种功能[4,5],清洁机器人各模块间关系[6]具体如图2-2所示。
图2-2室内智能清洁机器人硬件系统[7]
对各模块简单描述为:
控制器(单片机):基于实用性和经济性等多种考虑,确定为STC89C52RC单片机,且供应方是宏晶科技,其是程序运行的核心介质,让主控程序能够把所有系统部件串联起来,其控制功能面向的是所有功能及机器人启停等电机驱动器:主要由L298和继电器驱动的。由机器人两侧的边毛刷电机驱动器、轮子电机驱动器以及具有关键影响的吸尘电机驱动器,分别进行解释,其中轮子驱动电机,能够通过对走轮的驱动作用实现机器人行走功能,另一个边毛刷电机,能够实现边毛刷旋转动作,最后的吸尘电机驱动吸尘器产生吸力对地面微小的杂物和灰尘进行吸附。传感器:基于该机器人的适用场景采用红外避障传感器[8],另外考虑到工作环境问题,还增加了红外台阶检测传感器成。前者实现障碍物躲避,后者实现台阶躲避。(4)状态设置按钮:有一键打扫和停止按键,主要功能为启停清洁机器人工作。
(5)工作状态显示器:用于显示机器人当时是处于什么样的状态。
3清洁机器人硬件电路设计
3.1单片机系统电路设计
STC89C52单片机是目前适用性较为特殊的一种单片机,其研发方是Intel公司,实现了芯片高度功能集成,能够把诸如CPU、RAM等全都囊括进去,想要基于该单片机构建一个单人使用的系统,只需要在引脚功能点进行连上接口电路即可。并且该单片机还在持续进行型号更新,目前新产品已经实现了更高集成度,被各类开发者广泛采用。本次项目中控系统选择的就是STC89C52单片机。
图3-1单片机最小系统电路
该型号单片机的最小电路单元详情已经在图3-1进行描述,另外项目方案的外部构成包括了三种电路及接口,也就是时钟、复位和供电三种电路。
3.1.1时钟电路
单片机想要实现正常运行,必然涉及晶体振荡器,它的功能是发射脉冲频率,其面向对象是CPU,而这一过程中需要利用时钟电路,其能够为脉冲频率提供传送电路,对其工作原理进行详细解析,对脉冲频率在其中进行一个分频动作,然后会获得一个信号,对系统内部模块或器件进行协调处理,从而让系统控制信号得以实现。
该电路的主要构成组件有震荡晶体及电容。根据课本资料,其中震荡晶体规格范围在1.2到24MHz这一区间内进行适用性选择,采用频率最高的12MHz,另外电容C3/C2规格范围在20到100pF这一区间内,采用频率最高的是22pF,需要注意的是,电容的具体取值情况会对振荡频率输出大小具有影响,同时也关系到其运行稳定性。
3.1.2复位电路
只要系统设计按照一般性规范且能够正常运行,那么其中部分组件通常都会预先设置一个初始值,这也包括了CPU在内,一般规范性称呼其为复位状态。在实际开发工作中,系统内部电容和电阻需要能够串联起来,其中适用原理都是跳变现象。通电条件下,电容电压保持在0区间,此时不存在电荷,如果提供复位脉冲信号,那么进入充电状态,电容电压的测量值几乎等同于电源电压值,此时实现复位动作。
正常运行时,单片机会控制系统给电容C4充电,会发送一个正脉冲信号,被传送到RST引脚,此时才高电平状态,且能够维持10ms,此时就能够获得一个信号,推动其实现复位动作。特殊条件下,如果手动按键,信号通过线路传递到单片机,也能实现复位动作。正常运行条件下,晶体振荡频率一般取值保持在12MHz,同时电容C测量结果也实现为通值10μF,同时测量得到电阻R3也是取得通用值即10kΩ。
3.2直流电机驱动电路设计
本文清洁机器人设计方案中共存在5个电机,前文已经进行过讨论,在此次不做赘述,其中轮子驱动电机的启动反转利用的是L298芯片电路,另外两种就边毛刷和吸尘单机,综合考虑其功能需求而采用了三极管放大后驱动继电器。
3.2.1左右轮电机驱动电路
本文设计的清洁机器人,拥有左右对称的两侧轮子,因此也需要两个不同驱动电机,为了满足功能要求采用额是直流电机,因此也使用专门的大功率驱动电路,经过分析后,基于经济性考虑使用了L298N芯片。具体电路见图3-2。
图3-2L298N电机驱动电路
3.2.2清洁机构电机驱动电路
前文已经提到边毛刷及吸尘电机在本文方案中,都采用继电器驱动模式,并且I/O口输出一个控制信号,为了达到控制目标需要通过三极管放大。具体电路细节可见图3-3。这种驱动模式的特点在于实用性突出。
图3-3清扫机构电机驱动电路
3.3传感器电路设计
3.3.1红外线避障传感器
具体电路见图3-4所示。
图3-4红外线避障传感器电路
3.3.2红外台阶检测传感器
具体电路见图3-5所示。
图3-5红外台阶检测传感器电路
3.4LCD显示屏
用来对电机驱动状态的实时显示,此次仿真选用LCD1602显示器。其是一种点阵式LCD,能够在屏幕上呈现诸如字母、符号等内容,其中1602代表的是其显示内容的呈现形态,也就是会呈现两行内容,并且每行有16个字符,该LCD引脚分成四个类型,其一是逻辑电源引脚,主要代表为VDD和VSS等;其二是背光带引脚,主要代表有BLA等;其三是数据引脚,主要代表有RS和EN等;其四是偏压信号引脚,仅有一个,即VL。
该LCD控制程序能够进行优化提供一个优化版,结构更为简单,只要提供三个控制函数即可,包括写数据、写指令和复位等,要能够提供数据和指令两个函数,其编程过程需要利用到写操作时序;具体来说,其中重点在于写时序和RS引脚定义;当RS处在高电平条件下时,写数据,如果RS处在低电平条件下时,写指令。下面两张图是LCD1602的引脚原理和仿真外观图。
图3-6aLCD1602引脚说明图图3-6b仿真外观图
4清洁机器人软件程序设计
4.1清洁机器人软件总体设计
系统基本控制功能及任务如下:
控制边毛刷电机、吸尘电机。将这两个电机串联起来进行一体化控制,因为这三个电机驱动都是经过放大器放大后驱动继电器来进行工作的。当需要机器人打扫卫生时,按下一键启动,3个电机就开始同时工作。当按下停止按键,3个电机就同时停止。吸尘电机的吸力大小清洁效果通过电机转速快慢实现。在清扫过程中,当被干扰物缠绕时,程序会自动判断当前出现运行故障,此时这三个电机停止转动。
检测台阶防止跌落。当前方出现台阶时,机器人底部装备的台阶红外传感器就会采集到相关信息,并输出高电平,此时信号传递到单片机,就会控制机器人停止动作。然后机器人接收到命令强行后退,并向右后方转弯。为了便于更好的检测到台阶,采用3个台阶检测传感器放置在除了后方的其他三个方向,只要有一方采集到台阶信号,则进行同样处理动作。
探测机器人周边障碍物情况[9]。为了能够较为灵活且有效的实现障碍物规避,设计了一个红外避障传感器,在行进路程中对周边障碍物进行探测。此部分要求红外传感器越精确越好。
控制机器人左右电机行走。通过红外避障传感器检测到障碍物,清扫机器人的左右轮电机就相互反转,从而机器人左转进行障碍物的躲避。
以上的每个任务都有其对应的子程序或中断程序,整个系统的流程如图4-1所示。
图4-1主程序流程
当红外台阶传感器检测到台阶时,进入中断程序从而防止跌落,具体流程如图4-2所示。
图4-2中断程序流程图
4.2驱动电机控制程序
4.2.1电机正反转控制
前文已经提到该清洁机器人的轮子驱动电机,其类型是直流电机,能够实现转弯和前进等动作。驱动电路在此处考虑到经济性选择L298N芯片,其逻辑功能已经详细列出可见表4-3,为了实现轮子正反转动作,需要将该芯片的IN1到4都与I/O连接,通过高低电平的变化来最终达到控制电机正反转目标。
表4-3L298N的逻辑功能
ENA(B)IN1(IN3)IN2(IN4)电机运行情况HHL正转HLH反转H同IN2(IN4)同IN1(IN3)快速停止LXX停止5仿真调试
5.1系统仿真设计
5.1.1软件介绍
本文系统方案中涉及代码编程都是利用的C语言,且工作环境选择的是KeiluVision4,其具有较高实用性,有较高开发自由度,且应用范围较大。仿真调试工具利用的是Proteus,其研发国家是英国,能够提供单片机及外围部件的较为直观化和功能化的仿真,具有原理布图、人工布线等多种实用化功能,以仿真形式直观呈现软硬件结合状况,并能够满足其他应用要求。
5.1.2仿真调试
清洁机器人的避障及电机转动仿真图如图5-1。
图5-1避障及电机转动仿真
当按下一键打扫,左右轮驱动电机,边毛刷电机和吸尘电机同时启动,显示屏显示正在工作,此时仿真图如下图5-2。
图5-2工作时的仿真图
红外发射红外光,当有障碍物的时候,被遮挡回来,接收管收到红外光,开始转向躲避障碍物。此时显示屏显示向左转,左右轮电机正反转,如图5-3。
图5-3避障时的仿真图
前文提到,本方案中提供了三个红外台阶检测传感器,因此只要有一个采集到台阶信息,就会控制机器人后退,方案中采用右手法则,换言之,就是让机器人右转。此时仿真图如图5-4。
图5-4遇到台阶时的仿真图
此仿真的程序如下:
#include//包含单片机寄存器的头文件
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitIN1=P2^3;
sbitIN2=P2^4;
sbitIN3=P2^5;
sbitIN4=P2^6;
sbitsweep=P3^6;
sbitkeysweep=P1^7;
sbitkeystop=P1^6;
sbitkeyIR=P1^5;
voidcar_stop()
{
WriteAddress(0x06);
Print(“STOP“);
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
voidcar_go()
{
WriteAddress(0x06);
Print(“GO…“);
IN1=0;
IN2=1;
IN3=0;
IN4=1;
}
voidcar_back()
{
WriteAddress(0x06);
Print(“BACK.“);
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
voidcar_left()
{
WriteAddress(0x06);
Print(“LEFT“);
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
voidcar_right()
{
WriteAddress(0x06);
Print(“RIGHT“);
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
voiddelay(uintxms)
{
uinti,j;
for(i=0;i