基于STM32和LabVIEW的汽车发动机故障诊断仪设计
摘要
设计人员设计了一款基于STM32单片机与LabVIEW技术相结合的汽车发动机故障诊断仪。该系统采用涡流传感器采集发动机振动信号,并将其发送至由LabVIEW编写的上位机程序进行高阶谱分析,从而实时获取发动机工作状态。实验结果表明,所设计的诊断仪高效且高可靠,能够满足发动机状态的实时诊断要求。
1. 引言
作为汽车的动力源,发动机的工作状态直接影响整车运行[1‐2]。此外,发动机在汽车运行过程中始终处于振动状态,当发动机发生故障时,其振动信号中包含着发动机的故障信息。利用发动机的振动信号来分析其工作状态,可有效解决不拆解发动机情况下检测其工作状态的问题[3‐5]。基于高阶谱分析的发动机故障诊断仪以STM32F103单片机作为下位机,负责信号采集和数据传输,可通过异步串行通信将下位机采集的振动信号传输至PC端,并在PC端对采集的振动信息进行存储与分析。传统的振动信号分析方法是采用功率谱进行分析,但功率谱缺乏频率成分间的相位信息,难以满足复杂振动信号的处理需求。因此,采用现代信号谱分析方法对汽车发动机振动信号进行分析已成为当前研究热点[7]。目前,现代信号用于振动信号分析的方法较多,其中高阶谱在分析振动信号时不仅能分析振动信号频率之间的相位信息,还能有效抑制振动信号中的高斯背景噪声(有色或白色),在振动信号分析方面具有明显优势。因此,设计一种采用高阶谱分析的汽车发动机故障诊断系统,可实现汽车行驶过程中对发动机工作状态的实时检测。
2. 总体系统设计
基于高阶谱的汽车发动机故障诊断仪整体设计分为上位机设计和下位机设计,如图1所示。上位机采用LabVIEW设计串口设置窗口、数据存储窗口和高阶谱分析显示窗口。下位机主要完成数据采集与传输,主要包括涡流传感器、信号调理模块、按钮设置模块、电源管理模块、报警指示模块以及异步串行通信接口模块。涡流位移传感器可将发动机的振动信号转换为电流信号。信号调理模块实现电流信号到电压信号的转换以及电压信号到数字信号的转换。为了增强系统的抗干扰能力,在信号调理模块中还设计了用于电气隔离的隔离放大电路和用于滤波的滤波电路。下位机中的按钮设置模块用于系统的启动与停止以及部分系统参数的设置。报警指示模块用于系统启停指示以及系统故障时的蜂鸣器报警,电源管理模块为整个下位机提供稳定可靠的供电电压。
3. 硬件电路设计
硬件电路设计主要是下位机电路的设计,包括电源电路、信号调理电路、按钮电路、UART电路和报警指示电路的设计。电源电路采用线性稳压芯片实现两级稳压输出,其输出直流电压等级为±15V和±5V,能够满足STM32F103单片机及其他有源器件的供电电压需求。信号调理电路采用专用精密电流环接收芯片RCV420实现电流/电压转换。按钮电路采用低电平触发模式,实现系统启停控制及参数设置。报警指示电路使用发光二极管指示系统的启动与停止状态,当系统异常时,报警指示灯将以一定频率闪烁以提示报警。异步串行通信电路采用CH340G电压转换芯片实现USB转TTL,完成上位机与下位机之间的信息交换。
3.1 信号调理电路
信号调理电路采用RCV420设计可调增益的I/V转换电路。RCV420是一种精密电流环接收芯片,通过简单的外围电路即可将输入的4‐20mA电流信号转换为0‐5V电压信号输出。该电路利用内部10V参考电压源输出的10V电压,通过内部分压电阻分压,得到稳定的6.25V电压。此外,其内部OPA237构成射极跟随器实现隔离,可为Ref In和RCV Com端口提供6.25V的稳定电压信号。因此,整个外围电路只需将涡流传感器的输出端连接至RCV的第一引脚,并将第14引脚连接至AD7810的输入信号端,即可构成电流与电压转换电路。
3.2 异步串行通信电路
通过CH340G实现的异步串行通信电路如图3所示。USB由于接口简单、使用方便,已被广泛应用于嵌入式设备的开发中。为了使系统更好地适用于不同的PC,本系统采用USB与下位机进行通信。但下位机的电平逻辑与PC不同,因此需要进行电平转换,而CH340G无需外围电路即可完成电平转换,且通信过程中的信号传输安全可靠。在电路连接上,USB的数据+和数据‐分别连接到CH340G的UD+和UD‐。CH340G的TXD和RXD分别连接到单片机的RXD和TXD引脚,从而实现单片机与PC之间的异步串行通信。
4. 系统编程
4.1 下位机编程
下位机主要完成数据采集与传输,程序开始后对系统进行初始化。当按下启动按钮时,系统将读取AD7810中的数据。当下位机接收到上位机发送的读取指令后,下位机会将存储的数据发送给上位机。系统的主程序流程图如图4所示。
5. PC编程
系统的上位机程序设计主要涉及串口设置、数据存储与分析。系统在串口设置中主要完成串口的初始化,如图5所示。上位机主要在串口设置窗口中实现串口的打开。为了方便系统操作,通过下拉列表节点实现串口选择以及波特率、校验位、数据位和停止位的设置,同时将串口读取的数据通过VISA配置端口发送至后续程序。对于数据保存,系统将使用LabVIEW中的 MathScript节点实现LabVIEW与MATLAB的互联。系统需要在MATLAB中对采集的数据进行高阶谱分析,以实现实时数据处理。通过对比不同状态下的高阶谱图,系统可获取发动机的不同工作状态,从而实现发动机故障诊断的目的。
6. 结论
本文设计的汽车发动机故障诊断仪采用单片机STM32F103作为下位机,不仅能够实现信号采集与传输,而且其信号采集电路简单、采样频率高、系统误差小。上位机可利用LabVIEW对采集到的信号进行处理,分析结果通过图形显示界面实现故障诊断结果的可视化。上下位机之间采用异步串行通信,通信安全可靠。
3600

被折叠的 条评论
为什么被折叠?



