




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机的红外遥控-自动避障-贴墙行走-人体感应智能小车机器人队员1姓名:周葛学院:仪器科学与电器工程学院 专业:测控技术与仪器年级:大一教学号:65130109邮箱:zhouge94live 队员2姓名:成妍学院:药学院 专业:生物医学工程再生医学年级:大一教学号:73130430邮箱:lianyungangchengsina 作品类别:根本电子技术应用类目录一、引言1二、总体设计1三、单元电路设计21单片机最小驱动模块22红外接收模块3方案选择3方案确定3理论分析与方案论证33电机驱动模块44避障循迹贴墙模块5方案选择5方案确定5理论分析与方案论证65电源模块76人体感应模块7四、软
2、件设计8五、整体测试8六、结论9【参考文献】9【附录】10源程序10一、引言以STC89C52单片机为核心,制作一款红外线遥控小车,小车具有自动驾驶、手动驾驶和循迹前进等功能。自动驾驶时,小车在前进过程中可以自动躲避障碍物。手动驾驶时,可以手动遥控小车前进、后退、左转、右转、加速等操作。寻迹时小车可以按轨迹前进。红外遥控的特点是利用红外线进行点对点通信的技术,不影响周边环境,不干扰其他电器设备。室内近距离小于10米,信号无干扰、传输准确度高、体积小、功率低的特点,遥控中得到了广泛的应用。本系统采用成品红外发射遥控器,具有21个按键,采用NEC红外传输协议。接收端使用1838一体化接受头,通过单
3、片机中断程序处理红外信号。二、总体设计本系统由硬件和软件两局部组成。硬件局部由红外线接受电路,控制电路,直流电机驱动,障碍物检测电路,人体感应电路五局部组成,完成红外编码信号的接受,直流电机的驱动,障碍物检测、墙体检测、地面检测,人体感应检测等功能。软件局部主要完成信号的检测和处理、直流电机的控制,障碍物的躲避等功能。STC89C52单片机主要完成对红外信号解码,判断是否遇到障碍物,判断小车是否离开地面,控制直流电机的正反转、启动、停止、急速减速等工作。系统结构框图如图l所示。红外解码中断STC89C52RC电机驱动左边电机右边电机障碍物检测人体感应检测底部地面检测墙壁检测图一三、单元电路设计
4、1单片机最小驱动模块单片机只有连好最小驱动电路后才会运行存储在其内部的程序。如图二。单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用1030uF,51单片机最小系统容值越大需要的复位时间越短。单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。单片机最小系统起振电容C1、C2一般采用1533pF,并且电容离晶振越近越好,晶振离单片机越近越好。图二2红外接收模块方案选择n 方案1:使用BL9148自制发射电路,使用BL9149接受处理
5、信号。优点是程序简单,缺点增加了电路复杂性。n 方案2:使用成品遥控器,遥控器使用CD2025纽扣电池供电,方便携带。接收电路使用红外接收管,自制滤波整合电路对红外信号进行处理。使用在通过单片机中断程序处理解码信号。虽然增加了程序的复杂性,但是简化了电路。n 方案3:在方案二的根底上,使用1838一体化接受头代替红外接收管。方案确定n 为提高电路的可靠性,遥控器的便携性,我们选择方案三。理论分析与方案论证红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。如图三。内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比拟器等。红外监测二极管监测到红外信号,然后把信号送到放
6、大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不管红外发射器和接收器的距离远近。交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比拟器,比拟器输出上下电平,复原出发射端的信号波形。注意输出的上下电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。图三3电机驱动模块使用L298电机驱动模块如图。此L298模块可以驱动两台直流电机。分别为M1和M2。引脚ENA,ENB可用于输入PWM脉宽调制信号对电机进行调速控制。如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接实现电机正反转就更容易了,输入信号端IN1接高电平输入端I
7、N2接低电平,电机M1正转。如果信号端IN1接低电平, IN2接高电平,电机M1反转。控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。反之那么反转,PWM信号端A控制M1调速,PWM信号端B控制M2调速。图四 4避障贴墙模块方案选择n 方案1:使用超声波模块,根据超声波测出的障碍物距离,控制小车躲避障碍物,优点反响距离远,抗干扰能力强。缺点体积庞大,且超声波模块只能用于避障,不能用于循迹功能。n 方案2:使用红外反射式光耦。前方左右各一个可检测障碍物。底部左右两个可用于循迹,中部左右各一个可用于贴墙走功能。当有障碍物时反射红外光,时红外接收管反向导通性
8、增强,通过一定的电路形成电位变化,输入单片机。n 方案3:在方案二的根底上加一个LM393电压比拟器,将红外接收管端连续变化的电位信号转化为清晰的上下电平信号。方案确定综合设计的实用性,简易性,可靠性,我选择方案三。理论分析与方案论证障碍物检测和轨迹检测原理是一样的,其电路如图5所示。从经济的角度考虑,该模块选用了六个反射式光耦,反射式光耦由一个红外发射管和一个光敏三极管组成。LM393P是电压比拟器,当3脚的电压大于2脚电压时,输出端1脚输出高电平,反之输出低电平。上下电平的电缝值取决于2脚的电压,调整电位器R23使2脚电压为3V。避障电路安装在小车头部的左右两边,用于检测左右障碍物。工作过
9、程是:当无障碍物时,不反射红外线,光敏i极管截止。3脚在R16的上拉作用下为高电平(5V),大于2脚电压(3V),1脚输出高电平;反之,当遇到障碍物时,l脚输出低电平。左边遇到障碍物时小车右转,右边遇到障碍物时小车左转。底部地面电路安装在小车底部,当小车处于地面时,地面发射红外线,传感器接收到让小车工作。当小车离开地面时,传感器接收不到信号,小车不工作。图五5电源模块7805三端稳压集成电路,电子产品中,常见的三端稳压集成电路有正电压输出的78 ×× 系列和负电压输出的79××系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入
10、端、接地端和输出端。本系统电池采用两节锂电池供电,正常供电电压为7.4v,电机驱动模块使用原始电压,单片机及其他模块采用7805芯片降压稳压至5v供电,调高了系统的稳定性。7805降压稳压模块电路图如图六图六6人体感应模块本模块采用HC-SR501 人体红外感应模。HC-SR501 是基于红外线技术的自动控制模块,采用德国原装进口LHI778 探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备。人进入其感应范围那么输出高电平,人离开感应范围那么自动延时关闭高电平,输出低电平。当小车工作在此模式时,小车工作一段时间自动停止检测车周围是否有人。当没有
11、人时,小车自动进行避障行走;当有人时,自动停止,等待人通过遥控器发出下一步指令。四、软件设计程序流程图如图八:开始遥控器发射红外信号模式三避障红外解码模式四人体感应模式二贴墙行走模式一红外遥控图八五、整体测试本设计在调试过程中也遇到很多问题。在后来的调试过程中一一进行了改正与调整。本电路总共设计了14个输入按键。图七是遥控器的功能图七。手动遥控自动避障贴墙行走人体感应前进右转静止左转后退加速差速左拐原速差速右拐减速图七六、结论经实践说明,本文所设计制作的红外线遥控小车运行稳定、遥控灵敏、占用系统硬件资源少。且在不改变硬件电路,仅通过软件编程小车就可以实现多处障碍物检测、报警等功能。由于目前的遥
12、控装置大多对某一设备进行单独控制,而在本设计中的红外遥控电路设计了多个控制按键,可以对不同的设备,也可以对同一设备的多个功能进行不同的控制。根本符合技术要求。本想在底部增加循迹功能,但出于传感器数量有限,底部只剩下两个红外传感器,实现循迹困难。因此改为检查是否离地的功能模块。但是本遥控电路也有不完善的地方,它只能单通道实现对多个设备的控制,即它不能同时控制两个或者两个以上的设备。在设计过程中,通过大量的查阅资料,认真研究教材,对单片机有了更为深刻的理解,在设计软件时,须仔细的分析硬件电路,画出程序流程图,培养了我的耐性和刻苦钻研的精神。【参考文献】1、?实例解读51单片机完全学习与应用配教学视
13、频?,杨欣编著,电子工业出版社。2、?爱上单片机?,杜洋著,人民邮电出版社。3、?全国大学生电子设计竞赛教程-基于ti器件设计方法?,黄春根等著,电子工业出版社。【附录】源程序#include<reg52.h>unsigned char IrValue6;unsigned char jd1,jd2,m1,m2,count,Time,i,value,flag;sbit IRIN=P32;sbit pwm1=P20;sbit pwm2=P21;sbit left1=P22;sbit left2=P23;sbit right1=P25;sbit right2=P24;sbit led=P
14、26;sbit person=P27;sbit xia1=P12;sbit xia2=P10;sbit qian1=P11;sbit qian2=P13;sbit hou1=P14;sbit hou2=P15;void IrInit();void DelayMs(unsigned int );void Timer0_Init();void go();void back();void turnleft();void turnleft1();void turnright();void turnright1();void add();void pluse();void yaokong();void
15、bizhang();void stop();void stop1();void main() pwm1=0; pwm2=0; count=0; led=1; jd1=85;/右轮速度初始化取值范围0200 jd2=70;/左轮速度初始化取值范围0200 IrInit(); Timer0_Init(); left1=0; left2=0; right1=0; right2=0; qian1=1; qian2=1; /xia1=0; /xia2=0; hou1=1; hou2=1; flag=0; /preson=1; while(1) while(flag=1)/手动遥控 if (xia1=1)
16、|(xia2=1) stop(); else if(xia1=0)&(xia2=0) yaokong(); while (flag=2) /贴墙走 if (xia1=1)&(xia2=1) stop();elseif (hou1=1)&(hou2=1) stop(); else if (hou1=0)&(hou2=1)&(qian1=1)|(qian2=1)go();else if (hou1=0)&(hou2=1)&(qian1=0)&(qian2=0) turnright();DelayMs(5000);else if (ho
17、u1=1)&(hou2=0)&(qian1=1)|(qian2=1)go();else if (hou1=1)&(hou2=0)&(qian1=0)&(qian2=0) turnleft();DelayMs(5000); while (flag=3) if (xia1=1)&(xia2=1) stop();else bizhang();/避障 while (flag=4) if (xia1=1)&(xia2=1) stop();else if(person=1) bizhang();else if(person=0)stop(); voi
18、d Timer0_Init() /函数功能:定时器初始化,每1us执行一次TMOD=0x01;TH0=0xff;/65436/256TL0=0x9c;/65436%256TR0=1; EA =1;/翻开总中断 ET0=1;/翻开定时器0中断 TR0=1;/启动定时器0void Timer0_Int() interrupt 1/中断程序 TH0=0xff; TL0=0x9c; m1=count; m2=count; if(m1<jd1) pwm1=1; else pwm1=0; if(m2<jd2) pwm2=1; else pwm2=0; count+; count%=200; /
19、20m秒需要数200次void yaokong() switch(value) case 0x15:stop();break;/按键 case 0x40:go();break; case 0x19:back();break;case 0x07:turnleft();break;case 0x09:turnright();break;case 0x1c:stop1();break; case 0x08:turnleft1();break; case 0x5a:turnright1();break; default:break;void go() led=led; left1=0; left2=1
20、; right1=0; right2=1; /value=0;void stop() led=led; left1=0; left2=0; right1=0; right2=0; /value=0;void back() led=led; left1=1; left2=0; right1=1; right2=0; /value=0;void turnright() led=led; left1=1; left2=0; right1=0; right2=1; /value=0;void turnright1() unsigned int j,k; j=0;k=0; while (j<3)
21、jd1=jd1-10; j+; DelayMs(1000); while(k<3) jd1=jd1+10; k+;void turnleft() led=led; left1=0; left2=1; right1=1; right2=0; /value=0;void stop1(void) jd1=85;/右轮速度初始化取值范围0200 jd2=70;/左轮速度初始化取值范围0200void turnleft1() unsigned int m,n; m=0;n=0; while (m<3) jd2=jd2-10; m+; DelayMs(1000); while (n<3)
22、 jd2=jd2+10; n+;void add() jd1=jd1+10; jd2=jd2+10; if(jd1>145) jd1=145; if(jd2>130) jd2=130; void pluse() jd1=jd1-10; jd2=jd2-10; if(jd1<65) jd1=65; if(jd2<50) jd2=50; void bizhang() /Timer0_Init(); if(qian1=1)&(qian2=1) go(); else if(qian1=0)&(qian2=0) DelayMs(1000);back();Delay
23、Ms(800);turnright();DelayMs(800); else if(qian1=1)&(qian2=0) back();DelayMs(1000);turnleft();DelayMs(800); else if(qian1=0)&(qian2=1) back();DelayMs(1000);turnright();DelayMs(800); void DelayMs(unsigned int x) /延迟函数,0.14ms误差 0us unsigned char i; while(x-) for (i = 0; i<13; i+) void IrInit() / 初始化红外线接收IT0=1;/下降沿触发EX0=1;/翻开中断0允许IRIN=1;/初始化端口void ReadIr() interrupt 0/读取红外数值的中断函数 返回值valueunsigned char j,k;unsigned int err;Time=0; DelayMs(70);if(IRIN=0)/确认是否真的接收到正确的信号 err=1000;/1000*10us=10ms,超过说明接收到错误的信号/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年母婴护理师理论考试题库及答案
- 2025届金融公司校招笔试真题及答案
- 2025年新员工入职安全培训考试试题及答案典型题
- 2025年院感考试题库及答案解析
- 2025预防接种技能大赛培训试题及答案
- 场地预约系统升级通知与更新说明考核试卷
- 医养结合模式在农村地区的社区参与与合作机制考核试卷
- 课堂纪律教育与行为管理考核试卷
- 临床医学教育评价体系构建考核试卷
- 组织层级冲突的根源与对策考核试卷
- 低血糖预防与处理(护士)
- 2024年低压电工(特种作业操作证)考试题库及答案(通用版)
- 石油消防安全培训课件
- 乡村道路建设项目可行性研究报告
- 10kV线路迁改施工方案
- 宫颈锥切术后护理查房
- 家畜传染病总论培训课件
- 监护室ICU运用PDCA循环案例降低导管相关血流感染发生率品管圈成果汇报
- (完整word版)中国户口本英文翻译模板
- CRTD术后护理常规
- 2022年北京市房山区(中小学、幼儿园)教师招聘考试《教育综合知识》试题及答案解析
评论
0/150
提交评论