




















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Neste documento, é apresentada a solução de um problema de cálculo de momentos e forças em máquinas. O programa java utiliza a biblioteca jfreechart para criar gráficos de momentos e forças em eixos x, y e z. O problema envolve a determinação do momento e força cortante em um eixo, além do cálculo dos momentos de inércia e massa de um corpo. O documento também inclui a verificação de condições de escoamento e fadiga, e a determinação de diâmetros mínimos.
Tipologia: Exercícios
1 / 28
Esta página não é visível na pré-visualização
Não perca as partes importantes!





















Implementar um programa que, a partir da tensão máxima admissível do material do eixo e das forças
decompostas e aplicadas em determinados pontos do eixo, dimensione o diâmetro mínimo do eixo de
comprimento desejado.
Fig. 1 – Esboço do eixo
z
x
y
Fig. 2 –Orientação dos eixos coordenados
A partir de um eixo inicial de diâmetro zero, o programa calcula as tensões principais do bordo da
primeira seção do eixo e, com estes valores, calcula as tensões equivalentes através do Critério de Von Misses
para cada ponto do bordo. Adota-se a maior tensão equivalente para calcular o diâmetro desta seção, se
tornando este o diâmetro do eixo. Posteriormente é feito o cálculo em uma segunda seção do eixo, obtendo-se
um novo diâmetro de eixo, se este for maior que o anterior, se adota este como o novo diâmetro do eixo. Caso
contrário, se mantém. E assim sucessivamente, até que ao se “vasculhe” toda a extensão do eixo, teremos
assim o diâmetro definitivo do eixo desejado.
1 2
1
1 2
1
z az z z
z az z
z az
y ay y y
y ay y
y ay
¾ Momentos fletores:
1 1 2 2
1 1
1 1 2 2
1 1
z ay y x y x
z ay y x
z ay
y az z x z x
y az z x
y az
¾ Momento torçor:
1 1
t
t y z
t
Z
Mz
Vz Vy My N Mt
X Y
¾ Tensão causada pela força normal N:
2 .
d
N
A
N
s
x
¾ Tensão causada pelos momentos fletores My e Mz :
z y y
y
z
z x
4
¾ Tensão causada pelo momento torçor Mt :
t
p
t xz
t p
t xy
4
4
¾ Tensão causada pelas forças cortantes Vy e Vz :
2 2
4
2 2
2 2
4
2 2
z
z
z
z z
z z xz
y
y
y
y y
y y
xy
Com as tensões principais, aplicamos o critério de Von Mises, obtendo assim o diâmetro necessário ao eixo:
2 2 3
2 1 3
2 1 2
. ( ) ( ) ( )
2
1 σ = σ −σ +σ −σ + σ − σ eq
obs: Nos pontos onde há o raio de arredondamento “r”, deve-se aplicar o concentrador de tensão
calculados na análise da falha por fadiga. tN tMt tf
Análise da falha por fadiga
¾ Análise dos esforços médios:
médioxy
médioxz τ decorrente do momento torçor( Mt )
¾ Análise dos esforços alternados:
σ (^) alternado →decorrente dos momentos fletores ( M (^) y e Mz )
alternadoxy
alternadoxz τ decorrente da força cortante ( Vz )
¾ Introdução das constantes de concentração de tensão:
K (^) F = 1 +( Kt − 1 ). q
K (^) F (^) f = 1 +( Ktf − 1 ). q f , onde:
69939.x - 74847.x +31824.x -6864.x +801,41.x -51,897.x + 3,
tf
e q (^) f = 0 , 76 e d
r x =
obs: foi aproximado pela equação acima através de uma regressão e dos dados retirados de Fundamentals
of Machine Component Desing, Robert C. Juvinal; assim como , que foi adaptado para uma tensão
.
t f
q f
S (^) u = 900 MPa ≅ 130 ksi
K (^) F (^) N = 1 +( KtN − 1 ). q N , onde:
37358.x - 45798.x +22456.x -5605,2.x +751,96.x -53,865.x + 3,
tf
e q (^) N = 0 , 76 e
d
r x =
obs: foi aproximado pela equação acima através de uma regressão e dos dados retirados de
Fundamentals of Machine Component Desing, Robert C. Juvinal; assim como , que foi adaptado para uma
tensão.
t N
q N
S (^) u = 900 MPa ≅ 130 ksi
K (^) F (^) Mt = 1 +( KtMt − 1 ). q Mt , onde:
77160.x - 80750.x +33422.x -6962,7.x +770,74.x -44,033.x + 2,
tf
e qMt = 0 , 80 e d
r x =
obs: foi aproximado pela equação acima através de uma regressão e dos dados retirados de
Fundamentals of Machine Component Desing, Robert C. Juvinal; assim como , que foi adaptado para uma
tensão.
t Mt
q Mt
S (^) u = 900 MPa ≅ 130 ksi
xz xz Mt
xy xy Mt
N
médio médio F
médio médio F
médio médio F
´
´
´
e
xz xz Mt
xy xy Mt
f
alternado alternado F
alternado alternado F
alternado alternado F
´
´
´
¾ Cálculo da tensão equivalente média:
[ ]
( )
( )
3
´^2 ´^2 ´^2 ´
2
´^2 ´^2 ´^2 ´
1
´
´
´ ´ ´
σ
σ σ τ τ σ
σ τ τ σ σ
τ
τ
σ τ τ
σ
xy xz
xy xz
xz
xy
xy xz médio médio médio médio
médio médio médio médio
médio
médio
médio médio médio
Adotamos como tensão equivalente média : σ (^) médio − eq = σ 1.
0 , 9 .log. 1 , 8 2
(log )
s g u l
u l s g n
S N ,p/
6 N ≤ 10
As constantes da equação acima foram retiradas de Fundamentals of Machine Component Desing, Robert
C. Juvinal, e estão apresentadas a seguir:
C p S MPa
p d mm
p d mm C
s u
g
l
¾ Analisamos agora o diagrama de tensão alternada x tensão média:
Temos, agora, duas situações à serem analisadas:
u médio eq
u alternadoeq n gráfico S
−
− − −
.
´
explicação física: a tensão alternada somada à média não pode ultrapassar a tensão de escoamento. Portanto,
alternado
S (^) n − gráfico
no primeiro ciclo, o material sofre uma pequena deformação plástica, mas a partir daí não ocorre mais
deformação.
Daí temos: ´
u médio eq
u alternadoeq n gráfico S
−
− − −
.
Para encontrarmos o diâmetro ideal, fazemos todos os cálculos das tensões e dos fatores de concentração de
tensões; e através deles, calculamos e. Comparamos ambos e realizamos sucessivas iterações,
sempre modificando o valor do diâmetro, a fim de encontrarmos o diâmetro que torna menor ou
igual à , garantindo assim a resistência à fadiga para N ciclos.
S (^) n S (^) n − gráfico
S (^) n − gráfico
S n
Código Fonte
ARQUIVO RESOLUCAO
import java.lang.*;
import java.awt.*;
// Classe que pega uma secao do eixo e calcula a tensao de Von-Mises e acha um
diametro que atende os esforcos calculados sem fraturar.
public class resolucao {
static double tensaoequi, d ; public static double resolve (double r,boolean concentrador, double tensaomax,
double N, double My, double Mz, double Mt, double Vy, double Vz) {
double z, y, teta, tensao, sigma1, sigma2, sigmax, sigmay, talxy, talxz,
I, ktf,ktn,ktm;
tensaoequi=tensaomax+1; ktf=ktn=ktm=1; if(concentrador==true) { ktf = 69939(r/d)(r/d)(r/d)(r/d)(r/d)(r/d) -
74847(r/d)(r/d)(r/d)(r/d)(r/d) + 31824(r/d)(r/d)(r/d)*(r/d) -
6864(r/d)(r/d)(r/d) + 801.41(r/d)(r/d) - 51.897(r/d) + 3.1145;
ktn = 37358(r/d)(r/d)(r/d)(r/d)(r/d)(r/d) -
45798(r/d)(r/d)(r/d)(r/d)(r/d) + 22456(r/d)(r/d)(r/d)*(r/d) -
5605.2(r/d)(r/d)(r/d) + 751.96(r/d)(r/d) - 53.865(r/d) + 3.1826;
ktm = 77160(r/d)(r/d)(r/d)(r/d)(r/d)(r/d) -
80750(r/d)(r/d)(r/d)(r/d)(r/d) + 33422(r/d)(r/d)(r/d)*(r/d) -
6962.7(r/d)(r/d)(r/d) + 770.74(r/d)(r/d) - 44.033(r/d) + 2.2003;
} N=Nktn; My=Myktf; Mz=Mzktf; Mt=Mtktm; Vy=Vyktm; Vz=Vzktm;
for(d=0.001;tensaoequi>tensaomax;d=d+0.0001) { tensaoequi=0; for(teta=0;teta<2java.lang.Math.PI;teta=teta+java.lang.Math.PI/16) { z=(d/2)java.lang.Math.cos(teta); y=(d/2)java.lang.Math.sin(teta); I = (java.lang.Math.PIdddd)/64; sigmax = 4N/(java.lang.Math.PIdd)+(-1Mzy+Myz)/I; talxy = (-1(2Mtz)/I)+(Vy((dd/12)-(y*y/3))/I);
import java.applet.Applet.*;
import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.*;
import org.jfree.chart.axis.*;
import javax.swing.table.*;
// Classe que calcula os esforcos solicitantes por todo o comprimento do eixo
class diagrama {
static void tensoes (boolean escoamento, double fx1d,double fx2d,double
fy1d,
double fy2d,double fz1d,double fz2d,double a1d,double a2d,double
b1d,double b2d,
double c1d,double c2d,double tmaxd,double ld, double qn, double qm,
double qf,
double su, double r, double ciclos, double cs) { double local=0, somaFx, somaFy, somaFz, deltald, delta, dmax, d, p,
Ktn, Ktf, Ktm,
Ray, Raz; boolean concentrador; XYSeries normal = new XYSeries("Normal"); XYSeries Cortantey = new XYSeries("Cortante Y"); XYSeries Cortantez = new XYSeries("Cortante Z"); XYSeries momentoy = new XYSeries("Momento Y"); XYSeries momentoz = new XYSeries("Momento Z"); XYSeries momentot = new XYSeries("Momento Torçor");
somaFx = fx1d+fx2d; somaFy = fy1d+fy2d; somaFz = fz1d+fz2d; delta = ld/200; dmax=0; d=0; double Rby=0; double Rbz=0;
Raz = (-fz1d(ld - a1d) - fx1dc1d - fz2d(ld-a2d) - fx2dc2d)/ld; Ray = (-fy1d(ld - a1d) - fx1db1d - fy2d(ld-a2d) - fx2db2d)/ld;
for(deltald=0; deltald<=ld; deltald=deltald+delta) {
concentrador=false;
double Normal = somaFx;
if(deltald>=a1d) Normal = Normal - fx1d; if(deltald>=a2d) Normal = Normal - fx2d;
double cortantey = -1*(Ray);
if(deltald>=a1d) cortantey = cortantey - fy1d; if(deltald>=a2d) cortantey = cortantey - fy2d;
double cortantez = -1*(Raz);
if(deltald>=a1d)
cortantez = cortantez - fz1d; if(deltald>=a2d) cortantez = cortantez - fz2d;
double My = -1(Raz)deltald;
if(deltald>=a1d) My = My - fz1d(deltald - a1d) - fx1dc1d; if(deltald>=a2d) My = My - fz2d(deltald - a2d) -fx2dc2d;
double Mz = Ray*deltald;
if(deltald>=a1d) Mz = Mz + fy1d(deltald - a1d) + fx1db1d; if(deltald>=a2d) Mz = Mz + fy2d(deltald - a2d) + fx2db2d;
double Mt;
if((deltald>=a1d)&&(deltald<=a2d)) Mt = fy1dc1d-fz1db1d; else Mt=0;
p = (deltald/ld)*100;
janelainicial.porcentagem.setText(""+p+"%");
if(((deltald>=a1d)&&((deltald-
delta)a2d))) {
concentrador=true; if(escoamento==false) d =
fadiga.calculos(Normal,Mt,My,Mz,cortantey,cortantez,r,qf,qn,qm,su,tmaxd,ciclos,cs
);
} else concentrador=false;
if(escoamento==true) d = resolucao.resolve(r,concentrador,tmaxd, Normal,
My, Mz, Mt, cortantey, cortantez);
if((deltald>=a1d)&&(deltald<=a2d)) // verifica se esta na parte
em que o eixo tem diametro maior
d=d/1.1; if(d>dmax) { dmax=d; local=deltald; } normal.add(deltald,Normal); Cortantey.add(deltald,cortantey); Cortantez.add(deltald,cortantez); momentoy.add(deltald,My); momentoz.add(deltald,Mz); momentot.add(deltald,Mt);
Rby=cortantey; Rbz=cortantez; }
coyna.setLowerBound(0); XYPlot coyplot = (XYPlot)coychart.getPlot(); coyplot.setDomainAxis(coyna); ChartPanel coycp = new ChartPanel(coychart);
/*******************MomentoY************************************/
XYDataset moyxydata = new XYSeriesCollection(momentoy); ((XYSeriesCollection)(moyxydata)).setAutoWidth(true); JFreeChart moychart = ChartFactory.createXYLineChart ("", "L", "Força", moyxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis moyna = new NumberAxis(); moyna.setUpperBound(ld); moyna.setLowerBound(0); XYPlot moyplot = (XYPlot)moychart.getPlot(); moyplot.setDomainAxis(moyna); ChartPanel moycp = new ChartPanel(moychart);
/*******************MomentoZ************************************/ XYDataset mozxydata = new XYSeriesCollection(momentoz); ((XYSeriesCollection)(mozxydata)).setAutoWidth(true); JFreeChart mozchart = ChartFactory.createXYLineChart ("", "L", "Força", mozxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis mozna = new NumberAxis(); mozna.setUpperBound(ld); mozna.setLowerBound(0); XYPlot mozplot = (XYPlot)mozchart.getPlot(); mozplot.setDomainAxis(mozna); ChartPanel mozcp = new ChartPanel(mozchart);
/*******************Momento Torçor*******************************/ XYDataset motxydata = new XYSeriesCollection(momentot); ((XYSeriesCollection)(motxydata)).setAutoWidth(true); JFreeChart motchart = ChartFactory.createXYLineChart ("", "L", "Força", motxydata, PlotOrientation.VERTICAL, true, //legenda true, //tooltips false //urls ); NumberAxis motna = new NumberAxis(); motna.setUpperBound(ld); motna.setLowerBound(0); XYPlot motplot = (XYPlot)motchart.getPlot();
motplot.setDomainAxis(motna); ChartPanel motcp = new ChartPanel(motchart);
/-------------------------------------------------------------------/
grafico.main(normalcp,"Força Normal",50,50); grafico.main(coycp,"Força Cortante Y",70,70); grafico.main(cozcp,"Força CortanteZ",90,90); grafico.main(moycp,"Momento Y",110,110); grafico.main(mozcp,"Momento Z",130,130); grafico.main(motcp,"Momento Torçor",150,150);
}
}
ARQUIVO EIXO
import java.io.*; // Classes importadas para funcionamento do programa
import java.lang.*;
import java.awt.*;
// Classe que cria a janela e delimita seu tamanho
class eixo {
public static void main(String [] args){ CloseableFrame j=new janelainicial(); // Criação da janela j.setBackground(null); // Cor da janela j.setBounds(100,100,590,460); // Dimensionamento j.setTitle ("Programa di faze eixo"); // Titulo j.setResizable(false); j.show(); // Mostra a janela }
}
ARQUIVO FADIGA
import java.io.*; //Pacotes necessarios para a funcionalidade do programa
import java.lang.*;
import java.lang.Math.*;
// Classe que pega uma secao do eixo, e calcula ao seu redor as tensoes e
verifica para que tamanho de eixo não ocorre falha por fadiga
class fadiga {
static double calculos(double N, double Mt, double My, double Mz, double Vy, double Vz, double r, double qf, double qn, double qm, double Su ,double Sy, double Ciclos, double Cs) { double d, Kff, Kfn, Kfm, sigm, siga, talmxy, talmxz, talaxy, talaxz, teta, I, sigmam, sigmaaeq, Sn, Cg, Sngraf, sigmaprovisorio, sigma1ap, sigma2ap, sigmamp;
int h=1;
Sn=sigmaprovisorio=talmxy=talaxy=talmxz=talaxz=sigma1ap=sigma2ap=sigm=sigmaaeq=si
gmam=siga=sigmamp=0;
double y=0; double z=0; Sngraf = Sn +1; for(d=0.001;Sngraf>Sn;d=d+0.0001) {
if(d<=0.01) Cg=1; else Cg=0.9; Kff = 1 + (69939(r/d)(r/d)(r/d)(r/d)(r/d)(r/d) -
74847(r/d)(r/d)(r/d)(r/d)(r/d) + 31824(r/d)(r/d)(r/d)*(r/d) -
6864(r/d)(r/d)(r/d) + 801.41(r/d)(r/d) - 51.897(r/d) + 3.1145 -1)*qf;
public void windowClosed( WindowEvent event ) { }
public void windowDeiconified( WindowEvent event ) { }
public void windowIconified( WindowEvent event ) { }
public void windowActivated( WindowEvent event ) { }
public void windowDeactivated( WindowEvent event ) { }
public void windowOpened( WindowEvent event ) { }
}
ARQUIVO JANELAINICIAL
import java.io.*; //Pacotes necessarios para a funcionalidade do programa
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.applet.Applet.*;
// Esta classe é o que define o conteudo da janela aberta
class janelainicial extends CloseableFrame implements ActionListener,
ItemListener {
Button calcula; Checkbox a,b,c,d; CheckboxGroup escolhe, Ciclos; Image img; Graphics g; Label ciclos,cs, unidades, diametro,l1, forca1, forca2, fx1, fx2, fy1, fy2,
fz1, fz2, a1, a2, b1, b2, c1, c2, tmax, l, r, qf, qn, qm, Su;
TextField CICLOS, Cs, Qf, Qn, Qm, SU, R, Fx1, Fx2, Fy1, Fy2, Fz1, Fz2, A1,
A2, B1, B2, C1, C2, Tmax, L;
double csd, ciclosd, rd, fx1d, fx2d, fy1d, fy2d, fz1d, fz2d, a1d, a2d, b1d,
b2d, c1d, c2d, tmaxd, ld, qfd, qmd, qnd, sud;
static public Label porcentagem; static public TextField Diametro;
janelainicial() { // Criação dos objetos dentro da janela
setLayout(null); l1 = new Label ("Vamo faze eixooooo"); l1.setFont(new Font("Times New Roman", Font.BOLD, 16)); l1.setForeground(Color.blue); add(l1); l1.setBounds(20,30,400,20);
unidades = new Label ("Todas as unidades devem estar em SI"); unidades.setFont(new Font("Times New Roman", Font.BOLD, 22)); unidades.setForeground(Color.red); add(unidades);
unidades.setBounds(10,350,400,50);
forca1 = new Label ("Força 1");
forca1.setFont(new Font("Times New Roman", Font.BOLD, 14));
forca1.setForeground(Color.black);
add(forca1);
forca1.setBounds(20,60,80,20);
forca2 = new Label ("Força 2");
forca2.setFont(new Font("Times New Roman", Font.BOLD, 14));
forca2.setForeground(Color.black);
add(forca2);
forca2.setBounds(20,140,80,20);
fx1 = new Label ("Fx");
fx1.setFont(new Font("Times New Roman", Font.BOLD, 14));
fx1.setForeground(Color.black);
add(fx1);
fx1.setBounds(120,60,40,20);
porcentagem = new Label ("0%");
porcentagem.setFont(new Font("Times New Roman", Font.BOLD, 20));
porcentagem.setForeground(Color.black);
add(porcentagem);
porcentagem.setBounds(510,400,65,20);
fx2 = new Label ("Fx");
fx2.setFont(new Font("Times New Roman", Font.BOLD, 14));
fx2.setForeground(Color.black);
add(fx2);
fx2.setBounds(120,140,40,20);
fy1 = new Label ("Fy");
fy1.setFont(new Font("Times New Roman", Font.BOLD, 14));
fy1.setForeground(Color.black);
add(fy1);
fy1.setBounds(120,80,40,20);
fy2 = new Label ("Fy");
fy2.setFont(new Font("Times New Roman", Font.BOLD, 14));
fy2.setForeground(Color.black);
add(fy2);
fy2.setBounds(120,160,40,20);
fz1 = new Label ("Fz");
fz1.setFont(new Font("Times New Roman", Font.BOLD, 14));
fz1.setForeground(Color.black);
add(fz1);
fz1.setBounds(120,100,40,20);
fz2 = new Label ("Fz");
fz2.setFont(new Font("Times New Roman", Font.BOLD, 14));
fz2.setForeground(Color.black);
add(fz2);
fz2.setBounds(120,180,40,20);
a1 = new Label ("a");
a1.setFont(new Font("Times New Roman", Font.BOLD, 14));
a1.setForeground(Color.black);