?

基于Android平臺下電機振動信號檢測系統的設計

2014-09-25 01:51陳江波黃建忠
通信電源技術 2014年1期
關鍵詞:傅里葉時域頻譜

陳江波,黃建忠

(上海海事大學 物流工程學院,上海201306)

0 引 言

近年來,智能手機已經成為人們必不可少的一種手持設備。隨著科技的進步,智能手機通過在手機中嵌入各種傳感器,如攝像頭、加速度傳感器、方向傳感器、磁力計、三軸陀螺儀、距離傳感器等,開始具備越來越多、越來越強大的功能。開發、利用手機中的這些傳感器已經逐步形成了一種趨勢。

本文介紹了一種基于智能手機傳感器在工業領域中的應用開發案例,在Android平臺下開發了基于加速度傳感器的應用,即將手機做成測振儀。通過對檢測到的電機振動信號的分析,可初步判斷電機的運行狀況。另外,利用快速傅里葉變換(FFT)對振動信號進行處理,可為進一步更加可靠的判斷電機的運行狀況提供數據。

1 電機的振動檢測

振動是設備運行過程中的普遍現象,特別是旋轉設備,無論是正常狀態還是故障狀態,其運行過程中均會產生振動。例如,旋轉電機在運轉時由于機械摩擦、轉子不平衡、電磁力等原因會使定轉子產生振動。顯然,振動是許多設備運行時所固有的,其中包含設備運行狀態的豐富信息。采集分析這些振動信號,提取有關信息,能夠有效地檢測電機的運行狀態[1]。

傳統的振動檢測方式,一般是在電機的檢測位置安裝傳感器,將采集到的數據實時傳送到上位機,對數據進行實時分析、處理,判斷電機運行是否正常。隨著科技的進步,各大公司相繼開發出了便攜式的、用于檢測振動參量的測振儀。測振儀可以將檢測到的加速度、速度、位移顯示出來,通過將測振儀與外接濾波器相連,可對振動信號進行頻譜分析。

本案例中選擇以速度作為特征量,利用手機加速度傳感器,將采集到的加速度信號轉換為速度信號,將速度信號數據存儲起來,通過調用繪圖函數,繪制速度的實時時域波形圖,再通過FFT對速度信號進行快速傅里葉變換,繪制速度信號的實時頻譜圖。分析電機的振動速度時域波形和頻譜圖,從而判斷電機的運行狀態。

2 案例的實現

本案例在Eclipse軟件下,運用Java語言進行開發,最終的測振儀應用程序界面如圖1所示。當點擊“Start”按鈕時,應用程序開始采集、處理數據以繪制速度的實時時域波形及頻譜圖,同時,“Start”按鈕變為Stop狀態,再點擊按鈕會恢復原來狀態,應用程序停止繪圖。點擊“Clear”按鈕會實現清屏,點擊“Exit”按鈕會進入“是否選擇退出”應用程序界面,進而可退出應用程序?,F簡要介紹一下分步開發的過程。

2.1 數據的采集

圖1 測振儀應用程序界面

開發過程中首先要進行數據的采集,Android智能手機中的加速度傳感器類型為Sensor.TYPE_ACC ELEROMETER,可通過andr oid.har d ware.Sensor-Event返回加速度傳感器的值,其返回值為浮點類型,單位為 m/s2,有三個方向的值,分別是:val ues[0]:x軸方向加速度;values[1]:y軸方向加速度;values[2]:z軸方向加速度。加速度傳感器感應加速度的方向大致如圖2所示,其中:x方向為手機的水平方向,右為正;y方向為手機的水平垂直方向,前為正;z方向為手機的空間垂直方向,天空的方向為正,地球的方向為負。

另外,需要注意的是,由于地球的重力加速度g(值為9.8 m/s2)的影響,當手機水平朝上放置時,z軸的返回值應為9.8 m/s2,x軸和y軸沒有此限制。

圖2 PID控制器模型圖

要與傳感器進行交互,應用程序必須注冊以偵聽該傳感器相關的活動。相關代碼如下:

//注冊加速度傳感器

protected void on Resu me(){

super.on Resu me();

sensor Mg.register Listener(mView,gravity Sensor,Sensor Manager.SENSOR_DELAY_UI);

//注銷加速度傳感器

protected void on Pause(){

super.on Pause();

sensor Mg.unregister Listener(mView);}

上述代碼中,在on Resu me()方法中使用對Sensor Manager類的引用通過register Listener方法注冊傳感器更新。當應用程序暫停時,在on Pause()方法中使用對Sensor Manager類的引用通過unregister L-istener方法注銷偵聽器,這樣以后就不會再收到傳感器的更新。

2.2 數據的處理

加速度傳感器傳回三個方向上的值,本案例中,只使用y軸的返回值做電機振動的檢測。

國家標準和國際標準規定以振動速度作為電機振動等級和規定振動限值。因此,需要將采集到的加速度信號轉化為速度信號,本案例中采用梯形法進行加速度信號的轉換。

式中,Δt表采樣周期;x(i)表示i時刻采樣的加速度值;y(i)表示經過梯形變換后得到的i時刻的振動速度。

代碼的實現如下:

Long cur Ti me=System.current Ti me Millis();if(cur Ti me-last Update>1){

c1=gravity[1];

c=1*(c1+c2)/2;

c2=c1;

last Update=cur Ti me;

上述代碼中,先利用System.current Ti me Millis()取得當前系統的時間cur Ti me,當時間間隔為1 ms時(本案例選取采樣時間為1 ms),保留原來的數據,同時接收新的數據,按照公式(1)得到的振動速度為c=1×(c1+c2)/2,如此循環下去。

2.3 時域波形圖的繪制

將數據處理后以波形圖顯示,方能更好地觀測電機內部的運行狀況。本案例中選取采樣頻率為Fs=1 000 Hz,使用Android開發繪制中的View類進行繪圖,將處理后的數據存儲在一個數組中,通過調用on-Draw()方法進行實時繪圖。具體的實現代碼為:

if(mList.size()>=2){

f or(int i=0;i< mList.size()-1;i++){

canvas.drawLine(mList.get(i).x,OFFSET_TOP+CHAR/2-mList.get(i).y*CHARTH/10000,mList.get(i+1).x,OFFSET_TOP+CHARTH/2-mList.get(i+1).y*CHARTH/10000,paint);

上述代碼中,將處理好的數據存入對象mList中,當mList中的數據大于等于2時,使用on Draw()方法中的canvas.drawLine進行繪圖。

另外,在主線程之外,又創建了一個線程,在其中通過調用Invalidate()方法,每隔0.01 ms重新刷新一下屏幕。其實現的代碼如下:

public void r un(){

mView.invalidate();

m Handler.post Delayed(t his,(l ong)0.01);

2.4 頻譜分析

時域波形實際上綜合反映了振動信號的振幅、頻率和相位。用時域波形來表示振動情況最為簡單、直觀,并且通過對時域波形的觀察,也可以判斷出一些常見的故障。但是時域波形圖也有其不足之處,即不太容易看出所包含信息與故障的聯系。這時需要將時域信號利用傅里葉變換變為頻域信號,以頻率為變量,對信號進行頻譜分析。

在實際采樣中所采集的信號是離散的并且是有限的,對數字振動信號進行傅里葉變換時需要采用離散傅里葉變換(DFT)[2]。

N點序列x(n)的N點離散傅里葉變換可表示為

式中,WN=e-j2π/N;x(n)和X(k)可以是實數或復數。

快速傅里葉變換(FFT)是計算離散傅里葉變換的一種快速算法。本案例中采用按時間抽取的FFT算法。令信號序列的長度為N=2 M,其中M是正整數,可以將時域信號序列x(n)分解成兩部分,一是偶數部分x(2n),另一是奇數部分x(2n+1),其中n=0,1,2,...,-1。于是信號序列x(n)的離散傅里葉變換可以用兩個N/2抽樣點的離散傅里葉變換來表示和計算??紤]到W2N=WN/2以及離散傅里葉變換的周期性,式(2)可寫成

其中

由此可見,式(4)是兩個只含有N/2個點的離散傅里葉變換,G(k)僅包括原信號序列中的偶數點序列,H(k)則僅包括它的奇數點序列。雖然k=0,1,2,…,N-1,但是G(k)和 H(k)的周期都是 N/2,它們的數值以N/2周期重復。

因此,一個抽樣點數為N的信號序列x(n)的離散傅里葉變換,可以由兩個N/2抽樣點序列的離散傅里葉變換求出。依此類推,這種按時間抽取算法是將輸入信號序列分成越來越小的子序列進行離散傅里葉變換計算,最后合成為N點的離散傅里葉變換。

本案例中選取當數組中N=128時,即進行快速傅里葉變換。由于采樣頻率為Fs=1 000 Hz,故本案例中某點n所對應的頻率為:Fn=(n-1)Fs/N,Fn所能分辨到的頻率為Fs/N=7.81 Hz。具體的原始信號的幅值與經過頻譜變換之后的幅值的關系如下:假設原始信號的峰值為A,那么FFT的結果的每個點(除了第一個點直流分量之外)的模值都是A的N/2倍。而第一個點就是直流分量,它的模值是直流分量的N倍。

以下舉例說明時域信號與頻域信號兩者之間的關系。假設有一信號,含有3 V的直流分量;頻率為50 Hz、相位為30°、幅度為1 V的交流信號;以及一頻率為60 Hz、相位為60°、幅度為2.5 V的交流信號。其數學表達式如下:

以128 Hz的采樣頻率對這個信號進行采樣,總共采樣128點。Fn=(n-1)Fs/N,即每兩個點之間的間距為1 Hz,第n個點的頻率就是n-1。該信號有3個頻率:0 Hz、50 Hz、60 Hz,應該分別在第1個點、第51個點、第61個點上出現峰值,其它各點應該接近0。其峰值依次為3×128=384、1×128/2=64、2.5×128/2=160。

電機振動的信號可以看成各個基波信號的疊加,經FFT變換之后,就可以看出各頻率下信號的振動情況,從而了解電機的運行狀況。

3 實驗結果分析

為了驗證測振儀的可靠性,選用淄博大元電機泵業有限公司生產的單相微型自吸泵在空載下進行振動檢測,其額定功率為1.5 k W,額定轉速為2 850 r/min。測量點為電機本體的水平方向,為了消除誤差,進行了多次測量。圖3為檢測到的時域波形及頻譜圖。

從時域波形圖上可以看出,檢測到的振速始終在-0.6~+1.0(單位為:mm/s)之間,按照ISO2374和VDI2056的標準及機器設備的價值中對小型機器的振動標準的劃分,此電機處于“較好”狀態。分析頻域波形,提取信號的頻域特征,可為進一步分析電機的故障提供數據。

圖3 檢測到的時域波形及對應頻譜圖

4 結束語

本文介紹了一種基于Android平臺下對智能手機中的加速度傳感器在工業現場中對檢測電機振動信號中的應用。通過開發,對Android平臺下開發傳感器的應用流程有了一定的了解??偟膩碚f,將手機中內嵌的傳感器應用于工業場合是完全可行的,相信在不久的將來智能手機及其內嵌傳感器的工業應用會大放異彩。

[1] 馬宏忠.電機狀態檢測與故障診斷[M].北京:機械工業出版社,2007.

[2] E.O.布里漢著,譯.快速傅里葉變換[M].西安:科學技術出版社,1979.

[3] 何振亞.數字信號處理的理論與應用[M].北京:人民郵電出版社,1983.

[4] 程乾生.信號處理的數學原理[M].北京:北京大學出版社,2003.

[5] 王 濟,胡 曉.MATLAB在振動信號處理中的應用[M].北京:中國水利水電出版社:知識產權出版社,2006.

[6] 高 凱,王俊社,仇 晶.Android智能手機軟件開發教程[M].北京:國防工業出版社,2012.

[7] 佘志龍,陳昱勛,鄭名杰,陳小風.Google Android SDK開發范例大全(第3版)[M].北京:人民郵電出版社,2011.

[8] 良葛格.Java JDK 5.0學習筆記[M].北京:清華大學出版社,2006.

猜你喜歡
傅里葉時域頻譜
一種用于深空探測的Chirp變換頻譜分析儀設計與實現
法國數學家、物理學家傅里葉
基于復雜網絡理論的作戰計劃時域協同方法研究
基于傅里葉域卷積表示的目標跟蹤算法
山區鋼桁梁斜拉橋施工期抖振時域分析
一種用于高速公路探地雷達的新型時域超寬帶TEM喇叭天線
頻譜大師談“頻譜音樂”——法國作曲家繆哈伊訪談記
任意2~k點存儲器結構傅里葉處理器
基于傅里葉變換的快速TAMVDR算法
遙感衛星動力學頻譜規劃
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合