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