循迹智能小车的设计报告

20##年全国大学生电子设计

大赛报告

智能小车设计


摘要:智能车辆是目前世界车辆研究领域的热点和汽车工业新的增长点。未来的车辆也一定是智能化的车辆。所以,智能化的车辆是未来人们生活重要的载体。因此有必要对智能车辆进行研究。研制一种智能,高效的智能小车控制系统具有重要的实际意义和科学理论价值。本文设计了一个能自动循迹的智能小车控制系统。以C8051F410单片机为控制核心,利用反射式光电传感器检测黑线实现小车循迹,利用超声波传感器检测道路上的障碍并提示,利用LCD1602显示小车的速度和路程。能实现小车自动根据地面黑线前进倒退、转向行驶,超声波测距提示障碍物,LCD1602实时显示小车的速度和行驶的路程,具有高度的智能化,达到设计目标。

关键字:智能小车  C8051F410单片机  传感器  LCD1602

Abstract: intelligent vehicle is the research field of the world vehicle hot and automobile industry a new growth point. Future vehicles must be intelligent vehicle. Therefore, intelligent vehicle is the future of the people life important carrier. Therefore it is necessary to study on the intelligent vehicle. Development of an intelligent, smart car control system is of practical significance and scientific important theoretical value. This paper describes the design of a smart car control system of automatic tracking. Taking C8051F410 microcontroller as the control core, realize the car tracking using reflective photoelectric sensor to detect black line, the use of ultrasonic sensors to detect obstacles on the road and prompt, use LCD1602 car speed and distance display. Can realize the automatic car based on the black line forward backward, steering, ultrasonic tips obstacles, LCD1602 real time display of the speed of the car and driving distance, high degree of intelligence, to achieve the design goal.

Keywords: intelligent car C8051F410 microcontroller sensor LCD1602


目录

1总体方案设计................................................................................................................ 1

1.1主控系统............................................................................................................. 1

1.2电机驱动模块...................................................................................................... 1

1.2.1电机模块选择与论证................................................................................. 1

1.2.2电机驱动模块选择与论证.......................................................................... 1

1.3.1循迹、避障模块选择与论证...................................................................... 2

1.4.1测速模块选择与论证................................................................................. 3

1.5.1显示模块选择与论证................................................................................. 3

1.6.1测距模块选择与论证................................................................................. 4

2单元模块电路设计......................................................................................................... 5

2.1驱动电路............................................................................................................. 5

2.2循迹、避障电路.................................................................................................. 8

2.2.1 LM393比较器介绍.................................................................................... 9

2.2.2超声波传感模块介绍................................................................................. 9

2.3测速电路............................................................................................................. 9

2.4显示电路........................................................................................................... 10

2.5主控电路........................................................................................................... 10

3系统调试...................................................................................................................... 11

3.1主程序流程图如下图所示:............................................................................... 11

4系统功能指标,指示参数............................................................................................. 12

4.1系统实现的功能................................................................................................. 12

4.2系统测试........................................................................................................... 12

5设计总结...................................................................................................................... 12

参考文献:..................................................................................................................... 12

附录............................................................................................................................... 13

附录1:系统原理图................................................................................................. 13

最小系统图.............................................................................................................. 13

附录2:源程序........................................................................................................ 14


前言:智能的出现,为我们的生活和生产带来了很大的便利,同时也是以后的发展方向,智能就是可以在一个特定的环境中按照我们前面设定好的模式去自动的运作,它并不需要我们去人为的管理,就可以达到我们前面设定的目标,它的应用领域很广,如可以应用于工业控制、科学勘探、智能家居等领域。而智能小车就是智能的一个简单的应用,智能小车就是智能化玩具中的一种,由于这类智能玩具具有较好的交互性,可控性,能够按照人们设定的模式去自动运作也深受人们的喜欢。另外,智能小车还可以应用于危险搜索、机器人等许多方面,尤其在机器人方面具有很好的发展前景。因此,智能化小车的研究不仅具有很大的现实意义,还具有极为广阔的应用前景和市场价值。

1总体方案设计

1.1主控系统

由于单片机具有价格低廉,资源丰富,有较为强大得控制功能,故本次设计采用C8051F410单片机作为整个系统的核心,用其控制行进中的小车以实现其既定的性能指标,和标准的51系列单片机相比它有更快的的运行速度。

1.2电机驱动模块

1.2.1电机模块选择与论证

方案一:使用步进电机作为智能小车系统的驱动电机,因为步进电机的转动角度可以精确的定位,这样就可以比较精确的定位小车的前进距离和位置。但是由于步进电机的输出力矩偏低,并且会随着电机转速的升高而下降,在达到较高的转速时其输出的力矩会急剧下降,因此不适于小车等对速度有着一定要求的系统。经过综合分析比较决定放弃此方案。

方案二:使用直流电机作为智能小车系统的驱动电机。直流电机的转动力矩比较大,而且体积较小,重量也很轻,使用方便。另外小车电机内部还装有减速齿轮组,所以并不需要去考虑调速的功能,可以很方便的通过单片机来控制直流电机的正传、反转、停止操作。

综合以上考虑选择方案二的直流电机作为整个智能小车的驱动电机。

1.2.2电机驱动模块选择与论证

方案一:采用继电器对电动机进行控制,通过切换电动机的开关来调整小车的速度。这个方案的优点是电路相对比较简单,但是它的缺点也比较多,如:继电器的响应时间偏慢, 寿命较短,容易损坏,可靠性也不是很高。故决定放弃此方案。

 方案二:采用专用的电机驱动芯片L298N来控制直流电机, L298N芯片是一个具有高电压大电流的全桥驱动芯片,一片L298N芯片可以分别的控制两个直流电机,在6~46V的电压下,可以提供2A的额定电流,并且具有过热自动关断和电流反馈检测功能,安全可靠。该芯片是利用TTL电平进行控制的。通过单片机的IO口输出高低电平来改变芯片控制端的输入电平,即可以实现对电机进行正转、反转和停止操作。用该芯片作为电机驱动,驱动能力大、操作方便、稳定性好、性能优良。如图1.1所示

综合以上分析与论证我们选择方案二的驱动芯片L298N作为整个智能小车系统的电机驱动电路。

图L298N(图1.1)

1.3循迹、避障模块

1.3.1循迹、避障模块选择与论证

方案一:用光敏电阻来探测。光敏电阻的阻值会随着周围环境光线的变化而变化。因此当光敏电阻在黑色轨迹的上方和白色轨迹的上方时,阻值会发生较为明显的变化。将阻值的变化值输入到电压比较器就可以输出高低电平。单片机就可以根据反馈来的不同的电平信号,发出相应的控制操作命令来控制小车的左转,右转,前进或者停止。但实际效果并不理想,误测几率偏大、容易受外界的光线环境的影响,不能够稳定的工作。因此考虑其它更加稳定的方案。

方案二:采用红外反射式光电管完成系统循迹,系统避障。RPR220是一种一体化反射型光电探测器,传感器采用高发射功率红外光电二极管和高灵敏度光电晶体管组成,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。它是利用了光的反射原理,当光线照射在白纸上,反射量会比较大,反之,当光照射在黑色物体上,反射回去的量比较少,因为黑色会吸收光,这样就可以判断黑胶带带轨道的走向。采用红外线发射,外面可见光对接收信号的影响较小,利用红外对管对黑线边界进行检测,再用LM393对检测信号进行比较,取反,送单片机进行处理。此光电对管电路简单,工作性能稳定。同时只要对程序稍加改变,也可以进行小车的避障,置于车头检测到障碍物时,小车也会做出相应的反应。如图1.2所示

综合以上分析与论证方案二不论是循迹还是避障,均可以使小车稳定的工作。因此我们选择方案二。

图RPR220(图1.2)

1.4测速模块

1.4.1测速模块选择与论证

方案一:采用霍尔传感器检测轮子上的小磁铁从而给单片机中断脉冲,通过单位时间内对脉冲的计数通过公式就可以算出实时的车速,达到测量速度的作用。霍尔元件具有体积小,动态特性好,频率响应宽度大,对外围电路要求简单,使用寿命长,安装方便,价格低廉等特点。但是需要和磁钢配对使用比较麻烦。

方案二:采用光电码盘,即透射式光电传感器H42B6进行测速。槽型光耦是由红外发光管和光敏三极管构成的,工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。使用方便,抗干扰性较强。如图1.3所示

通过比较方案一和方案二的优缺点,综合多方面因素决定选用方案二。

槽型光电传感器(图1.3)

1.5显示模块

1.5.1显示模块选择与论证

方案一:采用LED数码管显示。数码管使用简单,价格低廉,但一个数码管只能显示一个数字,要显示多位数据时要使用多个数码管,这就增加了硬件电路的复杂度和额外功耗,而且LED数码管也无法显示字符。由于我们计划要显示小车运行的速度和路程,LED数码管没办法显示这么多的内容,因此考虑其它的方案。

方案二:采用LCD1602液晶显示。LCD1602液晶具有功耗低,显示内容丰富清晰,显示信息量大,显示速度较快,界面友好,使用简单等特点而得到了广泛的应用。并且外围电路也比较简单,因此我们选择此方案。如图1.4所示

通过以上方案论述我们选择方案二,显示小车运行速度和路程的任务。

1602液晶显示器(图1.4)

1.6测距模块

1.6.1测距模块选择与论证

方案一:用漫反射式光电开关。光电开关的工作原理是根据光线发射头发出的光束,被物体反射,其接收电路据此做出判断反应,物体对红外光由同步回路选通而检测物体的有无。当有光线反射回来时,输出低电平。当没有光线反射回来时,输出高电平。操作简单但是测量的距离不远。

方案二:用超声波传感器进行测距。超声波传感器的原理是:超声波由压电陶瓷超声波传感器发出后,遇到障碍物便反射回来,然后再被超声波传感器接收,超声波传感器在测量距离设计中被广泛应用。为了使用方便,便于操作和调试,采用集成超声波测距模块HC-SR04。如图1.5所示

综合考虑本系统只需要检测障碍物,没有十分复杂的环境。为了使用的方便,便于操作和调试,最终选择了方案二。

超声波测距模块HC-SR04(图1.5)

1.7总体方案设计

智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,通过电机驱动芯片L298N来控制前面两个轮子的转动与停止从而达到控制转向的目的,后轮是万向轮,起支撑转向作用。将4个红外光电传感器装在车体底盘的前端,小车根据传感器检测的情况来避障、循迹前进。

小车速度的检测通过槽型光电传感器,将码盘装在电机的轴上,码盘跟随电机一起转动,将检测到的数据传回单片机进行处理。

小车的测距用超声波测距模块HC-SR04,将其置于车头,检测到障碍物时,小车的控制系统会计算出小车与障碍物的距离,并在1602显示器上显示。

总体设计框图如图1.6所示

 

总体设计框图(图1.6)

2单元模块电路设计

2.1驱动电路

电机驱动芯片采用L298N,是一款承受高压大电流的全桥型直流/步进电压驱动器,如图2.1所示

电机控制芯片L298N的引脚排列(图2.1)

其中L298N各引脚的编号与功能和内部逻辑如下表

L298N的内部原理图

由于系统有两个电机时使用PWM信号控制直流电机电枢电压有效值来改变电机速度和方向,所以需采用L298N芯片来控制两个电机,引脚6,11用来PWM控制,将5,7和7,12分别接高低电平,仅用单片机的两个端口输出PWM控制6,11引脚就可以实现直行,转弯和后退,由于前轮的驱动能力较大,提高控制的可靠性,缩短导通时间;六个光耦器件起到隔离作用,将单片机发出的控制与电机驱动电路隔离(起来),防止干扰,在电机的两端并联一个104的小电容。滤去高频谐波信号。其工作原理如下:当输入的信号为高电平和PWM电平时,L298的2和3引脚分别输出高低电平,电机正传,如果改变输入信号,则L298N的2和3引脚分别输出低高电平,电机反转。因此电路的有效值功率 其中α为PWM波的占空比,U为电机的供电电压,I为流过电机的电流,通过改变占空比就能方便的改变电机的驱动功率。若左边为点电平,右边为高电平,则电机反转。光耦的工作原理是:它的内部是一个二极管和一个光电三极管组成,当二极管通电导通是发出红外光,是光电三极管导通;二极管的导通一定的电流,所以电阻R的值不能过大,VCC=5V,选取R=330欧姆,

=

=15mA

  图中的电容都是起滤波的作用,八个二极管都是当电机反转是起泄流的作用。

其驱动电路原理图如图2.2所示。

电机驱动原理图(图2.2)

2.2循迹、避障电路

小车循迹的原理是在地板做的跑道上行驶,跑道两边用黑色胶带粘贴。由于黑色胶带和地板面对光线的反射系数不同,根据接收的反射光的强弱来判断道路轨迹。本设计采用简单易用,应用也较为普遍的红外探测法。

红外探测法,即用红外线在不同颜色的物表面具有不同的反射性质的特点,在小车行驶过程中传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为低电平,当红外线遇到白地板面时发生漫反射,红外线被反射回来反射光被装在小车上的接收管接收且强度足够大,光敏三极管饱和,此时模块的输出端为高电平;如果遇到黑色胶带则红外光被吸收,小车上的接收管接收不到信号,再通过LM393作比较器来采集高低电平,从而实现信号的检测。避障,循迹的功能就这样实现了。

检测电路如图2.3所示,图中R1为限流电阻,当有光反射回来时,光电传感器的三极管导通,在LM393的6脚出产生低电平电压,通过LM393处理后输出高电平,返回给单片机,从而达到检测的目的。并通过变阻器RR可调节传感器的灵敏度。

循迹、避障原理图(图2.3)

2.2.1 LM393比较器介绍

比较器是将一个模拟电压信号与一个基准电压相比较的电路。比较器的两路输入为模拟信号,输出则为二进制信号,当输入电压的差值增大或减小时,其输出保持恒定。因此,也可以将其当作一个1位模/数转换器(ADC)。对路面检测的电路设计就是通过电位器设定一个阈值,以此确定是否有光反射。并且以此阈值为标准,向单片机输入满足TTL电平的数字信号。

 

LM393芯片示意图

2.2.2超声波传感模块介绍

小车测距上我们选择了HC-SR04超声波模块传感,HC-SR04可提供2cm-400cm的非接触式距离感测功能,模块包括超声波发射器、接收器与控制电路。超声波是指频率高于20KHz的机械波。超声波从发射到遇到障碍物返回所经历的时间,再乘以超声波的速度就得到二倍的声源与障碍物之间的距离。测试距离=(高电平时间*声速(340m/s))/2。测距框图如图2.4所示

 

超声波测距(图2.4)

2.3测速电路

采用透射式光电传感器(凹槽型)进行测速。槽型光耦是由红外发光管和光敏三极管构成的,将码盘安装在电机轴上,当电机转动时,码盘也随之转动。工作时红外发光管发出红外光线透过光耦的槽投射到光敏三极管上,光敏三极管导通,集电极输出低电平。当红外光线被检测物遮断时,光敏三极管截止,集电极输出高电平。遮挡一次槽型光耦输出一个脉冲,因此脉冲的个数就是被检测物的数量。车轮转动时带动码盘转动,单片机内部计时可测出给定的时间内通过的脉冲数,从而测出小车的实时速度。其电路原理图与循迹、避障原理图一样。(图2.3)所示

2.4显示电路

用LCD1602来显示数据,LCD液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快等特点。其中用滑动变阻器R3来调节显示器的背光亮度。电路原理图如下图2.5所示

(图2.5)

2.5主控电路

主控电路的核心是单片机,单片机控制小车的所有运行状态,本次设计采用的单片机是C8051F410单片机。主控电路如图2.6所示:

最小系统图(图2.6)

3系统调试

3.1主程序流程图如下图所示:

 

                                                      N

Y

              N

                                       Y

主程序流程图

在主程序流程图中,开始时先是单片机的初始化,包括定时器初始化,外部中断的初始化,液晶的初始化。然后调用循迹子程序,小车循迹前进,并判断前方是否有障碍物,如果有的话led闪烁,同时改变前进方向。

程序首先实现电机驱动模块,控制电机的正转、反转实现小车的前进跟转弯。开始先检测小车的状态如果相对黑线是直的,则调用直走子程序,即左右两个电机都正转;如果小车偏向黑线的左边则调用向右走子程序,即左电机正转右电机反转;如果小车偏向黑线的右边则调用向左走子程序,即左电机反转右电机正转;如果小车完全偏离黑线则调用向后退子程序,即两个电机都反转点了则调用停止。

4系统功能指标,指示参数

4.1系统实现的功能

该系统是智能小车,小车可以根据地上设置的跑道,自动进行行驶前进,前面若有障碍物可以自动避开或者绕行不会碰触到障碍物,小车也可以根据地上的黑色部分进行循迹,从而不会偏离跑道,完成这一控制功能的是小车的控制系统,并不是在人的帮助下小车才可以避开障碍物的,这一功能的实现,完全体现了小车的智能化。

4.2系统测试

对小车的整体的调试按照模块来进行,分为以下几个步骤:

①首先测试电源的工作情况,各个模块能否得到良好供电。

②然后检查单片机能否正常的烧写程序和工作。

③光电管安装完成后根据测试数据调节电位器选择合适的参考电压。

④测试两前轮电机的工作情况,并试验电机的驱动能力。

⑤让小车在黑色轨道上初步循迹运行。

⑥反复测试各参数变化对小车的影响,找出最有效的配置。

⑦对小车运行过程中各种可能出现的情况测试,发现问题,找出解决方法。

⑧整理数据,优化程序设计。

经过多次调试,本系统能够基本满足设计要求,能够较快较平稳的沿路面行驶。

5设计总结

小车制作过程中,我们小组遇到了许许多多的困难,按照要求,小车已经基本完成了题目要求的任务。初次尝试设计制作智能电子产品,缺少经验和一定的理论知识,但这也锻炼了我们小组查阅资料的能力,通过组员的合作摸索出了制作小车各个模块的方法。这次设计是对我们的自学能力和收集资料能力以及动手能力的考验。这次智能小车的设计使我们小组我们分析问题能力和解决问题的能力得到了进一步的提升。小车的设计制作工作量饱满,体现了团队合作精神。在这次设计中也有很多的不足之处,我们缺少实际经验,更多的是依靠网络资源来解决问题,特别是各模块的程序编写,在软件设计方面花费了很多的时间。小车设计的硬件部分完成相对顺利些,在软件领域显得不足,今后会更多的学习软件。我们还应加强理论知识的学习,本次设计涉及到了一系列光机电一体化的技术,其中机械结构是小车能否稳定运行的基础,硬件电路决定了小车实现的功能,软件部分是控制的灵魂,而同伴们锲而不舍的精神则是整个设计的支柱。

参考文献:

【1】黄智伟  全国大学生电子设计竞赛训练教程  电子工业出版社 2005.06

附录

附录1:系统原理图

最小系统图

测试模块图

附录2:源程序

#include "c8051F410.h"

#include "c8051f410_init.h"

#include "CH452.h"

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long              //常用变量的宏定义

sbit  zuobian=P1^1;  //左边循迹传感器

sbit  youbian=P1^0;  //右边循迹传感器

/*

sbit CH452_SCL = P2^5; //CH452的时钟端,CH452工作在2线方式

sbit CH452_SDA = P2^6;

sbit CH452_KEY = P2^7;  */

uint Jishu;

uchar outcomeH,outcomeL;

uint distance_data;

uchar Leiji;

ulong Abc;

bit Stop_flag_0=0;

bit Stop_flag_1=0;

bit Go=1;

bit succeed_flag;

 bit flag=0;

 sfr16 TMR3RL=0X92;

sfr16 TMR3  =0X94;

////////////////电机控制部分//////////////////////////

sbit Left_0 =P2^0;    //左轮电机

sbit Left_1 =P2^1;

sbit Right_0=P2^2;  //右轮电机

sbit Right_1=P2^3;

 //************************************************

//延时函数,在12MHz的晶振频率下

//大约50us的延时

//************************************************

void delay_50us(uint t)

{

uchar j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

//延时函数,在12MHz的晶振频率下

//大约50ms的延时

//************************************************

 void delay_50ms(uint t)

{

uint j;

for(;t>0;t--)

for(j=6245;j>0;j--);

}

void Car_Forward()//小车前进

{ Left_0=1;

Left_1=1;

Right_0=1;

Right_1=1;

delay_50us(10);

Left_0=0;

Left_1=1;

Right_0=0;

Right_1=1;

delay_50us(25);

}

void Car_Stop()                       //小车停止

 { Left_0=1;Left_1=1;Right_0=1;Right_1=1;}

void Car_Left()

//小车右拐

{ Left_0=0;Left_1=1;

delay_50us(28);

Left_0=1;Left_1=1;

delay_50us(5);

Right_0=0;Right_1=1;

delay_50us(8);

}

void  Car_Right()   //小车左拐

{

Right_0=0;Right_1=1;

delay_50us(28);

Right_0=1;Right_1=1;

delay_50us(5);

Left_0=0;Left_1=1;

delay_50us(8);

}

void zhuanwan()//小车转弯

{

Left_0=1;Left_1=0;Right_0=0;Right_1=1;

delay_50ms(20);

{Left_0=1;Left_1=1;Right_0=1;Right_1=1;}

delay_50ms(95);

}

/**********************主函数***************************************/

void main(void)

{

Init_Device( );

Init_ch452();                        //CH452初始化

Display_5();

while(1)

{

if((zuobian==1)&&(youbian==0))         //右边检测到黑线

{ Car_Left(); }

if((zuobian==0)&&(youbian==1))  // 左边检测到黑线

{Car_Right();}

if((zuobian==1)&&(youbian==1))  // 在黑线外

{Car_Forward();}

if((zuobian==0)&&(youbian==0) )  //到终点

{zhuanwan(); }

if (flag==1)

{Display_5(Abc);

flag=0;  }

}

}

////////////////这个定时器用来测速/////////////////////////

void Timer_0() interrupt 1//这里可以累技求平均

{

TH0=0X38;

TL0=0X9A;

Leiji++;

if(Leiji==10)

{

Leiji=0;

Abc=Jishu;

Jishu=0;

Abc=(Abc/20)*20;

flag=1;

}

}

///////这里用来测速,轮子周长20.5cm。码盘20///////////////////////////

void waibu_1() interrupt 2

{

Jishu++;}

相关推荐