基于STC89C52单片机的多功能智能清洁小车设计

目 录
1 绪论 1
1.1 课题研究背景及意义 1
1.2 国内外研究现状 1
1.2.2 国外研究现状 1
1.2.2 国内研究现状 2
1.3 清洁机器人技术现状 3
1.3.1 路线规划技术 3
1.3.2 定位技术 3
1.3.3 多传感器融合技术 3
1.3.4 吸尘技术 4
1.4 本课题主要研究内容 4
2 总体设计方案 5
2.1 智能家用清扫车的系统组成 5
2.1.1 传感器信息采集模块 5
2.1.2 CPU控制模块 5
2.1.3 驱动模块 5
2.1.4 清扫模块 5
2.2 硬件模块方案论证和选择 6
2.2.1 控制器模块 7
2.2.2 电源和稳压模块 7
2.2.3 电机和电机驱动模块 7
2.2.4 避障模块 8
2.2.5 寻迹模块 9
2.2.6 液晶显示模块 9
2.2.7 吸尘器模块 9
2.2.8 无线收发模块 10
2.2.8 硬件模块选择的最终结果 10
2.3 软件框图 11
3 系统硬件电路 12
3.1 最小系统电路设计 12
3.2 电机驱动电路设计 13
3.3 超声波避障电路设计 15
3.3.1 超声波测距原理的简单介绍 16
3.3.2 HC-SR04模块的基本工作原理 17
3.3.3 HC-SR04模块实物图 17
3.3.4 超声波时序图 18
3.4 红外线避障电路设计 18
3.4.1 调试和接线说明 19
3.4.2 HJ-IR2模块的优缺点 20
3.5 寻迹模块电路设计 20
3.5.1 寻迹模块的安装 22
3.6 红外遥控电路设计 22
3.6.1 红外通信基本原理 22
3.6.2 红外遥控系统结构 23
3.6.3 红外遥控发射模块 24
3.6.4 红外遥控接收模块 28
3.7 蓝牙控制模块 29
3.7.1 蓝牙串口模块 29
3.7.2 HC-06串口模块 29
4 系统软件设计 32
4.1 主程序流程图 32
4.2 清理小车工作方式1 33
4.3 清理小车工作方式2 34
4.4 清理小车工作方式3 37
4.5 各模块子程序设计 39
4.5.1 寻迹模块子程序 39
4.5.2 超声波避障模块子程序 39
4.5.3 红外避障模块子程序 40
4.5.4 红外遥控模块子程序 41
5 调试 43
5.1 各功能模块的调试 43
5.1.1 超声波避障模块调试 43
5.1.2 红外避障模块调试 43
5.1.3 寻迹模块调试 44
5.2 测试结果 44
5.3 总结 48
结束语 49
参考文献 50
致 谢 52
附录A 系统原理图 53
附录B 实物图 54
附录C 程序 55
2 总体设计方案
2.1 智能家用清扫车的系统组成
通常清扫小车主要由以下几个模块构成:(1)传感器信息采集模块(2)CPU控制模块(3)驱动模块(4)清扫模块。这四个模块组成了完善的清扫小车系统,传感器信息收集模块返回目前清扫机器人的位置信息,如是不是遇到楼梯或碰到障碍物等,而后把这些信息送给CPU控制模块进行判断,控制驱动模块,使机器人左右转弯或者后退等,在机器人运动的同时让清扫模块进行清扫,完成清洁地面的任务。
2.1.1 传感器信息采集模块
智能清扫车需要及时收集环境信息和实时检测自身的工作状态,控制自己的状态,路径规划,并确定电池的电力短缺和自动充电。
根据智能清扫小车的工作需要,清扫小车传感器的选取有如下需求:体积小、质地轻、精度高、稳定可靠、可靠性强、抗干扰能力强、安装方便,经济。
2.1.2 CPU控制模块
这个模块是系统的中枢所在,相当于人的“大脑”。CPU控制模块从传感器信息采集模块那里获取环境信息,然后进行分析判断,做出最佳的决策,再将做出的运动决定传送给驱动模块,保证机器人执行相对应的动作。清洁机器人采用的是8位和16位单片机,具有增加的需求特点,并逐步向32位处理器开发。
2.1.3 驱动模块
这个模块是清扫小车运动的核心部件,其性能直接关系到整个机器人的运动能力。它的功能就是响应CPU控制模块的下发命令,使小车的执行机构实现相应的动作,这模块设计的关键是在于控制电机的硬件电路设计和控制算法的实现。
2.1.4 清扫模块
清扫模块的清洗机器人行走的同时完成清洁工作,一般只需要完成除尘器的功能,那么我们需要设计一个小的真空吸尘器是安装在车的底部,也能够把清扫机器人设计成即可吸尘又可擦地,需要清洁地板可以放置在一个棉布在机器人底层。
2.2 硬件模块方案论证和选择
本次设计的硬件组成系统由电源和稳压模块、控制器模块、电机和电机驱动模块、舵机模块、避障模块、寻迹模块、无线收发模块、吸尘器模块以及液晶显示模块等构成。硬件系统组成方框图如下所示:

图1 清理小车硬件系统方框图
2.2.1 控制器模块
方案1:选用CPLD可编程逻辑控制器。CPLD能够完成种种繁杂的逻辑功能、体积小、稳定性高、范围大、密度高、IO资源丰富、容易功能扩展。选用并行的输入输出方法,提升了系统的处理能力,适用作为大规模控制系统的控制核心。但本系统不要求繁杂的逻辑功能,对数据的处理速率的要求也不高的。从使用和经济的角度,我放弃了它。
方案2:选用STC公司的STC89C52单片机作为主控制器和采取凌阳单片机当做辅CPU。STC89C52是一个低功耗,高性能的MCS-51内部核心的CMOS 8位单片机,片内具有8k空间的可屡次擦除1000次以上的Flash只读存储器,本文转载自http://www.biyezuopin.vip/onews.asp?id=12613拥有512bytes的随机存取数据存储器(RAM),32个IO口,3个16位可编程定时计数器的。并且该单片机51系列能够使程序员直接通过串口或并口下载程序,可以不用烧写器的。
本系统主要是进行寻迹、避障模块的检测以及电机的控制,兼有小车的无线控制。如果使用单一的凌阳单片机,容易出现不稳定的状况。从体系的稳定性和编程的精简方面考虑,我放弃了单一选用凌阳单片机而考虑别的方案。
考虑到使用方便,我选择了方案2。

//主程序:
#include<AT89X52.H>	//包含51单片机头文件,内部有各种寄存器定义
#include<HJ-4WD.H>	//包含蓝牙智能小车驱动IO口定义等函数
//主函数
void main(void)
{	
	unsigned char i,OperaMode=0;    
B:	for(i=0;i<50;i++) //判断S3是否按下
{
		delay(1);//1ms内判断50次,如果其中有一次被判断到没有按键按下,便				//重新检测
if(P2_7!=0&&P2_6!=0&&P2_5!=0)//当S3或S2按下时,启动小车前进
			goto B; //跳转到标号B,重新检测
		if(!OperaMode)
		{
			if(P2_7==0)
				OperaMode=7;
			if(P2_6==0)
				OperaMode=6;
			if(P2_5==0)
				OperaMode=5;
		}
} 
	     BUZZ=0;	//50次检测S6确认是按下之后,蜂鸣器发出“滴”声响,					//然后启动小车。
	     delay(50);
	     BUZZ=1;//响50ms后关闭蜂鸣器
	switch(OperaMode)
	{
	case 5:	Tracking();	  //按下按键S2
			break;
	case 6:	ObstacleAvoidance();	//按下按键S3
			break;
	case 7:	WireCtl();		//按下按键S4
			break;
	default:;
	} 
}
//<HJ-4WD.H>的定义
#ifndef _LED_H_
#define _LED_H_
#include <intrins.h>
//定义小车驱动模块输入IO口 
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;
sbit IN5=P1^4;
sbit IN6=P1^5;
sbit IN7=P1^6;
sbit IN8=P1^7;	
//蜂鸣器接线定义
sbit BUZZ=P3^2;
//HJ-4WD小车底盘4路传感器接线定义
#define Left_1_led        P3_7	//P3_7接四路寻迹模块接口第一路输出信号即中控								//板上面标记为OUT1
#define Left_2_led        P3_6	//P3_6接四路寻迹模块接口第二路输出信号即中控								//板上面标记为OUT2	
#define Right_1_led       P3_5	//P3_5接四路寻迹模块接口第三路输出信号即中控板								//上面标记为OUT3
#define Right_2_led       P3_4	//P3_4接四路寻迹模块接口第四路输出信号即中控板								//上面标记为OUT4
/*********************红外遥控器*************************/
#define Imax 14000    //此处为晶振为11.0592时的取值, 
#define Imin 8000    //如用其它频率的晶振时,
#define Inum1 1450    //要改变相应的取值。
#define Inum2 700 
#define Inum3 3000
unsigned char f=0;
unsigned char Im[4]={0x00,0x00,0x00,0x00};
unsigned long m,Tc;
unsigned char IrOK;
/*********************红外遥控器*************************/
/*********************超声波*************************/ 
#define  ECHO  P2_4				   //超声波接口定义
#define  TRIG  P2_5				   //超声波接口定义
unsigned long S=0;
unsigned int  time=0;		    //时间变量
unsigned int  timer=0;			//延时基准变量


















物联沃分享整理
物联沃-IOTWORD物联网 » 基于STC89C52单片机的多功能智能清洁小车设计

发表评论