Bài toán xây dựng họa đồ vị trí cơ cấu

Một phần của tài liệu NGHIÊN CỨU ĐỘNG LỰC HỌC CƠ CẤU SỬ DỤNG PHẦN MỀM MATLAB-SIMULINK (Cơ cấu bốn khâu bản lề, Tay quay con trượt, Culit) (Trang 30)

Điểm A ≡ O, tọa độ của A là xA = 0, yA = 0, xD = 0.3 và yD = 0, góc giữa khâu 1 và phương x là  = 1350 = 3π/4.

Các giá trị , vectơ vị trí rA và rD được giới biểu diễn trong MATLAB như sau: AB = 0,1; BC = 0.35; CD = 0.3; xA = 0; yA = 0; phi = 3pi/4; rA = [xA yA 0]; rD = [xD yD 0]; Vị trí của điểm B:

-31- xB = AB cos 

yB = AB sin 

Chương trình MATLAB nhập vào: xB = AB*cos(phi); yB = AB*sin(phi); rB = [xB yB 0];

Vị trí của điểm C: Tọa độ C thỏa mãn phương trình: (xC - xB) 2 + (yC - yB) 2 = BC2,

(xC - xD) 2 + (yC - yD) 2 = CD2,

Phương trình bậc hai này có hai nghiệm nên sẽ có hai giá trị xC và yC tìm được (C1 và C2). Chương trình MATLAB để tính toán tọa độ của C1 và C2 là:

eqnC1='(xCsol - xB)^2 +(yCsol - yB)^2 = BC^2 '; eqnC2='(xCsol - xD)^2 +(yCsol - yD)^2 = CD^2 '; solC = solve(eqnC1, eqnC2, 'xCsol, yCsol'); xCpositions = eval(solC.xCsol);

yCpositions = eval(solC.yCsol); % Thành phần đầu tiên của C (xC)

xC1 = xCpositions (1);

% Thành phần thứ hai của xC xC2 = xCpositions(2);

% Thành phần đầu tiên của yC yC1 = yCpositions(1);

% Thành phần thứ hai của yC yC2 = yCpositions(2);

Trong đó: xCsol chính là ẩn xC chưa biết.

Để giải một phương trình hoặc hệ phương trình 'eqn1','eqn2',

...,'eqnN' với các biến là 'var1','var2',...'varN‟.

Trong Matlab có câu lệnh:

solve(„eqn1‟,„eqn2‟...„eqnN‟,‟var1‟,‟var2‟,..varN‟; Do vậy để tìm xCsol của phương trình:

-32-

eqnC1='(xCsol - xB)^2 +(yCsol - yB)^2 = BC^2 '; eqnC2='(xCsol - xD)^2 +(yCsol - yD)^2 = CD^2 '; Thì cần thực hiện câu lệnh là:

solC = solve(eqnC1, eqnC2, 'xCsol, yCsol'); Với điều kiện ràng buộc của cơ cấu là xC < xD, chương trình Matlab để tìm ra vị trí chính xác của C như sau:

if xC1 < xD xC = xC1; yC = yC1; else xC = xC1;

yC=yC1; end;

rC = [xC yC 0];

Trong đó hình thức chung của câu lệnh if là: If “điều kiện 1” else “điều kiện 2” end. Các góc giữa khâu 2, 3 với trục hoành là:

∅2 = 𝑎𝑟𝑐𝑡𝑎𝑛𝑦𝐵 −𝑦𝐶 𝑥𝐵 −𝑥𝐶

∅3 = 𝑎𝑟𝑐𝑡𝑎𝑛𝑦𝐷 −𝑦𝐶 𝑥𝐷−𝑥𝐶 + 𝜋

Trong MATLAB sử dụng các câu lệnh sau:

phi2 = atan((yB-yC)/(xB-xC)); phi3 = atan((yD-yC)/(xD-xC))+pi; Hiển thị các kết quả trên cửa sổ làm việc của Matlab:

fprintf('phi = %g (do)\n', phi*180/pi) (adsbygoogle = window.adsbygoogle || []).push({});

fprintf('rA = [ %g, %g, %g ] (m)\n', rA) fprintf('rD = [ %g, %g, %g ] (m)\n', rD) fprintf('rB = [ %g, %g, %g ] (m)\n', rB) fprintf('rC = [ %g, %g, %g ] (m)\n', rC) fprintf('phi2 = %g (do) \n', phi2*180/pi); fprintf('phi3 = %g (do) \n', phi3*180/pi);

Câu lệnh fprintf (f, format, s) sử dụng để ghi dữ liệu trong một phần của mảng

s tới tập tin f. Dữ liệu được định dạng dưới sự kiểm soát của các chuỗi format xác

-33-

Vẽ họa đồ cơ cấu:

plot([xA,xB],[yA,yB],'k-o','LineWidth',1.5); hold on ; plot([xB,xC],[yB,yC],'b-o','LineWidth',1.5); hold on; plot([xC,xD],[yC,yD],'r-o','LineWidth',1.5) grid on; xlabel('x (m)'),... ylabel('y (m)'),...

title('Hoa do vi tri co cau tai\phi=45 (do)'),... text(xA,yA,'\leftarrow A = ',... 'HorizontalAlignment','left'),... text(xB,yB,'B'),... text(xC,yC,'\leftarrow C ',... 'HorizontalAlignment','left'),... text(xD,yD,'\leftarrow D ',... 'HorizontalAlignment','left'),... axis([-0.2 0.5 -0.1 0.35]);

Họa đồ vị trí cơ cấu được vẽ bằng lệnh plot. Câu lệnh plot (x, y,A) sẽ vẽ ra

tọa độ điểm A theo x và y.

Đường AB được vẽ là màu đen (K), đường liền (-: solid), với một vòng tròn (o: vòng tròn) tại mỗi điểm biểu diễn cho các khớp quay ; đường BC là màu xanh (b: blue), đường liền với một vòng tròn ở mỗi điểm dữ liệu; đường CD là màu đỏ (r: red), đường liền với một vòng tròn ở mỗi điểm dữ liệu;

'LineWidth',1.5: Là chiều rộng của nét vẽ các đường là 1,5 mm Trục x và trục y được ghi chú bằng cách sử dụng lệnh:

xlabel ('x (m))

ylabel ('y (m))

và tên biểu đồ:

title('Hoa do vi tri co cau tai goc \phi=45(do)') Dấu phẩy và dấu ngoặc đơn (...) sau mỗi câu lệnh được sử dụng để thực hiện

-34-

nối các câu lệnh với nhau. Nếu không, các dữ liệu sẽ được vẽ, sau đó các tiêu đề sẽ được chèn thêm vào và các dữ liệu cũ.

Câu lệnh axis([xMIN xMAX yMIN yMAX]) để đặt các giá trị tỉ lệ tương ứng các trục x và y trên họa đồ. Để cải thiện khả năng quan sát trên họa đồ, một

lưới cơ sở đã được thêm vào nhờ câu lệnh grid.

Chạy chương trình Matlab ở phụ lục A.1 sẽ đưa ra kết quả tính toán như sau:

Họa đồ cơ cấu do Matlab vẽ được như sau:

Hình 3.2. Họa đồ vị trí xây dựng trên Matlab. Kết quả tính toán hiển thị trên cửa sổ làm việc của Matlab:

Bai toan vi tri co cau bon khau ban le: phi = 135 (do) rA = [ 0, 0, 0 ] (m) rD = [ 0.3, 0, 0 ] (m) rB = [ -0.0707107, 0.0707107, 0 ] (m) rC = [ 0.206082, 0.28492, 0 ] (m) phi2 = 37.7362 (do) phi3 = 108.244 (do) >>

-35-

Một phần của tài liệu NGHIÊN CỨU ĐỘNG LỰC HỌC CƠ CẤU SỬ DỤNG PHẦN MỀM MATLAB-SIMULINK (Cơ cấu bốn khâu bản lề, Tay quay con trượt, Culit) (Trang 30)