Вы находитесь на странице: 1из 2

clc;clear all;close all;

% Entrada de dados ----------------------------------------------------


prompt{1}='Digite o valor do menor elo (a): ';
prompt{2}='Digite o valor do maior elo (d): ';
prompt{3}='Digite o valor do elo b: ';
prompt{4}='Digite o valor de elo oposto ao elo a (c): ';
prompt{5}='Digite o valor de theta2: ';
title='Dados de Entrada';
respostas=inputdlg(prompt,title,[1 50]); %recebe os valores da janela
vetor1=str2double(respostas); %converte os caracteres para nmerico
a=vetor1(1);d=vetor1(2);b=vetor1(3);c=vetor1(4);
th=degtorad(vetor1(5)); %armazena e converte para radianos

% Condio de Grashof--------------------------------------------------
if a+d<c+b
disp('Mecanismo de Grashof');
disp ('Mecanismo Classe I. O movimento depender do elo fixo');
if a<d
disp('Elo fixo= (a) - Mecanismo Dupla Manivela');
elseif
disp('Elo fixo= (d) - Mecanismo Manivela seguidor');
disp('Elo fixo= (b ou c) - Mecanismo Duplo Balancim');
v1=1; %variavel controladora. caracteriza o atendimento da condio
end
elseif a+d>c+b
disp ('Mecanismo no Grashof');
disp ('Mecanismo Classe II. Nenhum elo capaz de girar
completamente');
v2=2;%variavel controladora. caracteriza o atendimento da condio
elseif a+d==c+b
disp('Mecanismo no Grashof');
disp ('mecanismo Classe III. Todas as configuraes sero dupla
manivela');
v3=2;%variavel controladora. caracteriza o atendimento da
condioou manivela seguidor com configurao incerta');
end

% Clculo de parametros------------------------------------------------
AC=sqrt(a^2+d^2-2*a*d*cos(th)); % calculo o segmento AC - Barra AC em funo do
ngulo theta2 de entrada
th1=acos((d^2+(AC^2)-a^2)/(2*d*AC));
th2=acos(((AC^2)+b^2-c^2)/(2*AC*b));
th3=(th2-th1);
y=acos((b^2+c^2-a^2-d^2+2*a*d*cos(th))/(2*b*c));% ngulo de transmisso

% Rotinas de plotagem--------------------------------------------------
valor1=input('Para ver figura em condio inicial digite 1, para movimento
digite 2:: ');
if valor1==1
plot([0 a*cos(th)], [0 a*sin(th)],'o-');hold on; % desenha barra [OA]
plot([a*cos(th) a*cos(th)+b*cos(th3)], [a*sin(th) a*sin(th)+b*sin(th3)],
'bo-'); hold on; % desenha barra [AC]
plot([0 d], [0 0], 'ro-'); hold on; % Desenha barra [OD]
plot([d a*cos(th)+b*cos(th3)], [0 a*sin(th)+b*sin(th3)], 'bo-');hold off;
%Desenha barra [CD]
axis([-10 20 -10 10]);
elseif valor1==2
for th=0:0.1:8*pi;
plot([0 a*cos(th)], [0 a*sin(th)],'o-');hold on; % desenha barra [OA]
plot([a*cos(th) a*cos(th)+b*cos(th3)], [a*sin(th) a*sin(th)+b*sin(th3)],
'bo-'); hold on; % desenha barra [AC]
plot([0 d], [0 0], 'ro-'); hold on; % Desenha barra [OD]
plot([d a*cos(th)+b*cos(th3)], [0 a*sin(th)+b*sin(th3)], 'bo-');hold off;
%Desenha barra [CD]
axis([-10 20 -10 10]);
pause(0.1);
end
end
%Dados de Sada --------------------------------------------------------
disp('---------Dados de sada----------');
disp('Angulos em Graus ');
fprintf('Theta1: %.4f\n', rad2deg(th1));
fprintf('Theta2: %.4f\n', rad2deg(th));
fprintf('Theta3: %.4f\n', rad2deg(th2));
fprintf('Theta4: %.4f\n', rad2deg(th3));
fprintf('Ax: %.4f\n', (a*cos(th)));
fprintf('Ay: %.4f\n', (a*sin(th)));
fprintf('Bx: %.4f\n', (d+c*cos(th)));
fprintf('By: %.4f\n', (c*sin(th)));
fprintf('Angulo de transmisso: %.4f\n', rad2deg(y));

break

Вам также может понравиться