0、引言
磁致伸縮線性位移傳感器是一種利用磁致伸縮原理來測量物體超長行程絕對位移的高精度位置傳感器,它不但可以測量運動物體的直線位移,還可給出運動物體的位移速度模擬信號,方便的多種輸出方式可滿足各種測量、控制和檢測的要求。對于用戶來說,如何對傳感器產生的模擬信號進行數字化以及數據采集處理是值得研究的領域。近年來,磁致伸縮線性位移傳感器,無論在精度上和性能上都有了很大提高,根據不同的應用領域,可以借助微機強大的數據處理能力,通過可靠硬件電路和軟件設計來達到信號數字化和數據高速準確采集處理的目的。
1、磁致伸縮線性位移傳感器工作原理
磁致伸縮位移傳感器原理圖
磁致伸縮線性位移傳感器內部結構如上圖所示。磁致伸縮線被安裝在不銹鋼管內,磁環在不銹鋼管外側可自由滑動,電子裝置中的脈沖發生器產生電流脈沖(起始脈沖)并沿波導線傳播,產生的磁場與活動磁環固有的磁場矢量疊加,形成螺旋磁場,產生瞬時扭力,使波導線扭動并產生張力脈沖(波導脈沖),這個脈沖以固定的速度沿波導傳回,在線圈(轉換器)兩端產生感應脈沖(終止脈沖),通過測量起始脈沖與終止脈沖之間的時間差就可以精確地確定被測位移量,如下圖所示。因為張力脈沖在波導管上的速度恒定,用測得的時間差乘以此速度,得出磁環的位置。這個過程是連續不斷的,每當磁環運動時,新的位置就會被感測出來。
磁致伸縮位移傳感器信號原理示意圖
1.1、位置計算
位置/mm=時差/s×傳感器的傳送速度/mm·s-1一零點位置/mm
1.2、更新時間及頻率響應
傳感器的更新時間對伺服控制系統的應用非常重要。由于磁鐵距離傳感器的電子零件越遠,波導脈沖傳播所需的時間就越長,所以傳感器的更新時間與距離成正比。傳感器的最長更新時間可估算如下:
更新時間=(量程十零點位置)/傳感器傳送速度
等價頻率響應=1/更新時間
1.3、性能參數
某進口磁致伸縮線性位移傳感器產品性能參數:
最大分辨率:0.002%Fs;遲滯誤差:優于0.002%Fs;工作溫度:測桿-40℃~+85℃,電子部件-20℃~+80℃;非線性(士%Fs):優于0.05.(300mm以下最大誤差150μm);量程范圍(mm):0-150~0-5000.
2、數據采集系統的硬件結構
系統下位機選用內藏4k字節,快擦寫EEP-ROM的8位單片機AT89C51.該芯片可改寫,為系統的設計與開發調試提供了極大的方便。
傳感器數字采集系統硬件原理
2.1、信號調節電路
將所設計電路板與傳感器裝配在一起,這樣有利于系統的小型化,但卻使系統電路板處于不利的工作環境之中,如工作期間會產生噪聲和溫度升高等,為了使傳感器產生的4~20mA的電流信號轉換為滿足A/D轉換器輸入要求的標電信號,電流信號放大電路采用了OP07型運算放大器(放大倍數為2.7.輸出電壓為0~10V),由于其噪聲峰一峰值僅為0.3μV,且具有失調電壓低,輸入阻抗高,溫漂系數小等特點,較好地滿足了設計要求。
2.2、A/D轉換電路
系統采用美國AD公司的AD574芯片,此芯片是一種高集成度、低價格的逐次比較式12位A/D,轉換結果通過三態緩沖器輸出,可直接與8位或16位數據總線微處理器接口,芯片內部帶基準電源和時鐘,轉換時間為25μs,采用了單極性輸入,輸入信號幅度為0~+10V,傳感器信號經信號放大電路后加于AD574的13腳。AD574工作一般分兩個過程,首先是轉換過程,當CE=1,CS=0,R/C=0時,啟動AD574開始轉換,此時當A?=0時,就進行12位轉換;其次是讀取12位并行轉換結果,當CE=1,CS=0.R/C=1時,可一次讀出轉換的12位數據。
2.3、單片機系統
AT89C51是美國ATMEL公司推出一種低功耗、高性能的CMOS控制器,下位機AT89C51的4個I/O口中,Po、P?口的P?o~P?作為12位數據口,P?、P?口各引腳用于管理其它各芯片的控制與聯絡信號線。它與Intel公司的8031完全兼容,而且還擁有4KB的EEPROM和128KB的RAM,在本系統中無須擴展程序存儲器和數據存儲器就可實現系統功能,簡化了電路設計,且使系統的可靠性得到了很大的提高。
2.4、串行通信電路
在以單片機為基礎的數據采集和實時控制系統中,通常采用RS-232接口就可完成PC機與AT-89C51單片機之間的通信,但由于RS-232所傳送的距離不超過30m,考慮到傳感器控制單片機系統需要遠離PC操作機,所以,使用專用的接口將RS-232協議轉換為RS-422協議進行遠距離傳送。
3、數據采集系統的軟件設計
系統的軟件設計主要包括AT89C51單片機的C語言編程和上位機PC機在Windows98下用Vi-sualC++6.0編程兩部分,我們將主要討論Win-dows98環境下的軟件設計,在VisualC++6.0提供的文檔與視圖分離技術和串行通信控件MSComm的基礎上,采用切分窗口技術實現數據存放與顯示操作的分離,運用多媒體定時器和多線程技術來采集數據,并利用自定義消息和事件來協調程序的同步。
3.1、用多媒體定時器實現高精度實時數據采集
多媒體定時器可以通過函數TimeBeginPeriod()設置最小定時精度,即按所需定時精度要求來設置硬件定時器8253的計數初值,使計數器的精度提高,而且它不依賴于Windows的消息處理機制,而是相當于采用了一個多線程,即由函數Time-SetEvent產生的一個獨立線程,在一定的中斷周期到達后,直接調用回調函數進行數據處理,而不必等到應用程序的消息為空,保證了定時器的實時響應。我們使用Windows系統向我們提供的兩個可實現多媒體定時器的API函數:TimerSetEvent()和TimeKillEvent(),并定義了用于實現定時事件的回調函數:VoidCALLBACKTimeFunc(),可以完成毫秒級精度的計時和控制。
3.2、數據處理算法設計
通過對傳感器的原始工作波形的分析,觀察到采樣時有周期性尖峰脈沖干擾的現象,并且考慮到數據處理時系統滯后時間常數相對較大,而采樣周期較短,采用防脈沖干擾平均值法與加權平均濾波法組合的復合濾波程序。首先對采集到的n個數據進行比較,去掉最大值和最小值;然后對剩下的n-2個數據(按原采樣順序)進行加權平均濾波,具體算法是對n-2個采樣值分別乘上不同的加權系數之后再求累加和,加權系數取先小后大,以突出后若干采樣的效果,加強系統對參數變化的趨勢的辨識。各個加權系數均小于1.且相加為1.這樣,加權運算之后的累加和就是有效采樣值。在具體編程中,為方便計算,取各加權系數均為整數,且和為256.加權后除以256即為所得。本算法中取n=8.6個加權系數按線性遞增變化,采用此濾波方法后,效果良好。
3.3、使用多線程技術編程
對于數據采集系統來說,顯示處理與采集很可能會在時間上產生沖突,影響程序的正常運行,接受數據也會出錯。因此,在程序中使用了多線程技術,并創建了一個專門的輔助線程來實現數據采集,需要采集數據時創建該線程,并在此線程中啟動多媒體定時器,在采集結束或退出程序時,刪除定時器,退出該輔助線程。此外,由于輔助線程沒有自己的消息循環,為了實現輔助線程與主線程之間的通話,我們利用Windows的消息機制,定義了兩個自定義消息WM_USER+100(用于數據處理和顯示)和WM_USER+101(用于串口通信時發送握手信號)。當采集到數據后通過PostMessage()函數向主線程發消息進行數據處理和顯示。在編程過程中,我們的輔助線程必須謹慎地保持與主線程的互操作的同步,我們使用MFC提供的類CEvent(從Csyn-cObject派生),調用Cevent::SetEvent設置適當的事件來同步輔助線程和主線程。主要源程序如下:
void CSensorView::OnInitialUpdate()//初始
化串口
{
CFormView::OnInitialUpdate();
……
m_Comport。SetCommPort(1);//select COM2
m_Comport。SetInputMode(1);// 設置 輸入方式為二進制方式
m_Comport。SetSettings("9600.n,8.1");//設置波特率等參數
m_Comport。SetRThreshold(1);//當 com 接收 buffer 中有>=1個字符時引發一個關于 接受數據的 Oncomm 事件
……
}
void CSensorView::OnButtontrans()
{
/ / - - - - - - - - - - - - - 為 發送按鈕添加鼠標單擊消息處理函數
AfxBeginThread(ThreadProc,GetSafe-Hwnd());//啟動輔助線程
…
Transmitt();//發送握手信號函數,當下位機收到信號確認后將發送數據,引發Oncomm事件,接收采集數據
}
//在輔助線程中啟動多媒體定時器進行數據采集
UINT ThreadProc(LPVOID pParam)
{
::WaitForSingleObject(m_eventTrans,INFI-NITE);
ATimerID=timeSetEvent(20.0.ATimer- Func,(DWORD)this,TIME_ONESHOT);
timeKillEvent(ATimerID);
::PostMessage(hWnd,PR_MESSAGE,0. 0);//執行自定義消息函數 ProcessData()
return 0;//結束輔助線程
}
void CALLBACK ATimerFunc (UINT,UINT,DWORD User,DWORD,DWORD)//定時器回調函數
{
HWND hWnd=((CSensorView')(User))一 >GetSafeHwnd();
::PostMessage(hWnd,TR_MESSAGE,0. 0);//執行自定義消息函數
}
void CSensorView::ProcessData()//數據處理函數,包括濾波和平滑
{
……
CSensorDoc'pDoc=GetDocument();
……
pDoc->UpdateAllViews(this);
}
//在 Display中動態顯示
void Display::OnUpdate(CView'pSender, LPARAM IHint,CObject'pHint)
{
extern CEvent m_eventTrans;
……
CSensorDoc'pDoc=(CSensorDoc')GetDoc-ument();
CDC'pDC=GetDC();
……
ReleaseDC(pDC);
m_eventTrans。SetEvent();
}
4、試驗
磁致伸縮傳感器信號原始波形
根據所介紹的數據采集系統,研制了試驗樣機,并進行了性能測試。通過示波器觀測,得到了磁致伸縮線性位移傳感器原始工作波形圖,如上圖所示。8位7段LED顯示器顯示最大電壓跳變范圍約在士10LSB(相當于±12mV)。在性能測試中,分別對靜態和動態的傳感器信號進行了數據采集與處理。靜態試驗中圖形顯示為一條直線,8位7段LED顯示器顯示數字碼跳變穩定在士LSB,數字處理效果良好,完全滿足精度要求;動態試驗中,通過以不同的速度滑動傳感器磁環獲得不同規律的信號,得到不同的動態工作曲線,如下圖所示為其中一條曲線,經過反復測試,實時動態響應速度滿足10Hz頻率磁致伸縮線性位移傳感器的響應速度。
電壓一單位時間動態工作曲線
5、結束語
磁致伸縮線性位移傳感器數據采集系統經數字濾波,接收的數據跳變在士LSB范圍之內,滿足精度要求;實時動態響應速度滿足磁致伸縮線性位移傳感器響應速度。試驗樣機工作性能良好,且此系統對其它傳感器信號的數據采集也具有極好的參考價值。
本文轉載于深圳市博爾森科技有限公司官網:http://www.brsen.com
審核編輯 黃宇
-
位移傳感器
+關注
關注
5文章
1138瀏覽量
34979 -
數據采集系統
+關注
關注
5文章
273瀏覽量
31264 -
磁致伸縮
+關注
關注
2文章
26瀏覽量
9323
發布評論請先 登錄
評論