梁诚,梁长成,蓝国财,黄苏军,吴树添,黄爱玉,李嘉静,马永霞
(广西民族师范学院 数理与电子信息工程学院,广西崇左,532200)
随着当今时代科技水平的迅速发展,越来越多的服务型智能机器人进入到人们的生活中,改变了人们的生活方式及改善了生活质量。扫地机器人作为时代的一款新型服务型智能机器人,能够独立完成室内各类的清扫工作。同时扫地机器人正在进行着快速的变革,由原来单纯机械的自动清扫、除积灰垃圾等功能,增加到了智能除菌、自动无线充电、自动规划清扫路径等的更多的智能操作。服务型机器人未来还都将继续向着制造成本大幅下降、功能更加多元化的和具有超大容量的电池方向发展。
扫地机器人主要由硬件部分和软件部分两方面组成。硬件部分主要由四个模块组成,即:主控STC89C52 单片机、传感器模块、工作单元、电源。主控采用STC89C52 单片机,使用该主控单片机对各模块进行智能操作,包括传感器模块信号的响应、控制电机工作、启停等。传感器模块有红外传感器,扫地机器人通过红外传感器检测到障碍物时反馈给单片机的信号来控制下一步移动的方向。工作单元包括车轮电机、拖地电机、吸尘电机、抽水泵、紫外线消毒灯、风扇。车轮电机采用有刷直流电机,作为小车的移动模块。电源这边我们选择可充电的12伏18650锂电池给扫地机器人供电。软件部分为单片机的程序设计。总体框图如图1 所示。
图1 整体框架图
AT89C52 单片机是一块功耗低、运行速度快的微控制器,它几乎兼容80C51 所有型号的指令和引脚功能。它采用模块化设计思想,通过扩展可配置寄存器单元(SDRAM),实现了各种功能;通过优化I/O 接口电路结构,降低功耗。配备8K 字节闪存存储,RAM256 字节存储空间、32 个I/0端口、定时器/计数器、外部中断、UART 串口等外设。本文详细介绍了AT89C52 硬件系统设计与实现方法,并给出相应程序流程图和设计流程讲解。AT89C52 系列单片机是嵌入式控制系统中应用最为广泛的一种芯片,它具有体积小、功能强和灵活性好等特点。所以本设计中采用AT89C52 芯片作为主控芯片。使用主控单片机对各模块进行通信操作,包括传感模块信号的响应、控制电机启动、停止等。扫地机器人通过红外传感器检测到有障碍物时给单片机反馈回去一个低电平,单片机控制相应模块进行下一步的操作。主控电路图如图2 所示。
图2 主控电路图
扫地机器人有多种工作模式。本设计用到三个轻触按键来控制扫地机器人的启动、停止和模式切换,当按下第一次按下第三个按键时就切换为第一种工作模式,第二次按下时切换为第二种工作模式,第三次按下第三个按键时切换为第三种工作模式,确定好模式后再按下启动键,扫地机器人即可开始执行对应模式的工作。轻触按键的一端接单片机I/O,另一端接地,每按下轻触按键时都会反馈一个低电平给单片机,单片机收到反馈后,开始执行对应程序。若扫地机器人程序错乱或者出现故障时按下停止键即可。按键电路图如图3 所示。
图3 按键电路
本设计采用红外传感器作为避障模块,该模块结构操作简单、性能稳定、易上手,其避障原理为:红外传感器没有探测到前方有障碍物,输出端口一直保持,为高电平,如果这时传感器指示灯为熄灭状态时,说明探测到障碍物,输出端口为低电平,如果传感器指示灯亮了,表示没探测到有障碍物,单片机根据红外避障模块返回的变量进行对应的避障操作。红外避障模块工作原理图如图4 所示。
图4 红外传感电路原理
本设计的电机驱动电路使用L298N 电机驱动模块来驱动电机正转或者反转,以及左转右转,调速功能。IN1、IN2、IN3、IN4 用于控制电机正反转,当IN1、IN2 分别为0 和1 时,电机正转,此时小车前进,当IN1、IN2 分别为1 和0 时,电机反转,此时小车后退,IN3、IN4 同理。ENA、ENB 作 为 使 能 端,ENA 控 制IN1、IN2, ENB 控 制IN3、IN4,当ENA 或ENB 为低电平时,对应的控制端无效,此时电机不工作,处于停止状态。当ENA或ENB为高电平时,此时IN1、IN2、IN3、IN4 的状态才有效。OUT1、OUT2、OUT3、OUT4 作为输出接口,接到电机的两个引脚端。电机驱动电路原理图如图5 所示。
图5 车轮电机驱动电路
工作电机包括拖地电机以及吸尘电机,同样采用L298N 驱动模块来驱动,通过按键来切换两个不同的工作方式,拖地电机安装有拖布,工作时,电机正转并且以高速运转,来达到拖地的效果。吸尘电机安装在一个吸尘筒上方,工作时,电机反转且以高速运转,来实现吸尘效果。
由于单片机I/O 引脚的电流很小,只有仅仅几毫安的电流,不足以驱动一个5V 直流风扇,需要外加一个NPN 三极管将电流放大后才能使其工作,三极管的基极连接到单片机I/O 口,集电极接5伏VCC,发射极接到直流风扇的正极。为了扫地风扇能够完美的清洁地面,也采用PWM 调速的方式,将扫地风扇的转速调制到最大,提高工作效率。扫地风扇电路如图6 所示。
图6 扫地风扇工作电路
除了干拖以外,扫地机器人还具备了湿拖装置,通过一个继电器模块和抽水泵来实现,该继电器模块可选高低电平来触发继电器贴片吸合,继电器模块的输入端:DC+、DC-、IN 分别接12 伏直流电、地、单片机I/O 口,IN 接口主要用于控制继电器吸合。输出端分别有NO、COM、NC。“NO”作为继电器模块的常开接口,“COM”作为继电器模块的公共端,“NC”作为继电器模块的常闭接口。通常情况下“NC”接口是处于闭合状态的,“NO”在未得电的情况下处于断开状态,所以负载的一端要接到“NO”端,然后信号输入端即“IN”端通过单片机程序输送低电平,这时继电器模块“NC”端被断开,继电器模块“NO”端口闭合,负载电路导通形成回路,抽水泵开始工作,当“IN”端给高电平时,“NO”端断开,抽水泵即停止工作。工作时,继电器内部贴片吸合,抽水泵开始从扫地机器人的水箱里抽水,沿着水管将水输送到拖地电机的拖布上,同时拖地电机开始工作,实现了湿拖功能。抽水泵电路如图7 所示。
图7 抽水泵电路
该模块由四个紫外LED灯并联组成,通过按键模块来切换至消毒模式。按下按键时,单片机I/O 口得到一个低电平,由于二极管具有单向导电性,此时紫外LED灯被点亮,代表紫外消毒模块正在工作,再次按下按键时,消毒灯熄灭。消毒模块电路如图8 所示。
图8 紫外消毒模块电路
为了扫地机器人能够正常运转工作,需要设计出一个合理且有效的程序。在编写程序时,我们需要考虑到,扫地机器人撞车、翻车、还有死机的问题。具体设计流程如图9 所示。
图9 程序流程设计
对该程序的设计思路如下,首先配置好单片机的定时器模式,对其进行初始化,定时器主要用于PWM 的产生,作为电机的驱动程序。其次就是定义按键切换多种模式,每个模式对应实现扫地、拖地、吸尘、消毒、湿拖功能,确定好模式,再按下启动键后,扫地机器人才开始执行工作。例如:切换模式一扫地功能,此时未按下启动键,扫地机器人处于待机状态,按下启动键后,扫地风扇开始转动,同时扫地机器人开始移动,执行工作。执行工作中又需要考虑到室内物品繁多的情况,因此避障也是很重要的一个内容,未检测到障碍物时,扫地机器人以中间速度行驶,以保证工作时对地面的清洁程度。左侧检测到障碍物时,扫地机器人应右转躲避障碍物,减小右轮电机的PWM,增大左轮电机的PWM,实现右转。右侧检测到障碍物时,增大右轮电机PWM,减小左轮电机PWM,实现左转。前方检测到障碍物,扫地机器人后退。
扫地机器人的电机PWM 调速主要通过定时器0 来产生,用户设定一个比较值,定时器0 每隔100 微秒中断一次,每中断一次就自增一个中断数值,用于跟设定的比较值做比较,当中断数小于用户预先设置好的比较值时,输出低电平,当中断数超过或者等于该比较值时,输出高电平,同时中断数自动清零,重复计算。调节电机速度只需更改用户设定的比较值即可。
本设计是基于STC89C52 单片机作为主控芯片的扫地机器人,能够实现扫地、干拖、湿拖、吸尘和消毒功能。较好地足了室内清洁需求,该设计还有可优化的空间,如改变地机器人的体积,减小电机的噪声等,经过优化过后可以给用户提供更好的使用体验。