基于单片机的智能扫地机器人设计

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式

研究的内容

  

1 功能

(1)全自动清扫
(2)防撞、防摔
(3)自动充电

2 性能指标

(1)输入电流:1A
(2)输入电压:13-15V
(3)运行速度:12m/min
(4)最长工作时间:25min

一、电路设计

1 总控制电路

2.2.1 STC89C52单片机简介

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
(1)8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
(2)另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
(3)空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
(4)掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
(5)最高运作频率35Mhz,6T/12T可选。
(6)和atmel的对比 STC89C52RC单片机: 8K字节程序存储空间; 512字节数据存储空间; 内带4K字节EEPROM存储空间; 可直接使用串口下载; at89s52单片机: 8K字节程序存储空间; 256字节数据存储空间; 没有内带EEPROM存储空间;
引脚介绍:
1.主电源引脚VCC和VSS
电源VCC接+5V,VSS接地端,即公共参考地
2.时钟电路引脚XTAL1和XTAL2
STC89C52芯片内部设置了一个反相放大器,XTAL1为放大器输入端;XTAL2为放大器的输出端,也是内部时钟发生器的输入端。
使用自激震荡方式时,XTAL1和XTAL2外接石英晶振,内部振荡器按照晶振频率振荡,产生时钟信号。
3.控制信号引脚
(1)RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
(2)ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。(一般不使用)
(3)PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
(4)EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
(5)并行I/O口P0~P3端引脚
①P0口(P0.0~P0.7) 8位漏极开关型双向I/O端口。可以作为通用I/O口使用,但必须加上拉电阻。
②P1口(P1.0~P1.7) 内部带上拉电阻的8位准双向I/O端口。
③P2口(P2.0~P2.7) 内部带上拉电阻的8位准双向I/O端口。
④P3口(P3.0~P3.7) 内部带上拉电阻的8位多功能双向I/O端口。
上面就是STC89C52单片机引脚的简单介绍,其它51系列家族的单片机8031、8051、 89C51等引脚和89S51兼容,只是个别引脚功能定义不同。如图2-3为51单片机的引脚分布图。
在这里插入图片描述

图2-3 51单片机引脚图

2.2.2 总控制电路设计

(1)I/O口定义
①POO、P01、P02、P12、P13、P14为扫地机器人防撞信号输入引脚;
②P03、P04、P05为防跌落信号引脚;
③P10为电机电源控制型号(低电平有效);
④P11、P12为电池电压检测信号输入引脚,P11为过放检测,P12为过充检测;
⑤P23、P24、P24、P26为充电时位置检测信号输入引脚;
⑥P34、P35、P35、P35为电机驱动信号,P34、P35控制左电机正反转,P35、P35 控制左电机正反转;
⑦P20为两边刷电机控制信号;
⑧P21为吸尘器电机控制信号;
⑨P36、P37为晶振信号输入引脚
⑩REST引脚为复位信号输入引脚

三、PCB板的设计与制作

  

3.1 PCB板的设计

Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源–地层和16个机加工层[3]。
主电路板包含电源电路、电源充电电路、电机驱动电路和防撞电路(如图3-1)
在这里插入图片描述

图3-1 主板电路

红外线充电位置检测电路如图3-2。
在这里插入图片描述

图3-2 红外线检测电路

红外线充电检测电路图与光电对管电路如图3-3。
在这里插入图片描述

图3-3 红外线检测头电路

3.2 PCB板的制作

1、在覆铜板上画好电路,或把电路画在透明纸上
2、把需要拿掉的铜皮暴露出来,需要留在电路板的铜皮保护起来,去教学用品商店里买,有蚀刻用的感光膜和感光药水。
3、将处理好的覆铜板放在腐蚀溶液里,腐蚀时间按说明书。
4、冲洗、晾干。

五、程序设计

5.1 C语言与汇编语言的优缺点

C语言编属于高级语言,具有可移植性,能够结构化编程。使用标准C语言的程序,几乎都可以不作改变移植到不同的微机平台上,对于嵌入式等的微控制芯片,属于标准C语言的部分也很少需要修改,而且程序很容易读懂。
C语言编写程序结构清晰,移植性好,容易维护和修改。
汇编语言针对不同的操作系统平台,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性。但是汇编语言是针对专门的控制器的,所以运行速度可以精确到一个指令周期。汇编语言的程序读懂需要借助微控制器的指令手册以及各个寄存器的说明,所以很难读懂。
汇编语言编写代码实时性强,能够直接控制硬件的工作状态,但是不具有可移植性,维护和修改困难。

5.2 系统程序设计

该扫地机器人选用C语言来进行编程。由主要程序、防撞程序、自动充电程序等子程序构成。

5.2.1 主程序

系统初始化后就执行主程序,进入主程序先执行电压检测程序,如发现电池电压不 足,就执行充电寻找程序,找到充电座后执行充电程序,待电池充满后返回执行主程序。 再进行清扫程序,如发现前方有障碍物,则执行避障程序,避开障碍物后继续执行清扫程序。程序流程图如图5-1。
在这里插入图片描述

图5-1 主程序流程图

5.2.2 防撞程序

防撞程序用于控制电机正反转从而确保机身不会撞到障碍物,从障碍物的旁边绕开, 当探头1前方有障碍物时,机身右转100ms后返回壁障程序;探头2前方有障碍物时, 机身右转100ms后返回壁障程序;当探头3前方有障碍物时,机身反转100ms后左转 100ms壁障程序;当探头4前方有障碍物时,机身左转100ms后返回壁障程序;当探头 5前方有障碍物时,机身左转100ms后返回壁障程序。程序流程如图5-2。
在这里插入图片描述

图5-2 防撞程序流程图

5.2.3 充电寻找程序

当电池电压处于欠压时,扫地机器人关闭吸尘器与边刷的电机启用充电寻找程序, 在红外线接收头没有收到充电座的红外发射信号时,执行防撞程序。当接受到信号后立马执行充电寻找程序。此时关闭防撞功能,充电座必须要放在放在没有障碍物的墙边。程序流程图,如图5-3所示。

在这里插入图片描述

图5-3 充电寻找程序流程图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值