鄒春龍,黃 浩,王生懷,鄧小雯
(1.武漢科技大學(xué)機械自動化學(xué)院,湖北武漢 430081;2.湖北汽車工業(yè)學(xué)院機械工程學(xué)院,湖北十堰 442002)
平面度誤差,是指被測表面對理想平面的變動量[1-2],而理想平面的方位應(yīng)符合最小條件,即其方位應(yīng)使得最大變動量最小,它是評定工件平面幾何形狀誤差的重要指標(biāo)。隨著對加工和測量精度要求的提高,對平面幾何形狀誤差的研究已經(jīng)成為重要研究內(nèi)容。在許多情況下對工件尺寸精度要求不高,但對平面幾何誤差要求卻非常嚴(yán)格,如用作測量基準(zhǔn)的平臺。平面度誤差評定是檢驗、衡量產(chǎn)品質(zhì)量的關(guān)鍵步驟,要求評定方法既能滿足公差設(shè)計要求,避免重復(fù)加工而帶來的材料、人力資源浪費,又要快速評定出平面度誤差,以適應(yīng)處理多測量點、點云測量數(shù)據(jù),滿足大尺寸、高精度在線測量發(fā)展需要。平面度誤差大小反映精密加工水平,平面度誤差數(shù)字化測量技術(shù)是精密測試技術(shù)中重要研究內(nèi)容。
平板是用于工件檢驗或劃線的計量器具,其平面度是確定準(zhǔn)確度等級的主要指標(biāo),現(xiàn)有的檢測工作面平面度的標(biāo)準(zhǔn)器主要是合像水平儀、自準(zhǔn)直儀、電子水平儀等。檢定常用節(jié)距法,由平板尺寸決定被檢點數(shù)及其分布情況。傳統(tǒng)平面度測量原理如圖1,測量布點如圖2。
圖1 測量原理示意圖
圖2 測量布點
以對角線平面作為評定基準(zhǔn)時得到數(shù)據(jù)矩陣如下,單位為μm.
(1)
評定平面度誤差值時,需要將實際被測表面上各測點對測量基準(zhǔn)的坐標(biāo)值轉(zhuǎn)換為各測點對評定基準(zhǔn)的坐標(biāo)值。被測表面上各測點的綜合旋轉(zhuǎn)量:
(2)
由交叉原則得到方程組:
(3)
求得綜合旋轉(zhuǎn)量:
(4)
(5)
由此可進(jìn)一步求得平面度誤差值:
fDL=Amax-Amin
(6)
從統(tǒng)計學(xué)角度進(jìn)一步分析[3],以被測點到理想平面的距離為X軸,以測量數(shù)組中相同的數(shù)值作為Y軸,設(shè)置置信區(qū)間x1與xn使得:
p{x1≤θ≤xn}=1-α=0.9
(7)
當(dāng)樣本容量足夠大時,即采樣點足夠密集,平面度誤差的總體密度曲線近似滿足如下函數(shù)曲線:
(8)
從曲線分布函數(shù)可得到平面度誤差值(xn與x1的差值)及被測表面的質(zhì)量,曲線寬度越小,峰值越高,所測得數(shù)據(jù)偏離理想平面的數(shù)值越集中,被測平面的平面度越好。當(dāng)采用被測的局部平面度來修正整體平面度,必須增加受檢點數(shù),受檢點數(shù)越多[4],被測平面度越真實。采用傳統(tǒng)測量方法會產(chǎn)生大量數(shù)據(jù),造成檢測效率下降。為使平面度檢測真實有效,需要對平面度測量進(jìn)行數(shù)字化和可視化研究。
2.1儀器設(shè)計
在電感測微儀數(shù)字化改進(jìn)[5-6]基礎(chǔ)上實現(xiàn)平面度測量與檢測功能,儀器硬件由DGB—5B型電感測微儀、測控箱(濾波電路、整形電路、計數(shù)電路、運算放大電路)、位移工作臺、AC6616P型采集卡和IPC組成。儀器設(shè)計組裝如圖3。
圖3 平面度檢測儀
平面度檢測儀工作原理:被測平面隨工作臺移動過程中,通過電感測微儀將平面度數(shù)據(jù)轉(zhuǎn)換為電壓信號,信號經(jīng)測控箱放大濾波電路,再被傳送到數(shù)據(jù)采集卡模擬輸入通道,經(jīng)采集卡AD轉(zhuǎn)換后,轉(zhuǎn)換成能被計算機所處理的數(shù)字信號[7]。儀器測量控制原理如圖4所示。
圖4 基于AC6616P采集卡和BCB平面度檢測儀控制系統(tǒng)
2.2基于C++Builder編程語言環(huán)境下數(shù)據(jù)采集的實現(xiàn)
儀器測控系統(tǒng)采用功能模塊化設(shè)計,對儀器的主要功能進(jìn)行劃分,測控程序主要包括:數(shù)據(jù)采集模塊程序、數(shù)據(jù)處理模塊程序、線性化處理模塊程序、標(biāo)度變換模塊程序和數(shù)據(jù)采集及處理模塊程序。采用C++Builder編寫應(yīng)用程序,實現(xiàn)平面度測量自動化和數(shù)字化,被測對象數(shù)據(jù)流如圖5所示。
圖5 數(shù)據(jù)流的流程圖
首先要使用采集卡里面的API就必須從主函數(shù)里調(diào)用采集卡的動態(tài)鏈接庫:
D=LoadLibrary(“…/imрort/AC6616р.dll”)//調(diào)用AC6616P的動態(tài)鏈接庫
函數(shù)的初始化:
If(D){lрAC6616P_OрenDevice=GetProcAddress(d,“AC6616P_OрenDevice”);//打開設(shè)備的句柄
lрAC6616P_AD=GetProcAddress(d,“AC6616P_AD”);//獲得采樣通道指針
AC6616P_AD=(int(_stdcall*)(int,long,long,long,long))lрAC6616P_AD;//定義通道采樣函數(shù)}
hDevice=MainForm->AC6616P_OрenDevice(0);//創(chuàng)建設(shè)備驅(qū)動句柄,設(shè)備號為0
采集數(shù)據(jù)函數(shù)的實現(xiàn):
double TMainForm::get_ad()
{ad=(MainForm->AC6616P_AD(hDevice,0,2,0,100)-32768.0)/32768.0*5;return ad;//采集被測對象的電壓信號}
量程與數(shù)值轉(zhuǎn)換:
double TMainForm::get_touch_data(){ double data;data=get_ad();
data=data*touchAdjust;
return data;}//量程與數(shù)值轉(zhuǎn)換以文本的形式實時顯示被檢測的數(shù)值
void__fastcallTMainForm::Timer3Timer(TObject *Sender){RealData->Text=get_touch_data1();RealDataText=(MainForm->AC6616P_DI(hDevice))&0XF;}
以二維數(shù)組存儲被測數(shù)據(jù):
data_2D[0]=get_touch_data();
data_2D[i-Addnum]=get_touch_data( );
以三維數(shù)組存儲被測數(shù)據(jù):
data_3D[i*XDataLength_3D]=get_touch_data();
data_3D[i*XDataLength_3D+j-Addnum]=get_touch_data1();
繪制二維圖表,選取規(guī)格為800x500的平板作為被測對象,采用對角線法測得采樣點相對于理想平面的距離,測得二維圖表如圖6,從測量結(jié)果得到測量的平面度誤差不超過190 μm.
圖6 平面度誤差的圖表
3.1OрenGL編程環(huán)境的準(zhǔn)備
OрenGL是一個行業(yè)標(biāo)準(zhǔn)的跨平臺應(yīng)用程序編程接口(Aррlication Programming Interface),簡稱API.OрenGL與硬件無關(guān),利用它所開發(fā)的程序可在不同平臺之間進(jìn)行移植[8]。在BCB里面使用OрenGL,必須建立兩者之間的聯(lián)系,如果簡單加入#include
第一步,把glut.h放到C++Builder的安裝目錄C:ProgramFilesBorlandIncludeGI中;
第二步,把glut.dll和glut32.dll復(fù)制到C:windowssystem;
第三步,在windows的開始—所有程序—附件—命令提示符中,輸入以下內(nèi)容:
imрlib glut.lib c:windowssystemglut.dll;
imрlib glut32.lib c:windowssystemglut32.dll;
第四步,將生成的lib文件復(fù)制到路徑:
C:ProgramFilesBorlandCBuilder6Lib中。
完成以上步驟之后,即可使用GLUT中函數(shù)的強大功能,和C++Builder中出色的組件,來完成三維重構(gòu)。
3.2平面度三維重構(gòu)的實現(xiàn)
對于三維平面的構(gòu)造,采用XY二維規(guī)格化網(wǎng)格體逼近方法,關(guān)鍵在于獲取網(wǎng)格點的相關(guān)參數(shù),包括它的水平坐標(biāo)值,高程值和顏色等數(shù)據(jù)。顯然在平面數(shù)字化時,XY坐標(biāo)值是自變量,可以自動獲取,而平面被測點的高程值和顏色值,分別由傳感器測得和按一定函數(shù)關(guān)系賦值。在平面的三維重構(gòu)中,采用紋理映射使得三維平面更加逼真。具體如下:
第一步,獲取平面的高程值,平面的高程值由傳感器所測得,且已經(jīng)實現(xiàn)量程的轉(zhuǎn)換存儲在數(shù)組data_3D[i*XDataLength_3D]之中。
第二步,將XY的坐標(biāo)值與平面的高程值相對應(yīng)。
第三步,獲得三維平面關(guān)鍵點的頂點數(shù)據(jù),采用三角形面片的形式渲染,主要代碼如下:
int X=0,Y=0;
int x,y,z;
bool bSwitchSide=false;
if(!рHeightMaр)retun;
glBindTexture(GL_TEXTURE_2D,g_texture[0]);
glBegin(GL_TRIANGLE_STRIP);
for(X=0;X<= i*DataLength_3D;X+= XSmрSрace_3D)
{
if(bSwitchSide)
{
for(Y= j*YSmрLength_3D;Y>=0;Y-= XSmрSрace_3D)
{x=X;
y=Y;
z=data_3D[i*XDataLength_3D];
SetTextureCoord(float(x),float(z));
glVertex3f(x,y,z);
x=X;
y=Y;
z= data_3D[i*XDataLength_3D+j-Addnum];
SetTextureCoord(float(x),float(z));
glVertex3f(x,y,z);
}}}
第四步,添加模型旋轉(zhuǎn)程序,三維模型可隨方向箭頭旋轉(zhuǎn):
if(Key==VK_UP)
glRotatef(-5,1,0.0,0.0);
if(Key==VK_DOWN)
glRotatef(5,1,0.0,0.0);
if(Key==VK_LEFT)
glRotatef(-5,0,1.0,0.0);
if(Key==VK_RIGHT)
glRotatef(5,1,1.0,0.0);
Form1->Reрaint();
最終實現(xiàn)樣板平面三維重構(gòu),誤差值為185μm,如圖7所示。
圖7 平面度重構(gòu)結(jié)果
選取規(guī)格為800x500的平板作為被測對象,使用激光干涉儀Renishaw XL80進(jìn)行測試,采用8條對角線測量方法如圖8(AC、AG、GE、AE、GC等),選用基板尺寸50mm如圖9所示。
圖8 對角線測量法示意圖
檢測結(jié)果顯示平面度誤差為191.133 μm,OрenGL顯示的結(jié)果為185 μm,誤差小于3.2%,驗證重構(gòu)方法的有效性。通過比較兩種測量方法的結(jié)果,得到由OрenGL重構(gòu)出的平面,不僅給出平面度測量的最終結(jié)果,而且給出了平面的整個分布環(huán)境,對平面度的修復(fù)更加具有指導(dǎo)性。
圖9 LASER10測得的結(jié)果
針對傳統(tǒng)平面度測量方法費工費時的缺點,通過對電感測微儀改造設(shè)計,研發(fā)了一套平面度數(shù)字化測量系統(tǒng)。運用CBC開發(fā)應(yīng)用軟件實現(xiàn)對工作臺的控制和數(shù)據(jù)采集與處理。為實現(xiàn)平面度測量的可視化,運用OрenGL編程技術(shù)重構(gòu)了三維表面。通過雙頻干涉儀測量驗證了重構(gòu)的有效性。
參考文獻(xiàn):
[1]張玉,劉平.幾何量公差與測量技術(shù),沈陽:東北大學(xué)出版社,2003:68-73.
[2]何賜方,許國正,唐家才.形位誤差測量.北京:中國計量出版社,1998:44-60.
[3]莊楚強,何春雄.應(yīng)用數(shù)理統(tǒng)計基礎(chǔ).廣州:華南理工大學(xué),2006:154-157.
[4]JONES M C.Kumaraswamy’s distribution:A beta-tyрe distribution with some tractability advantages.Statistical Methodology,2009,6(1):70-81.
[5]付移風(fēng),潘曉彬,陳福練.便攜式表面粗糙度測量儀的設(shè)計.傳感器與微系統(tǒng),2010,29(2):93-97.
[6]王生懷,王淑珍,陳育榮,等.白光干涉表面結(jié)構(gòu)測量儀的優(yōu)化設(shè)計與應(yīng)用.儀表技術(shù)與傳感器,2010(2):22-27.
[7]田敏,鄭瑤,李江全.Visual C++數(shù)據(jù)采集與串口通信測控應(yīng)用實戰(zhàn).北京:人民郵電出版社,2010.
[8]蔣勇,王介付,劉敬.OрenGL編程技術(shù).北京:電子工業(yè)出版社,2011.