Informatyka Techniczna
Projekt
Hamulec
Opracował:
Kamil Wocka
Plan Projektu
Treść i założenia danego projektu
Wypisanie odpowiedniego programu w MatLabie do tego projektu i omówienie poszczególnych etapów do niego
Przykładowe rozwiązanie projektu
Wnioski i uwagi
Treść i założenia projektu
Dla danego hamulca takiego jak na rysunku wylicz N - siły normalne, P - siły hamowania oraz T - siły tarcia
Założenia:
Równania równowagi
Przyjąć M, a, b, c, R oraz u jako dane gdzie;
M - moment siły
R - promień koła
a - długość ramienia
b - długość ramienia
c - długość ramienia
u - współczynnik tarcia
Podstawienie swoich danych
Rysunek odpowiedni do podstawionych danych
2.1 Symboliczne obliczanie
Jeżeli wartość M byłaby powyżej zera otrzymujemy taki wzór na P:
Jeżeli wartość M byłaby poniżej zera otrzymujemy taki wzór na P:
Obliczamy wartość siły tarcia której ostateczny wzór wynosi:
Obliczamy również siły normalne działające w tym układzie których ostateczny wzór wynosi:
Teraz możemy obliczyć wartość reakcji działającej w punkcie A na osi x tj. Rax a ostateczny wzór wygląda tak:
Następnie obliczamy wartość reakcji w punkcie A na osi y tj. Ray :
Teraz liczymy wartość reakcji działających w punkcie B tj Rbx i Rby :
Wypisanie odpowiedniego programu w MatLabie do tego projektu i omówienie poszczególnych etapów do niego
Teraz zapisze program z moimi komentarzami a następnie „czysty” program bez uwag
clc funkcja czyszczenia Command Window w matlabie
clear all funkcja czyszczenia workspace (pamięci) w matlabie
M=input('Podaj moment M = ');
R=input('Podaj promień koła R = ');
b=input('Podaj ramię b = ');
a=input('Podaj ramię a = ');
c=input('Podaj ramię c = ');
u=input('Podaj współczynnik tarcia u = ') wprowadzanie swoich danych do programu
if M>0
P=(M*(b-u*c))/(u*(a+b)*R);
disp(['Wartość siły P = ' num2str(P) ' N'])
elseif M<0
P=(M*(b+u*c))/(u*(a+b)*R);
disp(['Wartość siły P = ' num2str(P) ' N'])
else
disp('Wartość momentu obrotowego jest rowna zero ')
end funkcja wyboru if w zależności czy Moment jest dodatni czy ujemny
T=M/R;
disp(['Wartość siły tarcia T = ' num2str(T) 'N'])
N=T/u;
% Epix=0
Rax=-T;
disp(['Wartość reakcji Rax = ' num2str(Rax) 'N'])
% Epiy=0
Ray=P-N;
disp(['Wartość reakcji Ray = ' num2str(Ray) 'N'])
% Epix=0
Rbx=T;
disp(['Wartość reakcji Rbx = ' num2str(Rbx) 'N'])
% Epiy=0
Rby=N;
disp(['Wartość reakcji Rby = ' num2str(Rby) 'N']) napisanie wzorów które prędzej wyliczyłem
t=linspace(0,2*pi,1000);
plot(R*sin(t),R*cos(t),'LineWidth',2);
hold on rysowanie okręgu
Ustalenie współrzędnych pomocniczych do punktu A
p=R-c; Początek łuku
k=b-c; Koniec łuku
l=linspace(0,1/2*pi,1000);
plot(-(c*sin(l)+k),(c*cos(l)+p),'b','LineWidth',2); rysowanie łuku
pbaspect('manual');
arrow3([0 0],[(sqrt(2)/2)*R (sqrt(2)/2)*R]);
text((sqrt(2)/2)*(R/2),((sqrt(2)/2)*(R*0.4)),'R','FontSize',7); rysowanie promienia koła
j=linspace(-k,0);
plot(j,0*j+R,'b','LineWidth',2); Rysuje linię od końca łuku do punktu B na osi x
w=linspace(0,a);
plot(w,0*w+R,'LineWidth',2); Rysuje linię od B na osi x o długości a
Bx=R/7*[-1 0 1 -1];
By=R/7*[-1 0 -1 -1];
plot(ox,oy,'LineWidth',2);
text(-1/8*R,1/7*R*0+0.05*R,'B','FontSize',7); Rysunek podpory bębna
Ax=[-1*(R/7)-b -b -b+1*(R/7) -1*(R/7)-b];
Ay=[-1*(R/7)+p p -1*(R/7)+p -1*(R/7)+p];
plot(o1x,o1y,'LineWidth',2);
text(-b-b/15,p+c/10,'A','FontSize',7); Rysunek podpory łuku
lcd=linspace(-b,-6/8*b);
plot(lcd,lcd*0+p,'black');
lcg=linspace(-7/8*b,0);
plot(lcg,lcg*0+R,'black'); Rysowanie lini pomocniczych do dł 'c'
arrow3([-13/16*b R],[-13/16*b p]);
arrow3([-13/16*b p],[-13/16*b R]);
text(-12.8/16*b,(p+1/2*c),'c','FontSize',7); Linia wymiarowa c
lpl=linspace(p,R+1/2*c);
plot(0*lpl-b,lpl,'black');
lpp=linspace(0,R+1/2*c);
plot(0*lpp,lpp,'black'); Rysowanie lini pomocniczych do dł 'b'
arrow3([-b R+3/8*c],[0 R+3/8*c]);
arrow3([0 R+3/8*c],[-b R+3/8*c]);
text(-b/2,R+c/2,'b','FontSize',7); Linia wymiarowa b
arrow3([0 R+3/8*c],[a R+3/8*c]);
arrow3([a R+3/8*c],[0 R+3/8*c]);
text(a/2,R+c/2,'a','FontSize',7); Linia wymiarowa a
if P>0
arrow3([a R+c],[a R]);
text(a+0.05*a,R+c/2,'P','FontSize',7);
else P<0
arrow3([a R],[a R+c]);
text(a+0.05*a,R+c/2,'P','FontSize',7);
end funkcja if ponieważ w zależności czy wyjdzie nam dodatnia czy ujemna liczba taki zwrot przyjmie siła P
if Rax>0;
arrow3([-b p],[-11.5/16*b p]);
text(-b+0.1*b,p-c*0.1,'Rax','FontSize',7);
else Rax<0;
arrow3([-b p],[-b-4.5/16*b p]);
text(-b-0.2*b,p-c*0.1,'Rax','FontSize',7);
end funkcja if ponieważ w zależności czy wyjdzie nam dodatnia czy ujemna liczba taki zwrot przyjmie reakcja Rax
if Ray>0;
arrow3([-b p],[-b p+c/2]);
text(-b+b*0.05,p+c*0.3,'Ray','FontSize',7);
else Ray<0;
arrow3([-b p],[-b p-c/2]);
text(-b+0.05*b,p-c*0.3,'Ray','FontSize',7);
end funkcja if ponieważ w zależności czy wyjdzie nam dodatnia czy ujemna liczba taki zwrot przyjmie reakcja Ray
if Rbx>0;
arrow3([0 0],[R/2 0]);
text(R/3,0-R*0.1,'Rbx','FontSize',7);
else Rbx<0;
arrow3([0 0],[-R/2 0]);
text(-R/3,0-R*0.1,'Rbx','FontSize',7);
end funkcja if ponieważ w zależności czy wyjdzie nam dodatnia czy ujemna liczba taki zwrot przyjmie reakcja Rbx
if Rby>0;
arrow3([0 0],[0 c/2]);
text(0+R*0.05,R/3,'Rby','FontSize',7);
else Rby<0;
arrow3([0 0],[0 -c/2]);
text(0+R*0.05,-R/3,'Rby','FontSize',7);
end funkcja if ponieważ w zależności czy wyjdzie nam dodatnia czy ujemna liczba taki zwrot przyjmie reakcja Rby
axis equal funkcja aby osie przyjmowały takie same wartości
axis image; funkcja która powoduje iż osie przyjmują wartości takie aby wszystkie zwroty linie się na nim zmieściły
Teraz zapisze program już bez komentarzy aby można było go wkleić do MatLaba i sprawdzić.
clc
clear all
M=input('Podaj moment M = ');
R=input('Podaj promień koła R = ');
b=input('Podaj ramię b = ');
a=input('Podaj ramię a = ');
c=input('Podaj ramię c = ');
u=input('Podaj współczynnik tarcia u = ')
if M>0
P=(M*(b-u*c))/(u*(a+b)*R);
disp(['Wartość siły P = ' num2str(P) ' N'])
elseif M<0
P=(M*(b+u*c))/(u*(a+b)*R);
disp(['Wartość siły P = ' num2str(P) ' N'])
else
disp('Wartość momentu obrotowego jest rowna zero ')
end
T=M/R;
disp(['Wartość siły tarcia T = ' num2str(T) 'N'])
N=T/u;
% Epix=0
Rax=-T;
disp(['Wartość reakcji Rax = ' num2str(Rax) 'N'])
% Epiy=0
Ray=P-N;
disp(['Wartość reakcji Ray = ' num2str(Ray) 'N'])
% Epix=0
Rbx=T;
disp(['Wartość reakcji Rbx = ' num2str(Rbx) 'N'])
% Epiy=0
Rby=N;
disp(['Wartość reakcji Rby = ' num2str(Rby) 'N'])
t=linspace(0,2*pi,1000);
plot(R*sin(t),R*cos(t),'LineWidth',2);
hold on
p=R-c;
k=b-c;
l=linspace(0,1/2*pi,1000);
plot(-(c*sin(l)+k),(c*cos(l)+p),'b','LineWidth',2);
pbaspect('manual');
arrow3([0 0],[(sqrt(2)/2)*R (sqrt(2)/2)*R]);
text((sqrt(2)/2)*(R/2),((sqrt(2)/2)*(R*0.4)),'R','FontSize',7);
j=linspace(-k,0);
plot(j,0*j+R,'b','LineWidth',2);
w=linspace(0,a);
plot(w,0*w+R,'LineWidth',2);
Bx=R/7*[-1 0 1 -1];
By=R/7*[-1 0 -1 -1];
plot(ox,oy,'LineWidth',2);
text(-1/8*R,1/7*R*0+0.05*R,'B','FontSize',7);
Ax=[-1*(R/7)-b -b -b+1*(R/7) -1*(R/7)-b];
Ay=[-1*(R/7)+p p -1*(R/7)+p -1*(R/7)+p];
plot(o1x,o1y,'LineWidth',2);
text(-b-b/15,p+c/10,'A','FontSize',7);
lcd=linspace(-b,-6/8*b);
plot(lcd,lcd*0+p,'black');
lcg=linspace(-7/8*b,0);
plot(lcg,lcg*0+R,'black');
arrow3([-13/16*b R],[-13/16*b p]);
arrow3([-13/16*b p],[-13/16*b R]);
text(-12.8/16*b,(p+1/2*c),'c','FontSize',7);
lpl=linspace(p,R+1/2*c);
plot(0*lpl-b,lpl,'black');
lpp=linspace(0,R+1/2*c);
plot(0*lpp,lpp,'black');
arrow3([-b R+3/8*c],[0 R+3/8*c]);
arrow3([0 R+3/8*c],[-b R+3/8*c]);
text(-b/2,R+c/2,'b','FontSize',7);
arrow3([0 R+3/8*c],[a R+3/8*c]);
arrow3([a R+3/8*c],[0 R+3/8*c]);
text(a/2,R+c/2,'a','FontSize',7);
if P>0
arrow3([a R+c],[a R]);
text(a+0.05*a,R+c/2,'P','FontSize',7);
else P<0
arrow3([a R],[a R+c]);
text(a+0.05*a,R+c/2,'P','FontSize',7);
end
if Rax>0;
arrow3([-b p],[-11.5/16*b p]);
text(-b+0.1*b,p-c*0.1,'Rax','FontSize',7);
else Rax<0;
arrow3([-b p],[-b-4.5/16*b p]);
text(-b-0.2*b,p-c*0.1,'Rax','FontSize',7);
end
if Ray>0;
arrow3([-b p],[-b p+c/2]);
text(-b+b*0.05,p+c*0.3,'Ray','FontSize',7);
else Ray<0;
arrow3([-b p],[-b p-c/2]);
text(-b+0.05*b,p-c*0.3,'Ray','FontSize',7);
end
if Rbx>0;
arrow3([0 0],[R/2 0]);
text(R/3,0-R*0.1,'Rbx','FontSize',7);
else Rbx<0;
arrow3([0 0],[-R/2 0]);
text(-R/3,0-R*0.1,'Rbx','FontSize',7);
end
if Rby>0;
arrow3([0 0],[0 c/2]);
text(0+R*0.05,R/3,'Rby','FontSize',7);
else Rby<0;
arrow3([0 0],[0 -c/2]);
text(0+R*0.05,-R/3,'Rby','FontSize',7);
end
axis equal
axis image;
Przykładowe rozwiązanie projektu
Wprowadzam dane do MatLaba
Podaj moment M = 5
Podaj promień koła R = 4
Podaj ramię b = 9
Podaj ramię a = 3
Podaj ramię c = 3
Podaj współczynnik tarcia u = 1
Obliczenia wyszły takie
Wartość siły P = 0.625 N
Wartość siły tarcia T = 1.25N
Wartość reakcji Rax = -1.25N
Wartość reakcji Ray = -0.625N
Wartość reakcji Rbx = 1.25N
Wartość reakcji Rby = 1.25N
Rysunek do mojego przykładu
Wnioski i uwagi
Cały plan projektu został wypełniony. MatLab jest programem który daje wiele możliwości i dzięki takim projektom możemy je poznać. Nie mam żadnych uwag
20.01.2011
1