嵌入式开发 > 详情

基于蓝牙的汽车CAN网络信号无线测量系统

发布时间:2020-07-02 发布时间:
|

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字节



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Xilinx Zynq UltraScale+双核与四核多处理器SoC贸泽开售