基于CAN总线的汽车开关电器盒设计
引 言
随着现代汽车工业技术的不断发展进步,车上安装的电子设备在不断增加,从而使汽车综合控制系统中,有大量控制信号需要进行实时交换.CAN 总线作为一种可靠的汽车计算机网络总线,已经被广泛地推广到汽车控制系统的各个应用领域.将CAN 总线技术应用到汽车开关电器盒中,可使得各汽车计算机控制单元能够通过CAN 总线得到开关电器盒中的工作数据,又能对开关电器盒的各个继电器进行精准的控制,从而达到减少汽车线束.提高通信可靠性.降低系统成本.避免系统功能重复.提高系统工作效率的目的.
1 汽车开关电器盒设计方案
本开关电器盒采用的是基于Microchip 公司生产的PIC18F45K80 芯片作为主芯片的设计方案.该芯片不仅具有一般单片机所具有的全部功能,还集成有硬件CAN 协议模块,芯片内部即可完成CAN 总线通信.采用本方案具有以下几点优势:其一是硬件集成了CAN 协议模块,无需外接芯片,从而降低了产品制造成本;二是无需编写SPI 接口驱动,缩短了开发周期,提高了产品竞争力;三是本系统使用主流PIC 芯片,具有强大的可扩展性,程序可移植性高.
PIC18F45K80 为主控制芯片,负责系统的综合事务处理.
系统功能主要分为四大部分,分别是模拟信号采样.数字信号采集.控制信号输出和CAN 模块通信.模拟信号的采集包括电源电压采样.温度传感器和电流传感器采样.数字信号采集各个熔断保险丝的通断.控制信号的输出是对整车电源继电器K1.启动电源继电器K2.启动电机继电器K3 的控制.CAN模块通信是单片机通过CAN 接口芯片与车上的其他设备进行通信,也是本系统研究的重点.图1 所示是本系统的整体框图.
2 汽车开关电器盒的硬件设计
2.1 系统主处理器PIC18F45K880
PIC18F45K80 系列是Microchip 的PIC18F8680.PIC18F4680 和PIC18F4580 增强型CAN 系列产品的低成本扩展产品.该单片机工作电压范围宽,为1.8~5.5 V,且片上内置3.3 V 稳压器, 可作为电源基准电压.工作温度范围大:-40~+125 ℃,适合汽车工作环境.工作速度最高达64 MHz,具有最大64 KB 的片内闪存程序存储器,1 024 字节的数据EEPROM,3.6 KB 的通用寄存器(SRAM).设有2 个内部振荡器:INTRC (31 kHz) 和INTOSC(16 MHz).带扩展的看门狗定时器(WatchdogTimer, WDT),可编程周期为4 ms~131 s.
PIC18F45K80 包含一个增强型控制器局域网(EnhancedController Area Network ,ECAN) 模块. ECAN 总线模块符合ISO 11898-1 规范.具有3 种工作模式:传统模式( 与现有PIC18CXX8/FXX8 CAN 模块完全向下兼容).增强模式.FIFO 模式或可编程发送/ 接收缓冲区.报文比特率最高可达1 Mb/s,具有6 个缓冲区可用作接收和发送报文缓冲区,3 个带有优先级的发送报文缓冲区,2 个接收报文缓冲区和1 个接收报文组合缓冲区.
2.2 CAN 接口电路模块设计与实现
本开关电器盒采用的是恩智浦半导体公司CAN 总线收发器芯片TJA1050 作为CAN 协议控制器和物理总线之间的接口.
TJA1050 可以为总线提供不同的发送性能,为CAN 控制器提供不同的接收性能.TJA1050 完全符合ISO11898 标准,传送速度高( 最高可达1M 波特).具有良好的电磁兼容性和低电磁辐射(EME) 性能,并带有宽输入范围的差动接收器,可抗电磁干扰(EMI).
图2 所示是TJA1050 的接口应用电路.电路中的一个120 俚牡缱鑂9,对于匹配总线阻抗起着相当重要的作用,否则,数据通信的抗干扰性和可靠性将大大降低,甚至无法通信.
2.3 信号采集及输出控制电路设计
汽车的各种电气工作状态检测是开关电器盒的重要工作职能之一,主要是由保险丝状态采集电路.电源电压和温度采集电路.启动电动机电流检测电路组成.
汽车保险丝的工作状态检测.为了可靠.准确地检测各保险丝的通断情况,本系统采用了光耦隔离的方式检测保险丝的通断.该电器盒共有充电保险丝.暖风1~2 保险丝.开关电源保险丝.常火电源保险丝.ON 档1~10 号保险丝.常火1~8 号保险丝等共24 路保险丝.保险丝检测采用了光耦隔离的检测方式,避免车上其他用电设备对电器盒系统的干扰.
开关电器盒需对电源电压进行实时监测.通过电压监测来实现高压.低压和发电机充电异常等三种异常报警:电压过高报警是当电压超过32 V 时,通过CAN 总线向仪表发出系统电压过高报警;低电压报警则是在车辆未启动时,当系统电压低于设定值23.5 V 时,要发出低电压报警,同时超过4 min切断电源总开关;发电机充电异常报警是指车辆启动后,如充电正常,则当前电源电压应大于26 V,如充电异常( 电源电压超过32 V 或低于26 V),则通过CAN 总线向仪表发出报警.
由于电压报警仅需检测3 个电压值,为降低系统成本,本设计采用电阻分压的方式来进行检测.
本开关电器盒需检测电器盒内的温度,并通过CAN 总线将温度数据发给仪表.系统采用的是3899 200K 的NTC( 负温度系数热敏电阻) 来检测温度,通过与一标准电阻分压后采样AD 值,最后根据阻值- 温度表格查得实际测量温度值.
另外就是启动电动机电流检测.汽车启动系统将蓄电池电能转化为机械能,由启动机带动发动机旋转并启动发动机.汽车在启动时,启动电动机的工作电流非常大,一般可达300~600 A.为防止启动电机的过电流对汽车电瓶及其他电路造成损坏,对启动电动机加入了电流检测电路.系统中选用了BYD BLY2-IOV2M电流传感器,在开关电器盒中采用金属铜片穿过电流传感器腔体.该传感器采用霍尔效应的测量原理,完全隔离式的测量方法,具有低功耗.宽测量范围等特点.
[#page#]
3 汽车开关电器盒的软件设计与实现
本开关盒电器软件主要由两大部分组成,包括用户功能定义设计和CAN 驱动程序设计,其程序整体架构图如图3 所示.
图3 中的用户功能定义程序主要包括过压监测.欠压监测.保险丝断路监测.过流监测.蓄电池充电监测.模块自检等.
SAE_J1939 协议驱动程序主要作用是对CAN 模块中的接收缓存的CAN 报文加以解析以及对发送缓存中的CAN 报文加以翻译.
SAE_J1939 协议的数据结构与CAN 报文结构有很大不同之处.它将CAN 报文的11 位标准帧以及29 位扩展 帧重新定义,对每一位都赋予特殊意义,其结构定义如下:
其中,PDUFormat 为PDU 格式,PDUSpecific 为特定域,SourceAddress 为设备地址,DataLength 为数据长度,Priority 为优先级, 而Data[J1939_DATA_LENGTH] 则为SAE_J1939 协议的数据域.
根据SAE_J1939 协议在整个系统所处的位置和作用,本设计给出如图4 所示的基于SAE_J1939 协议对接收和发送报文的翻译和解析流程图.
在CAN 模块工作之前,必须先对其进行必要的初始化.
CAN 驱动程序在入口处设计为进入CAN 模块的配置模式,以便在CAN 模块工作前对波特率.屏蔽器.过滤器等进行配置.
4 结 语
基于CAN 总线的汽车开关电器盒是一种网络化的汽车电器控制系统,对汽车电器设备网络化发展有着重要的意义.
它能最大限度地减少汽车线束,将开关电器盒的工作数据实时传送给各个仪表,具有较高的数据传输可靠性和安装便捷性,扩展了汽车功能.目前,随着CAN 总线技术的快速普及,支持CAN 总线标准的汽车厂家越来越多,汽车电子产品的网络化发展趋势是必然的.车辆装配基于CAN 总线的汽车开关电器盒有助于提高汽车产品竞争力,而增加的成本并不会太多,所以是未来汽车开关电器盒的发展方向.
暂无评论