自动循迹小车毕业设计之欧阳德创编.docx

上传人:b****2 文档编号:12885997 上传时间:2023-04-22 格式:DOCX 页数:25 大小:127.38KB
下载 相关 举报
自动循迹小车毕业设计之欧阳德创编.docx_第1页
第1页 / 共25页
自动循迹小车毕业设计之欧阳德创编.docx_第2页
第2页 / 共25页
自动循迹小车毕业设计之欧阳德创编.docx_第3页
第3页 / 共25页
自动循迹小车毕业设计之欧阳德创编.docx_第4页
第4页 / 共25页
自动循迹小车毕业设计之欧阳德创编.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

自动循迹小车毕业设计之欧阳德创编.docx

《自动循迹小车毕业设计之欧阳德创编.docx》由会员分享,可在线阅读,更多相关《自动循迹小车毕业设计之欧阳德创编.docx(25页珍藏版)》请在冰豆网上搜索。

自动循迹小车毕业设计之欧阳德创编.docx

自动循迹小车毕业设计之欧阳德创编

xxxxxx学院

时间:

2021.03.07

创作:

欧阳德

xxx系xxx专业xx级

毕业设计(论文)

姓名xx学号xxxxxxxx

指导教师(签名)xxx

二○年月日

烟台工程职业技术学院毕业设计(论文)

诚信承诺书

本人慎重承诺:

我所撰写的设计(论文)《》是在老师的指导下自主完成,没有剽窃或抄袭他人的论文或成果。

如有剽窃、抄袭,本人愿意为由此引起的后果承担相应责任。

毕业论文(设计)的研究成果归属学校所有。

学生(签名)

年月日

前言………………………………………………………………………………………………3

五.致谢…………………………………………………………………………….…………..25

自动循迹小车

摘要:

本设计是一种基于单片机控制的简易自动寻迹小车系统,包括小车系统构成软硬件设计方法。

小车以AT89C51为控制核心,用单片机产生PWM波,控制小车速度。

利用红外光电传感器对路面黑色轨迹进行检测,并将路面检测信号反馈给单片机。

单片机对采集到的信号予以分析判断,及时控制驱动电机以调整小车转向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动寻迹的目的。

关键词:

单片机AT89C51光电传感器直流电机自动循迹小车

前言

随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。

全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。

可见其研究意义很大。

本设计就是在这样的背景下提出的,指导教师已经有充分的准备。

本题目是结合科研项目而确定的设计类课题。

设计的智能电动小车应该能够实时显示时间、速度、里程,具有自动寻迹、寻光、避障功能,可程控行驶速度、准确定位停车。

根据题目的要求,确定如下方案:

在现有玩具电动车的基础上,加装光电、红外线、超声波传感器及金属探测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。

这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。

本设计采用MCS-51系列中的80C51单片机。

以80C51为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。

80C51是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。

它是第三代单片机的代表。

第三代单片机包括了Intel公司发展MCS-51系列的新一代产品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,还包括了Philips﹑Siemens﹑ADM﹑Fujutsu﹑OKI﹑Harria-Metra﹑ATMEL等公司以80C51为核心推出的大量各具特色﹑与80C51兼容的单片机。

新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/D﹑PWM﹑PCA(可编程计数器阵列)﹑WDT(监视定时器)﹑高速I/O口﹑计数器的捕获/比较逻辑等。

这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。

Philips公司还为这一代单片机80C51系列8xC592单片机引入了具有较强功能的设备间网络系统总线----CAN(ControllerAreaNetworkBUS).

新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。

一.任务要求

(一)任务

设计一个基于直流电机的自动寻迹小车,使小车能够自动检测地面黑色轨迹,并沿着黑色车轨迹行驶。

系统方案方框图如图1-1所示。

图1-1系统方案方框图

二.系统设计方案

(一)小车循迹原理

这里的循迹是指小车在白色地板上循黑线行走,由于黑线和白色地板对光线的反射系数不同,可以根据接收到的反射光的强弱来判断“道路”。

通常采取的方法是红外探测法。

 红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。

单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。

红外探测器探测距离有限。

小车供电后,红外光电二极管发出红外光,光线照在路面上反射回来被光电二极管接收,半导体二极管在电场作用下产生电势,将光信号转换成电信号。

该智能小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”——黑线。

当小车检测到黑线时,红外线部分被黑线吸收,反射回的红外线极少被光电二极管接收,转换成比较弱的电信号;当小车未检测到黑线时,红外线大部分被反射,反射回的红外线被光电二极管接收,转换成比较强的电信号。

最终,这些电信号经过比较器处理后传入单片机,再由单片机进一步做信号处理。

(二)控制系统总体设计

自动循迹小车控制系统由主控制电路模块、稳压电源模块、红外检测模块、电机及驱动模块等部分组成,控制系统的结构框图如图2-1所示。

1、主控制电路模块:

用AT89C51单片机、复位电路,时钟电路

整个系统主要由主控中心(单片机)、复位电路、时钟电路、按键控制电路、数码管显示电路及LED模仿交通信号灯电路等功能模块组成。

遇到特殊情况时可以通过按键电路控制实时交通实际情况,系统框图如图1所示。

2、红外检测模块:

光电传感器ST188,比较器LM324

红外线光电传感器(简称光电传感器,又称光电开关)是通过把光强度的变化转换成电信号的变化来实现控制的。

光电开关是传感器大家族中的成员,它把发射端和接收端之间光的强弱变化转化为电流的变化以达到探测的目的。

由于光电开关输出回路和输入回路是电隔离的(即电缘绝),所以它可以在许多场合得到应用。

3、电机及驱动模块:

电机驱动芯片L298N、两个直流电机

  L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传号。

L298可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。

5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。

在许多场合得到应用。

4、电源模块:

双路开关电源

模块电源是可以直接贴装在印刷电路板上的电源供应器,其特点是可为专用集成电路(ASIC)、数字信号处理器(DSP)、微处理器、存储器、现场可编程门阵列(FPGA)及其他数字或模拟负载提供供电。

一般来说,这类模块称为负载点(POL) 电源供应系统或使用点电源供应系统(PUPS)。

由于模块式结构的优点甚多,因此模块电源广泛用于交换设备、接入设备、移动通讯、微波通讯以及光传输、路由器等通信领域和汽车电子、航空航天等。

三.系统方案

(一)寻迹传感器模块

ST系列反射式光电传感器是经常使用的传感器。

这个系列的传感器种类齐全、价格便宜、体积小、使用方便、质量可靠、用途广泛。

我们采用ST188作为红外检测传感器。

在黑线检测的测试中,若检测到白色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压为4.8V,若检测到黑色区域,接收管接受到发射管发射的红外线,电阻发生变化,所分得的电压也就随之发生变化,测的接收管的电压为0.5V,测试基本满足要求。

判断有无黑线我们用的一块比较器LM324,比较基准电压由30K的变阻器调节,各个接收管的参数都不一致,每个传感器的比较基准电压也不尽相同,我们为每个传感器配备了一个变阻器。

1.红外传感器ST188简介

含一个反射模块(发光二极管)和一个接收模块(光敏三极管)。

通过发射红外信号,看接收信号变化判断检测物体状态的变化。

A、K之间接发光二极管,C、E之间接光敏三极管(二者在电路中均正接,但要串联一定阻值的电阻)

图3-1ST188实物图

图3-2ST188管脚图及内部电路

2.比较器LM324简介

LM324为四运放集成电路,采用14脚双列直插塑料封装。

内部有四个运算放大器,有相位补偿电路。

电路功耗很小,工作电压范围宽,可用正电源3~30V,或正负双电源±1.5V~±15V工作。

在黑线检测电路中用来确定红外接收信号电平的高低,以电平高低判定黑线有无。

在电路中,LM324的一个输入端需接滑动变阻器,通过改变滑动变阻器的阻值来提供合适的比较电压。

图3-3LM324内部电路

图3-4集成运放的管脚图

3.具体电路

通过ST188检测黑线,输出接收到的信号给LM324,接收电压与比较电压比较后,输出信号变为高低电平,再输入到单片机中,用以判定是否检测到黑线。

图3-5传感器模块电路图

4.传感器安装

 在小车具体的循迹行走过程中,为了能精确测定黑线位置并确定小车行走的方向,需要同时在底盘装设4个红外探测头,进行两级方向纠正控制,提高其循迹的可靠性。

这4个红外探头的具体位置如图3-6所示。

图3-6传感器安装图

图中循迹传感器全部在一条直线上。

其中X1与Y1为第一级方向控制传感器,X2与Y2为第二级方向控制传感器,并且黑线同一边的两个传感器之间的宽度不得大于黑线的宽度。

小车前进时,始终保持(如图3-6中所示的行走轨迹黑线)在X1和Y1这两个第一级传感器之间,当小车偏离黑线时,第一级传感器就能检测到黑线,把检测的信号送给小车的处理、控制系统,控制系统发出信号对小车轨迹予以纠正。

若小车回到了轨道上,即4个探测器都只检测到白纸,则小车会继续行走;若小车由于惯性过大依旧偏离轨道,越出了第一级两个探测器的探测范围,这时第二级探测器动作,再次对小车的运动进行纠正,使之回到正确轨道上去。

可以看出,第二级方向探测器实际是第一级的后备保护,从而提高了小车循迹的可靠性。

(二)控制器模块

采用Atmel公司的AT89C51单片机作为主控制器。

它是一个低功耗,高性能的8位单片机,片内含32k空间的可反复擦写100,000次Flash只读存储器,具有4K的随机存取数据存储器(RAM),32个I/O口,2个8位可编程定时计数器,且可在线编程、调试,方便地实现程序的下载与整机的调试。

时钟电路和复位电路如图3-7(与单片机构成最小系统)

1)采用外部时钟,晶振频率为12MHZ。

没有晶振,就没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。

单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。

单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。

—个机器周期包括12个时钟周期。

如果一个单片机选择了12MHz晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。

MCS—51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较馒,得要2个机器周期,还有两条指令要4个机器周期才行。

为了衡量指令执行时间的长短,又引入一个新的概念:

指令周期。

所谓指令周期就是指执行一条指令的时间。

提供时序的频率!

提供单片机工作的时序,其实就相当于你电脑CPU主频一个原理的。

2)采用按键复位。

单片机的复位有上电复位和按钮手动复位两种。

如图(a)所示为上电复位电路,图(b)所示为上电按键复位电路。

 上电复位是利用电容充电来实现的,即上电瞬间RST端的电位与VCC相同,随着充电电流的减少,RST的电位逐渐下降。

图(a)中的R是施密特触发器输入端的一个10KΩ下拉电阻,时间常数为10×10-6×10×103=100ms。

只要VCC的上升时间不超过1ms,振荡器建立时间不超过10ms,这个时间常数足以保证完成复位操作。

上电复位所需的最短时间是振荡周期建立时间加上2个机器周期时间,在这个时间内RST的电平应维持高于施密特触发器的下阈值。

 上电按键复位(b)所示。

当按下复位按键时,RST端产生高电平,使单片机复位。

复位后,其片内各寄存器状态改变,片内RAM内容不变。

 由于单片机内部的各个功能部件均受特殊功能寄存器控制,程序运行直接受程序计数器PC指挥。

各寄存器复位时的状态决定了单片机内有关功能部件的初始状态。

 另外,在复位有效期间(即高电平),80C51单片机的ALE引脚和 引脚均为高电平,且内部RAM不受复位的影响。

 

图要点一下查看大图才清楚哦 O(∩_∩)O

向左转|向右转

图3-7时钟电路和复位电路

(三)电源模块

电源采用双路开关电源。

明伟牌D-30W双路开关电源。

输出(5V、12V)。

实物图如图3-8所示。

图3-8双路开关电源

该开关电源尺寸为129X98X38mm,交流输入转换由开关选择,具有过流短路保护功能,能自冷散热。

低价位、高可靠。

输入电压范围----85~132VAC/175~264VAC,47~63Hz开关选择;

冲击电流----冷起动电流15A/115V30A/230V;

直流电压可调范围----额定输出电压的10%;

启动、上升、保持时间----200ms,100ms,30ms;

耐压性---输入输出间;输入与外壳1.5KVAC,输出与外壳,0.5KVAC,历时一分钟;

工作温度、湿度-----10℃~+60℃,20%~90%RH;

安全标准----符合CE标准;

EMC标准----符合CE标准;

连接方法----7位9.5mm接线端子;

质量/包装----0.41Kg,45PCS/19.5Kg/1.2CUFT

表1

型号

输出

差值

范围

效率

D-30A

5V,0.5V~4.04A

±2%

50mV

72%

12V,0.1~1.0A

±3,-7%

100mV

(四)电机及驱动模块

3.4.1电机

电机采用直流减速电机,直流减速电机转动力矩大,体积小,重量轻,装配简单,使用方便。

由于其内部由高速电动机提供原始动力,带动变速(减速)齿轮组,可以产生较大扭力。

可选用减速比为1:

74的直流电机,减速后电机的转速为100r/min。

若车轮直径为6cm,则小车的最大速度可以达到

V=2πr·v=2*3.14*0.03*100/60=0.314m/s

能够较好的满足系统的要求。

3.4.2驱动

驱动模块采用专用芯片L298N作为电机驱动芯片,L298N是一个具有高电压大电流的全桥驱动芯片,其响应频率高,一片L298N可以分别控制两个直流电机。

以下为L298N的引脚图和输入输出关系表。

图3-9L298N外部引脚

表2L298N输入输出关系

驱动电路的设计如图3-10所示:

图3-10L298N电机驱动电路

L298N的5、7、10、12四个引脚接到单片机上,通过对单片机的编程就可实现两个直流电机的PWM调速控制。

(五)自动循迹小车总体设计

3.5.1总体电路图

图3-11总体电路图

3.5.2系统总体说明

如图3-11所示,当光电传感器开始接受信号,通过比较器将信号传如单片机中。

小车进入寻迹模式,即开始不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。

单片机采用T0定时计数器,通过来产生PWM波,控制电机转速。

四.软件设计

4.1PWM控制

本系统采用PWM来调节直流电机的速度。

PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。

PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。

通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。

因此,PWM又被称为“开关驱动装置”。

在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

本系统中通过控制51单片机的定时器T0的初值,从而可以实现P0.4和P0.5输出口输出不同占空比的脉冲波形。

定时计数器若干时间(比如0.1ms)中断一次,就使P0.4或P0.5产生一个高电平或低电平。

将直流电机的速度分为100个等级,因此一个周期就有个100脉冲,周期为100个脉冲的时间。

速度等级对应一个周期的高电平脉冲的个数。

占空比为高电平脉冲个数占一个周期总脉冲个数的百分数。

一个周期加在电机两端的电压为脉冲高电压乘以占空比。

占空比越大,加在电机两端的电压越大,电机转动越快。

电机的平均速度等于在一定的占空比下电机的最大速度乘以占空比。

当我们改变占空比时,就可以得到不同的电机平均速度,从而达到调速的目的。

精确地讲,平均速度与占空比并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。

4.2总体软件流程图

小车进入寻迹模式后,即开始不停地扫描与探测器连接的单片I/O口,一旦检测到某个I/O口有信号变化,就执行相应的判断程序,把相应的信号发送给电动机从而纠正小车的状态。

软件的主程序流程图如图4-1所示:

图4-1主程序流程图

4.3小车循迹流程图

小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号,即进入判断处理程序,先确定4个探测器中的哪一个探测到了黑线,如果左面第一级传感器或者左面第二级传感器探测到黑线,即小车左半部分压到黑线,车身向右偏出,此时应使小车向左转;如果是右面第一级传感器或右面第二级传感器探测到了黑线,即车身右半部压住黑线,小车向左偏出了轨迹,则应使小车向右转。

在经过了方向调整后,小车再继续向前行走,并继续探测黑线重复上述动作。

循迹流程图如图4-2所示

图4-2循迹流程图

由于第二级方向控制为第一级的后备,则两个等级间的转向力度必须相互配合。

第二级通常是在超出第一级的控制范围的情况下发生作用,它也是最后一层保护,所以它必须要保证小车回到正确轨迹上来,则通常使第二级转向力度大于第一级,即Turn_left2>Turn_left1,Turn_right2>Turn_right1(其中Turn_left2,Turn_left1,Turn_right2,Turn_right1为小车转向力度,其大小通过改变单片机输出的占空比的大小来改变),具体数值在实地实验中得到。

4.4中断程序流程图

这里利用的是51单片机的T0定时计数器,从而让单片机P0口的P0.4和P0.5引脚输出占空比不同的方波,然后经驱动芯片放大后控制直流电机。

定时计数器若干时间(比如0.1ms)比如中断一次,就使P0.4或P0.5产生一个高电平或低电平。

中断程序流程图如图4-3所示

图4-3中断程序流程图

4.5单片机测序

#include

#defineucharunsignedchar

#defineuintunsignedint

unsignedcharzkb1=0;//**左边电机的占空比**//

unsignedcharzkb2=0;//**右边电机的占空比**//

unsignedchart=0;//**定时器中断计数器**//

sbitRSEN1=P1^0;

sbitRSEN2=P1^1;

sbitLSEN1=P1^2;

sbitLSEN2=P1^3;

sbitIN1=P0^0;

sbitIN2=P0^1;

sbitIN3=P0^2;

sbitIN4=P0^3;

sbitENA=P0^4;

sbitENB=P0^5;

//****************延时函数****************//

voiddelay(intz)

{while(z--);}

//**********初始化定时器,中断***********//

voidinit()

{TMOD=0x01;

TH0=(65536-100)/256;

TL0=(65536-100)%256;

EA=1;

ET0=1;

TR0=1;

}

//***********中断函数+脉宽调制***********//

voidtimer0()interrupt1

{if(t

ENA=1;

else

ENA=0;

if(t

ENB=1;

else

ENB=0;

t++;

if(t>=100)

{t=0;}

}

//******************直行******************//

voidqianjin()

{zkb1=30;

zkb2=30;

}

//***************左转函数1***************//

voidturn_left1()

{zkb1=0;

zkb2=50;

}

//***************左转函数2***************//

voidturn_left2()

{zkb1=0;

zkb2=60;

}

//***************右转函数1***************//

voidturn_right1()

{zkb1=50;

zkb2=0;

}

//***************右转函数2***************//

voidturn_right2()

{zkb1=60;

zkb2=0;

}

//***************循迹函数*****************//

voidxunji()

{ucharflag;

if((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))

{flag=0;}//*******直行*******//

elseif((RSEN1==0)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1))

{flag=1;}//***左偏1,右转1***//

elseif((RSEN1==0)&&(RSEN2==0)&&(LSEN1==1)&&(LSEN2==1))

{flag=2;}//***左偏2,右转2***//

elseif((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==1))

{flag=3;}//***右偏1,左转1***//

elseif((RSEN1==1)&&(RSEN2==1)&&(LSEN1==0)&&(LSEN2==0))

{flag=4;}//***右偏2,左转2***//

switch(flag)

{case0:

qianjin();

break;

case1:

turn_right1();

break;

case2:

turn_right2();

break;

case3:

turn_left1();

break;

case4:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1