《智能循迹蔽障小车说明书(精)》由会员分享,可在线阅读,更多相关《智能循迹蔽障小车说明书(精)(18页珍藏版)》请在金锄头文库上搜索。
1、智能循迹避障小车的设计学院名称: 机 械 工 程 学 院 专业班级: 测控技术与仪器0902班 学生姓名: 李俊德 刘奎 宣芮 指导教师姓名: 孙 智 权 2013 年 03 月江苏大学创新学分智能小车设计摘要:以STC12C5A60S2单片机为核心,由主控模板、传感器模块、电机驱动模块等组成,完成路面信息检测,寻找火源,直流电机控制等功能。路面信息检测、循迹采用红外光电循迹传感器判断接收地面反射光线的方式反馈,通过高低电平来进行路面检测、路径判断;寻找火源采用火焰传感器判断火源所在方位;电机直流驱动则用来保证小车以最快的速度行驶。关键字:单片机,直流电机,循迹传感器,火焰传感器目录第一章 绪
2、论1第二章 功能介绍22.1 主要实现功能22.2 车体设计方案22.3 障碍物探测器选择方案22.4 电源电路设计方案32.5 报警功能的设计方案3第三章 硬件设计43.1 硬件方案论证43.2 方案的总体设计框图43.3 硬件模块组成43.3.1 中央处理器模块43.3.2 传感器模块5第四章 软件设计84.1 程序流程图84.2 程序设计8第五章 总结125.1 李俊德总结125.2 刘奎总结135.3 宣芮总结14参考文献15第一章 绪论智能作为现代社会的新产物是以后的发展方向。它可以按照预先设定的模块在一个特定的环境里自动的运作,无需人为管理,便可以完成预期索要达到的或更高的目标。本
3、次设计的智能小车,能够沿着一定轨迹行驶并能准确寻找火源,并实现灭火功能。在此过程中要通过单片机和各种传感器实现小车的前进、转弯等基本操作。通过这些基本功能再加上相关的传感器实现具有特定功能的智能小车。在理在轮式小车上加装碰撞、火焰传感器,在STC12C5A60S2单片机的管理和相关程序的控制下,能完成自动循迹及复杂地形的迷宫中寻找出路的功能。作品可以作为高级智能玩具,也可以作为大学生学习嵌入式控制的强有力的应用实例,该系统将会有更广阔的开发前景。第二章 功能介绍2.1 主要实现功能利用装在智能小车上的火焰传感器探测火源。当发现火源时,小车行驶到火源处利用蜂鸣器进行报警。利用碰撞传感器和红外对管
4、传感器来避开障碍物,当碰撞传感器的前端碰到障碍物时,会触发碰撞传感器的电平变化,使得智能小车做出转弯,红外线对管传感器是利用红外线反射的原理,根据反射的强度来判定前方障碍的有无,以此来避开障碍物。2.2 车体设计方案采用左右两轮分别驱动,为保持车体平衡,前轮用万向轮转向的方案,即左右分别采用两个转速和力矩基本完全相同的直流舵机进行驱动,前边装一个万向轮。这样,当两个直流舵机转速相同但方向相反时就可以实现电动车的原地旋转,由此可以轻松地实现小车坐标不变的90度和180度的转弯。不过,在进行其他的程序前,得先通过不断的测试来调节两个舵机的转速,从而使两个轮子能够以最少的时间来实现基本的前进、左转、
5、右转和后退。2.3 障碍物探测器选择方案方案一:用超声波传感器进行避障。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,当遇到障碍物后便反射回来,再被超声波传感器接收。然后将该信号放大送入单片机。超声笔传感器在避障的设计中被广泛运用。但是超声波传感器需要40kHz的方波信号来工作,因为超声波传感器对工作频率要求较高,偏差在正负5%内,所以用模拟电路来做方波发生器比较难以实现。而用单片机来作为方波发生器未免有些浪费资源。因此放弃了此方案。方案二:用红外对管传感器进行避障。红外线对管传感器是利用红外线反射的原理,根据反射的强度来判定前方障碍的有无。红外线对管传感器电路搭接简单,使用简单。
6、当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。这个低电平恰好可以作为单片机的外部中断。考虑到本系统只需要检测简单障碍物,没有十分复杂的环境。为了使用方便,便于操作和调试,最终选择了方案二。2.4 电源电路设计方案由于传感器数量较多,加上有两个舵机,故采用6节干电池为小车供电。干电池具有较强的电流驱动能力以及稳定的电压输出特性。2.5 报警功能的设计方案利用装在智能小车上的火焰传感器探测火源。当发现火源时,小车行驶到火源处利用蜂鸣器进行报警。第三章 硬件设计3.1 硬件方案论证本次设计采用循迹传感器来实现按照特定的轨迹行驶的循迹功能;采用火焰传感器来实现寻找火源的功能;采用碰
7、撞传感器来实现避免小车遇到障碍物时能及时的避免的功能;采用STC12C5A60S2单片机来控制小车的各项基本操作。3.2 方案的总体设计框图3.3 硬件模块组成本次创新设计所用到的硬件模块有:中央处理器模块、传感器模块、直流电机驱动模块、调试电路模块。3.3.1 中央处理器模块本文采用的STC12C5A60S2单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快812倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。STC12C5A60
8、S2单片机如图1所示。图1 STC12C5A60S2单片机3.3.2 传感器模块本次创新设计所用到的传感器有:碰撞传感器、循迹传感器、火焰传感器。(1)碰撞传感器工作原理:在没有碰撞时,传感器输出的是高电平,当触头发生碰撞时输出低电平。本次设计是将两个碰撞传感器平行斜置安装在小车头两侧。在小车的行进过程中,左侧遇到障碍时,左侧的碰撞传感器输出低电平,单片机控制小车先后退再右转。同理,右侧遇到障碍物时,右侧的碰撞传感器输出低电平,单片机控制小车先后退再左转。碰撞传感器如图2所示。图2 碰撞传感器(2)红外线反射传感器红外线反射传感器是利用红外线反射的原理,根据反射的强度来判定前方障碍的有无。它由
9、红外二极管和红外光电管构成,红外二极管发射出红外线调制信号。红外线遇障碍物后被反射,反射回的红外线信号被红外光电管接收后转化为电信号。电信号的能量反应了反射距离信息。在距离适中的时候测量精度很高。由于使用的是红外线,所以抗干扰能力很强。这样做更加确保了小车的稳定性。该文中所用的红外线测距传感器采用单片机设计作为核心控制器,红外线传感器发送的控制信号使用单片机管脚可自行定义,传感器本身自行反馈接收信号。该产品特点是:1、电路机构简单,易于操作;2、工作稳定,灵敏度高,性能可靠。此传感器可以用于智能小车的避障,该传感器可以手动调节测距的范围,当电源接通后,红外线传感器就开始工作了,小车距离障碍物达
10、到所设定的范围时,传感器接收到反射回来的红外线达到一定程度后,传感器内部通过三极管放大作用,输出低电平,当CPU判断后,执行相应的程序,达到绕开障碍物的目的。红外线传感器如图3所示。图3 红外线传感器(3)火焰传感器工作原理:火焰的热辐射具有离散光谱的气体辐射和连续光谱的固体辐射。不同燃烧物的火焰辐射强度、波长分布有所差异,但总体来说,其对应火焰温度的1-2微米近红外波长域有最大的辐射强度。火焰传感器是机器人专门用来搜寻火源的传感器。火焰传感器是利用对红外线特别敏感的特点,将火焰的亮点转化成高度变化的电平信号,输入到处理器中。火焰传感器如图4所示。图4 火焰传感器(4)蜂鸣器蜂鸣器是一种一体化
11、结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。第四章 软件设计4.1 程序流程图主程序首先对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式,置位总中断允许位并显示端口清零;然后调用火焰传感器开始计算两个传感器的接收光数值的差异。火焰传感器程序的作用是通过A/D转换,使光信号转换成电信号进入到CPU开始计算电压的差值,利用差值判断出两个传感器何处有火源,从而操纵舵机进行转向,找到火源,然后调用蜂鸣器进行报警。4.2 程序设计#include
12、 #include int i; sbit left=P20;sbit right=P21;float left_fire; /火焰传感器float right_fire;sbit peng_left=P10; /碰撞时为低电平sbit peng_right=P11;sbit redwai=P30; /范围内为低电平sbit xun_left=P15; /循迹传感器sbit xun_right=P16; void goahead(void) /前进 left=1;right=1;Delay01Ms(13);left=0;Delay01Ms(4);right=0;left=0; DelayMs(
13、20);void goback(void) /后退 right=1;left=1; Delay01Ms(13);right=0;Delay01Ms(4);right=0;left=0;DelayMs(20);void turnright(void) /右转 right=1;left=1; Delay01Ms(13);right=0;left=0;DelayMs(20);void turnleft(void) /左转 right=1;left=1;Delay01Ms(17);right=0;left=0;DelayMs(20);float ADC_Right(void) /右边火焰传感器AD转换
14、 float ADC_Result; P1ASF=0x08; AUXR1=0x04;ADC_CONTR=0x8B;DelayMs(10);ADC_Result=ADC_RESL+ADC_RES*256; /取值ADC_Result=(ADC_Result*500)/1024; /转换为电压return ADC_Result;ADC_CONTR=0x00;float ADC_left(void) float ADC_Result; P1ASF=0x04; AUXR1=0x04;ADC_CONTR=0x8A;DelayMs(10);ADC_Result=ADC_RESL+ADC_RES*256; /取值ADC_Result=(ADC_Result*500)/1024; /转换为电压retu