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