1 引言
汽车工作过程中,对各系统的运行参数的实时测量可方便地实现对汽车运行状态的分析与故障诊断。用传统的有线方式连接汽车诊断接口或检测传感器输出值的方法存在着布线和设备使用等方面的不方便。如果能把汽车各系统中的参数值无线、快速、准确地测量出来,利用功能强大的微机系统进行分析和处理将大大方便汽车运行状态的监控。本文提出并实现了一种利用单片机组成CAN系统,利用蓝牙无线传输技术对汽车运行数据进行采集与处理的方法。
随着汽车电子的发展,汽车内电子产品越来越多,汽车发动机、底盘和车身等电控系统中的电控单元数量不断增加,同时它们之间的通信也越来越重要。在汽车内利用网络技术,可大大提高系统之间信息传递的可靠性,同时可大大减少汽车线束的数量,降低汽车电气系统的成本。近年来,CAN系统在汽车内的应用越来越广泛。CAN(ControllerAreaNetwork)是控制局域网的简称,最早由德国BOSCH公司推出,用于汽车内部测量与执行部件的数据通信。由于其高性能、高可靠性、实时性好和独特的设计,已广泛的应用于控制系统的各检测和执行机构之间的数据通信。CAN总线符合ISO11898标准,最大传输速率可达1Mbps,最大传输距离为10km,传输介质可为双绞线。它具有如下的一些技术特性:
1)多主方式工作,非破坏性的基于优先权的总线仲裁技术;
2)采用短帧结构,受干扰概率低,每帧信息都有CRC检验及其他检错措施;
3)对严重错误具有自动关闭总线的功能,使总线的其他操作不受影响。
在汽车运行过程中,车载射频装置如汽车立体声系统、GPS导航设备、卫星数字音频无线电业务(SDARS)装置、GSM无线电收发器以及其它电器设备均可能造成干扰或受到干扰,这些射频干扰信号会对汽车无线系统的数据流造成不良影响。如果应用传统的无线数据传输技术,传输的数据的速率和准确率都不能很高,从而不能实现快速、准确地进行数据的传输,而把蓝牙无线传输技术用在汽车上可以很好地解决这个问题。
本文所用蓝牙模块采用英国CSR公司的BC417芯片,并与SST公司的8M的FLASH芯片39VF800A构成了模块。
图1 蓝牙模块原理图
此模块的主要特点如下:
1)采用CSR主流蓝牙芯片,符合蓝牙V210标准。
2)串口模块上底板带有RS232接口和TTL接口,任选一种接口使用,使用313~5V电源。串口对用户而言是透明的。
3)蓝牙芯片采用向前纠错编码,通信效率高,自动跳频,抗干扰能力强。
4)波特率为1200,2400,4800,9600,19200,38400,57600,115200,230400,460800,921600,1382400,可在程序中根据实际需要设置。
5)休眠电流:小于1MA,工作电流:40MA。
2 系统硬件结构原理图
本文利用MICROCHIP公司的内嵌CAN控制器的18F4580芯片与CAN收发器芯片MCP2515构成CAN网络系统,并用18F4580芯片自带的10位AD传感器实现了对汽车发动机节气门位置信号的测量,同时利用智能数字传感器DS18B20对发动机的水温信号进行测量。利用蓝牙模块把测量的信号无线传给上位机,利用VC++编写数据接收与处理的程序实现数据的实时显示与存储,并可显示数据值随时间的变化关系曲线图,测量结果直观。系统的硬件原理图如图2所示。
图2 测量系统原理图
3 发动机节气门位置信号与水温信号的测量
3.1 节气门信号信号的测量
这里测量的汽车发动机上节气门位置传感器为一可调电阻型,节气门位置输出信号为0~5V的电压信号,根据节气门的实际开度与输出电压的关系,对测量的电压信号进行标定,根据实测的电压信号即可换算成节气门的开度。所以这里用PIC18F4580单片机内嵌的10位AD转换电路完成对节气门位置传感器输出电压的测量,为提高测量精度,对单片机AD的5V基准电压进行了与系统电源隔离稳压处理。
本系统利用Microchip公司的MPLAB开发环境嵌入PICC18C程序编译器,用C程序编写了数据采集与CAN数据的收发程序,其中AD转换子程序用汇编语言编写,程序兼顾了C程序的模块化和可维护性好的优点,同时具有了汇编语言高效率的优点。
信号通过CAN控制器用扩展帧格式发送到CAN网络上。其中数据采集与CAN数据的发送子程序如下:
InitSPI();//SPI接口初始化
Init_MCP2515();//MCP2515初始化
……
TRISA=0B00000001;//AN0>>>>DCinputDC通道上输入,打开RA0
ADCON0=0B00000001;//AN0通道,允许ADC工作,
ADCON1=0B00001110;//除RA0为模拟输入口外,其他RA口跟RE口均为普通数字口
ADCON2=0B10100001;//转换结果右对齐,8TAD,1/8FOSC。
#asm
ADCON0EQU0FC2H
GOEQU001H
bsfADCON0,GO//开始转换
ADWAIT:
btfscADCON0,GO
gotoADWAIT//等待转换完成
#endasm
write_MCP2515(TXB0CTRL,0x03);//设置为发送最高优先级
write_MCP2515(TXB0SIDH,0xFF);//EID28--21
write_MCP2515(TXB0SIDL,0xEB);//EID20--EID18,扩展帧使能,EID17--EID16
write_MCP2515(TXB0EID8,0xFF);//EID15--EID8
write_MCP2515(TXB0EID0,0xFF);//EID7--EID0
write_MCP2515(TXB0DLC,0x02);//发送数据长度为8字节
write_MCP2515(TXB0D0,ADRESH);//发送的数据
write_MCP2515(TXB0D1,ADRESL);
……
send_TXB0();//请求发送
while((read_MCP2515(TXB0CTRL)&0x08)==0x08);//等待
发送完毕
……
3.2 水温信号的测量
本文中的水温信号利用DALLAS公司的DS18B20智能数字传感器测量。DS1820是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。测量温度范围为-55℃~+125℃,在-10~+85℃范围内,精度为±015℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。DS1820采集温度信号完成后,通过PIC18F4580芯片接收数据,并通过内嵌CAN控制器把数据以8位二制数的格式用标准帧格式发送到CAN总线上。
4 CAN网络的传输系统
采集到的信号通过PIC18F4580内嵌的CAN控制器发出。这里选用MICROCHIP公司出品的MCP2551CAN收发器完成网络信号的传递,在CAN网络终端加入阻值为120欧的终端电阻。CAN网络接收端的收发器接收到的信号后传递给另一片PIC18F4580芯片,通过基内部的CAN控制器取出网络信号,如果接收到扩展帧,则接收到的数据为节气门的位置信号;接收到标准帧,则接收到的数据为水温信号。对信号处理后以数据包的方式通过基自身的UART口发给MAX232芯片,把TTL信号电平转换成232电平。节气门部分的CAN通讯板硬件原理图如图3所示。
图3 节气门位置信号测量CAN通信板原理图
5 蓝牙无线传输系统
MAX232芯片把转换后的信号传给由CSR公司的BC417构成的蓝牙主(发射)模块。BC417蓝牙模块可以设定数据传输速率,在保证发射信号的质量的情况下,可以尽量采用高速率的传输。本文中的传输速率为38400bps。另一块BC417蓝牙芯片构成的从(接收)模块在接收到数据信号后,通过MAX232芯片转换电平传给上位机微机的串口。
6 上位机信号接收处理系统
上位机微机的串口接到信号后,用VC++开发工具编写了面向对象的程序对数据包进行处理。为了直观的显示数据的数值和其随时间的变化关系,本程序可显示实际节气门位置信号与水温的数值,另可显示节气门位置信号的变化曲线。上位机程序的界面如图4所示。
本文利用的是SerialPort类来实现此功能,这种方法对使用者来说只要关心设定相关的通讯参数,而不用关心封装的实现方法,程序的模块化和维护性好[5]。在使用中采用串口事件响应方式工作。为了更直观的显示出数据随时间变化的曲线,编写了一个利用封装的BUTTON类控件实现的显示界面。此控件可方便地实现对数据的坐标、背景、数据的单位与数据的更新速度等属性进行设定,显示效果良好。
图4 上位机界面图
7 结论
该系统运行良好,能方便、快速、可靠地实现汽车运行参数的测量,为实现汽车网络参数的无线实时测量与汽车故障诊断提供了一个较好的平台。程序运行结果显示此蓝牙无线传输CAN测量系统有如下优点:
1)在测量汽车运行参数时,可利用多个单片机构成CAN测量网络,充分利用了CAN网络的优点:信号抗干扰能力强、数据速率快、数据可靠性高与系统连接线少等。
2)无线数据传输系统充分体现了蓝牙系统的高速和蓝牙协议的高可靠性,理论上数据的成功率为100%,实现了高速和可靠的数据传递。
3)在用上位机测量汽车运行参数时,在汽车与电脑之间无需任何线缆的连接,方便测量系统的组建,降低了系统组建的时间和成本。
4)可充分利用上位机计算与处理的优势,相比于传统的汽车检测仪器,可实现功能更强大的数据处理能力。