Tải bản đầy đủ - 0 (trang)
6 Sơ đồ nguyên lý mạch điều khiển cách tay robot

6 Sơ đồ nguyên lý mạch điều khiển cách tay robot

Tải bản đầy đủ - 0trang

Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

(lên xuống) là D4 kết nối với các chân STEP tương ứng trong các

driver động cơ để điều khiển chiều quay.

Khâu ba với chân điều khiển là D3 của IC Atmega328 được kết

nối với chân DIR tương ứng trong driver động cơ, có nhiệm vụ cấp

xung từ vi điều khiển cho driver động cơ bước, chân đảo chiều quay

(lên xuống) là D2 kết nối với các chân STEP tương ứng trong các

driver động cơ để điều khiển chiều quay.

Khâu bốn với chân điều khiển là D6 của IC Atmega328 được

kết nối với chân DIR tương ứng trong driver động cơ, có nhiệm vụ

cấp xung từ vi điều khiển cho driver động cơ bước, chân đảo chiều

quay (lên xuống) là D7 kết nối với các chân STEP tương ứng trong

các driver động cơ để điều khiển chiều quay.

Đối với tay gắp vì sử dụng mortor servo nên chỉ có một chân

điều khiển là D12 của IC Atmega328 để đóng mở tay gắp.

4.7 Khảo nghiệm

Thử nghiệm cánh tay hoạt động với giá trị theta 1 = 10 o,

theta 2=0o, theta 3=0o, theta 4=0o, theta 5=0o thì matlab thực hiện

và hiển thị tọa độ x, y, z , thực hiện giá trị trên 10 lần và đo giá trị

thực tế được bảng (đơn vị mm).

Bảng 4.2 Bảng khảo sát hoạt động của robot 5 bậc.

Số lần

1

2

3

4

5

6

7

8

9

10

Trung bình

Phương sai

Độ lệch chuẩn



Truc x

610

610

611

609

610

610

611

612

610

609

610.2

0.68

0.82



Trục y

222

221

222

223

224

224

221

223

224

223

222.7

0.96

0.97

56



Trục z

193

192

193

193

194

192

194

193

192

193

192.9

0.54

0.73



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

Kết luận: Từ bảng khảo sát cho thấy khi nhập giá trị theta 1

=10o, theta 2=0o, theta 3=0o, theta 4=0o, theta 5=0o thì khoảng sai

số của các trục x,y,z là 0.97



Chương 5

KẾT LUẬN VÀ ĐỀ NGHỊ

5.1 Kết luận

Sau thời gian nghiên cứu và thực hiện của nhóm dưới sự hướng

dẫn của giáo viên hướng dẫn đã hoàn thành được đề tài “Thiết kế,

chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics matlab”và

đạt được một số kết quả như sau:

Thiết kế cánh tay Robot 5 bậc trên solidworks.

Chế tạo và khảo nghiệm cánh tay Robot 5 bậc.

Kết luận: Điều khiển được cánh tay robot với tọa độ muốn nhập

vào.

5.2 Đề nghị

Do thời gian có hạn nên chỉ thiết kế mơ hình Robot 5 bậc dùng

để khảo nghiệm trên phần mềm Matlab nên có một số sai sót dẫn

đến sai số so với tính tốn, thiết kế ban đầu.

Phát triển hơn có thể chế tạo mơ hình gắp được vật tại vị trí

mình muốn.



57



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap



TÀI LIỆU THAM KHẢO

TIẾNG VIỆT

[1] .Vương Thành Tiên, Bài giảng nguyên lý máy, ĐHNL.

[2]. Nguyễn Hữu Lộc , Bài giảng cơ sở thiết kế máy, Nhà xuất bản Đại học Quốc gia

Thành Phố Hồ Chí Minh.

[3]. Dương Minh Trí, Linh kiện điện tử, Nhà xuất bản Khoa học và kỹ thuật 2004.

[4]. Nguyễn Viết Đảm,Mô phỏng hệ thống viễn thông và ứng dụng Matlab, Nhà xuất

bản Bưu Điện 2007.

[5]. Nguyễn Phùng Quang, Matlab và Simulink , Nhà xuất bản Khoa học và kỹ thuật.

TIẾNG NƯỚC NGOÀI

[6]. Michael Margolis (2011), Arduino Cookbook.



58



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap



PHỤ LỤC

Code tạo cánh tay robot trên GUI Matlab

function varargout = nhan(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name',

mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @nhan_OpeningFcn, ...

'gui_OutputFcn', @nhan_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end



function nhan_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);



function varargout = nhan_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;



function Theta_1_Callback(hObject, eventdata, handles)

function Theta_1_CreateFcn(hObject, eventdata, handles)

if

ispc

&&

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end



function Theta_2_Callback(hObject, eventdata, handles)

function Theta_2_CreateFcn(hObject, eventdata, handles)

if

ispc

&&

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

59



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

set(hObject,'BackgroundColor','white');

end



function Theta_3_Callback(hObject, eventdata, handles)

function Theta_3_CreateFcn(hObject, eventdata, handles)

if

ispc

&&

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end



function Theta_4_Callback(hObject, eventdata, handles)

function Theta_4_CreateFcn(hObject, eventdata, handles)

if

ispc

&&

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end



function Theta_5_Callback(hObject, eventdata, handles)

function Theta_5_CreateFcn(hObject, eventdata, handles)

if

ispc

&&

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function pushbutton3_Callback(hObject, eventdata, handles)

Th_1 = str2double(handles.Theta_1.String)*pi/180;

Th_2 = str2double(handles.Theta_2.String)*pi/180;

Th_3 = str2double(handles.Theta_3.String)*pi/180;

Th_4 = str2double(handles.Theta_4.String)*pi/180;

Th_5 = str2double(handles.Theta_5.String)*pi/180;

L_1 = 193;

L_2 = 400;

L_3 = 250;

L_4 = 190;

L_5 = 110;

L(1) = Link([0 L_1 0 pi/2]);

L(2) = Link([0 0 L_2 0]);

L(3) = Link([0 0 L_3 0]);

L(4) = Link([0 0 L_4 0]);

L(5) = Link([0 0 L_5 0]);

60



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

Robot = SerialLink(L);

Robot.name = 'nhan';

Robot.plot([Th_1 Th_2 Th_3 Th_4 Th_5]);

T = Robot.fkine([Th_1 Th_2 Th_3 Th_4 Th_5]);

board = arduino('COM5','Uno');

Code xuất xung xuống khâu một (bàn xoay).

t2=0;

t1=get(handles.Theta_1,'string');

t2=str2num(t1);

DIR2 = 8;

PWM2 = 9;

PUL2 = abs(t2)*(200/360)*144;

writeDigitalPin(board,DIR2,1);

y = 0;

while (y <= PUL2)

abs(y)

if t2<0

writeDigitalPin(board,DIR2,1);

y=y+1;

disp('Xung Theta_1:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

else

writeDigitalPin(board,DIR2,0);

y=y+1;

disp('Xung Theta_1:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

end

end

Code xuất xung xuống khâu hai, ba, bốn

t4=0;

t3=get(handles.Theta_2,'string');

t4=str2num(t3);

DIR2 = 4;

PWM2 = 5;

61



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

PUL2 = abs(t4)*(200/360)*144;

writeDigitalPin(board,DIR2,1);

y = 0;

while (y <= PUL2)

abs(y)

if t2<0

writeDigitalPin(board,DIR2,1);

y=y+1;

disp('Xung Theta_2:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

else

writeDigitalPin(board,DIR2,0);

y=y+1;

disp('Xung Theta_2:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

end

end

t6=0;

t5=get(handles.Theta_3,'string');

t6=str2num(t5);

DIR2 = 2;

PWM2 = 3;

PUL2 = abs(t6)*(1600/360)*(24/5);

writeDigitalPin(board,DIR2,1);

y = 0;

while (y <= PUL2)

abs(y)

if t2<0

writeDigitalPin(board,DIR2,1);

y=y+1;

disp('Xung Theta_3:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

else

62



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

writeDigitalPin(board,DIR2,0);

y=y+1;

disp('Xung Theta_3:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

end

end

t8=0;

t7=get(handles.Theta_4,'string');

t8=str2num(t7);

DIR2 = 7;

PWM2 = 6;

PUL2 = abs(t8)*(3200/360)*(12/5);

writeDigitalPin(board,DIR2,1);

y = 0;

while (y <= PUL2)

abs(y)

if t8<0

writeDigitalPin(board,DIR2,1);

y=y+1;

disp('Xung Theta_4:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

else

writeDigitalPin(board,DIR2,0);

y=y+1;

disp('Xung Theta_4:');

disp(y);

writeDigitalPin(board,PWM2, 1);

pause(0.00001);

writeDigitalPin(board,PWM2, 0);

pause(0.00001);

end

else

handles.Pos_X.String=num2str(floor(T(1,4)));

handles.Pos_Y.String=num2str(floor(T(2,4)));

handles.Pos_Z.String=num2str(floor(T(3,4)));

end

63



Thiết kế, chế tạo và mô phỏng robot 5 bậc sử dụng toolbox robotics

matlap

code điều khiển tay gắp

b = get(hObject,'Value');

motor = servo(board,'D10');

writePosition(motor,b);

function axes3_CreateFcn(hObject, eventdata, handles)

function slider1_Callback(hObject, eventdata, handles)

global board;

clear D2;

b = get(hObject,'Value');

global board;

mn = servo(board,'D2');

writePosition(mn,b);

function slider1_CreateFcn(hObject, eventdata, handles)

if

isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor',[.9 .9 .9]);

end



64



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

6 Sơ đồ nguyên lý mạch điều khiển cách tay robot

Tải bản đầy đủ ngay(0 tr)

×