Assaig de tracció

A un assaig de tracció, una proveta normalitzada amb una secció $s$ es somet a un força $F$ de tracció. La tensió normal o esforç $\sigma$ generat per la força $F$ a la secció $s$ té l'expressió:

$$\sigma = \frac{F}{s}$$

Quan l'esforç en la proveta està per sota del límit elàstic ens trobem a la zona elàstica on es cumpleix la llei de Hooke

$$\sigma = E\epsilon$$

on $E$ és el mòdul de Young o Mòdul elàstic i $\epsilon$ la deformació $\epsilon = \frac{\Delta L}{L_{0}}$

Si l'esforç supera el límit elàstic ens trobarem a la zona plàstica, on ja no es cumpleix la llei de Hooke i la deformació és permanent. Si continuem aplicant esforç a aquesta zona arribarem a un màxim, després d'ell ens costarà menys esforç deformar el material fins arribar a la tensió de ruptura on el material es trenca.

Aquestes assatjos es realitzen amb instruments com el de la fotografia, on s'utilitzen provetes normalitzades del material a estudiar.

In [1]:
import numpy as np                        
import pandas as pd                       
import matplotlib.pyplot as plt           
import matplotlib.gridspec as gridspec    
import statistics as st                   
from scipy.stats import linregress        
from IPython.display import Markdown      
In [2]:
with open('data/acero_4142.npy', 'rb') as f:
    e = np.load(f)
    s = np.load(f)

e = e * 100    # treballarem amb la deformació en %
In [3]:
%matplotlib inline                               
plt.rcParams['figure.figsize'] = (16,7)           # determines the dimensions (size of the figure)
fig = plt.figure()
plt.plot(e, s)
plt.xlabel('$\epsilon$ [%]')
plt.ylabel('$\sigma$ [MPa]')
plt.title("Diagrama de tracció");

Si ens fixem en la zona elàstica, podrem fer una estimació del mòdul elàstic, agafant els punts que estan en línia recta

In [4]:
ms = linregress(e[35:102], s[35:102])
Es = ms[0]  
offset_acer = Es*(e - 0.2)
print("El Mòdul elàstic de l'acer 4142 és %d MPa" % Es )
El Mòdul elàstic de l'acer 4142 és 2022 MPa
In [5]:
%matplotlib inline                                       
plt.rcParams['figure.figsize'] = (9,7)     
plt.plot(e, s)
plt.plot(e, offset_acer,'k--')
plt.xlabel('$\epsilon$ [%]')
plt.ylabel('$\sigma$ [MPa]')
plt.title("Detall zona elàstica")
plt.axis([0,3,0,700])
plt.legend(["acer 4142 ($\sigma_{y}$)","0.2% off-set"],loc='lower right');

Podeu observar que hem dibuixat una líne paral·lela a la del comportament elàstic desplaçada un 0,2 % a la dreta. Com és molt difícil saber on acaba la recta i comenza la zona no linial, s'agafa com a valor experimental del límit elàstc el punt de tall de la corba amb aquesta recta desplaçada.

In [6]:
%matplotlib inline                             
plt.rcParams['figure.figsize'] = (9,7)     
plt.plot(e, s)
plt.plot(e, offset_acer,'k--')
plt.xlabel('$\epsilon$ [%]')
plt.ylabel('$\sigma$ [MPa]')
plt.title("Límit elàstic experimental")
plt.axis([0.45,0.55,620,640])
plt.legend(["acer 4142 ($\sigma_{y}$)","0.2% off-set"],loc='lower right');
#plt.savefig('acer_limit_elastic.png') 

podem veure que el punt de tall es troba al voltant dels 630 MPa

Amb la llibreria holoviews i els seus gràfics interactius podem precisar més fàcilment el punt de tall

In [7]:
import holoviews as hv
hv.extension('bokeh')
import bokeh