炬力杯智能小车设计报告
作品名称:多功能智能小车设计
参赛队员:机械学院——黎波(队长)
机械学院——张兆坤
计算机院——冯祯
指导老师:
完成日期:
摘要
智能小车作为现代电子化汽车生产的一个模型基础,具有模拟汽车电子设计的功能的作用。它具有制作成本低廉,电路结构简单,程序调试方便等优点,是搭建单片机的一个良好的实践测试平台。
本次的智能小车设计主要针对当前交通中的一些问题提出改进的模型方案,实现一些电子设计的功能。当前交通中经常出现车距过近,汽车追尾,一些车辆不遵守交通规则随意闯红灯,还有一些车辆到达十字路口前车速过高,应对红灯刹车不及时等事故。因此,小车以XC878单片机作为测试控制平台,针对交通问题设计超声波测距,红外控制,交通灯识别等功能。各个功能模块以传感器作为探测工具,以XC878作为信息处理工具,相互联系构成一个整体的交通预警系统。本论文对智能小车的方案选择,设计思路,以及软硬件的功能和工作原理进行了详细的分析和论述。经实践验收测试,该智能小车的电路结构简单,调试方便,系统反映快速、灵活,设计方案正确、可行,各项指标稳定、可靠。
关键词:智能车;超声测距;红外遥控;颜色识别
Abstract
As the foundation of modern electronic automotive production,the model intelligence vehicle is based on the role of of analog automotive electronics design function. It has the advantages of low production cost, simple circuit structure, convenient program debugging, thus being a good practice test platform to apply microcontroller.
The purpose of intelligence vehicle design is to puts up a improved model program, which is directed against some current traffic problems,also to achieve some electronic functions at the same time. There exist lots of traffic accidents now,for example, the distance between vehicles too close,some vehicles not complying with the rules of the road running red lights at will.Moreover, there are some vehicles whose speed is too high before arriving at the crossroads, causing that the response to the red brake is not timely accident.
Therefore, XC878 microcontroller, as the management platform for Intelligence vehicle, was built modules in the design of ultrasonic ranging, infrared control, traffic light recognition functions and so on.V arious functional modules interlinked to form a whole set up the sensors as detection tools, while XC878 as a information processing tool.In this thesis, the program of the intelligence vehicle selection, designing plans, as well as hardware and software features and working principle were analyzed and discussed in detail.By practice testing, the intelligence vehicle’s circuit structure is simple and convenient to debug. System reflects rapidly and flexibly. The plan designed is correct and feasible,and the targets are stable, reliable.
Key word : Intelligence vehicle; Ultrasonic ranging; Infrared control; Color recognition
目录
摘要................................. 错误!未定义书签。Abstract .............................. 错误!未定义书签。目录 (3)
第一章绪论........................... 错误!未定义书签。
1.1作品研究背景及意义:.........................错误!未定义书签。
1.2作品主要研究内容:...........................错误!未定义书签。
1.3设计思路:...................................错误!未定义书签。
1.4应用场合和功能:.............................错误!未定义书签。第二章总体方案........................ 错误!未定义书签。
2.1总体方案概述:...............................错误!未定义书签。
2.2 总体电路原理图:.............................错误!未定义书签。第三章各模块功能介绍.................. 错误!未定义书签。
3.1超声波测距模块:.............................错误!未定义书签。
3.2红外遥控模块:...............................错误!未定义书签。
3.3交通灯颜色识别模块:.........................错误!未定义书签。
3.4电机驱动模块:.............................. 错误!未定义书签。第四章系统软件设计.................... 错误!未定义书签。
4.1 程序设计流程图:.............................错误!未定义书签。
4.2 关键程序设计:...............................错误!未定义书签。第五章系统调试........................ 错误!未定义书签。
5.1 调试的思路:.................................错误!未定义书签。
5.2 各模块的调试:...............................错误!未定义书签。
5.3 调试心得:...................................错误!未定义书签。
第六章结论与展望...................... 错误!未定义书签。
6.1 结论:.......................................错误!未定义书签。
6.2 展望:.......................................错误!未定义书签。致谢................................ 错误!未定义书签。参考资料.............................. 错误!未定义书签。附录.................................. 错误!未定义书签。
1.元器件清单: (25)
2.样机实物照片: (26)
3.相关程序.......................................错误!未定义书签。
1 绪论
1.1 作品研究背景及其意义
该作品设计想法的提出主要来源于实际生活所遇到的问题,在人口密集的大型城市,如:北京,上海,武汉等。交通问题往往是一个很大的问题。经常我们可以发现,汽车行驶时车距过近,导致刹车追尾。还有一些车在没有摄像头的十字路口不遵守交通规则,盲目闯红灯。还有一个更重要的问题就是,有些车抱着侥幸心理想在红灯到来之前快速闯过路口,结果导致车速过高,红灯到来时刹车不及时而冲上十字路口。更严重的是在公交车里的站着的乘客往往因急刹车而站立不稳导致摔倒受伤等事故的产生。
当然,这些问题在目前看来解决难度很大。虽然可以提出理论模型,但实施起来仍然有困难。然而,当前汽车的设计越来越趋近电子化,而伴随着物联网时代的到来,这些问题也并没有我们想象的那么棘手。同时在人工智能化时代到来时,智能车的模型将更广泛的应用到生活中的各个方面。本作品的模型着重于解决汽车追尾,十字路口的刹车等问题,为交通的安全隐患提出客观可供参考的解决方案。
1.2 作品主要研究内容
本设计模型为多功能智能小车,主要解决追尾,刹车等问题。其解决问题的方法在于测距预警,颜色识别的功能。当小车通过超声波发射接收信号时,将判断前方车辆距离本车的距离,及时处理有关数据通过判断是否超过安全距离而发出预警提醒驾驶员或者默认处理为减速。当然由于单片机的处理功能有限我们默认为LED或者蜂鸣器预警。而对于解决十字路口的一系列问题,我们使用了颜色传感器对红绿灯的光源进行颜色识别,判断出当前检查的光源信号。经处理后,处理器对小车发出一系列动作指令。比如说到底检测距离时,颜色传感器会不断发出检测信号,如果为红灯,则发出刹车制动的信号。如果为黄灯,就会发出减速信号,直到停止。如果是绿灯,则发出安全通行信号。当然如果物联网技术应用推广的话,甚至可以识别红绿灯的闪烁时间,通过判断距离来判断当前车速是否可以通过,是加速还是减速,其安全加速度是多少的问题,当然这一系列的细节问题在非理想状况下就不再讨论。
1.3 设计思路
本次的实际以XC878的开发板为核心平台,针对开发板的晶振,接口,定时计数器等一系列的限制,我们的设计思路如下:
首先,XC878作为核心处理部分是确定的,我们主要在其外设接口设计相应模块即可。首先必须解决的是小车的动力问题,我们选择了L298N芯片的驱动模块作为小车的运动信号的终端,以四个直流电机作为动力来源。通过对小车四轮驱动的控制来实现前进,后退,转弯等功能。由于我们选择了红外遥感控制模块,所以忽略了智能车的加速减速模块。当然由于PWM的调速方式需要用掉一些外设接口,而且其不是我们主要研究的对象,于是就省略不提。对于控制小车运动方式的红外模块,我们使用了以SC2272为芯片的接收板,采用非锁方式进行遥控。最后用到的颜色识别模块则是以TCS230为主芯片以其内部的64个二极管作为信号的接收和识别的传感器来搭载。同时以单片机上的四位发光二级管作为超声波所测距离的显示载体。其余的一些部分主要是IO口的控制,电源模块的输入,连线方式等就不再赘述。
1.4 应用场合和功能
应用场合:智能车在很大程度上都是一个可编程的测试平台,可以让我们实践了解一些电子元件和其它芯片的功能,模拟一些场景。其它方面来说,智能小车的操作性与趣味性很强,每个人都可以设计自己的方式,所以在一些高档玩具里经常可以看到遥控车的身影,实际就是智能车的一个简单缩影。
功能:本次设计的智能车要实现的功能有:当使用红外遥控器时,按下不同的键可以让小车执行前进,后退,左转,右转,停止一系列指令。在小车前进时会把超声波探测到的距离信号传输到数码管上,显示出当前前方障碍物与小车之间的距离。同时以LED作为识别光源,当使用红色发光二极管时,小车会自动的停止。当检测到黄色发光二极管时,小车会自动向左转。当检测到绿色发光二极管时,小车会继续前进。
2 总体方案
2.1 总体方案概述
本小车使用XC878单片机作为主控芯片,以电机驱动芯片,超声测距芯片,红外接收芯片,及颜色识别芯片作为辅助芯片,实现小车交通预警功能的实现。其中超声测距芯片用来接收距离信息,以红外接收芯片来识别红外信号的发射信息,颜色识别则主要接收光谱信息,所有外设的信息送到单片机芯片中进行各个动作的处理而后将指令送到电机驱动中,以实现电机的正反转。
2.2 总体电路原理图XC878 单片机
超声测距红外遥控颜色识别LED显示
报警
电机驱动直流电机
1
2
3
4
A
B
C
D
4
3
2
1
D
C
B
A
EA/VP P 31X1
19
X218RES E T
9
RD /P37
17WR P 3616P 32IN T 012P 33IN T 113P 34T014P 35T115P 101P 112P 123P 134P 145P 156P 167P 17
8
P 00
39P 0138P 0237P 0336P 0435P 0534P 0633P 07
32
P 2021P 2122P 2223P 2324P 2425P 2526P 2627P 2728P SEN
29
ALE/P RD G
30P 31TXD 11P 30R XD 10U
AT89S 52
P1
P521P2
P521P3
P521P4
P521
5 IN17 IN 210 IN312 IN4
6 ENA 11 E N B 8 G ND
VS S 9VS 4OU T 0 2OU T 1 3OU T 2 13OU T 3 14S E N SE A 1S E N SE B 15
R
L298VC C
D1DIODE D2DIODE D3DIODE D4DIODE D5DIODE D6DIODE D7DIODE D8
DIODE
Y1
11.059MHZ
C1CAP C2CAP
VC C
1234
J1
CON4
VC C
C7CAP
C4
C A P
+
C5
C A P A C I T O R P O L
+C6
CAPACITOR POL
+
C3
CAPACITOR POL
S 1
S W-PB VC C
12345678910111213141516
S
CON16
R9RES
R1RES R2RES R3RES R4RES
VC C
VC C
R7
10K
VC C
123456789
JP
CON9
VC C
P25P26P27P00P01P02P03P04P05P06P07
P26P00P01P02P03P04P05P06P07
P00P01P02P03P04P05P06P07
P27
P251234
J2
CON4
VC C
VC C
P32
P30P5P521
R6RES P6P521
R5RES
VC C
VC C
P 14
P 15
P 16
P 17
P 36
P 37
P 36P 37
P 14P 15P 16
P 17
P 30P 32
Q1PNP
R8RES
VC C
U1
BUZZER
3 各模块功能介绍3.1 超声波测距模块
3.2 红外遥控模块
3.3 颜色识别模块
TCS230识别颜色原理
(1)三原色的感应原理
通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。白色是由各种频率的可见光混合在一起构成的,也就是说白光中包含着各种颜色的色光(如:红R、黄Y、绿G、青V、蓝B、紫P)。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。
(2)TCS230识别颜色的原理
由三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于TCS230来说,当选定一个颜色滤波器时,它只允许某
种特定的原色通过,阻止其他原色的通过。例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其他的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个值,就可以分析投射到TCS230 传感器上的光的颜色。
(3)白平衡和颜色识别原理
白平衡就是告诉系统什么是白色。从理论上讲,白色是由等量的红色、绿色和蓝色混合而成的;但实际上,白色中的三原色并不完全相等,并且对于TCS230的光传感器来说,它对这三种基本色的敏感性是不相同的,导致TCS230的RGB 输出并不相等,因此在测试前必须进行白平衡调整,使得TCS230对所检测的“白色”中的三原色是相等的。进行白平衡调整是为后续的颜色识别作准备。在本装置中,白平衡调整的具体步骤和方法如下:将空的试管放置在传感器的上方,试管的上方放置一个白色的光源,使入射光能够穿过试管照射到TCS230上;根据前面所介绍的方法,依次选通红色、绿色和蓝色滤波器,分别测得红色、绿色和蓝色的值,然后就可计算出需要的3个调整参数。
当用TCS230识别颜色时,就用这3 个参数对所测颜色的R、G和B进行调整。这里有两种方法来计算调整参数:①依次选通三种颜色的滤波器,然后对TCS230的输出脉冲依次进行计数。当计数到255时停止计数,分别计算每个通道所用的时间。这些时间对应于实际测试时TCS230每种滤波器所采用的时间
基准,在这段时间内所测得的脉冲数就是所对应的R、G和B的值。②设置定时器为一固定时间(例如10 ms),然后选通三种颜色的滤波器,计算这段时间内TCS230的输出脉冲数,计算出一个比例因子,通过这个比例因子可以把这些脉冲数变为255。在实际测试时,使用同样的时间进行计数,把测得的脉冲数再乘以求得的比例因子,然后就可以得到所对应的R、G和B的值。
TCS230芯片的结构框图与特点
图1中,TCS230采用8引脚的SOIC表面贴装式封装,在单一芯片上集成有64个光电二极管。这些二极管共分为四种类型。其中16个光电二极管带有红色滤波器;16个光电二极管带有绿色滤波器;16个光电二极管带有蓝色滤波器;其余16个不带有任何滤波器,可以透过全部的光信息。这些光电二极管在芯片内是交叉排列的,能够最大限度地减少入射光辐射的不均匀性,从而增加颜色识别的精确度;另一方面,相同颜色的16个光电二极管是并联连接的,均匀分布在二极管阵列中,可以消除颜色的位置误差。工作时,通过两个可编程的引脚来动态选择所需要的滤波器。该传感器的典型输出频率范围从2 Hz~500 kHz,用户还可以通过两个可编程引脚来选择100%、20%或2%的输出比例因子,或电源关断模式。输出比例因子使传感器的输出能够适应不同的测量范围,提高了它的适应能力。例如,当使用低速的频率计数器时,就可以选择小的定标值,使TCS230的输出频率和计数器相匹配。
从图1可知:当入射光投射到TCS230上时,通过光电二极管控制引脚S2、S3的不同组合,可以选择不同的滤波器;经过电流到频率转换器后输出不同频率的方波(占空比是50%),不同的颜色和光强对应不同频率的方波;还可以通过输出定标控制引脚S0、S1,选择不同的输出比例因子,对输出频率范围进行调整,以适应不同的需求。
图1 TCS230的引脚和功能框图
下面简要介绍TCS230芯片各个引脚的功能及它的一些组合选项。
S0、S1用于选择输出比例因子或电源关断模式;S2、S3用于选择滤波器的类型;OE是频率输出使能引脚,可以控制输出的状态,当有多个芯片引脚共用
微处理器的输入引脚时,也可以作为片选信号;OUT是频率输出引脚,GND是芯片的接地引脚,VCC为芯片提供工作电压。表1是S0、S1及S2、S3的可用组合。
表1 S0、S1及S2、S3的组合选项
表2 TCS3200D的管脚功能
引脚号符号类型功能说明
1 S0 I
输出频率分频系数选择输入端
2 S1 I
3 OE I 输入频率使能端。低电平有效
4 GND 电源地
5 VDD 电源电压
6 OUT O 输出频率(fo)
7 S2 I
光电二极管类型选择输入端
8 S3 I
3.4 电机驱动模块
采用由双极性管组成的H桥电路(L298N)。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。而且它有更强的驱动能力。L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机等。
L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机
等。所以我们选择L298N。
下图为L298内部图:
图3.3:L298内部原理图
L298各引脚功能,如下表。
引脚功能
1、15 SEN1、SEN2 分别为两个H桥的电流反馈脚,不用时可以接地
2、3 1Y1、1Y2 输出端,与对应输入端(IN1、IN2)同逻辑
4 VS 驱动电压,最小值需比输入的低电平电压高2.5V
5、7 IN1、IN2 输入端,TTL电平兼容
6、11 EN1、EN2 使能端,低电平禁止输出
8 GND 地
9 VSS 逻辑电源,4.5~7V
10、12 IN3、IN4 输入端,TTL电平兼容
13、14 2Y1、2Y2 输出端,与对应输入端(IN3、IN4)同逻辑
表3-3-1 封装引脚及功能
驱动电机的运行,I/O端口状态与电机制动对照表,如下。
IN1 IN2 IN3 IN4 EN1 EN2 转速
1 0 1 0 1 1 正转
0 1 0 1 1 1 反转
1 1 1 1 1 1 停止
0 0 0 0 1 1 停止
X X X X 0 0 停止
表3-3-2 I/O端口状态与电机制动对照表
4 系统软件设计
4.1 程序设计流程图
本设计系统软件采用模块化结构,由主程序﹑定时子程序、电机驱动子程序﹑中断子程序、显示子程序﹑算法子程序,测距子程序,识别子程序等构成。程序流程图如下图所示。
颜色识别模块流程图如下:
红外遥控模块流程图:
开 始
初始化程序
白平衡调整
颜色识别程序
有颜色识别? N
o
Y
es
按键判断子程序
将所要显示值 赋给LCD
超声测距流程图:软件主流程图:
4.2 关键程序设计超声测距的关键程序:
红外遥控的关键程序:
颜色识别的关键程序:
白平衡测试子程序及解析
程序须先行进行白平衡调节,得出比例因子,再实现对物体颜色检测和校准,并在LCD上分别显示的R,G,B的亮度值。通过白平衡设计颜色初值,以便其他颜色的辨别检测。下面给出白平衡测试的子程序及其解析。
void White_Adjust(void) // 颜色识别前先进行白平衡
{
uchar k;
TCS_LED = 0; // 启动,不过此时滤波片没有选择有效值
delay(5); // 等待一段时间,用来使光源平衡
Red_W_A_Count = 0;
Green_W_A_Count = 0;
Blue_W_A_Count = 0;
for (k = 0; k < 10; k ++)
{
TCS_S2 = 0;
TCS_S3 = 0; // 白平衡选择红色
Red_W_A_Count = Get_Color_Count() + Red_W_A_Count;
TCS_S2 = 1;
TCS_S3 = 1; // 白平衡选择绿色
Green_W_A_Count = Get_Color_Count() + Green_W_A_Count;
TCS_S2 = 0;
TCS_S3 = 1; // 白平衡选择蓝色
Blue_W_A_Count = Get_Color_Count() + Blue_W_A_Count;
TCS_S2 = 1;
TCS_S3 = 0; // 白平衡结束后不选择滤光片}
}
获取颜色频率测试子程序及解析
测试颜色的RGB值,可通过定时10ms 的计数脉冲数目来进行颜色频率的检测。下面给出白平衡测试的子程序及其解析。
unsigned int Get_Color_Count( )
{