鄧汝奎,范毅,李光平,班璐
MATLAB在汽車發動機振動頻率檢測中的應用*
鄧汝奎,范毅,李光平,班璐
(南寧學院,廣西 南寧 530200)
汽車發動機振動頻譜分析在機械故障診斷中有著重要意義。采用STM32單片機采集振動加速度數據,運用MATLAB軟件自帶FFT函數對加速度數據進行時域-頻域信號轉換,獲取發動機振動頻譜特征,為發動機振動檢測提供診斷依據。實驗表明,采用該方案能夠在硬件成本較低的情況下,實現發動機頻譜分析。
汽車發動機;振動檢測;MATLAB;FFT
汽車發動機隨使用里程及年限的增長,造成零件磨損或損壞,由此產生異常振動[1]。通過對其振動頻率的分析,能夠很好監測發動機運行狀態是否良好。加速度是振動分析的重要參數,對加速度頻率分析能夠直觀獲取發動機的運行狀態[2]。MATLAB是美國Math Works出品的商業軟件,在數學科技應用中具有非常強大的功能,內部集成了許多工程應用常用的數學模型,相比C語言應用要簡單得多[3]。在振動頻率分析計算方面,像FFT、小波分析、伯德圖等都有現成的應用函數可以直接調用,非常適用于發動機振動頻率計算分析。
MATLAB對發動機振動頻率分析,首先需要解決數據采集問題,獲取發動機振動加速度,并以一定的格式存儲,便于MATLAB處理分析。采用離線方案,先采集數據,集中收集實驗所需的各個工況下的發動機振動加速度,運用MAT -LAB自帶功能函數對數據文檔進行頻譜分析。
振動加速度采集采用MPU6050模塊,可以同時獲取發動機3軸加速度,便于從不同維度分析發動機的振動頻率。由于MPU6050模塊不能直接將數據傳送至上位機,因此采用STM32單片機讀取MPU6050模塊數據,再通過串口傳輸至PC端上位機,這樣MATLAB就可以處理發動機振動加速度數據了。
STM32單片機通過I2C接口讀取加速度信息。首先通過I2C協議配置MPU6050內部寄存器,完成對傳感器的采樣率、分辨率、工作模式的配置[4]。MPU6050以1KHz(默認值)采樣率完成數據采集后,經I2C總線將加速度數據傳送至STM32單片機。單片機運用內部定時器以定時發送的方式從串口傳輸數據至PC端,單片機定時發送的頻率應低于MPU6050加速度數據的采樣速率,避免重復采集同一加速度數據,同時,頻率至少為發動機振動主頻的2倍,保證振動信號的完整。在設置串口通信速率時,還應高于單片機定時發送的速率,避免加速度數據丟失。
如圖1所示串口助手設置串口波特率115200bit/s時,此時,每秒傳輸14400字節,加速度數據分辨率設置為16位,即每個加速度數據占2個字節,此時每秒可發送7200個加速度數據,遠高于加速度傳感器1KHz的采樣率,符合速率要求。串口助手接收到加速度數據后,以text文本保存,如圖2所示,可以通過單片機編程配置,只發送其中一軸的加速度數據,按列排列存儲。

圖1 串口助手界面

圖2 怠速工況下的發動機振動數據
單片機采集到發動機振動加速度后,在電腦端用串口助手存儲數據于text文件,MATLAB可以通過讀取text指令獲取加速度數據。MATLAB處理數據前需讀取數據用textread指令讀取加速度數據,數組存放于數組data中:[data]=textre(d('振動數據.tx;);在MATLAB完成原始數據的采集后,就可以用FFT函數處理分析頻譜,處理之前先進行基本參數的設置,采樣周期T,采樣頻率Fs,信號序列長度L等三大參數[5],根據硬件采集參數,配置相關參數即可,如下:
Fs=500;%采樣頻率
T=1/Fs;%采樣時間
L=1024;%序列長度
原始數據采集根據實際需要,采樣時長不一,采樣時間越長數據就越多,根據檢測精度的需要,可以將數據分割成一定長度的信號序列,然后逐段進行頻譜轉換,如程序中每個信號序列長度1024,由此獲得連續的頻譜變化圖,觀測發動機振動頻率在隨時間變化的特征,為發動機振動分析提供依據,程序如下:
LL=length(data)/L;%數據分段
fix(LL)%取整
tt =(0:L-1)*T;
N = 2^nextpow2(L;
for il=0:1:(LL-1)%計算每段數據頻率
ⅱ=(L*il+1):(il+1)*L;
figure(il+1)
subplot(2,1,1)
plot(tt,data)
set(gca,'box','off';
xlabel('t(seconds)')
ylabel('振動加速度')
Y = fft(data),N;
P2 = abs(Y/L;
P1 = P2(1:L/2+1;
P1(2:end-1)= 2*P1(2:end-1;
%定義頻域 f 并繪制單側幅值頻譜 P1
subplot(2,1,2)
f = Fs*(0:(L/2)/L;
plot(f,P1)
axis([0 500 0 600];
set(gca,'XTick',0:25:500;
set(gca,'box','off';
xlabel('f (Hz)')
ylabel('|P1(f)|')
grid on
end
如圖3所示,在發動機怠速800轉/分的工況下,截取了某一段數據,圖中上半部分為發動機怠速工況時,發動的振動加速度原始數值,圖中下半部分為經過FFT轉換后的發動機振動頻譜,此時可以看出發動機振動主頻在25Hz。對于四缸發動機轉速為800轉/分時,四沖程發動機曲軸每轉1圈,氣缸爆燃2次,計算其理論振動應為26.67Hz,與經MATLAB的FFT頻域轉換后的實測數值的振動頻率基本接近。由此可以判斷運用MATLAB對于發動機振動頻率分析具有較強的可行性。

圖3 發動機振動頻譜
本文運用MPU6050加速度傳感器采集發動機振動加速度,STM32單片機作為數據中轉設備,通過串口將數據發送至上位機,為MATLAB數據處理做好準備。調用FFT模塊,采取分段處理的方式,對發動機振動頻率進行連續的動態分析,實現發動機振動頻率的連續監測。實驗結果表明,采用基于MATLAB的發動機振動檢測方式,能夠準確測量的發動機的振動頻率,為發動機振動頻率的檢測提供了一種低成本的解決方案。
[1] 高遠.基于振動信號的汽車發動機缺缸及軸瓦磨損故障診斷研究[D].天津大學,2018.
[2] 李梅林,李毅強,謝惠民,田丹.車用發動機振動測試研究[J].湖南大學學報(自然科學版),2003(02):41-43.
[3] 席平原.應用MATLAB工具箱實現機械優化設計[J].機械設計與研究,2003(03):40-42+7.
[4] 何楓,楊鳳年,何文德.基于STM32+MPU6050的小型四旋翼無人機設計[J].電腦知識與技術,2020,16(19):213-214.
[5] 姜皓月,王晟旻.基于Matlab的FFT算法研究[J].電子制作,2020 (01):52-54.
Application of MATLAB in vibration frequency detection of automobile engine*
Deng Rukui, Fan Yi, Li Guangping, Ban Lu
(Nanning University, Guangxi Nanning 530200)
Vibration spectrum analysis of automobile engine plays an important role in mechanical fault diagnosis. The vibration acceleration data is collected by STM32 single chip microcomputer, and the time domain-frequency domain signal conversion of the acceleration data is carried out by using the FFT function of MATLAB software. The frequency spectrum characteristics of engine vibration are obtained, which provides diagnostic basis for engine vibration detection. Experiments show that the scheme can realize engine spectrum analysis with low hardware cost.
Automotive engine; Vibration detection; MATLAB; FFT
10.16638/j.cnki.1671-7988.2021.03.040
U464
A
1671-7988(2021)03-133-03
U464
A
1671-7988(2021)03-133-03
鄧汝奎(1985-)男,碩士,講師,就職于南寧學院,研究方向為汽車電氣及控制技術。
2020年度廣西高校中青年教師科研基礎能力提升項目(項目編號:2020KY64008)。