基于89C51单片机的智能循迹小车大学本科方案设计书.docx
《基于89C51单片机的智能循迹小车大学本科方案设计书.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的智能循迹小车大学本科方案设计书.docx(20页珍藏版)》请在冰豆网上搜索。
基于89C51单片机的智能循迹小车大学本科方案设计书
摘要:
本设计采用STC89C51单片机作为智能小车的控制核心,利用灰度光电传感器QIT检测黑带,采用L298N驱动电路完成驱动并由单片机输出的PWM波控制速度。
关键词:
智能、STC89C51、L298N、灰度传感器QIT
Abstract:
ThisdesignusesSTC89C51microcontrollerasthecontrolcoreofintelligent.Vehicle,usinggrayphotoelectricsensorQITdetectionblackbelt,usingtheL298NdrivecircuitfordrivingandcontrollingthespeedofcompletionbysinglechipoutputPWMwave
Keywords:
Intelligent,STC89C51,L298N,QITimagesenso
基于89C51单片机的智能循迹小车
摘要:
本设计采用STC89C51单片机作为智能小车的控制核心,利用灰度光电传感器QIT检测黑带,采用L298N驱动电路完成驱动并由单片机输出的PWM波控制速度。
关键词:
智能、STC89C51、L298N、灰度传感器QIT
Abstract:
ThisdesignusesSTC89C51microcontrollerasthecontrolcoreofintelligentvehicle,usinggrayphotoelectricsensorQITdetectionblackbelt,usingtheL298NdrivecircuitfordrivingandcontrollingthespeedofcompletionbysinglechipoutputPWMwave
Keywords:
Intelligent,STC89C51,L298N,QITimagesenso
第一章绪论
1.1智能小车的研究背景及目的
目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能小车以及在智能小车基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。
世界上许多国家都在积极进行智能小车的研究和开发设计。
移动机器人是机器人学中的一个重要分支,出现于20世纪06年代。
当时斯坦福研究院(SRI)的NilsNilssen和charlesRosen等人,在1966年至1972年中研制出了取名shakey的自主式移动机器人,目的是将人工智能技术应用在复杂环境下,完成机器人系统的自主推理、规划和控制。
从此,移动机器人从无到有,数量不断增多,智能小车作为移动机器人的一个重要分支也得到越来越多的关注。
智能小车,是一个集环境感知、规划决策,自动行驶等功能于一体的综合系统,它集中地运用了计算机、传感、信息、通信、导航及白动控制等技术,是典型的高新技术综合体
1.2智能小车的意义
目前,国内外的许多大学及研究机构都在积极投入人力、财力研制开发针对特殊条件下的安全监测系统。
其中包括研究使用远程、无人的方法来进行实现,如机器人、远程监控等。
无线传输的发展使得测量变得相对简单而且使得处理数据的速度变得很快甚至可以达到实时处理”。
该智能小车可以作为机器人的典型代表。
它可以分为三大组成部分:
传感器检测部分、执行部分、CPU。
机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。
可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。
通过构建智能小车系统,培养设计并实现自动控制系统的能力。
在实践过程中,熟悉以单片机为核心控制芯片,设计小车的检测、驱动和显示等外围电路,采用智能控制算法实现小车的智能循迹。
灵活应用机电等相关学科的理论知识,联系实际电路设计的具体实现方法,达到理论与实践的统一。
在此过程中,加深对控制理论的理解和认识。
第二章方案设计与论证
2.1控制器模块方案
根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。
据此,拟定了以下两种方案并进行了综合的比较论证,具体如下:
方案一:
选用一片CPLD(如EPM7128LC84-15)作为系统的核心部件,实现控制与处理的功能。
CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。
但CPLD在控制上较单片机有较大的劣势。
同时,CPLD的处理速度非常快,而小车的行进速度不可能太高,那么对系统处理信息的要求也就不会太高,在这一点上,MCU就已经可以胜任了。
若采用该方案,必将在控制上遇到许许多多不必要增加的难题。
为此,我们不采用该种方案,进而提出了第二种设想。
方案二:
采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。
充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。
因此,这种方案是一种较为理想的方案。
针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。
根据这些分析,我选定了51单片机作为本设计的主控装置,51单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是51单片机价格非常低廉。
在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C51单片机的资源。
2.2电机驱动模块方案
方案一:
采用直流电机,配合LM293驱动芯片组合。
优点在于硬件电路的设计简单。
当外加额定直流电压时,转速几乎相等。
这类电机用于录音机、录相机、唱机或激光唱机等固定转速的机器或设备中。
也用于变速范围很宽的驱动装置。
容易受到外部因素干扰,影响稳定的转速和转矩输出。
方案二:
采用步进电机,配合LM298驱动芯片组合。
步进电机可以实现精确的转脚输出,只要施加合适的脉冲序列,电机可以按照人们的预定的速度或方向进行连续的转动,便于控速,但是软件程序的编写较直流电机稍显复杂。
但是LM298芯片的硬件电路比较复杂。
方案三:
采用直流电机配合由双极性管组成的H桥电路。
用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H桥电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也很高,是一种广泛采用的调速技术,其电路原理简图如图2-1所示。
图2-1电机驱动原理简图
综合3种方案的优缺点,鉴于本系统设计体积较小,自身重量较轻,对电机功率输出要求不高,决定选择方案3。
2.3循迹模块方案
方案一:
采用简易光电传感器结合外围电路探测,但实际效果并不理想,对行驶过程中的稳定性要求很高,且误测几率较大、易受光线环境和路面介质影响。
在使用过程极易出现问题,而且容易因为该部件造成整个系统的不稳定。
故最终未采用该方案。
方案二:
采用两只QTI灰度传感器(如图2.2),分别置于小车车身前轨道的两侧,根据两只光电开关接受到白线与黑线的情况来控制小车转向来调整车向,测试表明,只要合理安装好两只光电开关的位置就可以很好的实现循迹的功能。
(参考文献[3])
方案三:
采用三只红外对管,一只置于轨道中间,两只置于轨道外侧,当小车脱离轨道时,即当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。
现场实测表明,小车在寻迹过程中有一定的左右摇摆不定,虽然可以正确的循迹但其成本与稳定性都次与第二种方案。
通过比较,我选取第二种方案来实现循迹。
图2.2QTI灰度传感器
2.4电源模块方案
方案一:
采用单电源供电,通过单电源同时对单片机和直流电机进行供电,此方案的优点是,减少机身的重量,操作简单,其缺点是,这样会使单片机的波动变大,影响单片机的性能,稳定性比较弱。
方案二:
采用双电源供电,通过两个独立的电源分别对单片机和直流电机进行供电,此方案的优点是,减少波动,稳定性比较好,可以让小车更好的运作起来,唯一的缺点就是会增加小车的重量。
由于该小车的耗电量比较小,为了方便,我选择了方案二来实现供电。
第三章智能小车硬件设计
3.1单片机电路的设计
一个单片机应用系统的硬件电路设计包含两部分内容:
一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、A/D、D/A转换器等。
3.2单片机的功能特性描述
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜。
单片机内部也有和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件。
单片机是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本课题选择了STC公司的生产的STC89C51单片机。
STC89C51是采用8051核的ISP(InSystemProgramming)在系统可编程芯片,最高工作时钟效率为80MHz,片内含8KBytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。
特点:
增强型1T流水线/精简指令集结构8051CPU
(1)工作电压:
3.4~5.5V(5V单片机)/2.0~3.8V(3V单片机)
(2)工作频率范围:
0-35MHz,相当于普通8051的0~420MHz实际工作频率可达48MHz
(3)用户应用程序空间12K/10K/8K/6K/4K/2K字节
(4)片上集成512字节RAM
(5)通用I/0口(27/23个),复位后为:
准双向口/弱上拉(普通8051传统I/0口)可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/0口驱动能力均可达到20mA,但整个芯片最大不得超过55mA
3.3时钟电路设计
常见的单片机的时钟产生方法有两种:
内部时钟方式和外部时钟方式。
大部分系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路来实现。
STC89C51单片机内部有一个用于构成振荡器的高增益反相放大器,它的引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。
外接晶体谐振器以及电容C1和C2构成并联的谐振电路,接在放大器的反馈回路中,这就构成了其内部的时钟电路。
虽然对外接电容的值没有特别严格的要求,但是电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的速度和振荡器的温度,从而影响到整个控制系统的稳定。
因此,考虑到系统电路的稳定性,设计中使用了值为12MHz的晶体振荡器,选择了30PF的陶瓷电容,如图3-1所示。
在焊接电路板时,为了更好地保证震荡器稳定和可靠地工作,我将晶体振荡器和电容安装在了单片机芯片的旁边,以减少寄生电容,影响震荡器。
图3-1时钟电路
3.4复位电路设计
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个触发器与复位电路相连,触发器用来抑制噪声,它的输出在每个机器周期中由复位电路采样一次。
复位电路通常采用上电自动复位和按钮复位两种方式。
所谓上电复位,是指计算机加电瞬间,要在RST引脚出现大于10MS的正脉冲,使单片机进入复位状态。
按钮复位是指用户按下“复位”按钮,使单片机进入复位状态[5]。
如图3-2所示,这是本次设计中使用的按钮复位,它是一种实用复位电路电路。
上电时,+5V电源立即对单片机芯片供电,同时经电阻R对电容C3充电。
C3上电压建立的规程就产生一定宽度的负脉冲,经反向后,RST上出现正脉冲使单片机实现了上电复位。
按钮按下时,RST上同样出现高电平,实现了按钮复位。
在应用系统中,有
些外围芯片也需要复位。
如果这些芯片复位端的复位电平和单片机一致,则可以与单片机复位脚相连,因此,非门在这里不仅起了反向作用,还增大了驱动能力,电容C1,C2起虑波作用,防止干扰窜入复位端产生误动作。
图3-2手动复位电路
3.5循迹模块的设计
循迹是指小车在白色地板上循黑线行走通常采取的方法是红外探测法,红外探测法即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射反射光被装在小车上的接收管接收,如果遇到黑线则红外光被吸收小车上的接收管接收不到红外光,单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线,从而实现小车的循迹功能。
红外探测器探测距离有限一般最大不应超过3cm。
本次设计需要检测小车的运行状态,沿着路面黑线运动。
采用反射取样式,单光束红外传感器接收信号,再分别用运放LM393比较电压信号进行放大。
图3-5的电路在5V电压下工作,根据该型号传感器红外发射管所需的工作压降(红外发射管的正向压降在1~1.3V)和工作电流(红外发射管的电流为2~10mA),选取负载电阻R1=2.2KΩ,红外发射管负载电阻R2=220Ω。
调节电位器使检测信号能被识别。
3-3循迹模块原理图
3.6传感器模块的设计
利用红外线在不同颜色的表面特征,具有不同的反射性能,汽车行驶过程中接收地面的红外光。
当红外光遇到白色路线,地板发生漫反射,安装在小型车的反射光接收器接收;如果是遇到黑色路线,红外光将被黑线吸收,安装在小车上的接收管没有收到红外光。
控制器会根据是否收到反射的红外光为判断依据来确定的黑线的位置和小车的路线。
红外探测器距离通常是不应超过15厘米的。
红外发射和接收红外线感应器,可以使自己或直接使用集成红外探头。
调整左右传感器之间的距离,两探头距离约等于黑线宽度最合适,选择宽度为3 – 5厘米的黑线。
该传感器的灵敏度是可调的,传感器有时遇到黑线却不能送出相应的信号,通过调节传感器上的可调电阻,适当的增大或减小可改变灵敏度。
另外,传感器的放置也是有讲究的,有两种方法,一种是两个都是放置在黑线内侧紧贴黑线边缘,第二种是都放置在黑线的外侧,同样紧贴黑线边缘。
本设计采用第二种方法。
市面上有很多红外传感器,在这里我选用QTI灰度传感器。
图3.3QTI传感器原理图
3.7电机驱动电路的设计
电机驱动采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。
通过单片机给予L298N电路PWM信号来控制小车的速度,起停。
其引脚图如3.5。
图3.5L298N引脚图
机器人小车采用了分立元件构成直流电机的驱动电路配合四组直流减速电机使用,通过单片机系统直接控制电机驱动电路,达到控制机器人小车前进,后退左右转向。
如图3-6所示,L289N型号驱动电路,IN为输入单片机信号端,OUT为输出信号端,两者波形一致,OUT只是对IN的放大,从而达到驱动电机的目的,以M1/M3电机为例,当使能端A输入1,IN1输入1,IN2输入0时,OUT1输出1,小车前进;当使能端A输入1,IN1输入0,IN2输入1时,OUT2输出1,小车后退;当使能端A输入1,IN1输入1,IN2输入1时,OUT1输出1,OUT2输出1,小车停止;当使能端A输入1,IN1输入0,IN2输入0时,OUT1输出0,OUT2输出0,小车停止。
图3-6电机驱动模块电
第四章机器人小车软件设计
4.1总体结构框图
光电传感器所接收到的反射光来判断小车所应行走的方向。
以三个反射式光电传感器为例进行说明循线的原理。
光电传感器与黑线位置关系示意图如图4-1所示。
4.2总体程序流程图
图4.1光电传感器与黑线位置关系示意图
检测环节中一共有6个这样的传感的红外检测单元,实现组合式的控制方向的检测。
6个光敏传感电路组合功能见表4-2。
表4-2光敏传感器状态真值表
左X
右Y
1号
2号
正常行驶
1
1
右转
0
1
左转
1
0
脱离引导线
0
0
通过循环检测输入端口的检测值,判断目前巡线所处的位置,并且通过控制电机输出来实现左转、右转、直行运动。
在白色背景中有一条黑色的线,小车就是要沿着这条黑线行走.程序见附录
结束语
通过本次毕业设计,使我了解到小车的循迹原理,系统的学习了51单片机系统的工作原理及使用方法。
此方案选择的器件比较简单,实际中也很容易实现。
经过多次测试,结果表明在一定的弧度范围内,小车能够沿着黑线轨迹行进,达到了预期目标。
本系统能够基本满足设计要求。
但由于本人经验能力有限,本论文中或多或少会存在一些缺点,所设计的软硬件难免存在一些不足,还恳请各位老师和同学给予批评和指正
这次课题设计,不仅是对我们课本所学知识的巩固和考察,更是对我的自学能力和收集资料能力以及动手能力的考验。
过本次课程设计,极大的锻炼了我的独立思考能力,分析问题能力和实践能力,并对单片机有了一个更加深的认识。
总之,在设计的过程中,无论是对于学习方法还是理论知识,我们都有里新的认识,受益匪浅,这将激励我在今后再接再厉,不断完善自己的理论知识,提高实践动手能力。
致谢
在本文的撰写过程中,周伟老师作为我的指导老师,他治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。
置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。
其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。
正是由于他在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。
在此特向周老师致以衷心的谢意!
向他无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意。
参考文献
[1]张铁.机器人学.华南理工大学出版社.2001
[2]蔡自兴.机器人学.清华大学出版社.2009.
[3]丁学恭.机器人控制研究.浙江大学出版社.2006
[4]蔡自兴.机器人学的发展趋势与发展战略.高技术通信.2001,11
[5]蔡自兴.智能控制及移动机器人研究进展.中南大学学报.2005
[6]王田苗.走向产业化的先进机器人技术.中国制造业信息化,2005,10
[7]孙迪生,王炎.机器人控制技术.机械工业出版社,1997
[8]蔡自兴,姚莉.人工智能及其在决策系统中的应用.国防科技大学出版社,2006
[9]王晶,翁显耀,梁业宗自动寻迹小车的传感器模块设计.武汉理工大学自动化学院 湖北武汉
[10]王文华.基于80C51单片机的智能小车设计[J].山西电子技术,2010(4):
9—10.
附录
#include
//IO定义
#defineLMOTORP1_3//左边电机使用P1_3口
#defineRMOTORP1_2//右边电机使用P1_2口
#defineSTARTLEDP1_4
//常数定义
#defineLFwdFast2000//左边电机前进,快
#defineLFwdSlow1600//左边电机前进,慢
#defineLStop1500//左边电机停止
#defineLRevSlow1400//左边电机倒退,慢
#defineLRevFast1000//左边电机倒退,快
#defineRFwdFast1000//右边电机前进,快
#defineRFwdSlow1400//右边电机前进,慢
#defineRStop1500//右边电机停止
#defineRRevSlow1600//右边电机倒退,慢
#defineRRevFast2000//右边电机倒退,快
unsignedcharpulses;
unsignedcharbdatalineBits;
sbitlbLeft=lineBits^1;
sbitlbRight=lineBits^0;
voidGo_Fwd()//机器人前进
{
LMOTOR=1;
delay_nus(LFwdFast);
LMOTOR=0;
RMOTOR=1;
delay_nus(RFwdFast);
RMOTOR=0;
delay_nms(20);
}
voidSpin_Left()//左转
{
for(pulses=1;pulses<20;pulses++)
{
LMOTOR=1;
delay_nus(LRevFast);
LMOTOR=0;
RMOTOR=1;
delay_nus(RFwdFast);
RMOTOR=0;
delay_nms(20);
}
}
voidSpin_Right()//右转
{
for(pulses=1;pulses<20;pulses++)
{
LMOTOR=1;
delay_nus(LFwdFast);
LMOTOR=0;
RMOTOR=1;
delay_nus(RRevFast);
RMOTOR=0;
delay_nms(20);
}
}
voidAbout_Face()
{
for(pulses=1;pulses<10;pulses++)//后退
{
LMOTOR=1;
delay_nus(LRevFast);
LMOTOR=0;
RMOTOR=1;
delay_nus(RRevFast);
RMOTOR=0;
delay_nms(20);
}
for(pulses=1;pulses<30;pulses++)//转身
{
LMOTOR=1;
delay_nus(LFwdFast);
LMOTOR=0;
RMOTOR=1;
delay_nus(RRevFast);
RMOTOR=0;
delay_nms(20);
}
}
voidRead_Line_Sensors()
{
lbLeft=(P1&0x01)?
1:
0;//左QTI
lbRight=(P1&0x02)?
1:
0