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

圖1 串口助手界面

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

圖3 發(fā)動(dòng)機(jī)振動(dòng)頻譜
本文運(yùn)用MPU6050加速度傳感器采集發(fā)動(dòng)機(jī)振動(dòng)加速度,STM32單片機(jī)作為數(shù)據(jù)中轉(zhuǎn)設(shè)備,通過串口將數(shù)據(jù)發(fā)送至上位機(jī),為MATLAB數(shù)據(jù)處理做好準(zhǔn)備。調(diào)用FFT模塊,采取分段處理的方式,對(duì)發(fā)動(dòng)機(jī)振動(dòng)頻率進(jìn)行連續(xù)的動(dòng)態(tài)分析,實(shí)現(xiàn)發(fā)動(dòng)機(jī)振動(dòng)頻率的連續(xù)監(jiān)測(cè)。實(shí)驗(yàn)結(jié)果表明,采用基于MATLAB的發(fā)動(dòng)機(jī)振動(dòng)檢測(cè)方式,能夠準(zhǔn)確測(cè)量的發(fā)動(dòng)機(jī)的振動(dòng)頻率,為發(fā)動(dòng)機(jī)振動(dòng)頻率的檢測(cè)提供了一種低成本的解決方案。
[1] 高遠(yuǎn).基于振動(dòng)信號(hào)的汽車發(fā)動(dòng)機(jī)缺缸及軸瓦磨損故障診斷研究[D].天津大學(xué),2018.
[2] 李梅林,李毅強(qiáng),謝惠民,田丹.車用發(fā)動(dòng)機(jī)振動(dòng)測(cè)試研究[J].湖南大學(xué)學(xué)報(bào)(自然科學(xué)版),2003(02):41-43.
[3] 席平原.應(yīng)用MATLAB工具箱實(shí)現(xiàn)機(jī)械優(yōu)化設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與研究,2003(03):40-42+7.
[4] 何楓,楊鳳年,何文德.基于STM32+MPU6050的小型四旋翼無人機(jī)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),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-)男,碩士,講師,就職于南寧學(xué)院,研究方向?yàn)槠囯姎饧翱刂萍夹g(shù)。
2020年度廣西高校中青年教師科研基礎(chǔ)能力提升項(xiàng)目(項(xiàng)目編號(hào):2020KY64008)。