车灯控制系统对实时性要求不高,但车灯控制模块连接的传感器和执行器较多,因此LIN总线非常适用于这一系统的控制。基于LIN总线的车灯控制系统使用LIN总线实现车灯传感器和控制器之间的通信,其优点是硬件电路简单、控制层次分明、节点成本低。
车灯系统的结构及控制
目前,大多数汽车灯光的控制都由手动操作完成。可能带来的问题是,在夜晚行驶中两车相会时,灯光弱的汽车给灯光强的汽车会灯,而灯光强的汽车却不给灯光弱的汽车会灯,从而使灯光弱的汽车受对方远光照射造成眩目,容易造成交通事故;在白天行驶中,有时要过涵洞或隧道,因里面黑暗需开大灯,但当车通过后,司机有时会忘记关闭大灯行驶。
为了解决这个问题,自动灯光控制系统应运而生,如丰田皇冠的自动灯光控制系统和宝马530i的车灯自动照明装置等。整个车灯控制过程实现完全的智能控制,反应灵敏,工作可靠,有效避免了因汽车灯光依赖人工操作而造成的交通事故。
典型的汽车自动灯光系统主要由感光器(即传感器)、电子控制器(简称控制器)和选择开关三大部分组成。感光器装在仪表板顶上,光束透过挡风玻璃进入,感光器内的光敏电阻阻值随着感光强度的变化而变化。控制器装在仪表板内,通过继电器及晶体管放大电路来控制各灯光电路的工作。选择开关装在仪表板上,可以选择自动模式控制车灯,也可以选择手动模式控制车灯系统。
根据实际应用需求,制定出以下车灯控制策略:白天时,各种灯光均应熄灭;黄昏时,由于外面的光线昏暗,将尾灯和驻车灯点亮;夜晚时,由于外面的光线更弱,将远光灯点亮,并将驻车灯熄灭;两车交会车时,为了避免对方驾驶人员眩目,应使近光灯点亮,此时,尾灯仍亮,会车后,将近光灯熄灭,点亮远光灯;夜晚模式下,车辆左转,关远光灯,开近光灯和左侧灯,左转后,关近光灯和左侧灯,开远光灯,右转时,控制方法相似。
为了实现这一车灯控制策略,本设计采用如图1所示的汽车车灯控制系统网络拓扑结构。
该网络结构由1个主节点和4个从节点构成(分别为左侧前方车灯、右侧前方车灯、左侧后方车灯和右侧后方车灯)。主节点接收来自传感器和CAN总线的信号,经过一定处理后,发送不同报文帧头,以实现白天、傍晚、晚上、会车、左转和右转各个模式或组合模式下,各从节点车灯的状态控制。从节点1和从节点2包括远光灯、近光灯和测向灯,从节点3和从节点4包括尾灯和驻车灯。此外,如果对于主节点发出的报文帧,从节点没有响应,则主节点上的报错指示灯点亮,并可以显示出是哪个从节点发生了故障。
LIN总线简介
LIN总线是一种低成本的串行通信网络,用于实现汽车中的分布式电子系统控制。LIN 通信基于SCI(UART)数据格式,仅使用一根12V信号总线,通信速率最高可达20Kbs。通常一个LIN 网络上节点数目小于12个,总线长度不超过40m。LIN总线采用单主节点多从节点的通信模式,主节点有一个主发送任务和一个从通信任务。从节点只有一个从通信任务,该通信任务分为发送任务和接收任务。一个LIN网络上的通信总是由主发送任务发起的。主节点发送一个报文头,该报文头由同步间隔场、同步场和报文标志符场所组成。相应的,在接受并且滤除报文标识符后,一个从任务被激活并且开始本报文帧的应答传输。
作为一种辅助总线,在不需要CAN总线高性能的场合,使用LIN总线可以大大降低成本。
Freescale半导体公司的LIN开发平台(LIN DEMO)系统提供了完整的软件和硬件,用户可以在此平台上很快的搭建起LIN控制网络。其中,软件部分包括了标准的LIN底层驱动软件。本设计正是利用了Freescale LIN API中的标准LIN底层驱动,在MC68HC908GZ60芯片上实现了车灯控制系统的开发。
Freescale LIN API中提供了许多与LIN总线通信相关的函数,利用这些函数,可以很方便地实现LIN通信。
系统硬件设计
汽车车灯控制系统要求当用户按下操作按钮时,车灯能及时地做出相应的响应;同时,当车灯发生故障时,用户能得到相应的故障信息。该控制系统对实时性要求不是很严格,属于汽车低速通信网络。因此使用最高传输速率为20Kbs的LIN总线对车灯控制,既可以满足控制要求,又可以降低成本,是非常合适的。
MC68HC908GZ60芯片(48引脚)具有1个ESCI通道、2个定时器通道、1个CAN通道和15个AD转换通道。LIN通信仅占用了该芯片的ESCI接口用于与LIN收发器相连;一个定时器通道用于确定LIN通信中的定时;还有很多功能和通道可以用于扩展其他用途。选用LIN总线单线物理接口器件MC33399作为LIN收发器,LIN网络结构如图2所示。
MC33399收发器支持的传输速率为1~20Kbs,提供了正常和睡眠两种工作模式。INH引脚连接到电源管理芯片的INH引脚,可以控制电源电压调节器的工作模式,减小睡眠时的功耗。EN引脚由GZ60的PTE2引脚控制,当PTE2=1时,MC33399使能,进入工作模式;当PTE2=0时,MC33399禁能,进入睡眠状态,从而达到减小功耗的目的。Tx、Rx引脚分别与GZ60的PTE0、PTE1引脚相连,通过该ECU的ESCI模块来实现LIN总线的收发功能。由于不采用唤醒模式,Wake引脚通过电阻R4接地。其中,只有主节点的LIN引脚需要通过二极管和1kΩ电阻拉高,从节点所需的30kΩ上拉电阻已经集成在MC33399中,所以从节点无须外接上拉电阻,如图3所示。
由于LIN是单线传输协议,总线上传输的数据需要一个共同的基准地,所以在连接各个节点时,要保证各个节点电平的共地性,才能使总线正常可靠地通信。
车灯控制系统中的主节点同时也是CANLIN网关,负责将LIN总线数据传输到CAN总线上,GZ60的一个CAN通道用来提供与CAN总线的接口。CAN总线收发器选用Freescale公司的MC33388。该收发器支持的最高CAN速率为125Kbs,在睡眠模式下,功耗很小。CAN模块的硬件电路如图4所示。
系统的软件结构
基于LIN总线的车灯控制系统的软件结构如图5所示。上电后,各节点控制器对CONFIG、PORT和ESCI模块进行初始化操作,由于LIN总线通信定时由主节点定义,主节点控制器还需要对T1CH0模块初始化。主节点控制器监测各个按键的状态,当有按键被按下后,主节点判断该按键对应的车灯控制模式,然后向LIN总线发送带相应标识符场的报文头(ID∈[10 11 12 13),启动一次主节点向从节点发送数据的LIN总线通信。等待LIN总线处理该报文帧之后,主节点启动一次从节点向主节点发送数据的LIN总线通信(ID∈[14 15 16 17),该从节点即为前一次LIN总线通信中,接收到主节点命令的从节点。如果主节点接收到的从节点数据与理论上应该收到的数据不符,主节点上的报错指示灯点亮,并可以显示发生故障的从节点号码。造成从节点故障的原因可能是从节点脱离LIN总线,或者从节点上的执行器发生故障。
应用结果
应用结果表明:LIN总线很好地满足了汽车车灯控制系统对数据信息传输的要求,而且与其他实现方法相比,具有结构简单、配置灵活、降低成本的优点,完全达到了期望的性能和价格要求。