基于CAN总线的车灯控制系统设计说明书.doc_第1页
基于CAN总线的车灯控制系统设计说明书.doc_第2页
基于CAN总线的车灯控制系统设计说明书.doc_第3页
基于CAN总线的车灯控制系统设计说明书.doc_第4页
基于CAN总线的车灯控制系统设计说明书.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

目 录摘 要IIAbstractIV第一章 绪论11.1 课题背景11.2 CAN总线的优势11.3 CAN国内外发展现状21.4 课题研究意义21.5研究的内容3第二章 CAN协议规范42.1 CAN技术协议2.0A42.2 CAN总线协议2.0B52.3 CAN2.0B协议帧结构6第三章 系统的硬件设计103.1 单片机的选取103.2 CAN控制器的选择123.3 CAN收发器的选择143.4 系统结构设计153.5 中央节点电路设计163.6 前后节点的电路设计183.7 车灯的驱动电路193.8 系统最小电路设计203.9 电源电路设计21第四章 系统的软件设计234.1系统整体软件简介234.2协议报文的定义234.3中央节点的程序设计244.4 前后节点的程序设计264.5 报文发送中断过程27第五章 系统抗干扰设计285.1 硬件的抗干扰手段285.2 软件的抗干扰技术28第六章 总结与展望306.1 总结306.2 展望30参考文献32附 录33致 谢40基于CAN总线的车灯控制系统设计 摘 要本文是基于CAN总线对车灯控制系统的设计。主要选取的是近远光灯,转向灯,倒车灯,刹车灯,雾灯以及小灯这些在使用中特别重要的车灯。再根据车身的结构,将系统划分为负责控制的中央节点,前节点和后节点来方便控制。本文选取了8051单片机,SJA1000控制器和PCA82C251收发器,同时根据具体的节点情况设计出节点电路图,驱动电路图,电源电路图等硬件电路。软件的程序编写是用C语言,使用模块化的理念,大大简化了程序的编写。此外,考虑到车辆使用环境对系统有干扰,所以在软件设计后面增加了抗干扰的措施让系统更加稳定准确。关键词:CAN总线;车灯控制;微型处理器;汽车电子;IIIThe Design of Vehicle Light Control System Based on CAN BusAbstractThis article is based on the design of the CAN bus light control system. The main light sources selected are the near-highlight, turn signal, reversing light, brake light, fog light, and small light. These are particularly important lights in use. According to the structure of the car body, the system is divided into the central node responsible for control, the front node and the rear node to facilitate control. This paper selects 8051 single-chip microcomputer, SJA1000 controller and PCA82C251 transceiver, and at the same time designs node circuit diagram, drive circuit diagram, power supply circuit diagram and other hardware circuits according to the specific node conditions. The software program is written in C language, using the concept of modularity, which greatly simplifies the preparation of the program. In addition, taking into account the vehicle environment to interfere with the system, so the anti-jamming measures are added behind the software design to make the system more stable and accurate.Keywords: CAN bus; Vehicle light control; Micro processor; Automotive electronics;31第一章 绪论1.1 课题背景在科技高速前进的时代里,电脑运算能力,网络传输数据能力以及集成电路技术也都不断攀升,尤其是在这个物联网加的时代里它们在各个领域应用的优点也很快显现出来,汽车行业也不免如此。自从国内汽车技术刚刚有所起色的之后, 汽车上的电器设备和负责控制这些单位的(ECU)部件逐年增加, 譬喻,尾气再利用 (EGR)、数字电喷系统(DEFI)、轮胎防抱死系统(ABS)、车辆稳定控制系统(VSC)、车轮打滑控制系统(ASR)、巡航系统(CCS)等等1。大批的传感器、集成电路和计算机芯片等电子元器件在汽车上得到普遍的应用。于此同时,这也造成汽车的线束过多过杂。因此,汽车总线技术应运而生。总线就是一种信息共用的通道,通过总线把各个节点连接起来实现信息的共享与传输。再者,随着汽车电子技术的种类越来越多,人们对汽车的功用期盼值也随之增加。再加上电动车呼声也越来越高,汽车的电子技术日益突出。而总线技术可以很好的提升电子技术的发展,故汽车总线技术的研究也成为必然趋势。目前,在汽车上已经有包括LIN、CAN等多种现场总线技术的运用。就CAN总线技术而言已经在汽车有了很好的运用。目前已有著名的公司支持CAN协议,如Intel,Motorola,HP,SIEMENS,M ICROCH IP,NEC,SILION I等。大多数国外著名制造商,如BMW,法拉利,悍马,大众,玛莎拉蒂,奔驰等早已将CAN总线的科技运用到自己的产品中去。现在大部分的卡车都已实现CAN总线技术对发动机的工作状态管理,其传输速度为500 KB / s。许多中国制造的汽车还推出了大众,帕萨特,东风雪铁龙塞纳,东风标致307,苏州金龙,一汽大众,斯太尔等系列CAN总线技术1。1.2 CAN总线的优势CAN总线是上个世纪80年代由德国博士公司提出设计的网络技术,最先应用于汽车工业中。由于CAN总线的优点性能比其他的车载网络都要好,现在已经是全球汽车控制器局域网中最普遍、最快的车载网络技术。下面就介绍它为什么这么流行的主要原因是:1、总线为多主站总线, 每一个负责接受或发送消息的节点都可以随时将报文传输到总线上的任何一个其余节点,这样就削减了从属的关系,进而保证消息发送的快捷。2、CAN总线选用独特的无损总线仲裁技术,可以实现总线及时性的特点。3、总线具有点对点,全局广播传输数据的功能。4、CAN总线与其他网络总线相比每帧有效字节数低于8位,同时在CAN协议中还有其他检查措施,数据的错误率非常低。当系统某个节点呈现比较大的毛病时,它能够主动从总线断开,并且总线上的其余节点操作不受影响。5、当系统需要增添新的节点时,能够直接将新加入的节点连接到总线上,这样的优点大大方便日后系统的改进。6、CAN总线传输速度在现有的汽车总线中是很快的,当传输的节点间隔较小时可达到最1M / b的通讯速度。1.3 CAN国内外发展现状因为最初CAN总线科技是在生产汽车大国的德国提出和设计,目前他们已经形成了一套完整、标准的通讯协议。在国外,CAN总线技术早就被普遍的使用于汽车电控体系、车轮防抱死系统(ABS)以及发动机监控等诸多领域,就更不用提汽车车灯控制系统上的CAN总线的应用。甚至他们在汽车出现故障是也设计了系统来记录这些故障,然后通过他们设计的故障检测器读出这些故障,从而实现精确的维修。CAN总线技术在汽车上的使用是整个行业今后肯定要经历的过程,同时CAN总线技术在汽车上的应用也日趋完善。但是,我们也应看到过去国内自主品牌的低端汽车仍大面积使用传统的车灯控制系统,采用电力布线,车内线束杂多且走线复杂,并且产生了很强的电磁干扰,导致整个系统的工作可靠性下降,低档的合资品牌轿车也是如此,到了近几年对CAN总线的研究才逐渐深入。国内较早研究CAN总线的有北京航空航天大学、清华大学、中国汽车技术研究中心等单位,不过目前的研究还处于起步阶段,研制生产CAN元器件的厂家很少, 具有自主知识产权的专用芯片更少1。1.4 课题研究意义在视野不好的情况下,车灯是汽车的光源和信号源,能够为司机提供行车照明,同时也是车辆在道路上行驶时,彼此之间交流的语言。根据相关权威部门的调查显示,交通事故在多数情况下是由车灯照明质量引起的。一个方便可靠的车灯控制系统对汽车的安全有着不可代替的作用。而正如上文说过的那样,汽车上的电子元件越来越多,各个节点之间的通讯连接也越来越繁杂。假若车灯控制系统仍然是选用过去传统的电力布线方式来连接各个单元,会增加车上不必要的线束数量。这不仅会造成成本过高而且会影响到整个系统的可靠行。通过采用总线技术,可以做到多路复用(即在一条线路上可以传输几个不同的控制器的信号)。这样不仅仅会大大减少电线的数量,降低成本。这里本文首先选择的是CAN总线是因为CAN首先就是针对汽车提出来的,一直以来CAN总线在汽车车载网络技术领域据有着十足的优势。此外CAN总线的传输速度达到了1M/b,具有很高的灵敏性,大大的提高了车灯系统的可靠性。所以CAN总线技术对车灯系统的控制是最佳的选择。再加上国内对CAN总线的研究也是最近十几年才逐渐发展起来的,对CAN总线的学习和研究会让我们能走在科技的前沿。所以选取以CAN网作为基础的网络技术对车灯控制系统的设计具有很好的意义。1.5研究的内容本文是基于CAN总线技术对汽车的车灯控制系统设计,首先根据系统需要选取必要的元件,画出系统的结构框图。参照系统的框图设计出中央节点电路,前后节点的电路,系统最小电路,电源电路和驱动电路。再结合第二章制定报文,使用C语言编写系统软件程序,画出程序的流程图。最后为了增加系统工作时的稳定性,在系统的硬件和软件方面做了一些优化。以上就是本文主要的研究内容这些设计。第二章 CAN协议规范总线在传输数据时,传输的应该是能够被各种控制器元件所能识别的格式。而往往各个控制器的数据格式并不一样,就好比语言不同的两个人是无法正常交流的。这时就需要对这些语言”进行翻译和规范。通过对本章的学习主要是为了后面报文发送和接受时帧的标识位,帧的类型和帧的数据做定义。2.1 CAN技术协议2.0A在CAN总线协议2.0A中,将协议分为三个层次进行规范定义。它们分别为对象层,传输层和物理层。它们的功能如下:对象层的功能包括确认要发送的对象、选定将发送信息所用地址、确定接收传输层接收到的信息以及为应用层提供接口。传输层是协议的核心,它主要是针对帧的结构作规定。它的功能包括帧组织、总线仲裁错误检测、报警和故障定义、检测报文能否进入总线,检测是否接收到报文以及位定时信息在内的规定3。此外传输层是标准化的结构是不能够轻易修改的。物理层定义了实际的信号传输方法。比如传输媒介,电压的大小高低压等实际物理方面的东西。物理层没有具体规定那些连接导线等,为了方便技术人员根据实际的情况对总线进行优化处理。更加清楚的了解结构可以参见图2.1:图2.1 CAN协议2.0A结构2.2 CAN总线协议2.0BCAN总线协议2.0B与2.0A相比,基本上没有太多的区别,只是2.0B在报文格式上设定了标准的和扩展的报文格式。CAN总线协议2.0B是参照OSI模式来制定的,将协议分成两个层次即数据链路层和物理层来方便定义和管理。在数据链路层里又被分成逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)8。而这两个子层功能与2.0A协议中应用层与传输层功能相同。LLC子层的主要作用为帮助信息交流和协助节点向其他节点发送请求数据的远程帧,判定LLC层收到的消息是否已被接收,同时LLC子层在一些方面还能提供系统的状态,比如系统过载了会提供过载详细信息。MAC子层的功用主要是控制传输规则,即规定帧机构中的控制域,仲裁判别的方式,对错误进行判定,检测报文的错误和错误校准。MAC子层的功用不能随意的更改,因为它的一部分功用设计到用于同步的定时作用。CAN总线协议2.0B对物理层的定义与2.0A里差不多,物理层定义了实际的信号传输方法。比如传输媒介呀,电压的大小高低,同时在2.0B中还包含了关于编码的时序,编码,译码与同步。物理层没有对驱动器的元件定义,以便技术人员根据实际的需要对总线进行优化。具体的功能可见图2.2:图2.2CAN协议2.0B结构2.3 CAN2.0B协议帧结构CAN帧的结构是CAN总线协议中最为核心的东西,它就好像一门语言的语法一样。在控制器之间交流信息的时候,只有把语法规定好,CAN节点之间才能实现交流。根据信号的功能不同,帧又可以分为用于传递数据的数据帧,用于请求的远程帧,用于诊断标示为是否有误的出错帧以及用于延迟信息传输的超载帧。(1)数据帧数据帧故名思意是系统在交流时用于传输数据的报文。当中央节点或者其他节点发送数据帧时这个数据帧会被至少一个节点所接受,节点会根据报文内容来做出反应。这些反应是由数据帧中四个功能定义不同位场所决定的(数据帧的结构),它们分别是:帧起始;仲裁域; 控制领域; 数据域。其结构如下图:图2.3 CAN2.0B结构图帧开始:该字段表示报文的开始,主要实现为了同步保证控制器在对应位场读取正确的数据。就相当于告诉控制器下面是数据,要做好准备。该代码段是由数字0表示,数字0在协议里通常是表显性。仲裁域:在总线里信息是共享的,节点会有选择的接受报文这就需要仲裁域里的信息标识符起作用。另外,标识符还能在多个CAN控制器同时发送数据时造成信息冲突时,根据标识位的数值提供仲裁方案。标识符:在协议2.0B它是由29个ID位构成,发送顺序是最高位到最低位。它是由5个部分组成:源节点地址编码、目标节点编码、响应标识位,功能定义位、资源节点位。它的功用通过这几个位就可以知道,通过节点编码找到相应的资源,再根据功能编码和响应位定义帧的功能的类型来完成目的。具体结构可见表2.1表2.1 标志位编码定义ID位ID28ID27ID26ID25ID24ID23ID22ID21ID20ID19功用00源节点编码00ID位ID18ID17ID16ID15ID13ID12ID11ID10ID9ID8ID位目标节点编码响应位功能编码ID位ID7ID6ID5ID4ID3ID2ID1ID0RTRID位资源节点编码0这里还需要对功能编码做出说明,它用于说明报文的功能。在协议中对这些编码有具体的定义,本文在这里列举几个比较常用的见表2.2表2.2 功能编码ID11ID8功能解释0x00保留0x01连续写入对单个多个节点数据写入0x02连续读取对单个多个节点数据读取远程帧(RTR):远程帧的作用是当系统中的节点需要数据时请求目标节点发送数据时发送的报文。发送的远程帧与数据帧相似,只不过在RTR会置为高位,此时后面的数据控制器将不会读出。当节点马上回复数据帧时,所用的标识符地址还是一样的。控制域:该段代码由6位数字构成,其中包含2个保留位(r1和r0,只有在协议中增加其他内容是才会用到这两位)和4位用来控制数据段长度的代码,一般情况规定发送数据长度为0到8个字位。图2.4 仲裁域结构数据域:在2.0B协议里,数据域负责数据传送和提供给功能码所要参数。在协议里数据域内的对几个字节也有定义,不同的字位也具有不一样的作用。通过作用可以将数据域分为两个部分,如表2.3所示:表2.3 数据域字位含义数据域字节功用第一位0分段编码第二位1功能码相关参数字节27当数据域长度不超过7个字节,第一位就为0x00。另外,第二位字节1主要是用来定义数据域长度,或者是子资源节点ID码(当功能码为连续写入时)。当功能码为异常响应时,字节1的含义就是错误代码。 (2)远程帧远程帧的结构与数据结构相似,唯一不同的是在之前的RTR位为高即为“1”,使得数据无效。远程帧是用于向总线请求数据,CAN总线上任意一个节点就可以向网络中发送一个远程帧。(3)错误帧错误帧是由6到12位的错误标志的叠加和8位的错误分界符所组成。其结构如下图:图2.5 错误帧结构在错误标志中有两种形式,一种是激活状态是由6个显性位组成,另一种是认可错误标志,它是由6个隐形位组成,但可以更改。当激活错误状态中的节点检测到一个错误时,会发出一个激活错误标志,它不满足插入规则或破坏应答字段或帧结束字段的固定格式。所有其他节点将检测错误状态并发出错误标志。因此,从总线检测到的这些主要的显性字符是每个节点发出的不同错误标志的叠加结果。这个位串的长度是6,最长的是12。(4)超载帧与错误帧结构类似,超载帧也是由超载标志(与错误标志相同)和超载分界符组成。超载帧的作用由名字就可以知道,当系统超载时不能在处理数据时就会发送超载帧。另外,在在帧空隙检测到显性信号时也会发送超载帧。但超载帧的发送次数是有限的。其结构如图2.7图2.6 超载帧结构图(5)帧间空隙帧间空隙结构组成如下图,其作用主要是分隔作用,常位于数据帧与其他帧之间。帧间空隙在帧传输中具有很重要的作用可以说是必要的,以便在下一次消息传输之前,允许控制器执行内部处理操作。图2.7 帧间空隙结构图第三章 系统的硬件设计本章是本篇论文的核心,在CAN总线的控制系统里,节点硬件设计是必不可少的一环。它负责从总线中接受或者向向总线中发送信号,所以对于节点元件的选取就会关系到整个系统的好坏。下面就会对选取的元件功能,原因做一些介绍以及根据车灯在车身上分布位置划分几个节点来设计,画出节点电路图。3.1 单片机的选取单片机又可以看作小型计算机,一个单片机好坏决定了整个系统快慢。本文选用的是比较熟悉的一款单片机:8051。它的整体技术,接口技术相对与现在的单片机还是比较简单,比较容易上手故选择了这一款单片机。它主要有以下特征:1、它的中央处理器是位处理器,工作人员为它设计了一套面向字节的完备的操作系统。它不仅可以在芯片上处理某些特殊的功能寄存器,如传输、设置、清除、测试等,还可以执行位逻辑运算,其功能非常齐全,使用方便。2、同时,在芯片RAM空间中特别开放了双功能地址范围,非常灵活。3、在编写一些简单的算数程序时,不像其他的8位单片机,需要调用一个子程序,这给8051在编程时节省很多不必要的步骤,方便了编程。当然它的缺点也很明显1、AD、EEPROM设计的不是很完善,在具体工作时还需要另加一些其他功用,这对硬件和软件都会造成影响。2、虽然I/O 接口技术很简单,但它在高电平上就无法正常工作。这是8051系列单片机比较明显的问题。3、操作速度太慢,尤其是在数据结构比较复杂的情况下。如果可以改进,可以给编程带来极大的方便。4、保护能力较差,易烧晶片。所以说8051比较适合用在要求不是太高的场合,如在车灯控制系统这种要求不是太高的系统中。1、主要性能:(1)8位CPU,4kB ROM,256个RAM,111条指令;(2)并行I/O端子32个,分为四个8位口;(3)21个专用寄存器; (4)2个可编程定时/计数器; (5)5个中断源,2个优先级; (6)一个全双工串行通信口;(7)外部RAM寻址空间为64kB; (8)外部ROM寻址空间为64kB;(9)逻辑操作位寻址功能;(10)单一+5V电源供电;(11)DIP40引脚封装;2、引脚功能说明8051的引脚如下图: 图3.1 8051引脚图(1)VCC - 芯片电源,+ 5V;(2)VSS - 接地端;(3)XTAL1,XTAL2-产生工作脉冲的晶体振荡器的两个接口;(4)ALE功能:用于锁定P0的低8位地址;(5)PROG功能:接入外部的输入脉冲,可供系统编程时使用(当单片机中含有EPROM芯片时);(6)PSEN:外部ROM读取选择通信号码;(7)RST / VPD:复位/备用电源;(8)EA:根据情况使用内部和外部的存储器;(9)VPP功能:芯片上的EPROM芯片,EPROM编程中的编程电源VPP;(10)RXD: 串行输入口;(11)TXD: 串行输出口;(12)INT0: 外部中断0;(13)INT1:外部中断1;(14)T0:定时器的外部输入;(15)T1:定时器的外部输入;(16)WR: 外部数据存储器写入通道;(17)RD: 外部数据存储器读取通道;8051系列单片机最大特点就是它有4个复用的接口它们分别为图中P0系列接口,P1系列接口,P2系列,P3系列,每个系列接口都有8个接口。下面介绍下各个接口的功效:P0定义为数据地址复用线具体可以根据具体情况选择到底是用作传送数据的数据线还是用作传输地址的地址总线但是,这样使用的前提是单片机需要外接存储器或其他控制器的功用,当不接外部储存器亦可以可用于通用I / O,但作为输入或输出的内部裸露电阻应连接至外部拉电阻。P1端口仅用于I / O端口:内部有一个上拉电阻。P2的功效和之前P0接口相同也是数据地址复用线,也可以用作接I/O接口,但是不可以接那种内部有一个上拉电阻。P3有两个功能,一方面它可以作为数据地址的复用线。另一方面它也作为控制总线,这个功能是由特殊寄存器设置。当P3接口被作为控制总线的时候,P3.0的接口具体的功能如上面图3.1所示。3.2 CAN控制器的选择一般来说,市面上的CAN控制器有以下两种MCP510和SJA1000,还有一些CAN控制器是直接内嵌入单片机内的。由于之前选定了8051,它并不带有CAN控制器,所以这里要选择一个单独工作的控制器。上述两类控制器中,MCP510的推出时间要晚于SJA1000,故其在性能上要优于SJA1000。但是要比SJA1000要复杂。另外车灯控制系统的要求也不是很高,SJA1000就能够充分满足系统的需要。在本文中就选择SJA1000这款比较简单的元件来满足系统的设计。下面就要详细的介绍SJA1000控制器。当总线发送或接受报文时,CAN控制器就会将单片机发来的信号通过CAN的协议将其转变成所认可的语言”通过CAN收发器发送到总线上。所以说CAN控制器中就必须含有CAN协议与接口部分。SJA1000的硬件主要是由以下几个部分组成:接口管理逻辑(IML),发送缓冲器(TXB),接收缓冲器(RBX),验收滤波器(ACF),位流处理器(BSP),位时序逻辑(BTL),错误管理逻辑(EML)。接口管理逻辑主要负责接受或者发送来自单片机的命令以及一些地址数据,并将这些信息整理分配给发送缓冲器,接受缓冲器处理。同时接口管理逻辑也能够向CPU发送中断和控制器的状态信息。发送和接受缓冲器主要的作用就是储存要发送的和接受过来的信息,故它可以被CPU写入也能被位流处理器读出。当信息进入到信息缓冲器中后,位流处理器就开始工作,它主要负责的就是前面说的CAN协议,它通过读取信息缓冲器的信息,依据CAN协定对帧进行仲裁,位填充,错误的界定等,于此同时它还负责控制信息缓冲器的位流。控制器上除了位流处理器,验收滤波器也负责一部分CAN协议,而它主要用以比较总线上的标识符。另外在CAN协议中还制定对报文同步的协定,这就需要CAN控制器的位时序逻辑,它能实现传输报文时开头的硬同步,接受信息后的再次的软同步,能够编辑时间段来补偿交流信息时的时间的延迟。错误管理逻辑,顾名思义,就是负责信息传输的错误管制。控制器的详细过程可见下图:图3.2 SJA1000的内部结构SJA1000的引脚一共有28个引脚,8个数据地址复用线可以与之前选的8051系列单片机直接连接。具体的引脚可见下图:图3.3 SJA1000的引脚图其中有些引脚的功能与之前8051重复下面就不再介绍,下面是SJA1000的引脚功能介绍:CLKOUT:当单片机需要脉冲来工作是除了可以外接一个时钟产生器也可以连接这个CLKOUT引脚,这个引脚脉冲是由SJA1000内部自带的振荡器产生;Vss1:接地;MODE:该引脚是控制器工作模式的选取引脚,高电平为Intel模式(能够允许对其读写操作)低就为(Motorola)模式(能够允许对其写操作);VDD3:输出驱动的电源;Vss3:输出驱动器接地;VDD2:输入比较器的电源源;Vss2::输入比较器的接地端;VDD1:逻辑电路的5V电源;3.3 CAN收发器的选择市面上现在存在的CAN收发器主要是飞利浦公司的PCA82C250系列,基于JFET结构(PCA82C250系列的升级版)TJA1040系列,IT公司的SN65HVD251系列和Freescale公司的MC33901系列。它们之间的性能比较可见下图:图3.4 CAN收发器比较图总的来说这些CAN的收发器都能满足本文的系统的需求,但是后面几种CAN收发器都是近几年才新起的,结构上都比较复杂。另外PCA82C250系列与SJA1000能很好的兼容,所以本全文选择PCA82C251 CAN控制器。PCA82C251是在PCA82C250的基础上的改进版,它增加了管脚的、耐压能力与热关断能力。它的内部硬件结构和引脚如下面两张图:图3.5 PCA82C251内部结构图 图3.6 PCA82C251引脚图PCA82C251主要是通过发送数据是通过串行输入线TXD端口接收控制器发来的串行信息,将串行数据发送到达驱动器上,再由驱动器和两个三极管实现差动的发送高低电平。 CANH与CANL就是负责高低电平的输入和输出,其两个端口就是接到总线上的。在接收总线来的消息时,高低电平主要经过接收器译码成串行数据,再通过输出端口RXD输出。引脚RS主要是控制收发器的工作方式,不同的电流下有不同的工作方式。当RS电流为VCC接口上的0.75倍时,收发器处于待机状态。当电流为10微安到200微安时,处于斜率控制状态。而当RS端电流大于0.3倍的VCC时,收发器处于高速状态。而其余的引脚均与上文的一样的功能。3.4 系统结构设计本文是基于CAN总线的车灯控制系统设计的研究,系统中除了上文所提的单片机,CAN控制器,CAN收发器以外还必须具有与车灯控制的开关,CAN总线的线束,控制车灯开关的继电器。现代汽车车灯种类越来越多,本文选取了一些最为主要的车灯作为系统的控制对象。一般来说最主要的车灯包括前端的车大灯,后端的制动灯、倒车灯,前后都有的雾灯、转向灯和小灯。本文选用CAN网络目的就是为减少线束,所以结合汽车车灯分布结构,将前端的车灯合并到一个前节点来控制,后端也同样如此。另外系统还需要一个控制前后节点的中央节点,本文将中央节点放在方向盘处,采集所涉及开关的信号,再来控制前后节点的工作。最后通过两条简单的双绞线将各个节点连接起来,这样就大大减少了系统中的线束,达到了本文的目的。前节点单片机中央节点单片机车灯开关后节点单片机前端车灯SJA10000SJA10000PCA82C251PCA82C251PCA82C251 SJA10000后端车灯图3.7 系统结构框图3.5 中央节点电路设计这里说的节点电路图是包括了CAN连接电路图和外围电路图。由于CAN节点的电路图三个节点是一样的,这里统一先说明CAN连接电路图。具体内容可见图3.8:图3.8 CAN的连接图CAN连接电路就是根据单片机,CAN控制器以及使用方法将它们正确的连接起来。之前也介绍过各个元件引脚的功能,这里就直接讲解电路图。P0.0到P0.7的功能为地址与数据复用线,故将其与AD0到AD7相连。本文中SJA1000的CS引脚在本文中与P2.0相连,在P2.0为0时,单片机可以控制SJA1000即对其进行读写。此时单片机能够访问的SJA1000的地址为0x0000H0x00FF。SJA1000内部自带时钟,只需要在XTAL1与XTAL2之间相接一个谐振器和电容就能产生时钟信号。本文给SJA1000选用的是12M的谐振器主要是因为51单片机是12分频的,这样选可以方便同步工作。本设计中8051要对SJA1000进行读写操作,所以SJA1000的MODE端口接在了5v的高电平上,让其工作在Intel的模式下(能够允许对其读写操作)。SJA1000也需要复位电路原理与单片的一样,在下面的最小电路里有介绍这里就不在说明。本文在CAN收发器的RS接口上接了一个电阻47k电阻后再与电源相连,此时该端口的电流大小为106微安,收发器工作在斜率模式(非屏蔽的传输线最好的选择),电阻值是根据前面PCA82C251的工作手册里选出,即电流为10微安到200微安时处于斜率控制状态。另外收发器也不是直接将CANH、CANL直接接入CAN总线中,需要在两者之间串联5欧姆电阻,保护收发器受到过流的冲击的。这里选的电阻很小,主要是电路里的电流不大,再加上电阻是保护过流冲击的所以不必选用太大。在总线的两个终端还加了120欧姆的电阻,这主要是消除在通信电缆中的信号反射,电阻值大小是依据总线标准选定的(总线长度小于1km两端接120欧姆电阻)。其余引脚均可对应着其功能或者相应的字母相互连接即可,如8051的INT0接入SJA1000的INT端,SJA1000的TX0接CAN收发器的TXD引脚等,这里不再一一说明。另外电路中还有一些电容,主要是硬件的抗干扰的技术,这会在后面第五章里面抗干扰技术里介绍。中央节点的功用就是将开关节点信号发送到其他车灯的节点上,故中央节点的电路图不仅有CAN连接图还有一个开关的外围电路,具体结构如图3.9图3.9 中央节点开关电路图系统中应该有有8个车灯的开关,它们分别是控制前端车灯的近光灯开关J2,远光灯开关J3,左转向灯开关J4,右转向灯开关J5,,后端的刹车灯开关J6,倒车灯的开关J7,雾灯的开关J8和小灯的开关J9。在每个开关与电阻之间接一个上拉电阻,以控制输入的电流来保护单片机当其中一个开关闭合时,电路导通,所连接的端口被置到高电位,即向引脚输入“1”。根据程序里对端口的定义,8051会根据变化的端口信息,通过数地复用线控制SJA1000发送制定好的报文,最后由PCA82C251将报文转换成物理的信号发送到总线上。这就是中央节点的工作原理。3.6 前后节点的电路设计车灯控制系统的前后节点设计与中央控制节点CAN连接电路相同,不同是在外围电路上面。前后节点都是对中央节点发出的报文做出反应的,所以单片机不再是与车灯的开关相连接,而是控制的车灯驱动电路相连接。但是车灯的驱动电路是不能直接连接到单片机上,本文是选用三极管9014来作为开关连接单片机和驱动电路。前后节点的电路图一样,这里我们就列举前节点的电路图:图3.10 前节点原理图在图中三极管为9014,其为NPN型三极管,集电极与基级的击穿电压为5v,中间加入了4.7k的电阻,是为了在引脚为低电平时三级管基级的电流小于0.106mA,以防止三极管将电流放大到继电器工作电流。在前端节点正确接受报文后根据报文的内容来控制电路,就比方受到前端远光灯开的信号后,PAC82C250将物理信号传给SJA1000,SJA1000相对与8051来说就是一个外部的储存器,MCU可以直接对它执行读写功能。所以在SJA1000受到报文后,单片机根据报文内容将P1.1端口置为高电压,此时三极管9014基级与集电极在5v的电压下发射机与集电极导通,驱动电路开始工作。这就是前后节点的工作原理。3.7 车灯的驱动电路在之前的系统框架图中我们也看到,本文是采用继电器来控制车灯的开关的,车灯是与电源继电器的开关串联在一起驱动电路。为了减少布线,本文直接用单片机对继电器进行控制,但是继电器的工作电流比较大,单片机输出的微弱的信号电流不足以带动继电器工作,所以我们用一个三级管来实现这一矛盾。继电器不需要直接接在单片机的引脚上,而是接在工作的12V电源上,再连接到三极管的发射级上,三极管的基级连接单片机的P1引脚,集电极接到地线,此时的三极管就是控制继电器接地的开关。当P1端口为高电平时,三级管导通,继电器顺利接地,继电器工作旁边的开关也闭合驱动电路导通,车灯就正常工作了,这就是这个驱动电路的原理。在继电器在不导通的情况下,线圈部分会产生很大的高压。为了防止高压将三极管击穿,在线圈并连一个反向的二极管一稳定电路。由于近远光灯,刹车灯的驱动电路图一样这里就选用两个比较典型的远光灯和转向灯连个来展示。本文在转向灯的电路图中直接选用带闪烁功能的车灯,外加一个1HZ的蜂鸣器详情可见下面两张图。图3.11远光灯驱动电路图图3.12左转向灯驱动电路图3.8 系统最小电路设计一个系统的最小电路是指单片机要正常工作的电路。它必须包含为单片机提供电源的电源电路。单片机工作时时按照节拍工作的,故含有为其提供时钟信号的时钟电路。单片机每次工作时都要重新初始化,复位电路必不可少。以上三个电路是单片机最小系统所必须的电路。在时钟电路里本文选用了个12MHZ的晶体谐振器来工作,因为常见的51单片机都是12分频,选用12MHZ的 谐振器能够方便单片机计算指令时间。本文在这里是通过开关来实现单片机的复位,因为在单片机工作过程中不需要复位,所以开始工作之前对复位。这里电容和电阻值是根据复位时间来选定,本系统的复位时间为t=RC=10K*0.1uF=1ms,满足了CPU两个工作周期的时间。这就是系统的最小电路。本文所设计的的系统最小电路如图3.10:图3.13 系统最小系统电路图3.9 电源电路设计此外单片机机的工作的最大电压是5v左右,而汽车上多数是采用蓄电池为其电路供电。蓄电池的电压一般是9v到15v,不能够直接做为单片机的电源,需要设计一个电源模块对电平进行转换。具体的电源模块电路图如下图:图3.14 电源电路模块因为需要将蓄电池12v电压转换为稳定输出的稳定电压,所以我们选择了一款比较常用的7805的三端稳压器。7805的最大工作电压为36v,输出电压为4.8v到5.2v的正电压,这与单片机所需要的+5v的工作电压相符合。电路中的的去耦电容主要是去除可能的振动和噪声,电路中的电容则起到滤波的作用,这些会在第五章里有具体介绍。在电路的输出端旁路还反接了一个二极管,对电源电路起到防止短路,保护电源电路的作用。另外,在电路中还加了一个发光二极管来表示电源是否正常工作。第四章 系统的软件设计在系统的硬件设计好之后,还需要对系统加入“思维”整个系统才能正常的工作。这里所说的“思维”就是设计人员所编写的程序算法。一般来说设计人员编写的程序通常都是以简便,通用,方便更改为目的。这样不仅降低了系统的设计的强度,也方便以后工作人员对系统的软件的更改或扩展新的功能等。一个好的算法能够很大程度上减少系统的运算量,降低系统的反应速度,这一部分理所当然是系统设计中的难点。4.1系统整体软件简介本文对算法主要是基于C语言来编写,因为在只之前大学的学习中有专门开设C语言的课程,对C语言有一定的基础,学习起来也更快一些。另外,C语言也是现在软件编程中使用最为广泛的语言,用C语言编写也方便对编程今后学习更改。为了方便设计,本文将系统工作分成几个模块来编写,就比如下文的报文发送程序可以将它们单独拿出来编写成一个小模块,然后在单片机控制发送报文直接将值赋给发送小模块,并且调用发送模块将报文发送。这样大大方便了编程。根据本文工作时的要求将系统分为以下几个模块,负责扫描开关状态的中央节点主程序模块,负责发送报文和发送中断的发送子程序。前后节点的负责控制继电器的主程序,还有接受的子程序。在最后还有控制器初始化子程序。这就是本文的整个软件系统,详细的软件程序都在附录里面展现。4.2协议报文的定义 CAN总线在发送信息时,总线上的所有节点都会接受到这一报文,但是并不是每个节点都需要对报文做出反应,这时就需要CAN协议站出来起作用了。这里我们选用CAN协议2.0B。在在第二章就提到过,CAN协议结构中有个标识符,标识符里就有可以让节点正确接受的地址,同时标识符还能提供报文的优先等级,其标识符的数值越低器优先等级越高。在使用车灯时,制动车灯的优先等级是比较高的,它需要给后面车辆一个信号防止车辆追尾。故后面节点的优先级别要高于前面节点的。当系统需要信息时会向中央节点发送远程帧,这样也需要对中央节点地址定义,其优先全应该是最高的。本文中只有三个节点,所以直接给出报文的ID标志位如表4.1。表4.1 节点地址编码节点名称中央节点前节点后节点ID符0x010x110x10根据第二章里面数据帧结构,在目标节点后面是功能编码。本文的主要用到是写入功能的报文代码,对应前面的表格中可以选出代码为:0x01。在功能编码后面就是资源节点,由于这里只用到车灯没有子节点,所以可以直接定义出车灯资源节点的编码:0x01。主要占用ID7到ID0位,在这几个标识符还可以用作其他资源节点的编码如前端发动机检测节点。在报文正确的被所对应的节点接受后还需要对就是对数据域里面的子资源节点地址编码,具体的定义如表4.2。表4.2 子资源节点编码车灯车灯编码刹车灯0x01左转向灯0x02右转向灯0x03近光灯0x04远光灯0x05倒车灯0x06雾灯0x07小灯0x08在对这些报文里面的标识位做了定义后,就可以把CAN中央节点的发送的具体的报文写出。刹车灯在车灯的系统中有着比较高的优先级,所以给刹车灯的标识符给了比较小的值,这里我给出了控制刹车灯打开的具体的报文:00 0x01 0x10 0 0x01 0x01 0 0x02 0x00 0x01 0x01。最后一个0x01是功能码所用的参数1,这个报文的意思就是对刹车灯的设备引脚写1,这样就能打开车灯。由于报文内容过多,这里就不在一一列举,各个车灯的打开关闭的报文在后面附录里面程序里也有展现。4.3中央节点的程序设计要想能够较快编写系统的程序就需要了解系统的工作的步骤。下面就来介绍中央节点工作节点的工作流程。单片机和CAN控制器要想能正常的工作就需要它们在正确的工作状态下,这就需要对CAN控制器进行复位,也就是所谓的初始化。初始化不仅是是对控制节拍的时钟的复位,还包括对工作模式的复位和对验收滤波器的清零等。结合中央节点的作用:将各个开关的状态发送到总线上,故在硬件都进如入正常的工作状态后首要的就是读取各个开关的信息状态,生成报文后将数据发送到CAN控制器用于信息发送的缓冲器上准备发送。但是数据不是直接发送到发送缓冲器,必须要等到发送缓冲器空闲报文才能进如发送缓冲器中。在数据进入发送缓冲器前还需要对发送缓冲器进行正确的设置,此后开启CAN的中断源,向CPU发送中断请求。在CPU中断操作之后,检测发送缓冲区是否空出,如果空出就将数据写入进去并发送。为了能够方便自己的编写把上述的步骤画成流程图如下图:开始延时初始化SJA1000初始化单片机读取开关状态开关状态是否改变打开CAN发送中断源发送区是否空闲数据写入启动发送命令NYNN Y 结束图4.1 中央节点发送流程图4.4 前后节点的程序设计设置p1接口前后节点的功用主要是接受报文,并根据报文内容做出相应的反应。因为后节点的功能与前节点一样,这里我就不在重复编写,只介绍前节点的工作流程。与中央节点一样,当系统要工作时都要对单片机和CAN控制器进行初始化复位。但是在初始化后,还需要对单片机的i/o端口进行设置,因为在初始化后i/o引脚会默认为高电平。本设计中是用一个三极管作为驱动电路的开关,基极在高电平下,发射和集电极相连,本文这里通过程序将P1设置为低电平。再然后,就需要向CPU发送中断请求这与之前面的一样,访问接收缓冲器是否空闲,空闲就启动接受的命令。总线上的报文会被分配到缓存器中,单片机和CAN控制器会读取报文并释放缓冲器。最后单片机再根据报文做出相应的控制下图为前节点的程序流程图:设置p1接口将数据写入接受缓冲器打开CAN接受中断源读取接受缓冲器信息

温馨提示

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

评论

0/150

提交评论