LUẬN VĂN THẠC SỸ KHOA HỌC
Kết luận: Chƣơng III đã trình bày về phƣơng pháp xây dựng mô hình thực nghiệm dựa trên các cơ sở lý thuyết đã đƣợc trình bày trong chƣơng II gồm các bƣớc đi chọn các thông số về đầu đo, hệ thống dịch chuyển quang cơ và phƣơng pháp điều khiển cũng nhƣ các phần mềm sử dụng trong mô hình thiết bị đo. Căn cứ vào mô hình máy đo này ta sẽ đi đo các bề mặt chi tiết 3D và đánh giá kết quả đo so với lý thuyết. Phần thực nghiệm và đánh giá kết quả đo sẽ đƣợc trình bày trong chƣơng IV.
LUẬN VĂN THẠC SỸ KHOA HỌC
59
PHẠM NGỌC LINH 11BCTM.KH
CHƢƠNG IV: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 4.1. Mô hình thực nghiệm.
Sau khi đã phân tích, tính toán, chọn đƣợc nguyên lý và phƣơng pháp đo quét biên dạng chi tiết 3D laser ta đi xây dựng đƣợc mô hình thực nghiệm. Dƣới đây là một số hình ảnh về mô hình thực nghiệm:
Hình 4.1: Cụm đầu đo
LUẬN VĂN THẠC SỸ KHOA HỌC
Hình 4.3: Hệ truyền động
LUẬN VĂN THẠC SỸ KHOA HỌC
61
PHẠM NGỌC LINH 11BCTM.KH
Hình 4.5: Phần mềm đo quét
4.2. Kết quả thực nghiệm.
Chi tiết quét nhƣ hình 4.6
Hình 4.6: Chi tiết quét
LUẬN VĂN THẠC SỸ KHOA HỌC
Hình 4.7: Mô hình quét
Kết quả thu đƣợc nhƣ hình 4.8, 4.9
LUẬN VĂN THẠC SỸ KHOA HỌC
63
PHẠM NGỌC LINH 11BCTM.KH
Hình 4.9: Biên dạng vật được mô phỏng lại
Một số kích thƣớc của chi tiết thu đƣợc sau khi quét (hình 4.10)
LUẬN VĂN THẠC SỸ KHOA HỌC
Nhận xét kết quả thực nghiêm:
Từ kết quả quét biên dạng của vật thu đƣợc và các phƣơng pháp tính toán xử lý số liệu của biên dạng quét so sánh với kích thƣớc thực của vật ta có một số nhận xét sau:
- Về hình dạng: Biên dạng quét của vật đƣợc mô phỏng lại có hình dạng giống với biên dạng ban đầu của chi tiết. Vì vậy, về mặt biên dạng quét thì thiết bị quét đảm bảo yêu cầu đề ra.
- Về kích thƣớc: Sau khi thu đƣợc biên dạng chi tiết, ta cũng thu đƣợc các kích thƣớc của chi tiết, so sánh với kích thƣớc thực của chi tiết ta thấy kích thƣớc sau khi quét là có sai số lớn nhất đến 0.05 mm.
4.3. Calip máy đo.
Để kiểm tra độ chính xác của máy đo, luận văn này dùng căn mẫu để đo lấy kết quả sau đó chỉnh sửa lại hàm truyền để máy có giá trị đo chính xác. Ở đây hai căn mẫu là loại cera block set của hãng Mitutoyo có các thông số sau:
Coade : No.S16 – 374 Set : No Bm3 – 18 – 0
Grape : 0
Serial no: 981283. Sơ đồ calib nhƣ sau:
LUẬN VĂN THẠC SỸ KHOA HỌC
65
PHẠM NGỌC LINH 11BCTM.KH
Trong luận văn này dùng 5 miếng căn mẫu lần lƣợt ghép vào nhau và đo 10 lần tại mỗi lần ghép. Kết quả thu đƣợc nhƣ bảng sau:
Căn mẫu Lần đo 1.0090 1.0080 1.0070 0.9920 0.9960 1 0.9464 2.0098 2.9956 4.1002 5.1139 2 0.9257 2.0038 3.0633 4.0790 5.1164 3 1.0040 1.9976 3.0225 4.0769 5.0399 4 0.9662 1.9637 2.9998 4.0953 5.1179 5 0.9511 1.9925 2.9980 4.0889 5.0836 6 0.9759 2.0206 3.0293 4.0790 5.1183 7 0.9808 2.0043 3.0368 4.0703 5.1192 8 0.9479 2.0239 3.0066 4.1236 5.0771 9 0.9502 2.0229 2.9803 4.0576 5.1214 10 0.9574 2.0323 3.0460 4.1193 5.0570
Từ kết quả calip máy đo ta thấy đƣợc sai số khi lắp ghép máy đo là 0.0444mm. Từ mức sai số lắp ghép này và dựa vao kết quả đo ta sẽ tìm ra đƣợc sai số thực của thiết bị khi đo.
LUẬN VĂN THẠC SỸ KHOA HỌC
KẾT LUẬN
Thiết bị đƣợc chế tạo đã bƣớc đầu quét thử biên dạng đƣợc của một số mẫu. Đảm bảo nguyên lý chung của nguyên tắc quét biên dạng 3D của chi tiết theo phƣơng pháp quét điểm. Hệ thống mạch điều khiển, phần mềm điều khiển dễ sử dụng trực quan giúp cho việc đo quét, ghi nhận, sao lƣu kết quả dễ dàng, các số liệu đo đƣợc ghi lại trên tập đuôi “.xyz” và có thể các đuôi khác nhƣ “.STL” do đó có thể trích dẫn và xử lý trên các phần mềm khác. Các chƣơng trình điều khiển đƣợc viết trên phần mềm matlab giúp cho việc hoàn thiện kế thừa của các nghiên cứu tiếp theo dễ dàng hơn.
Các kết quả đo quét ban đầu có thể giúp so sánh giữa các mẫu đo, kết quả đo tin cậy đƣợc.
Thông qua việc chế tạo và thử nghiệm thiết bị ngƣời làm luận văn nhận thấy cần có một số nghiên cứu sâu hơn để hoàn thiện thiết bị nhƣ sau:
- Bƣớc dịch chuyển của đầu đo cần nhỏ hơn nữa. - Camera cần có độ phân giải cao hơn.
- Bƣớc dịch chuyển hệ cơ khí nhỏ hơn.
- Nghiên cứu thêm về các yếu tố ảnh hƣởng đến kết quả đo quét. - Mở rộng phạm vi đo.
LUẬN VĂN THẠC SỸ KHOA HỌC
67
PHẠM NGỌC LINH 11BCTM.KH
TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Dƣơng Đức Hiếu, Nguyễn Dƣơng Hùng, Vũ Hoàng Tuấn, Thiết kế máy quét laser dạng đường, Đồ án tốt nghiệp đại học, Đại học Bách khoa Hà nội, 2010. [2] Hoàng Ngọc Hai, Mai Xuân Toàn , Thiết kế máy đo quét laser 3D, Đồ án tốt nghiệp đại học, Đại học Bách khoa Hà nội, 2013.
[3] Phạm Thị Ngọc Yến, Ngô Hữu Tình, Lê Tấn Hùng, Nguyễn Thị Lan Hƣơng, Cơ sở Matlap và ứng dụng, NXB KHKT.
[4] Lƣu Thủy Chung, Xử lý số liệu khi đo kích thước chi tiết bằng phương pháp quét laser, Luận văn thạc sĩ, Đại học Bách khoa Hà Nội, 2009.
[5] Nguyễn Phùng Quang, Matlap & simulink dành cho kỹ sư điều khiển tự động, NXB Khoa học và kỹ thuật.
Tiếng Anh
[6] Nermina ZAIMOVIC-UZUNOVIC, Samir LEMES - INFLUENCES OF SURFACE PARAMETERS ON LASER 3D SCANNING, University of Zenica,
LUẬN VĂN THẠC SỸ KHOA HỌC
PHỤ LỤC
function varargout = maydoquetlaser_bemat(varargin)
% MAYDOQUETLASER_BEMAT MATLAB code for maydoquetlaser_bemat.fig % MAYDOQUETLASER_BEMAT, by itself, creates a new
MAYDOQUETLASER_BEMAT or raises the existing % singleton*.
% H = MAYDOQUETLASER_BEMAT returns the handle to a new MAYDOQUETLASER_BEMAT or the handle to
% the existing singleton*. %
MAYDOQUETLASER_BEMAT('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAYDOQUETLASER_BEMAT.M with the given input arguments.
% MAYDOQUETLASER_BEMAT('Property','Value',...) creates a new MAYDOQUETLASER_BEMAT or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before maydoquetlaser_bemat_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application % stop. All inputs are passed to maydoquetlaser_bemat_OpeningFcn via varargin.
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help maydoquetlaser_bemat % Last Modified by GUIDE v2.5 26-May-2013 23:53:09
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @maydoquetlaser_bemat_OpeningFcn, ...
'gui_OutputFcn', @maydoquetlaser_bemat_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
LUẬN VĂN THẠC SỸ KHOA HỌC
69
PHẠM NGỌC LINH 11BCTM.KH
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before maydoquetlaser_bemat is made visible.
function maydoquetlaser_bemat_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn. % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to maydoquetlaser_bemat (see VARARGIN) % Choose default command line output for maydoquetlaser_bemat
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
global cam com nguong vid camconect L H f L0 H0 f0 dolony sobuocy sobuocx resetF conect zchuan chuyen kt
kt=0; chuyen=1; com=0;dolony=0;sobuocy=0;sobuocx=0; cam=0; nguong=150; vid=0; conect=0; camconect=0; L0=43.5;H0=32;f0=10; L=L0;H=H0;f=f0; zchuan=0; reset=1;
cla(handles.axes1,'reset'); %clears the axes
cla(handles.axes2,'reset'); axis(handles.axes1,'off'); axis(handles.axes2,'off');
LUẬN VĂN THẠC SỸ KHOA HỌC
uiwait(hObject);
%clears the axes
% UIWAIT makes maydoquetlaser_bemat wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = maydoquetlaser_bemat_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure
global xyzvat
varargout{1} = xyzvat;
% --- Executes on button press in autoadj.
function autoadj_Callback(hObject, eventdata, handles)
% hObject handle to autoadj (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vid nguong L H f zchuan
if vid==0 GUI_haybatcamera; else nguong1=nguong/256; end rgb = getsnapshot(vid); rgb1=ycbcr2rgb(rgb); bw=rgb2nhiphan(rgb1,nguong1); giatri=kiem_tra_co_vet_hay_khong(bw); if giatri==1 [xc,yc]=xu_ly_anh(rgb1,bw) zvat = ham_truyen(xc,yc,L,H,f) end if zvat>0.1 k=round(zvat*100)
LUẬN VĂN THẠC SỸ KHOA HỌC
71
PHẠM NGỌC LINH 11BCTM.KH
dich_chuyen(3,k);
end
% --- Executes on button press in startdo.
function startdo_Callback(hObject, eventdata, handles)
% hObject handle to startdo (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
global toadoX toadoY buocx buocy chuyen demx demy zv kt X Y s duongdan path xyzvat starttime=clock; buocx=str2num(get(handles.sobuocx,'string')); buocy=str2num(get(handles.sobuocy,'string')); for i=1:1:toadoY(demy)/buocy +1 if chuyen==1 for j=1:1:toadoX(demx)/buocx Y(j,i)=buocy*i; X(j,i)=buocx*j; [loi]=xulyanh(i,j); if loi==1
string1{1}=strcat('Lзi t№i vЮ trЭ','X=',num2str(X(j,i)),'Y=',num2str(Y(j,i))); set(handles.tinhtrang,'String',string1);
end dich_chuyen(2,buocx*10); end chuyen=0; else for j=toadoX(demx)/buocx:-1:1 Y(j,i)=buocy*i; X(j,i)=buocx*j; [loi]=xulyanh(i,j); if loi==1
string1{1}=strcat('Lзi t№i vЮ trЭ','X=',num2str(X(j,i)),'Y=',num2str(Y(j,i))); set(handles.tinhtrang,'String',string1);
end
LUẬN VĂN THẠC SỸ KHOA HỌC end chuyen=1; end kt=kt+1; if kt < toadoY(demy)/buocy+1 dich_chuyen(4,buocy*10) end fclose(s); s=''; ket_noi(); end zv=zv'; xyzvat=[Y X zv] cd(duongdan);
dlmwrite('toadovat.txt', xyzvat, 'delimiter', '\t', 'precision', 6); cd(path); axes(handles.axes2); cla(handles.axes2); surface(Y,X,zv); axis equal; time=etime(clock,starttime);
fprintf('Thoi gian tong cong: %4.4f s\n',time)
% --- Executes on button press in luuketqua.
function luuketqua_Callback(hObject, eventdata, handles)
% hObject handle to luuketqua (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %global xvat yvat rzphi
%xvat=0; yvat=0;zcao=0; %path1=cd;
% [FileName,PathName] = uigetfile({'*.txt';'*.xls'},'Hay lua chon File du lieu dang TEXT hoac EXCEL !!!');
% cd(PathName);
% rzphi=dlmread(FileName); %set(handles.tablekq,'data',rzphi); %cd(path1);
LUẬN VĂN THẠC SỸ KHOA HỌC
73
PHẠM NGỌC LINH 11BCTM.KH
global vid nguong L H f zchuan
if vid==0 GUI_haybatcamera; else nguong1=nguong/256; end rgb = getsnapshot(vid); rgb1=ycbcr2rgb(rgb); bw=rgb2nhiphan(rgb1,nguong1); giatri=kiem_tra_co_vet_hay_khong(bw); if giatri==1 [xc,yc]=xu_ly_anh(rgb1,bw) zvat = ham_truyen(xc,yc,L,H,f) if zvat<= 3 zx=zchuan-zvat; else zx=zchuan-2*zvat; end end
function mophong_Callback(hObject, eventdata, handles)
% hObject handle to mophong (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global xyzvat
path1=cd;
[FileName,PathName] = uigetfile({'*.txt';'*.xls'},'Hay lua chon File du lieu dang TEXT hoac EXCEL !!!');
cd(PathName); xyzvat=dlmread(FileName); cd(path1); [m,n]=size(xyzvat); X=[];Y=[];Z=[]; k=n/3; j=1; for i=1:1:k Y(:,i)=xyzvat(:,i);
LUẬN VĂN THẠC SỸ KHOA HỌC end for i=k+1:1:(2*k) X(:,j)=xyzvat(:,i); j=j+1; end j=1; for i=(2*k+1):1:n Z(:,j)=xyzvat(:,i); j=j+1; end ch=[Z;Y;X]; ch1=rot90(ch); set(handles.tablekq,'data',ch); sp=reshape(ch1,[],3); cd(PathName); csvwrite('mpsolid.xyz',sp); cd(path1); axes(handles.axes2); cla(handles.axes2); surface(Y,X,Z); axis equal;
function xcando_Callback(hObject, eventdata, handles)
% hObject handle to xcando (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of xcando as text
% str2double(get(hObject,'String')) returns contents of xcando as a double % --- Executes during object creation, after setting all properties.
function xcando_CreateFcn(hObject, eventdata, handles)
% hObject handle to xcando (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
LUẬN VĂN THẠC SỸ KHOA HỌC
75
PHẠM NGỌC LINH 11BCTM.KH
set(hObject,'BackgroundColor','white');
end
function sobuocx_Callback(hObject, eventdata, handles)
% hObject handle to sobuocx (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of sobuocx as text
% str2double(get(hObject,'String')) returns contents of sobuocx as a double % --- Executes during object creation, after setting all properties.
function sobuocx_CreateFcn(hObject, eventdata, handles)
% hObject handle to sobuocx (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function ycando_Callback(hObject, eventdata, handles)
% hObject handle to ycando (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of ycando as text
% str2double(get(hObject,'String')) returns contents of ycando as a double % --- Executes during object creation, after setting all properties.
function ycando_CreateFcn(hObject, eventdata, handles)
% hObject handle to ycando (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
LUẬN VĂN THẠC SỸ KHOA HỌC
function thietlap_Callback(hObject, eventdata, handles)
% hObject handle to thietlap (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global dolony sobuocy sobuocx dolonx
dolony=str2num(get(handles.ycando,'String')); sobuocy=str2num(get(handles.sobuocy,'String')); sobuocx=str2num(get(handles.sobuocx,'String')); dolonx=str2num(get(handles.xcando,'String')); string=get(handles.thongsoht,'string'); string{5}=strcat('X=',num2str(dolonx),' B-нc
X:',num2str(sobuocx),'Y=',num2str(dolony),' B-нc Y:',num2str(sobuocy)); set(handles.thongsoht,'String',string);
set(handles.xcando,'Enable','off'); set(handles.sobuocx,'Enable','off'); set(handles.ycando,'Enable','off'); set(handles.sobuocy,'Enable','off');
% --- function choncom_Callback(hObject, eventdata, handles)
% hObject handle to choncom (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ---
function choncam_Callback(hObject, eventdata, handles)
% hObject handle to choncam (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ---
function thongso_Callback(hObject, eventdata, handles)
% hObject handle to thongsoht (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % ---
function nguongdo_Callback(hObject, eventdata, handles)
% hObject handle to nguongdo (see GCBO)
LUẬN VĂN THẠC SỸ KHOA HỌC
77
PHẠM NGỌC LINH 11BCTM.KH
% handles structure with handles and user data (see GUIDATA) global nguong cam camconect reset vid
if cam==0
msgbox('Hay Chon CAMERA','ERROR CAMERA','error');
else
set(handles.figure1,'Visible','off'); cla(handles.axes1,'reset');
axis(handles.axes1,'off'); nguong=chonnguong(cam); set(handles.figure1,'Visible','on'); axis(handles.axes1,'on'); if camconect == 0 else if reset==0 ; else
vid=videoinput('winvideo',cam,'YUY2_640x480'); bat_camera_trong_axes(vid,handles.axes1); ve_tam_ngam_muc_tieu(360,240); end end end string=get(handles.thongsoht,'string'); string{1}=strcat('Ng-мng :',num2str(nguong)); set(handles.thongsoht,'String',string);
% --- function hethongdo_Callback(hObject, eventdata, handles)
% hObject handle to hethongdo (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB