Sei sulla pagina 1di 4

clear all

clc
format longG
lambda=[15:0.5:30]; %vettore possibili LAMBDA
mnp=[1.5 2 2.5 3 4 5 6 8 10 12 16 20]; %vettore possibili MODULI normali i primi
due valori tolti perché troppo piccoli
beta=[10:0.5:30]; %vettore possibili BETA34
beta2=[10:0.5:30]; %vettore possibili BETA12
z3=[18:1:25]; %vettore possibili denti terza ruota
z1=[18:1:25]; %vettore possibili denti prima ruota
i34=[2.5:0.01:4.5];
sigmaamm=154; %sigmaL/Sf
M4=1209; %valore coppia in uscita
%PROCEDIMENTO:
%ipotizzo lambda, sigmamm z3 z1 e i34 -> calcolo z4 -> calcolo mn -> scelgo
%mn normalizzato superiore -> impongo interassi uguali -> i12 e z2 ->
%calcolo il m12 e mn12 -> prendo mn12 normalizzato -> ricalcolo interasse12
%-> controllo errore interasse e trasmissione

for j6=1:length(beta2)
for j5=1:length(i34)
for j4=1:length(z1)
for j3=1:length(z3)
for j2=1:length(lambda)
for j1=1:length(beta)
z4=floor(z3(j3).*i34(j5)); %calcolo z4 arrotondato usando
il rapporto di trasmissione
i34v(j5)=z4./z3(j3); %ricalcolo il rapporto usando z4
arrotondato
M3=M4./i34v(j5); %valore coppia nel pignone 3
zv3=z3(j3)/cos(beta(j1).*pi./180)^3; %calcolo z3
equivalente

epsilon=lambda(j2).*sin(beta(j1).*pi./180)./pi; %rapporto
di ricomprimento

mn34=((2.*M3.*1000.*Y(zv3).*cos(beta(j1).*pi./180))./(sigmaamm.*z3(j3).*lambda(j2))
).^(1/3); %calcolo del MODULO in mm

%ciclo for per il calcolo del modulo mn34 normalizzato


for j=1:length(mnp)
j;
if mn34<=mnp(j)
break
end
end
mn34=mnp(j); %scelta del modulo normalizzato appena
superiore a quello calcolato

m34=mn34./cos(beta(j1).*pi./180); %calcolo modulo frontale


m34
a34=m34./2.*(z3(j3)+z4); %calcolo interasse

i12=20.9./i34v(j5); %calcolo rapporto i12 partendo da i


totale e da i34
z2=z1(j4).*i12; %calcolo z2
z2=floor(z2); %prendo z2 arrotondato
i12=z2./z1(j4); %ricalcolo i12 con z2 arrotondato
i=i12.*i34v(j5); %calcolo il rapporto di trasmissione reale

erroretrasmissione=100.*(abs(i-20.9))./20.9; %calcolo
l'errore di trasmissione

a12=a34; %impongo interassi uguali


m12=a12./((z1(j4)+z2)./2); %calcolo modulo frontale m12
partendo dal z1, z2 e a12
mn12=m12.*cos(beta2(j6).*pi./180); %calcolo mn12

%ciclo for per il calcolo del modulo mn12 normalizzato


for j=1:length(mnp)
j;
if mn12<=mnp(j)
break
end
end
mn12=mnp(j); %scelta del modulo normalizzato appena
superiore a quello calcolato
m12=mn12./cos(beta2(j6).*pi./180); %ricalcolo modulo
frontale m12 usando mn12 normalizzato
a12=m12./2.*(z1(j4)+z2); %ricalcolo interasse a12

erroreassi=abs(a12-a34); %errore assi non deve essere


maggiore o minore di 0.01mm
ingombro=a12+(m12.*z2+m34.*z4)./2; %ingombro non deve
essere maggiore o minore del 20%
ingombrolaterale=max([m12*z2 m34*z4]);
if erroreassi>0.01 %ciclo per eliminare combinazioni che
non rispettano la coassialità
mn12=10000;
mn34=10000;
ingombro=10000;
end
ingombri(j1)=ingombro;
end
v(j2)=min(ingombri);
end
W(j3)=min(v);
end
Z(j4)=min(W);
end
U(j5)=min(Z);
end
P(j6)=min(U);
end
risultato=min(P);

%ripeto l'intero codice per ricavare i parametri delle ruote


%quando il codice arriva ad un valore di ingombro uguale a quello ottenuto
%con il codice precedente, si ferma tutto e vengono estratti i parametri
for j6=1:length(beta2)
for j5=1:length(i34)
for j4=1:length(z1)
for j3=1:length(z3)
for j2=1:length(lambda)
for j1=1:length(beta)
z4=floor(z3(j3).*i34(j5)); %calcolo z4 arrotondato usando
il rapporto di trasmissione
i34v(j5)=z4./z3(j3); %ricalcolo il rapporto usando z4
arrotondato
M3=M4./i34v(j5); %valore coppia nel pignone 3
zv3=z3(j3)/cos(beta(j1).*pi./180)^3; %calcolo z3
equivalente

epsilon=lambda(j2).*sin(beta(j1).*pi./180)./pi; %rapporto
di ricomprimento

mn34=((2.*0.7.*M3.*1000.*Y(zv3).*cos(beta(j1).*pi./180))./(sigmaamm.*z3(j3).*lambda
(j2))).^(1/3); %calcolo del MODULO in mm

%ciclo for per il calcolo del modulo mn34 normalizzato


for j=1:length(mnp)
j;
if mn34<=mnp(j)
break
end
end
mn34=mnp(j); %scelta del modulo normalizzato appena
superiore a quello calcolato

m34=mn34./cos(beta(j1).*pi./180); %calcolo modulo frontale


m34
a34=m34./2.*(z3(j3)+z4); %calcolo interasse

i12=20.9./i34v(j5); %calcolo rapporto i12 partendo da i


totale e da i34
z2=z1(j4).*i12; %calcolo z2
z2=floor(z2); %prendo z2 arrotondato
i12=z2./z1(j4); %ricalcolo i12 con z2 arrotondato
i=i12.*i34v(j5); %calcolo il rapporto di trasmissione reale

erroretrasmissione=100.*(abs(i-20.9))./20.9; %calcolo
l'errore di trasmissione

a12=a34; %impongo interassi uguali


m12=a12./((z1(j4)+z2)./2); %calcolo modulo frontale m12
partendo dal z1, z2 e a12
mn12=m12.*cos(beta2(j6).*pi./180); %calcolo mn12

%ciclo for per il calcolo del modulo mn12 normalizzato


for j=1:length(mnp)
j;
if mn12<=mnp(j)
break
end
end
mn12=mnp(j); %scelta del modulo normalizzato appena
superiore a quello calcolato
m12=mn12./cos(beta2(j6).*pi./180); %ricalcolo modulo
frontale m12 usando mn12 normalizzato
a12=m12./2.*(z1(j4)+z2); %ricalcolo interasse a12

erroreassi=abs(a12-a34); %errore assi non deve essere


maggiore o minore di 0.01mm
ingombro=a12+(m12.*z2+m34.*z4)./2; %ingombro non deve
essere maggiore o minore del 20%
ingombrolaterale=max([m12*z2 m34*z4]); %ingombro laterale
non deve essere maggiore o minore del 20%
if erroreassi>0.01
mn12=10000;
mn34=10000;
ingombro=10000;
end
ingombri(j1)=ingombro;
if ingombro==risultato
break
end
end
v(j2)=min(ingombri);
if ingombro==risultato
break
end
end
W(j3)=min(v);
if ingombro==risultato
break
end
end
Z(j4)=min(W);
if ingombro==risultato
break
end
end
U(j5)=min(Z);
if ingombro==risultato
break
end
end
P(j6)=min(U);
if ingombro==risultato
break
end
end
risultato=min(P);

beta2=beta2(j6)
beta1=beta(j1)
lambda=lambda(j2)
ingombro
ingombrolaterale
z3=z3(j3)
z1=z1(j4)
z2
z4
mn34
mn12

Potrebbero piacerti anche