智能循迹小车_第1页
智能循迹小车_第2页
智能循迹小车_第3页
智能循迹小车_第4页
智能循迹小车_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、 专业创新实践实训报告课题名称智能循迹小车成 员*院 系航空工程学院专 业电子信息科学与技术专业指导教师*2016年5月28日目 录1 实训任务与内容11.1实训任务11.2 实训内容12 模块设计12.1 电路模块设计12.1.1 硬件电路设计22.1.2 软件程序设计32.2 电机驱动模块设计52.2 电源模块的设计62.3 传感器模块的设计63 测试结果74 心得体会8附录1 电路原理图的总图9附录2 源程序101 实训任务与内容1.1实训任务1)熟悉51单片机集成开发环境,运用C语言编写工程文件;2)熟练应用所选用单片机的内部结构、资源、以及软硬件调试的设备的基本方法;3)自行构建基于

2、单片机的最小系统,完成相关硬件电路的设计实现;1.2 实训内容基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线的走向实现快速稳定的循线行驶。小车系统以AT89C52单片机位系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。2 模块设计2.1 电路模块设计2.1.1 硬件电路设计图2.1 驱动系统的原理图图2.2传感器系统的原理图图2.3电源系统的原理图我们选用的是三个光电开关进行寻迹。光电开关电源线接入5V的电源,三

3、个光电开关分别接入单片机的P1.0口-P1.2口。采用两个L298N芯片作为电机驱动芯片,步进电机模块的引脚ENA和ENB分别连接P0.6口和P0.7口;直流电机模块的引脚ENA和ENB分别连接P0.4口和P0.5口。模块的INT1-INT4连接单片机的P0.0-P0.3口,另一驱动模块IN为P2.0-P2.3口,OUT1-OUT4连接两个直流电机。小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此

4、时应使小车向左转;如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。2.1.2 软件程序设计图2.4 驱动系统的流程图系统总体软件设计综上所述,本系统主要实现的各个模块算法为:电机驱动算法,寻迹算法,测速算法,LCD显示算法。系统总体程序框图如图11所示。其中在小车寻迹的过程中,会不断调用测速算法,并通过LCD将实时速度显示出来。各个数的调用关系为了控制电机1和电机2PWM信号的占空比,设置了两个变量DutyCycle1和DutyCycle2,这两个变量的值可以作

5、为控制电机移动函数的参数控制电机的速度。规定当DutyCycle的值小于time_count时电机的使能端输出1,反之输出0,这样就可以改变PWM信号占空比,控制电机的转速了。小车转向控制小车转向控制:小车移动中前进比较容易控制,只要让两个电机同时正转就可以了。控制小车转向时有两种策略,第一种是一个电机正转而另一个不转,第二种是一个电机正转而另一个反转。在测试中我们发现采用第一种方法当小车运动时,运动一侧的轮子会带动不运动一侧的轮子迫使小车继续运动。所以我们采用了第二种控制小车转向的方法。控制电机转向的有两个方向位,DIR_L和DIR_R,它们不同状态和电机转向之间的关系表1表所示:小车速度和

6、方向控制的函数都已经封装在一起,通过入口参数可以进行调节。图2.5 智能循迹小车运行图图2.6 智能循迹小车图2.2 电机驱动模块设计驱动模块采用专用芯片L298N作为电机驱动芯片,L298N是一个具有高电压大电流的全桥驱动芯片,其响应频率高,一片L298N可以分别控制两个直流电机,驱动电路的设计如图L298N的5、7、10、12四个引脚接到单片机上,通过对单片机的编程就可实现两个直流电机的PWM调速以及正反转控制。L298驱动电机介绍:L298N 为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱

7、动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个桥式的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的I/O端口来提供模拟时序信号,但在本驱动电路中用L298来提供时序信号,节省了单片机I/O 端口的使用。L298N 接脚Pin1 和Pin15 可与电流侦测用电阻连接来控制负载的电路;OUTl、OUT2 和OUT3、OUT4 之间分别接2个步进电机;in1in4 输入控制电位来控制电

8、机的正反转;Enable则控制电机停转。采用L298N作为电机驱动芯片。L298N具有高电压、大电流、响应频率高的全桥驱动芯片,一片 L298N可以分别控制两个直流电机,并且带有控制使能端。该电机驱动芯片驱动能力强、操作方便,稳定性好,性能优良。L298N的使能端可以外接电平控制,也可以利用单片机进行软件控制,满足各种复杂电路的需要。另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够的问题。2.2 电源模块的设计在本系统中,需要用到的电源有单片机的5V,L298N芯片的电源5V和电机的电源7-15V。所以需要对电源的提供必须正确和稳定可靠。方案一:用

9、9V的锌电源给前、后轮电机供电,然后使用7805稳压管来把高电压稳成5V分别给单片机和电机驱动芯片供电。这种接法比较简单,但小车的电路功耗过大会导致后轮电机动力不足。方案二:采用双电源。为了确保单片机控制部分和后轮电机驱动的部分的电压不会互相影响,要把单片机的供电和驱动电路分开来,即:用直流电12v供给单片机,后轮电机的电源用5V供电,这样有助于消除电机干扰,提高系统的稳定性。基于以上分析,我们选择了方案二,采用双电源供电。2.3 传感器模块的设计TC端是传感器工作控制端,为高电平时,发光二极管不工作,传感器休眠,为低电平时,传感器启动。Signal端为检测信号输出,当遇到黑线,黑线吸收大量的

10、红外线,反射的红外线很弱,光敏三极管不导通,Signal输出高电平;当遇到白线,与黑线相反,反射的红外线很强,使光敏三极管导通,Signal输出低电平。这种探测方法,即利用红外线在不同颜色的表面特征,具有不同的反射性能,汽车行驶过程中接收地面的红外光。当红外光遇到白色路线,地板发生漫反射,安装在小型车的反射光接收器接收;如果是遇到黑色路线,红外光将被黑线吸收,安装在小车上的接收管没有收到红外光。控制器会根据是否收到反射的红外光为判断依据来确定的黑线的位置和小车的路线。红外探测器距离通常是不应超过15厘米的。红外发射和接收红外线感应器,可以使自己或直接使用集成红外探头。调整左右传感器之间的距离,

11、两探头距离约等于黑线宽度最合适,选择宽度为3-5厘米的黑线。该传感器的灵敏度是可调的,传感器有时遇到黑线却不能送出相应的信号,通过调节传感器上的可调电阻,适当的增大或减小可改变灵敏度。另外,循迹传感器的放置也是有讲究的,有两种方法,一种是两个都是放置在黑线内侧紧贴黑线边缘,第二种是都放置在黑线的外侧,同样紧贴黑线边缘。本设计采用第二种方法。单片机烧录程序后,就可以执行循迹指令了。如果小车向前行驶时向左偏离了黑线,那么右边传感器会产生一个高电平,单片机判断这个信号,然后向右拐回到黑线。两传感器输出信号为低电平时,小车前进。如果小车向右偏离黑线,左边传感器产生一个高电平,单片机判断这个信号,然后向

12、左拐。这样,小车一定不会偏离黑线。若两个光电传感器同时输出的信号为高电平,即单片机判断的都为高电平时,小车向前直走。3 测试结果从直线段O点出发,让小车智能循迹至N点,记录直点线段O点至A点的所用时间,记录A点至B点的时间,依次记录B点至C点、C点至D点、D点至E点、E点至F点、F点至N点的时间,重复测试5次,并记录时间。 图3.1 智能循迹小车跑道图 起点位于弯道的运行时间要长于起点位于直道的运行时间。导致这个现象出现的原因是由于弯道的曲率变化给小车的循迹调整带来了较大的影响,对应小号的调整时间业比起于直道的测试过程要长些。有时,小车会稍微偏离跑道。对传感器的灵敏度需要更加仔细的调整。4 心

13、得体会根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。 通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次课程设计使我们对一个项目的

14、整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Protel设计电路。本次智能循迹小车课程设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的智能循迹小车的课程设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次智能循迹小车的课程设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。总之,在这次的课程设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我

15、们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。附录1 电路原理图的总图图3.1 电路原理图总图附录2 源程序 #include<regx52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned intsbit in1=P10; sbit in2=P13; sbit pwm1=P12;sbit pwm2=P14;sbit zuo=P07; /红外传感器1 sbit zhong=P06; /红外传感器2 sbit you=P02; uchar count=0

16、; uchar dj1=0;uchar dj2=0;void advance() in1=1; in2=1;dj1=15;dj2=15; /红外传感器3 /小车前进子函数void left() in1=1; in2=1; dj1=18; dj2=7;void right() in1=1; in2=1; dj1=7; dj2=18; void left1() in1=1; in2=0; dj1=15; dj2=18; void right1() in1=0;in2=1;/小车左转微调子函数1 /小车右转微调子函数1 /小车左转微调子函数2 /小车右转微调子函数2dj1=18; dj2=15;vo

17、id timer0_init() /0.5ms 定时器设置 TMOD=0X01; TH0=0XFE; TL0=0X33; EA=1; ET0=1; TR0=1;void timer0() interrupt 1 /定时器中断函数 TH0=0XFE; TL0=0X33;count+;if(count<=dj1)pwm1=1; else pwm1=0; if(count<=dj2)pwm2=1; else pwm2=0; if(count>=320)count=0; /PWM脉宽调速void main()/主函数 /初始化 timer0_init();P0=0XFF; P1=0X02; P2=0X00; P3=0X00;while(1) if(zuo=0)&&(zhong=1)&&(you=0) /小车在正确的轨道上,小车前进 advance(); if(zuo=0)&&(zhong=1)&&(you=1) /小车偏左,执行右转微调子函数1 right(); if(zuo=1)&&(zhong=1)&&(you=0) /小车偏右,执行左转微调子函数1 left(); if(zuo=1)&&(z

温馨提示

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

评论

0/150

提交评论