欢迎来到扬州恩信交通器材有限公司官网!

K 为标志牌红外发射管


  红绿灯自动识别小车的设计与实现(软件) The traffic light automatic recognition of car design and Implementation (software) 目 录 摘 要 .............................................................. I 关键词 .............................................................. I Abstract ............................................................ I Key words .......................................................... II 1 前言 .............................................................. 1 2 设计方案选择与论证 ................................................ 4 2.1 设计要求 .................................................... 4 2.2 总体设计方案选择 ............................................ 4 2.2.1 智能小车模型设计方案 ................................... 4 2.2.2 电机方案的选择 ......................................... 5 2.2.3 控制单元方案 ........................................... 6 2.2.4 小车循迹模块方案 ....................................... 7 2.2.5 红绿灯信号识别方案 ..................................... 8 2.2.6 短距离通信方案 ......................................... 8 3 系统设计功能分析 .................................................. 9 3.1.2 L298N 驱动逻辑功能分析 ................................. 9 3.1.3 L298N 内部功能及引脚分布 .............................. 10 3.2 一体化红外接收探头 HS0038 功能分析 .......................... 11 3.2.1 HS0038 介绍 ........................................... 11 3.2.2 HS0038 内部电路及参数分析 ............................. 12 3.2.3 HS0038 接收信号原理 ................................... 13 3.3 红外对管 ST188 功能分析 ..................................... 14 3.3.1 ST188 介绍 ............................................ 14 3.3.2 ST188 光电特性与检测分析 .............................. 14 3.3.3 ST188 红外循迹原理分析 ................................ 16 3.4 单片机控制红绿灯功能分析 .................................... 17 3.4.1 红绿灯路口设计规划 .................................... 17 3.4.2 红绿灯功能实现简要分析 ................................ 18 3.5 基带信号红外发射调制功能分析 ............................... 19 3.5.1 红外发光二极管发射原理分析 ............................ 19 3.5.2 波特率分析 ............................................ 20 4 系统总体硬件设计及单元电路实现 ................................... 21 4.1 小车模块系统组成及框图 ..................................... 21 4.2 红绿灯系统控制模块组成及系统框图 ........................... 21 4.3 各个单元电路硬件设计实现 ................................... 22 4.3.1 小车控制各部分电路实现 ................................ 22 4.3.2 红绿灯系统各部分电路实现 .............................. 25 5 软件设计分析与实现 ............................................... 27 5.1 软件设计思想 ............................................... 27 5.2 红绿灯系统软件实现与分析 ................................... 28 5.2.1 定时器中断系统 ........................................ 29 5.2.2 红绿灯显示与数码管动态显示 ............................ 29 5.2.3 数据发送模块 .......................................... 31 5.3 小车模块软件实现与分析 ..................................... 35 5.3.1 小车软件框架分析 ...................................... 35 5.3.2 数据接收处理模块 ...................................... 36 5.3.2 电机控制模块 ......................................... 39 5.4 小车整体工作过程 ........................... 错误!未定义书签。 6 软件调试试验 ..................................................... 41 7 总结 ............................................................. 44 参考文献 ........................................................... 46 致 谢 .............................................................. 47 附录 A:整体系统硬件电路图 ......................................... 48 附录 B:源程序代码 ................................................. 49 I红绿灯自动识别小车的设计与实现 摘 要 现今是一个走过了工业时代、信息时代跨入知识经济的时代,这个时代对信息高速化,控制智能化的要求越来越高。而智能化同样已经延伸到生活中,如:智能冰箱,智能热水器,智能空调等等,其发展速度之快,从身边的这些例子很容易体会到。其发展前景可谓是相当可观。因为他实现了无人管理,为人类生活带来了方便。 本设计以智能小车为核心模块,实现对红绿灯的自动识别,从而模拟生活当中的红绿灯交通系统,实现对过往车辆的流通控制。采用 AT89S51 单片机作为小车控制的核心芯片。小车采用的是直流电机来进行驱动,于此同时,为方便小车行走,还采用了红外对管模块来实现寻迹的功能,从而控制小车行走的路线。之所以小车能识别红绿灯,这主要是依靠了单片机之间的通信,即红绿灯系统,它同样也是使用了一块 AT89S51 单片机作为中枢控制,产生 3 组红绿灯信号,分别对应前进,左转,右转信号,同时利用单片机串口通信,与小车之间进行通信,这个过程是利用红外发射模块将数据码发射出去,对应的小车上接收头讲接收到的信息返还到单片机中进行判决,控制。本设计使用性很强,对于模拟控制研究有很大的帮助,相信未来必能很好的为我们的社会服务。 关键词 智能小车;红绿灯;自动识别;循迹;红外通信 The traffic light automatic recognition of car design and Implementation Abstract Today is a walk of the industrial age, information age into the knowledge IIeconomy era, this era of increasingly high requirements of the information superhighway, intelligent control. Intelligent the same has been extended to the life, such as: smart refrigerators, smart water heater, intelligent air-conditioning, etc., is growing faster than from the side of these examples it is easy to understand. Prospects for its development can be described as considerable. Because he realized the lack of management, in order to bring the convenience of human life. Smart car, the design for the core modules, automatic identification of traffic lights, traffic lights to simulate life transport system, control the flow of passing vehicles. AT89S51 micro-controller as the core chip of car control. The car is a DC motor to be driven Meanwhile, for the convenience of car walking, infrared tube module tracing, in order to control the routes of trolley travel. The reason why the car can recognize traffic lights, mainly rely on the communication between the micro-controller and the traffic light system, it is also used a AT89S51 micro-controller as the central control, resulting in a set of traffic lights signal, corresponding to forward, turn left and right turn signal , while the use of single-chip serial communication, and to communicate between the car, which is mainly infrared transmitter module launched, the data code corresponding to the small car to receive the first to talk about the information received judgments, control returned to the micro-controller. This design uses a very strong analog control study of great help, I believe the future will be able to be very good for our social services . Key words Smart car; traffic lights; automatic identification; tracking; Infrared communication 11 前言 随着科学技术不断发展,机器人的研究也越来越深入,机器人技术的发展,是一个科学技术发展共同的一个综合性的结果,也同时,为社会经济发展产生了一个重大影响的一门科学技术。智能小车作为机器人的一种,其发展也是很迅速的,具有很高的研究价值。 智能车辆作为智能交通系统的重要组成部分,能够提高驾驶安全性,大幅改善公路交通效率,降低能源消耗量,该技术的研究日益受到国内外学者的关注。其研究的主要目的在于降低日趋严重的交通事故发生率,提高现有道路交通的效率,在某种程度上缓解能源消耗和环境污染等问题。智能车辆利用各种传感技术获取车体自身和车外环境的状态信息,经过智能算法对其进行分析、融合处理,将终的决策结果传递给驾驶者,在危险发生之前,提醒驾驶员做出必要的回避动作,避免事故发生;在紧急状况下,驾驶者无法做出反应时,智能车辆则自主完成规避危险任务,帮助驾驶人员避免危险发生。美国开始组织实施智能车辆先导( intelligent vehicle ini2tiative, IV I) 计划 , 欧洲提出公路安全行动计划( road safety action program, RSAP) ,日本提出超级智能车辆系统。 我国科技部则于 2002 年正式启动了“十五”科技攻关计划重大项目 ,智能交通系统关键技术开发和示范工程,其中一个重要的内容就是进行车辆安全和辅助驾驶的研究。预计在 2020 年之前进入智能交通发展的成熟期,人、车、路之间可以形成稳定、和谐的智能型整体。而一些发达国家开发和研制智能车辆已经有 10 余年的时间,特别 2是欧美已有相对成熟的经验。本次设计的红绿灯自动识别小车就是遵循智能小车中的自动驾驶系统理念:自主驾驶系统是智能车辆研究的级阶段,车辆能够通过车内的传感器感知车身和环境信息,利用各种智能算法进行决策控制,并以此作为依据,实现自主行驶任务。其中,如何使智能车辆与普通车辆共同行驶在现有道路之中也是有待于攻破的难题之一。 智能小车的发展主要是在自动化控制领域,一些大中专院校为了培养学生动手及编程能力,同时提高学生的兴趣,为智能小车控制领域提供了环境。同时一些比较大型的比赛,如全国电子设计大赛开始采用这类的题目,虽然都是用小车,但是控制方式都是不一样。智能小车是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,涉及到当今许多前沿领域的技术。而智能小车正是智能机器人的一种,具有不可估量的实际意义。智能车辆是一个运用计算机、传感、信息、通信、导航、人工智能及自动控制等技术来实现环境感知、规划决策和自动行驶为一体的高新技术综合体智能车辆是集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,是智能交通系统的一个重要组成部分。它在军事、民用和科学研究等方面已获得了应用,对解决道路交通安全提供了一种新的途径。 红绿灯自动识别小车的设计对于减少交通事故有很大的实用价值。造成交通事故有 2 个重要原因:一是驾驶员之间通信受阻;二是驾驶员的应急反应速度有限。要降低事故发生率,必需解决车辆与车辆 3之间、车辆与道路之间的通信问题。本次设计解决的就是小车与红绿灯系统之间的无线通信,从而控制小车自动行驶,遵守交通规则,无线通信技术特别适用于车辆与环境的信息交互。 智能车辆系统的进步和发展需要计算机技术、信息技术、电子技术、通信技术、控制技术、传感技术、机械制造等众多技术领域发展的推动,其发展又能够推动所涉及学科和技术的进步与发展。这是一个能够将汽车产业,交通系统与信息产业紧密结合起来的新型领域。智能车辆的研发为世界各国的高新技术产业提供了又一广阔的发展空间。欧洲、日本、美国等发达国家虽走在了前面,但目前与我国的实际差距还不是很大。因此,把握住这一机遇,有计划、有步骤地制定相应的发展策略,提供各种优惠政策来积极指引和引导其健康发展,从而在改善和发展我国交通,提高交通安全性的同时,缩小该领域与发达国家之间的差距。 近几年的交通事故发生的概率越来越大,其中很多原因都是因为闯红灯而造成的,其造成的损失十分巨大。本次设计正是为了解决了这个问题,红绿灯自动识别小车完全体现了智能化,它可以在短时间内对红绿灯信号迅速作出反应,这一点是人无法做到的,尤其是面对醉酒驾驶的司机更加可以避免其闯红灯,这样一来交通事故的发生概率就会大大减少。所以此项设计具很大的研究价值,如果能很好的开发应用于我们的实际生活中,并进行推广使用,其产生的影响是不可估量的。本次设计涉及到多个学科,传感器技术、自动控制技术、人工智能控制、计算机与通信技术等等,对其探究具有深远的意义。 42 设计方案选择与论证 2.1 设计要求 本设计需要设计出一款智能小车,并能够完成前进、后退、向左转、向右转、循迹等基本功能。 接收到红灯信号要自动停止,绿灯信号继续前行,或左转,右转等。 基本要求: 1.单独的红绿灯系统,并与小车进行通信 2.智能小车须具可以驱动其前行的驱动轮。 3.应该具有编程控制部分。 4.可以按照程序的设定功能完成行走,如前进、向左转、向右转、通信等。 2.2 总体设计方案选择 本次设计的红绿灯自动识别小车是一个智能通信系统,能够对红绿灯信号进行感知,然后做出自我判定,并执行相应的命令;而对于小车的设计和识别红绿灯通信系统设计,我们从多方面考虑分析选择了一下方案。 2.2.1 智能小车模型设计方案 在小车模型上,本次设计采用的是后二轮驱动与万向轮联合设计与实现 智能小车对亦称轮式机器人,所以对车轮的选择很重要,小车的轮子选择和布局要考虑稳定性,机动性,可控性 3 方面。使用后二轮驱动,前向加个万向轮就是本方案所采用的,实质就是两个标准动力 5轮差分驱动中置,辅组一个万向轮支撑,此方案也是目前小车用的较多的设计方案,此设计在一定的环境下,十分适应,小车行进十分灵活,且操控也比较容易,而且成本也不高,符合小车设计初衷。具体的设计模型如图 2.1. 图 2.1 二轮驱动与前置万向轮小车模型 2.2.2 电机方案的选择 对于电机驱动方式的选择在本次设计中采用的是直流电机驱动 直流电机是机器人平台的标准电机,它具有优良的调速特性,调速平滑、方便,调整范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极性快速启动停止,制动和反转。 普通直流电机的控制很简单,性能出众,直流电源也容易实现。但是在本设计中由于小车的停止和行走要十分,因此为了控制小车的行走和停止就必须能让直流电机快速启动和停止,而若不无减速齿轮,那么由于电机本身重量大,启动后惯性也大,就不能很好的实现行走和停止。 其实物图如图2.2所示。 6 图 2.2 直流减速齿轮电机实物图 2.2.3 控制单元方案 在设计中选择了单片机作为整个控制核心。实现对电机驱动电路,红外接收电路,红外循迹电路等进行控制。就现在而言,单片机的种类已经繁多,本次设计选择了常见的型号 AT89S51。 AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器,128 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/输出(I/O)口,2 个 16 位可编程定时器/计数器 ,2 个全双工串行通信口。使用单片机实现本次的设计控制,具有可实时进行编程,调试,方便实现程序的下载与整机调试的优点,而且单片机价格比较便宜,技术十分成熟,对于这一块知识的掌握也相对比较扎实,深知其中原理;使用起来既经济,又达到了设计过程中对硬件电路控制的要求,所以选择了该芯片来作为控制核心芯片。 AT89S51 单片机的管脚分布图如图 2.3 所示。 7 图 2.3AT89S51 引脚结构图 2.2.4 小车循迹模块方案 介于各种方案构思的对比,本次设计在实现小车对道路识别上采用红外对管进行循迹。红外对管循迹是利用红外线在不同的物理表面具有不同反射这一性质特点。当小车行驶在画有黑线的白纸上时,小车在行驶的整个过程中是在不断进行着收发红外线,当红外光发射出去遇到白色地面时发生漫反射,反射光被接收管接收,从而整个接收管导通,输出低电平,当遇到黑线时,由于发射出去的红外光被吸收,接收管就接收不到信号,输出高电平,单片机可以根据相应的信号变化来做判断和处理。此方案控制起来方便,安装也比较容易,而且价格也不贵。 以下是此次采用方案的 ST188 红外对管模型,如图 2.4 所示,其中 A,K 为红外发射管,C,E 为红外接收管。 8 图 2.4 ST188 红外对管引脚结构图 2.2.5 红绿灯信号识别方案 对于红绿灯信号的识别采用的方案是利用单片机之间通信来实现 具体情况是利用单片机的串口通信技术来实现两块单片机之间的短距离通信,从而完成对红绿灯的识别。AT89S51 单片机片内有两个可编程的全双工异步通信串行口,而这为实现两块单片机之间的通信提供了基础,通过自定义编码来定义红绿灯的码制,同时单片机价格廉价,在技术需求方面也满足需求。另一方面,对于单片机之间的通信技术相对而言也成熟很多。 2.2.6 短距离通信方案 本次设计由于通信距离要求相对很短,考虑借助红外来实现通信。红外通信是目前比较常用的一种无线数据传输手段,其具有无污染、信息传输稳定、信息安全性高以及安装使用方便等优点,并且可 9以在很多场合应用,如家电产品,工业控制、娱乐设施等领域。红外通信是利用 950nm 近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号,然后传输到单片机进行判断。且现在市场上又有集接收、解调,放大一体的红外接收模块,廉价且电路简单稳定。所有选择红外通信变成为了方案。 3 系统设计功能分析 3.1 L298N 电机驱动电路分析 3.1.1 L298N 驱动芯片资料介绍 L298N 为 SGS-THOMSON Microelectronics 生产的高电压,大电流电机驱动芯片。内部包含 4 信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动 2 个二相或 1 个四相步进电机,内含两个 H-Bridge 的高电压、大电流双全桥式驱动器,也可用来驱动直流电机,继电器线圈等感性负载,采用标准逻辑电平信号控制,具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作,可以外接检测电阻,将变化量反馈给控制电路。 3.1.2 L298N 驱动逻辑功能分析 本次设计采用的 L298N 芯片,通过单片机的 I/O 口输入改变芯片 10控制端的电平,就可以实现对电机进行正反转,停止的操作。L298可驱动 2 个电机,OUT1、OUT2 和 OUT3、OUT4 之间分别接 2 个电机。5、7、10、12 脚接输入控制电平,控制电机的正反转,ENA,ENB 为电机的控制使能端,控制芯片控制信号的有效性,从而达到控制电机的停转。 其单个电机输入引脚与输出引脚的逻辑关系如表 3.1 所示。 表 3.1 L298N 引脚逻辑关系 ENA IN1 IN2 运转状态 0 × × 停止 1 1 0 正转 1 0 1 反转 1 1 1 刹停 1 0 0 停止 L298N 逻辑功能如表 3.2 所示。 表 3.2 L298N 逻辑功能 左电机 右电机 左电机 右电机 小车行驶状态 IN1 IN2 IN3 IN4 1 0 1 0 正转 正转 前行 1 0 0 1 正转 反转 左转 1 0 1 1 正转 停止 以左电机为中心原地左转 0 1 1 0 反转 正转 右转 1 1 1 0 停止 正转 以右电机为中心原地右转 0 1 0 1 反转 反转 后退 3.1.3 L298N 内部功能及引脚分布 L298N 为单块集成电路,高电压,高电流,内部包含四通道逻辑驱动电路。其额定工作电流为 1A,可达 1.5A,Vss 电压小 4.5V,可达 36V;Vs 电压值也是 36V。Vs 电压应该比 Vss 电压高,否则有时会出现失控现象。 图 3.1 为 L298N 内部结构图。 11 图 3.1 L298N 内部构造 而 L298N 芯片的引脚分布如图 3.2 所示。 图 3.2 L298N 引脚分布 3.2 一体化红外接收探头 HS0038 功能分析 3.2.1 HS0038 介绍 红外接收探头 HS0038 将信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的 TTL 信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。HS0038 黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏 12度高。在用小功率发射管发射信号情况下,其接收距离可达 35m。它能与 TTL、COMS 电路兼容。HS0038 为直立侧面收光型。它接收红外信号频率为 38 kHz,周期约 26 s,同时能对信号进行放大、检波、整形,得到 TTL 电平的编码信号。对于 HS0038 的测试,在 HS0038 的电源端与信号输出端之间接上一只二极管及一只发光二极管后,再配上规定的工作电源(为+5V),当手拿遥控器对着接收头按任意键时,发光二极管会闪烁,说明红外接收头和遥控器工作都正常;如果发光二极管不闪烁发光,说明红外接收头和遥控器至少有一个损坏。其外形尺寸及引脚分布如图 3.3 所示。 图 3.3 HS0038 外形尺寸及引脚分布 3.2.2 HS0038 内部电路及参数分析 1.HS0038 的内部主要由核心控制,前置放大,自动增益控制,带通滤波器,解调等基本电路组成,其内部电路如图 3.4 所示。 13 图 3.4 HS0038 内部电路 2.HS0038 的光电参数如表 3.3 所示。 表 3.3 HS0038 光电参数 参数 符号 测试条件 Min Typ Max 工作电压 V cc 4.5V 5.5V 接收距离 L = I F 300mA (测试信号) 10m 15m 载波频率 f0 38KHz 接收角度 1/2 距离衰减 1/2 +/-45Deg BMP 宽度 F BW -3Db Bandwidth 2KHz 3.3KHz 5KHz 静态电流 V cc 无信号输入时 - - - 0.8mA 1.5mA 低电平输出 V OL = V in 0V = V cc 5V 0.2V 0.4V 高电平输出 V OH = V cc 5V 4.5V 输出脉冲 宽度 T PWL = V in 500 V p p ※ 500S 600S 700S T PWH = V in 50m Vp p ※ 500S 600S 700S 3.2.3 HS0038 接收信号原理 当接收到载波频率为 38KHz 的脉冲调制信号时,首先,HS0038内的红外敏感元件将脉冲调制红外光信号转换成电信号,再由前置放大器和自动增益控制电路进行放大处理,然后通过带通滤波器进行滤波,滤波后的信号由解调电路进行解调,后由输出电路进行反向放大并输出低电平;未接收到载波信号时,电路则输出高电平。这样就 14可以将断断续续的红外光信号解调成一定周期的连续方波信号,并通过单片机的串口输入单片机,由单片机处理后便可以恢复出原始数据信号。 3.3 红外对管 ST188 功能分析 3.3.1 ST188 介绍 ST188 是一种反射式红外光电传感器,采用高发射功率红外光电二极管和高灵敏度光电晶体管组成。它采用非接触检测方式,检测距离可调整范围大,一般是 4-13mm。在黑线检测的测试中,若检测到白色区域,发射管发射的红外线没有反射到接收管,测量接收管的电压为 4.8,若检测到黑色区域,接收管接收到发射管发射的红外线,电阻发生变化,所分得的电压也就随之发生变化,测得的接收管的电压为 0.5V。其引脚图如图 3.5 所示。 图 3.5 ST188 引脚图 3.3.2 ST188 光电特性与检测分析 1.ST188 的光电特性分析如表 3.4 所示。其中集电极亮电流 IL 、饱和压降 VCE、响应时间是在红外光电传感器前端面与亮检测面距离 7mm处测得的,其数值受亮检测面的表面光洁度和平整度影响。 15 表 3.4 ST188 光电特性 项目 符号 测试条件 小 典型 单位 输入 正向压降 V F mAI F20 = 1.25 1.5 V 反向电流 I R VV R3 = 10 A 输出 集电极暗电流 I ceo VceV20 = 1 A 集电极亮电流 I L VceV5 = mAFI8 = L3 0.3 MA L4 0.4 MA L5 0.5 MA 饱和压降 V CE mAF I8 = mAC I15 . 0 = 0.4 V 传输 特性 响应时间 T r mAF I20 = VceV5 = =100R C 5 S T f 5 S 2.ST188 的正向电流与正向压降之间关系,检测距离与效率的关系如图 3.6 所示。 图 3.6 ST188 功能曲线描述 检测距离为红外光电传感器的前端面与被测试面之间的垂直距离;被侧面要与前端面保持平行;转换效率相对值为 1 时,表明此时传感器的转换效率;但是在我们的实际应用中,ST188 的实际效 16果与理论曲线 路循迹,使用了 3 个 ST188 进行红外探测,分别放置于小车前端的左,中,右;我们应当注意两个红外对管之间的距离不能大于黑线 离地面的距离不能太远,否则会影响信号检测。小车在行进的过程中始终可以保证不偏离黑线,因为一旦偏离黑线 可以检测到黑线,将信号传输给单片机控制系统,单片机就可以对小车的轨迹做出调整。其具体分布如图3.7 所示。 图 3.7 小车红外循迹位置分布 2.单个 ST188 红外循迹电路如图 3.8 所示。 17 图 3.8 单个 ST188 红外循迹电路 当 ST188 检测到白纸,就能接收到反射光,LM324 的 2 脚比较器反向端T1=0V,3脚比较器同向端为3V,同向端大于反向端则OUT输出为1;当 ST188 检测到黑线,就没有接收到反射光,LM324 的 2 脚比较器反向端 T1=5V,3 脚比较器同向端为 3V,反向端大于同向端则 OUT 输出为 0。 3.ST188 循迹与与对应的电机控制状态如表 3.5 所示。 表 3.5 小车循迹电机控制状态 ST188 红外探测头 电机驱动控制电机引脚状态 P02 P01 P00 小车状态 P23 P22 P21 P20 电机动作 0 0 0 到终点 Ox00 1 1 1 1 全部停止 0x0f 0 0 1 偏右倾向 0x01 0 1 0 0 左转弯 0x04 0 1 0 不能存在 0x02 0 1 1 偏右倾向 0x03 0 1 0 0 左转弯 0x04 1 0 0 偏左倾向 0x04 0 0 0 1 右转弯 0x01 1 0 1 中间行驶 0x05 0 1 0 1 前行 0x05 1 1 0 偏左倾向 0x06 0 0 0 1 右转弯 0x01 1 1 1 跑偏 0x07 按后检测动 3.4 单片机控制红绿灯功能分析 3.4.1 红绿灯路口设计规划 本次设计的交通灯系统是模拟生活中十字路口实现对车辆流通 18方向的控制,基于交通规则中的红绿黄信号的意义来进行模拟以及简化。通过一路红绿灯信号体包含了 3 组红绿灯,用于控制车前行,左转,右转。而且采用数码管进行读秒计数,更加接近于现代化交通灯系统的模拟。设计路口三维模型如图 3.9 所示。 图 3.9 十字路通灯三维图 本次设计红绿灯信号道路模型如图 3.10 所示。 图 3.10 红绿灯信号道路模型 3.4.2 红绿灯功能实现简要分析 本次设计旨在实现小车对红绿灯信号的识别而做出判别,通过红绿灯指示信号控制小车的状态。本着这个原则,采用单片机对 3 组红 19绿灯信号进行交替控制,当前行方向亮绿灯时,左转,右转方向均是亮红灯;左转方向亮绿灯,其他方向亮红灯;右转方向亮绿灯,其他方向亮红灯;同时数码管显示读秒计数。整个过程就实现了红绿灯信号对小车的控制。 3.5 基带信号红外发射调制功能分析 3.5.1 红外发光二极管发射原理分析 红外发射电路主要由 38KHz 晶振振荡电路,或非门,驱动三极管 9013,以及红外发光二极管构成,通过单片机的 I/O 口控制整个信号的发射过程。红外载波信号采用频率为 38KHz 的方波,是由 38KHz晶振产生的,基带信号红外发射的内部电路如图 3.11 所示。 图 3.11 基带信号调制发射内部电路 通过图 3.11 分析,待发送到数据由单片机的 TXD 端口以串行方式送出,单片机控制端采用 600bps 波特率送出信号,单片机的控制是为了调制 38KHz 载波信号,TXD 端送“1”时,三极管的基输出 20为 0,三极管处于截止状态,红外发射管将不发射红外光,因此通过待发送数据的“0”或“1”就可控制调制后两个脉冲串之间的时间间隔。红外发射管二极管实现将电信号转变成一定频率的红外光信号,它发射一种时断时续的高频红外脉冲信号,由于脉冲串时间长度是恒定的,根据脉冲串之间的间隔大小就可以确定传输的数据是“0”还是“1”。 3.5.2 波特率分析 单片机在串口通信时的速率用波特率表示,它定义为每秒传输二进制代码的位数,即 1 波特=1 位/秒,单位是 bps(位/秒)。如果每秒传送 75 个字符,每个字符为 8 位,此时的波特率就是 8 位×75 个/秒=600bps。在串行通信中,收,发双方对发送或接收数据的速率要约定一致。通过编程可以对单片机串行口设定为 4 种工作方式,其中方式 0 和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率是可变的,由 T 定时器 1 的溢出率来决定。4 种方式波特率的计算公式如下所示: 方式 0 的波特率= 12 fosc 方式 1 的波特率= ( ) ( ) 溢出率 1 322TSMOD× 方式 2 的波特率= ( ) foscSMOD× 642 方式 3 的波特率= ( ) ( ) 溢出率 1 322TSMOD× 其中, fosc为系统晶振频率,我们所用的单片机通常频率为11.0592MHz;SMOD 是 PCON 寄存器的位,TI 溢出率即为定时器 T1 溢出的频率。我们可以根据 T1 的溢出频率通过计算公式算出 21相应的波特率,也可以根据波特率反推出定时器的溢出频率;通常单片机在通信时,波特率都比较高,而且通常波特率都是固定的,所以我们常根据波特率来计算出定时器的初值,以便于控制通信。 4 系统总体硬件设计及单元电路实现 4.1 小车模块系统组成及框图 1.此次设计的小车模块系统主要是以 AT89S51 单片机小系统作为电路的控制核心模块,红外接收电路为小车与红绿灯通信的模块,以L298N 驱动芯片及外围电路作为小车的驱动模块,另外加上红外对管循迹模块构成小车的整个系统。使用的 2 块手机电池串联进行电源供电,经过 7805 稳压给单片机供电。 2.小车模块系统设计框图如图 4.1 所示。 图 4.1 小车模块系统框图 4.2 红绿灯系统控制模块组成及系统框图 此次设计的红绿灯系统也是以 AT89S51 单片机小系统作为控制核心,还包括红外发射模块,以及 LED 红绿交通灯模块和数码管 22计数显示模块。红绿灯系统电路框图如图 4.2 所示。 图 4.2 红绿灯系统电路框图 4.3 各个单元电路硬件设计实现 4.3.1 小车控制各部分电路实现 ⑴ 单片机小系统电路实现。 AT89S51 单片机小系统电路主要以 AT89S51 单片机为核心,包括晶振电路,复位电路等这几块电路组成,主要用于控制。其原理电路如图 4.3 所示。 图 4.3 单片机小系统 23 ⑵ 电机驱动电路实现 本次设计采用的直流减速齿轮电机,所以我们选择了 L298N 作为电机的驱动芯片,驱动电路主要由 L298N 芯片与 IN7 二极管以及一些电容组成,其电路原理如图 4.4 所示。 图 4.4 L289N 电机驱动电路 ⑶ 小车稳压电路实现 由于本次设计采用的是 8V 电池,所以给单片机和其他电路供电时不需要用到整流二极管进行整流,只需要稳压滤波模块就可以实现5V 供电,稳压芯片采用 7805 进行稳压,为了方便,设计电路时另外用插针将 8V,5V 端口和 GND 端接出。其电路实现如图 4.5 所示。 图 4.5 电源稳压电路 ⑷ 红外一体化接收电路实现 红外一体化接收头 HS0038 内置专用的 IC,接收角度宽,距离较远,而且抗干扰能力强,能抵御环境光线的干扰,工作需要电压低。 24其应用电路如图 4.6 所示。 图 4.6 HS0038 红外接收电路 ⑸ 红外对管循迹电路实现 本次设计采用的是 3 组 ST188 红外对管对地面信号进行感应,可以实现循迹,找到准确位置线停车,还可以根据循迹调整小车的行进方向,其电路实现如图 4.7 所示。 图 4.7 小车循迹电路 ⑹ 整体小车实物框架 25 在此次的设计当中,小车这一模块属于硬件设计中相当重要的一部分,它涉及到了力学,机械等相关知识。本次设计的小车纯属用学习常见的电路板搭建而成。整体实物图如图 4.8 所示: 图 4.8 小车整体实物图 4.3.2 红绿灯系统各部分电路实现 ⑴ 基带信号调制发射电路实现 通过单片机 TXD 口对 38KHz 载波信号进行调制,由红外二极管发出信号,电路如图 4.9 所示。 图 4.9 基带信号调制发射电路 26⑵ 红绿灯系统电路实现 红绿灯显示采用 AT89S51 单片机小系统控制,红绿灯采用发光二极管(LED),二极管的正端接 5V 电源,这样 LED 会比较亮,这是比较容易实现的,其电路如图 4.10 所示。 图 4.10 单片机控制红绿灯显示电路 ⑶ 2 位共阳数码管读秒显示电路实现 2 位共阳数码管读秒显示电路采用三极管驱动数码管,单片机控制位选端选通某一位数码管,同时单片机控制数码管的 8 段显示,其电路如图 4.11 所示。 图 4.11 数码管读秒显示电路 27⑷ 红绿灯系统实物框架 该设计中的红绿灯系统是模拟实际生活中十字路口的红绿灯系统的一个路口上的红绿灯显示系统,拥有控制一个路口左、中、右三个方向的车流行驶,基本完成了红绿灯系统控制的功能。其实物显示图如图 4.12: 图 4.12 红绿灯系统实物图 5 软件设计分析与实现 5.1 软件设计思想 本次设计软件板块中关键部分当属小车与红绿灯系统之间的通信过程,在软件设计的过程中参考了生活中常见的电视遥控器所实现的利用红外控制来进行通信,而在这里则是利用红外实现两块单片机的通信过程。具体思路:红绿灯系统中的单片机在控制红绿灯循环变化的同时,采用引导码+数据码的方式向空中发射数据,例如:利用定时器中断实现 0.56ms 定时并设该时间为 T1,用 16 个 T1 时间高电平和 8 个 T1 时间低电平来构成引导码;用 1 个 T1 时间的高电平和 1个 T1 时间的低电平来表示所发数据的 0,用 1 个 T1 时间的高电平和 283 个 T1 时间的低电平来表示所发数据的 1。这种中编码的图示如图5.1 所示: 图 5.1 数据码表示方式 5.2 红绿灯系统软件实现与分析 整个红绿灯系统分为数码管显示模块,红绿灯循环变化模块,数据发送模块。该系统的工作过程为:在显示红绿灯交替变化的过程中用数码管显示对应状态的一个倒计时过程,同时不断的向外发送数据。在这个过程中涉及到了定时器中断,数据编码,数码管动态显示,红绿灯交替变化四个板块。红绿灯显示循环图如图 5.2: 图 5.2 红绿灯显示循环模式图 295.2.1 定时器中断系统 中断系统在单片机 C 语言编程中占据了一个非常重要的位置。在此选择的是定时器 0 工作方式 1(16 位定时器/计数器)。利用该定时器产生发送数据所需的时间。其中断服务程序如下: void time0() interrupt 1 //定时器 0 中断程序 { TH0=(65536-516)/256; TL0=(65536-516)%256; NUM++; if(NUM=36) { NUM=0; SEND_DATA=0; NUM_1++; if(NUM_1=50) //产生约 1 秒的时间(0.928s) { NUM_1=0; TIME--; if(TIME=0) //产生 35 秒的变换 TIME=35; } } } 该程序是主要为数据发送和数码管动态显示提供不同的时间。在数据发送过程中由于引导码和数据码是以 0.516ms 时间为单位来控制数据发送的,且数据的发送对时间要求很,所以在此采用定时器来产生。在数码管动态显示时由于数码管要显示一秒为单位的倒计,三组红绿灯状态显示的总共时间为 35 秒,所以先用该定时器产生一个以一秒为单位的延时,再以此一秒为单位构成一个总共时间为35 秒的倒计时分配给红绿灯显示的三组状态。 5.2.2 红绿灯显示与数码管动态显示 本次设计的红绿灯系统粉三组状态。组红绿红,第二组绿红 30红,第三组红红绿;这三组状态在不断的循环,并以组,第二组,第三组再回到组这种模式循环对应的数码管倒计时时间为 15秒、10 秒、10 秒。具体程序如下: void display() //红绿灯显示控制子程序 { if(20TIMETIME=35) //指示灯显示红绿红(从左往右的顺序)时间为 15 秒 { LED_G_L=1; LED_G_M=0; LED_G_R=1; LED_R_L=0; LED_R_M=1; LED_R_R=0; TIME_1=(TIME-20)/10; //十位显示数值 TIME_0=(TIME-20)%10; //个位显示数值 } if(10TIMETIME=20) //指示灯显示绿红红(从左往右的顺序)时间为 10 秒 { LED_G_L=0; LED_G_M=1; LED_G_R=1; LED_R_L=1; LED_R_M=0; LED_R_R=0; TIME_1=(TIME-10)/10; //十位显示数值 TIME_0=(TIME-10)%10; //个位显示数值 } if(0=TIMETIME=10) //指示灯显示红红绿(从左往右的顺序)时间为 10 秒 { LED_G_L=1; LED_G_M=1; LED_G_R=0; LED_R_L=0; LED_R_M=0; LED_R_R=1; TIME_1=TIME/10; //十位显示数值 TIME_0=TIME%10; //个位显示数值 } P0=Tab[TIME_1]; //在 tab 中寻找第 TIME_1 的值+1 的对应位置的段码 31 SHUMA_EN_1=1; //选通显示十位的数码管 delay_1ms(1); //延时 0.092ms 进行扫频 SHUMA_EN_1=0; //关闭十位数码管 P0=Tab[TIME_0]; //在 tab 中寻找第 TIME_0 的值+1 的对应位置的段码 SHUMA_EN_2=1; //选通显示个位的数码管 delay_1ms(1); //延时 0.092ms 扫频 SHUMA_EN_2=0; //关闭个位数码管 } 在此程序中实现了交通路十字口中一个路口所看到的红绿灯变化情况。作品中该程序运行下的图示如图 5.3 所示: 图 5.3 红绿灯与数码管的动态显示图 5.2.3 数据发送模块 数据发送这一板块是小车与红绿灯系统实现通信关健的一部分,决定了小车是否能够识别红绿灯状态显示所表示的意义,而这也就间接实现了小车是否能够自动识别红绿灯。数据发送和小车上的数据接收模块一起构成两块单片机之间进行的异步通信过程。从而完成设计初始要求,实现小车能够自动识别红绿灯变化规则以及控制小车的行驶和停止。 小车整个通信过程如图 5.4 所示: 图 5.4 数据传输和接收过程 32数据的发送是利用 38K 晶振产生一个正弦波然后整形成方波来作为数据传输的载波。发送数据由引导码、数据码构成。以数据码“01”来代表“绿、红、红”的状态;以数据码“11”来代表“红、绿、红”的状态;以数据码“10”来代表“红、红、绿”的状态。 波形具体编码方式图如图 5.5 所示: 图 5.5 波形编码规则图 数据编码及发送程序如下: if(NUM==0) //16(从 NUM=0-15)个定时器周期时间(即 16*0.516ms 这段时间)将 SEND_DATA 至低电平 { SEND_DATA=0; } if(NUM==16) //8(从 NUM=16-24)个定时器周期时间(即 8*0.516ms 这段时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } if(NUM==24) //数据码开始发送 { SEND_DATA=0; //将 SEND_DATA 至低电平 } 该程序是数据发送过程中的引导码编码方式,数据发送总共有 36 个定时器周期,每个周期为 0.516ms。该周期时间由定时器产生。引导码的编码方式是 16 个定时器周期时间的低电平和 8 个定时器周期时 33间的高电平构成,此过程是实质通过控制数据发送端口至高、低电平的时间来控制的,或者说以定时器周期个数来控制数据发送端高、低电平。每一个数据发送都需要该引导码就好像两个单片机之间默认好当收到该引导码时表示要传送数据了。 现在来看发送数据码“11”的编码程序: if(LED_G_M==0) //判断交通灯是否显示“红绿红”状态 { if(NUM==25) //在NUM=25 时开始到NUM=28这段时间即(3*0.516ms 这段时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } if(NUM==28) //在NUM=28 (即一个0.516ms的时间)时将SEND_DATA 至低电平 { SEND_DATA=0; } if(NUM==29) //在 NUM=29 到 NUM=32 这段时间(即 3*0.516ms 这 段时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } if(NUM==32) //在 NUM=32(即 2*0.516ms 这段时间)时将 SEND_DATA 低电平 { SEND_DATA=0; } if(NUM==34) //在 NUM=34 至 NUM=36 这段时间(即 2*0.516ms 这 段时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } } 数据码的编写方式是用1个定时器周期的时间至高电平和3个定时器周期的时间至低电平来表示逻辑“1”,用 1 个定时器周期的时间至低电平和 1 个定时器周期的时间至高电平来表示逻辑“0”,具体图形表 34示见图 5.1。在此段代码中所要发送的数据码是“11”,代表交通灯“红、绿、红”的状态。同样原理的编码方式分别发送数据码“01”和“10”,即代表发送交通灯“红、红、绿”和“绿、红、红”这两组状态的信息,程序如下所示: if(LED_G_R==0) //判断交通灯是否显示红红绿(即数据码 01 所代表的意义) { if(NUM==25) //在 NUM=25 至 NUM=26 这段时间(即一个 0.516ms 这段 时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } if(NUM==26) //在 NUM=26 至 NUM=27 这段时间(一个 0.516ms)将 SEND_DATA 至低电平 { SEND_DATA=0; } if(NUM==27) //在 NUM=27 至 NUM=30 这段时间(3*0.516ms)将 SEND_DATA 至高电平 { SEND_DATA=1; } if(NUM==30) //在 NUM=30 至 NUM=34 这段时间(4*0.516ms)将 SEND_DATA 至低电平 { SEND_DATA=0; } if(NUM==34) //在 NUM=34 至 NUM=36 这段时间(2*0.516ms)将 SEND_DATA 至高电平 { SEND_DATA=1; } } if(LED_G_L==0) //判断交通灯是否显示绿红红(即数据码 11 所代表的意义) { 35 if(NUM==25) //在 NUM=25 时开始到 NUM=28 这段时间即(3*0.516ms 这段时间)将 SEND_DATA 至高电平 { SEND_DATA=1; } ...
以上信息由扬州市旭瑞照明器材有限公司整理编辑,了解更多交通信号灯,红绿灯,标志牌信息请访问http://www.yzxrjt.com


在线客服

在线咨询

全国服务热线:
400-6699-897
咨询电话:
18014982991
二维码

打开微信扫一扫