智能寻轨小车_第1页
智能寻轨小车_第2页
智能寻轨小车_第3页
智能寻轨小车_第4页
智能寻轨小车_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.PAGE..........专业..仲恺农业工程学院基于STC89C52单片机的红外寻迹小车设计学院:自动化学院班级:自动化111班姓名:武洁学号:4指导教师:唐宇成绩:目录关键词:3一、系统简述31、功能简述32、小车寻迹原理33、控制系统总体设计4二、硬件设计41、寻迹传感器模块42、控制器模块63、电机及驱动模块74、测速模块设计8三、软件设计91、PWM控制92、总体软件流程图103、小车寻迹流程图124、中断程序流程图13四、设计总结14五、设计心得体会15附录〔单片机程序〕161、寻迹程序162、速度测量18参考资料20摘要:本设计是一种基于STC89C52单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法。小车以STC89C52单片机为控制核心,用单片机模拟产生PWM波控制小车速度,利用红外光电传感器对路面黑色轨迹进展检测,并将路面检测信号反响给单片机。单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。关键词:单片机STC89C52红外光电传感器直流电机PWM调速一、系统简述1、功能简述总体功能本设计是基于STC89C52单片机的智能寻迹小车设计,设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶;此外系统还利用编码盘对行驶的小车的速度进展测量,并显示在数码管上,系统方案方框图如图1所示。检测〔黑线〕检测〔黑线〕驱动电机软件控制控制小车编码盘检测数码管系统方案方框图2、小车寻迹原理这里的寻迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断"道路〞,采取的方法是红外探测法。

红外探测法,即利用红外线在不同颜色的物体外表具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线那么红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。3、控制系统总体设计自动寻迹小车控制系统由主控制电路模块、稳压电源模块、红外检测模块、电机及驱动模块等局部组成,控制系统的构造框图如图2所示。控制系统的构造框图数码管显示速度控制系统的构造框图数码管显示速度主控芯片STC89C52LN298驱动直流电机光电传感器电压比拟器主控制电路模块:用STC89C52最小单片机系统、复位电路,时钟电路,32路I/O口红外检测模块:光电传感器红外双管,比拟器LM339电机及驱动模块:电机驱动芯片LN298N、两个直流电机测速模块:用74HC14反向器做信号处理二、硬件设计1、寻迹传感器模块寻迹模块采用红外线发射和接收管等分立元器件组成探头,并使用LM339电压比拟器〔参加迟滞电路〕,防止临界输出抖动做为核心器件构成中控电路。此系统具有的多种探测功能能极大的满足在黑线检测的测试中,假设检测到黑色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压为4.8V,假设检测到白色区域,接收管承受到发射管发射的红外线,光电管导通,电阻发生变化,所分得的电压也就随之发生变化,测的接收管的电压为0.5V,测试根本满足要求。判断有无黑线我们用的一块比拟器LM339芯片,LM339电压比拟器芯片部装有四个独立的电压比拟器,各引脚如下列图,比拟基准电压由10K的变阻器调节,各个接收管的参数都不一致,每个传感器的比拟基准电压也不尽一样,我们为每个传感器配备了一个变阻器。整个探测模块具体电路如下:通过红外双管检测黑线,输出信号给LM339芯片,接收电压与比拟电压比拟后,输出信号变为上下电平,再输入到单片机中,用以判定是否检测到黑线。

在小车具体的寻迹行走过程中,为了能准确测定黑线位置并确定小车行走的方向,需要同时在底盘装设4个红外探测头,在车前方横排的设置四个探头相对位置,黑线大小为两个人探头的大小。2、控制器模块采用STC公司的STC89C52单片机作为主控制器,是一个低功耗,高性能的8位单片机,它具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断构造〔兼容传统51的5向量2级中断构造〕,全双工串行口。另外STC89C时钟电路和复位电路与单片机构成最小系统,如图31〕采用外部时钟,晶振频率为12MHZ2〕采用按键复位STC89C52最小单片机系统3、电机及驱动模块A、直流电机:电机采用直流减速电机,直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。由于其部由高速电动机提供原始动力,带动变速〔减速〕齿轮组,可以产生较大扭力。B、电机驱动:驱动模块采用专用芯片L298N作为电机驱动芯片,L298N是一个具有高电压大电流的全桥驱动芯片,其响应频率高,可以直接驱动两路3-30V直流电机,并提供5V输出端口,直接供给5V单片机电路系统供电本设计采用两驱驱动芯片,一片L298N可以分别控制两个直流电机。以下为L298N的引脚图和输入输出关系表。该模块提供4输入或6输入单片机信号,用跳线帽灵活选择PWM调速,板载上拉电阻,完美解决51单片机IO口驱动能力缺乏的问题。L298N外部引脚L298N输入输出关系IN1-IN4为单片机控制信号输入,ENA、ENB可以作为PWM调速输入信号端,通过单片机编程可实现PWM调速设计,可以用跳线帽直接接高电平为全速驱动;OUT1-OUT4为输出到电机,其中OUT12控制电机1,OUT34控制电机2,VCC、GND为电池盒电源供给。驱动电路的设计如图3-10所示:L298N电机驱动电路4、测速模块设计测速是利用编码盘的原理,使用一休化对射红外发射接收管WYCH206,并使用74HC14〔带施密特触发器反向器〕,防止临界输出抖动做为核心器件构成中控电路。该装置留有安装孔易于安装,使用非常简便,灵敏度高,反响非常迅速。由红外发射管发出的红外管,在编码盘栅格遮挡下,对边的接收管没有承受到红外光,那么表现为高电平输出,没有遮挡时有承受到红外光,那么为低电平输出。经过对射红外发射接收管在编码盘的影响下,把传输信号经过74HC14芯片处理输出到单片机的P3.5口,利用T1计数器对下降沿信号的计数,通过在1S的计数脉冲来求得小车速度。小车车轮直径为6.5CM。通过脉冲计数,在1S脉冲数C,那么速度V=〔2*3.14*6.5〕/20*C,单位为CM/S当光电传感器开场承受信号,通过比拟器将信号传入单片机中。小车进入寻迹模式,即开场不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。与此同时,速度检测红外对管也对编码盘进展测测速,并时时刻刻显示在数码管上。单片机采用T0定时1ms,通过产生PWM波,控制电机转速,并计时100ms测速周期,T1计数器,对下降沿进展计数,计算小车速度。三、软件设计1、PWM控制本系统采用PWM来调节直流电机的速度。PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而到达控制要求的一种电压调整方法。PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期"接通〞和"断开〞时间的长短。通过改变直流电机电枢上电压的"占空比〞来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为"开关驱动装置〞。在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。本系统过控制52单片机的定时器T0的初值,从而可以实现ENA和ENB输出口输出不同占空比的脉冲波形。定时器周期中断一次,就使ENA和ENB产生一个高电平或低电平。将直流电机的速度分为100个等级,因此一个周期就有个100脉冲,周期为100个脉冲的时间。速度等级对应一个周期的高电平脉冲的个数。占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。一个周期加在电机两端的电压为脉冲高电压乘以占空比。占空比越大,加在电机两端的电压越大,电机转动越快。电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。当我们改变占空比时,就可以得到不同的电机平均速度,从而到达调速的目的。准确地讲,平均速度与占空比并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。2、总体软件流程图小车进入寻迹模式后,即开场不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态或把速度测量信号发送到单片机,但单片机计算速度并显示在数码管上。软件的主程序流程图如下图:主程序流程图系统初始化主程序流程图系统初始化任务定时、计数器归零是否完成全部任务?寻迹、测速子函数是否完本钱次任务?完毕开场NYNY3、小车寻迹流程图红外传感器为1、2、3、4,虚线为黑线,小车进入寻迹模式后,即开场不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果中间2个传感器探测到黑线,即小车中部压到黑线,小车向前前进;如果1、2或1级传感器探测到黑线,小车车身右偏出,此时应使小车左转;如果是3、4或4传感器探测到了黑线,,小车向左偏出了轨迹,那么应使小车向右转;如果小车4个传感器都没有检测到黑线,可能是应为惯性,小车冲过头了,此时使是小车向后退,回到刚刚有黑线的地方重新检测,在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。寻迹流程图如下图启动寻迹模式探测黑线启动寻迹模式探测黑线是否检测到黑线判断处理程序向左转left后退back向右转right前进run继续前进NY寻迹流程图寻迹流程图4、中断程序流程图这里利用的是52单片机的T0定时器,从而让单片机P0口的P2.4和P2.5引脚输出占空比不同的方波,然后经驱动芯片放大后控制直流电机。定时器定时1ms中断一次,就使P2.4或P2.5产生一个高电平或低电平。中断程序流程图如下图定时器定时器初始化开启定时器、计数器计数值N1<占空比?P2.4和P2.5输出高电平P2.4和P2.5输出低电平计数变量N1加1开场完毕YN中断程序流程图四、设计总结中断程序流程图本设计主要设计了智能循迹和速度实时测量和显示在数码管的功能。设计介绍了该设计的总体思想和一些用到的根本的原理及系统的硬件、软件设计。现将本文主要工作总结如下:〔1〕本设计使用模块化的设计方法。各个功能在硬件和软件的设计上都实现了模块化。〔2〕系统经过测试,虽然存在着一定的问题,但能够实现小车的循迹功能、寻光功能,根本上能实现小车的路径规划功能。〔3〕小车在弯道方面还存在稳定性问题,基于STC89C52单片机处理速度缓慢和硬件资源比拟少,所以该设计最终还是集成了两块单片机,使编程方面能够很好融合硬件资源。该小车系统还存在一些不完善和需要改良的地方,可以有以下几处需要改良和完善:〔1〕需找较高端的单片机,像STC12系列的单片机,其部硬件资源丰富,能够弥补软件设计过于繁冗而导致不能实现的问题,使得寻迹和测速数码管显示由一块单片机就可以完全实现;〔2〕小车在一些比拟小角度的弯道行驶时还是有点不稳定,可以通过不断测试相应的电机速度来不断选择最正确的适应某弯道的速度,使小车行驶的时候更顺畅,更表达智能性;〔3〕可以在该智能循迹小车中添加更多的有趣的功能。在小车系统中加上光电传感器让小车可以实现避障功能,还可以在小车上安装喇叭让小车播放音乐等,这样小车更具有智能的特点,而且有更多的娱乐和学习的特性。〔4〕该智能循迹小车系统具有循线、追光和路径判断的功能。但这些功能都是用单独的程序实现的,每运行一个功能就需要重新下载程序。对于这个问题,可以用多路开关与单片机的I/O口相连,通过检测开关信号进展智能循迹小车功能的选择。五、设计心得体会这次循迹小车课程设计不得不说是个大工程,让我们从中学会了许多东西,特别是分工与合作。从最开场的买元器件,到焊接、调试循迹板,再到控C语言程序的编写,都不简单。我们的循迹板在第一次焊接完毕,经过调试后,能正常工作。但是,当我们把它装在小车上让它去跑时,问题就来了,有个灯就不亮了。后来经过检测后,终于又弄好了。然后在写C语言时,主要就是调节小车的速度和转弯时的角度。而最难的是小车在过弯道时的稳定性能,真的很复杂,花了我们很多时间才把它写好。而速度测量程序的编写,由于89系列单片机硬件资源有限,所以我们一直都不能实现速度实时测量显示,最后只有有2片89系列的单片机把他们独立出来,才显示成功,这是我们最大的遗憾,后期基于兴趣我们可以用12系列的单片机来弥补这一缺陷,实现1片单片机就实现所有功能。由于这次课程设计的工作量很大,所以我们组这次的分工非常明确。有的人负责硬件搭建,有的人负责写C语言程序,有的人负责循迹板的焊接与调试,还有负责资料的收集和报告的书写。最后,经过我们组的分工协作,终于把循迹小车的制作完成了。这次课程设计,收获最大的,还是告诉了我们要主动去学习新的知识。附录〔单片机程序〕1、寻迹程序#include<reg52.h> #defineuintunsignedint #defineucharunsignedchar sbitIN1=P0^0; sbitIN2=P0^1; sbitIN3=P0^2; sbitIN4=P0^3; sbitLed1=P0^4; sbitLed2=P0^5; sbitLed3=P0^6; sbitLed4=P0^7; sbitPWM_ENA=P2^4; sbitPWM_ENB=P2^5; uinta=0,b=0; ucharN1=0; voidPWM(); voidrun(); voidback(); voidleft(); voidright(); voidmain(){ TMOD=0x01; TH0=0xff;TL0=0xf6; EA=1;ET0=1;TR0=1;while(1) { if(Led2==1&&Led3==1) run(); else { if((Led3==1&&Led4==1)||Led4==1||Led3==1) { left(); } if((Led1==1&&Led2==1)||Led1==1||Led2==1) { right(); } if(Led1==0&&Led2==0&&Led3==0&&Led4==0) { back(); } } }}voidrun(){ a=40; b=40; IN1=1,IN2=0,IN3=1,IN4=0; PWM();}voidback(){ a=40; b=40; IN1=0,IN2=1,IN3=0,IN4=1; PWM();}voidleft(){ a=40; b=30; IN1=1,IN2=0,IN3=0,IN4=0; PWM(); }voidright(){ a=30; b=40;IN1=0,IN2=0,IN3=1,IN4=0; PWM();}voidT0_time()interrupt1{TH0=0xff;TL0=0xf6; N1++; if(N1==100)N1=0; }voidPWM(){ if(N1<a) PWM_ENA=1;else PWM_ENA=0;if(N1<b) PWM_ENB=1;else PWM_ENB=0;}2、速度测量 #include<reg52.h> #defineuintunsignedint #defineucharunsignedchar sbitdula=P2^6; sbitwela=P2^7; ucharcodetable[]={ 0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f, 0x01}; unsigne dcodedis[]={0x40,0x20,0x10,0x0f}; unsignedchardisbuff[5]={0}; unsignedchartime=0; unsignedchari=0; unsignedintcount1=0; unsignedintV=0; voiddelayms(uintkms){ uintx,y; for(x=kms;x>0;x--) for(y=110;y>0;y--);} voidDisplay_SMG(void){if(++i>=4)i=0; wela=1; P1=table[disbuff[i]]; wela=0; P1=0xff; dula=1; P1=dis[i]; dula=0; delayms(5);} voidtime_0()interrupt1using2{TH0=(65536-2000)/256; TL0=(65536-2000)%256; time++; Display_SMG(); if(time>=250) { time=0; V=count1*2; count1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论