电气与电子系统是车辆的重要组成部分,其工作状态直接影响车辆的性能。按照传统设计思想设计车辆电气系统时,往往采取堆积各种子系统的途径来提高系统的性能,因此车辆内部各子系统之间单纯面向任务而不考虑与全局的关系。随着子系统及装置数量不断增加,传统设计方法遇到了一系列问题:线路增多、布线复杂、电磁干扰增加、系统可靠性下降、检查维修困难等。为了解决上述问题,现代车辆采用了综合电子系统。总线是综合电子系统的基础,通过总线节点,综合电子系统可采集、使用、分配和共享车内所有电子系统的各种信息,达到弱化矛盾、增强整体功能的目的。CAN总线由于具有性价比高、可靠性高、实时性好、灵活性强等特点,得到广泛应用。本文针对CAN总线,提出了一种基于C8051F040的通用总线智能节点的设计方法。
1 、总体设计
本文采用C8051F040单片机作为智能节点的主控芯片来设计CAN总线通用智能节点。智能节点通过现场信号调整、高速数据采集获取该节点下设备的参数,并通过总线收发器将数据发送到CAN总线,同时根据参数及总线上的其他信息和命令对设备进行控制。通过CAN总线智能节点,可将车辆电气系统各子系统及设备紧密联系在一起,构成一个实时控制网络,如图1所示。
考虑到智能节点的通用性,经过对车辆各子系统和设备参数进行分析,确定了智能节点主要指标。
①信号输入:8路模拟信号输入,16路数字信号输入,2路脉冲量输入;
②控制信号输出:2路模拟控制信号输出,8路数字信号输出;
③CAN总线接口:1个CAN总线接口(支持CAN2.0A和CAN2.0B)。
2、 硬件设计
CAN总线节点有两种设计方法,一种采用通用微控制器结合独立CAN控制器加上收发器,另一种采用集成CAN控制器的微控制器结合CAN收发器。本文采用第二种设计方法,选用1片C8051F040单片机作为智能节点的主控芯片。主控芯片内部集成CAN控制器,兼容CAN2.0A和CAN2.0B,配合总线收发器后可完成CAN通信。此外,主控芯片还使用内部集成的A/D转换器完成对模拟信号的采集,同时向被控设备输出模拟和数字控制信号。主控芯片各种资源的相关情况见参考文献。
智能节点的硬件系统包括:模拟信号采集电路、开关信号采集电路、开关信号输出、LCD电路、CAN总线电路等。硬件原理框图如图2所示。
2.1 模拟信号采集电路
模拟信号采集电路用于采集受控设备输出的模拟信号。该电路由模拟信号调整电路、SPI总线A/D转换器MCP3208、高速光电耦合器2801以及外围电路组成,其电路原理图如图3所示。
模拟信号调整电路可用于测量模拟电压信号、模拟电流信号以及电阻信号。以连接到MCP3208第1通道的电路为例:当R2断开,R4和R1连接适当阻值的电阻时,该电路可用于测量模拟电压信号;当R2断开,R4短路,R1连接采样电阻时,该电路可用于测量模拟电流信号;当R1断开,R4短路,R2连接适当阻值的电阻时,该电路可用于测量电阻信号。R5与二极管D1和D2组成保护电路。R6、R9及C4组成分压和滤波电路。
为了保证系统稳定、可靠工作,控制模块的数字地与模拟地严格分开。因此,模块没有使用C8051F040内部集成的A/D转换器,而是使用外部SPI总线A/D转换器MCP3208。MCP3208是12位逐次逼近型模/数转换器,具有片上采样和保持电路。该A/D转换器使用与SPI协议兼容的简单串行端口与主控芯片相连,转换速率可高达100 ksps。主控芯片C8051F040是8位单片机,其SPI端口要求以8位数据为一组来收发数据。同时,为了与MCP3208通信,将主控芯片SPI口设置为主方式,时钟下降沿输出数据,时钟上升沿锁存数据。
设计中,8路模拟信号经调整后与MCP3208的8个模拟输入端相连。A/D转换器的电源与参考电压输入端通过电感L1与5 V电源相连,模拟地通过电感L2与5 V电源地相连,以减小电源扰动对A/D转换的影响。同时,MCP3208的SPI接口与单片机之间也使用光电耦合器隔离,从而保证数字地与模拟地严格分开。图中只给出了MOSI与MISO光耦隔离的原理图,SCLK与CS隔离的原理相同。
2.2 开关信号采集电路
开关信号采集电路用于采集受控设备输出的开关信号。该电路由光电耦合器2801及其外围电路组成,其电路原理图如图4所示。当外部开关信号的高电平信号接于开关信号采集电路输入端时,光耦内部发光二极管工作,光敏三极管导通,光电耦合器输出低电平信号。主控芯片通过I/0口扫描光电耦合器输出端即可采集开关信号。R1、R2、C1组成输入分压滤波电路。
2.3 CAN总线接口电路
由于C805lF040内部集成了CAN总线控制器,外电路中只要设置总线收发器即可完成通信。CAN总线接口电路用于完成CAN总线通信,由总线收发器VP251、光电耦合器0211及外围电路组成,其电路原理图如图5所示。
CAN总线接口电路采用VP251作为总线收发器,该收发器主要用于单端信号与差动信号之间的相互转换。此外,单片机最小控制电路与总线收发器之间采用光电耦合器隔离,以提高系统工作的可靠性。光电耦合器采用2片高速光耦O211,1片用于接收,1片用于发送。
2.4 开关信号输出电路
开关信号输出电路用于向外部被控对象输出驱动信号。该电路由光电耦合器2801组成,其电路原理图如图6所示。当开关信号输出电路接收到低电平信号时,光耦内部发光二极管工作,光敏三极管导通,光电耦合器输出低电平信号。
2.5 电源电路
电源电路用于向其他功能电路供电。电源由输入滤波器CXDB2、电源模块PWB2405、三端稳压器AMS1117及外围电路组成,其电路原理图如图7所示。
为了限制传导干扰,电源模块使用电磁干扰(EMI)滤波器CXDB2来抑制电源输入中的传导噪声。输入电源经过滤波后送入2个独立的电源模块PWB2405中获得3组5 V电源。5V-2为模拟信号输入与A/D转换电路提供电源,5V-1向CAN总线收发器供电,5VG为模拟电源,地。VCC为采用5 V电压的数字电路提供电源,同时向三端稳压器模块AMSlll7提供电源。AMSlll7将VCC转换为2组3.3 V电源,3.3 V-1为C8051F040内部A/D转换器提供电源和参考电压,3.3V-2为单片机最小控制电路提供数字电源。
3 软件设计
3.1 主程序
主程序流程如图8所示。智能节点上电后,主程序首先完成系统初始化,主要内容包括:初始化I/0口、A/D转换器、SPI总线、LCD、CAN总线等,然后进入循环工作状态。程序采用扫描方式完成模拟信号采集和开关信号采集。采集得到的数据经过滤波、补偿等方式处理后,通过CAN通信子程序发送到CAN总线。此外,循环工作过程中,系统还会通过LCD子程序显示相关信息。
3.2 信号采集程序
智能节点信息采集量较大,如何实现对多种、多路信号实时采集是系统设计的关键。电气系统典型信号主要包括模拟信号、开关信号等。采集模拟信号时,利用外部12位A/D转换器,采用软件查询的方式采集模拟信号并进行数字滤波处理。由于所要采集的模拟信号较多,因此必须实现采集通道动态切换;采用定时扫描C8051F040数字I/O口的方法采集数字信号。
3.3 CAN通信程序
C8051F040内部的CAN控制器集成了用于接收及发送的所有硬件,与使用外部CAN控制器相比,可以大大减少占用CPU的时间。CAN总线接收采用中断方式完成,发送采用查询方式完成。CAN总线接收和发送的流程如图9所示。
4 结论
本文提出了一种基于C8051F040单片机的CAN总线智能节点设计方案。通过该智能节点能够实现设备的数据采集与控制,而且根据需要加入适当算法后,还可以实现智能控制和故障诊断等功能。该智能节点已应用于某型车辆的模拟教学平台中,通过由16个节点组成的CAN控制网络完成了对整个平台设备的综合控制,性能良好。