hay que ajustar valores para ver como se comporta realmente, los resultados son bastante jujos
This commit is contained in:
parent
26186fc38e
commit
3a87c4e4bd
@ -1,3 +1,73 @@
|
|||||||
from funcionesSimELectrica import *
|
from funcionesSimELectrica import *
|
||||||
from funcionesSimFisica import *
|
from funcionesSimFisica import *
|
||||||
|
from scipy.integrate import cumulative_trapezoid as integrar
|
||||||
|
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
__author__ = 'Oscar Suescun'
|
||||||
|
|
||||||
|
lts_path = "C:/Users/osuescuneli/AppData/Local/Programs/ADI/LTspice/LTspice.exe"
|
||||||
|
|
||||||
|
'''
|
||||||
|
Esto sirve para hacer debug del sistema y ver como se comportan
|
||||||
|
las funciones para la
|
||||||
|
|
||||||
|
'''
|
||||||
|
if __name__ == '__main__':
|
||||||
|
tiempoSimulacion = 20e-3
|
||||||
|
tiempoSwitch = 1e-6
|
||||||
|
tiempoMos = 1e-3
|
||||||
|
|
||||||
|
numeroModulos = 1
|
||||||
|
|
||||||
|
longitudBobina = 53.21e-3 # m
|
||||||
|
diametroInteriorBobina = 6.035-3 * 2 # m
|
||||||
|
espirasBobina = 800
|
||||||
|
diametroCuBobina = 0.8e-3 # m
|
||||||
|
|
||||||
|
longitudVastago = 96e-3 # m
|
||||||
|
diametroVastago = 3.045e-3 * 2 # m
|
||||||
|
|
||||||
|
Tension = 30 # V
|
||||||
|
Capacitancia = 500e-6 # F
|
||||||
|
|
||||||
|
masa = calcular_masa(diametroVastago, longitudVastago)
|
||||||
|
anguloDisparo = 40
|
||||||
|
|
||||||
|
|
||||||
|
resistencia = calcular_resistencia(diametroCuBobina, longitudBobina,
|
||||||
|
diametroInteriorBobina, espirasBobina)
|
||||||
|
|
||||||
|
reluctancia = np.mean(reluctancia_funcX(longitudVastago, diametroVastago,
|
||||||
|
longitudBobina, diametroInteriorBobina,
|
||||||
|
diametroCuBobina, espirasBobina))
|
||||||
|
|
||||||
|
inductancia = espirasBobina**2 / reluctancia
|
||||||
|
|
||||||
|
resultadosSim = simular(Tension, resistencia,
|
||||||
|
inductancia, Capacitancia, lts_path,
|
||||||
|
tSim= tiempoSimulacion,
|
||||||
|
toff_sw= tiempoSwitch,
|
||||||
|
ton_mos= tiempoMos)
|
||||||
|
|
||||||
|
tiempo = resultadosSim['tiempo'][resultadosSim['tiempo'] >= tiempoMos]
|
||||||
|
|
||||||
|
dt = np.full(len(tiempo), tiempoMos)
|
||||||
|
tiempo -= dt
|
||||||
|
|
||||||
|
corriente = resultadosSim['iBob'][resultadosSim['tiempo'] >= tiempoMos]
|
||||||
|
|
||||||
|
fuerzaMag = fuerza_magnetica(corriente, reluctancia,
|
||||||
|
espirasBobina, diametroVastago)
|
||||||
|
|
||||||
|
aVastago = aceleracion(masa, anguloDisparo, fuerzaMag)
|
||||||
|
vVastago = integrar(aVastago, initial=0)
|
||||||
|
xVastago = integrar(vVastago, initial=0)
|
||||||
|
|
||||||
|
plt.figure()
|
||||||
|
plt.plot(tiempo * 1e3, xVastago)
|
||||||
|
plt.grid()
|
||||||
|
plt.legend()
|
||||||
|
plt.show()
|
@ -83,6 +83,7 @@ def dibujar(resultado):
|
|||||||
plt.plot(resultado['tiempo']*1e3, resultado['vCap'], label='Tension Cap [V]')
|
plt.plot(resultado['tiempo']*1e3, resultado['vCap'], label='Tension Cap [V]')
|
||||||
plt.plot(resultado['tiempo']*1e3, resultado['vBob'], label='Tension Bobina [V]')
|
plt.plot(resultado['tiempo']*1e3, resultado['vBob'], label='Tension Bobina [V]')
|
||||||
plt.plot(resultado['tiempo']*1e3, resultado['iBob'], label='Corriente Bobina [A]')
|
plt.plot(resultado['tiempo']*1e3, resultado['iBob'], label='Corriente Bobina [A]')
|
||||||
|
plt.xlabel("Tiempo [ms]")
|
||||||
plt.grid()
|
plt.grid()
|
||||||
plt.legend()
|
plt.legend()
|
||||||
plt.show()
|
plt.show()
|
||||||
|
@ -6,10 +6,12 @@ global muFeRel
|
|||||||
global kDisp
|
global kDisp
|
||||||
global cteRoz
|
global cteRoz
|
||||||
global g
|
global g
|
||||||
|
global resCu
|
||||||
|
|
||||||
densidadHierro = 7800 # kg/m3
|
densidadHierro = 7800 # kg/m3
|
||||||
muVacio = 4*np.pi*1e-7
|
muVacio = 4*np.pi*1e-7
|
||||||
muFeRel = 5000
|
muFeRel = 5000
|
||||||
|
resCu = 1.7e-8 # ohm/m
|
||||||
kDisp = 2 # cte de dispersion
|
kDisp = 2 # cte de dispersion
|
||||||
cteRoz = 0.1
|
cteRoz = 0.1
|
||||||
g = 9.8
|
g = 9.8
|
||||||
@ -78,16 +80,32 @@ def fuerza_magnetica(corriente, reluctancia, espiras, diamFe):
|
|||||||
|
|
||||||
secFe = np.pi * diamFe**2 / 4
|
secFe = np.pi * diamFe**2 / 4
|
||||||
|
|
||||||
return 0.5 * b**2 * secFe / muVacio
|
return np.sign(corriente) * 0.5 * b**2 * secFe / muVacio
|
||||||
|
|
||||||
def aceleracion(masa, anguloDisparo, fuerzaMagnetica):
|
def aceleracion(masa, anguloDisparo, fuerzaMagnetica):
|
||||||
|
|
||||||
anguloDisparo = anguloDisparo * np.pi / 180
|
anguloDisparo = anguloDisparo * np.pi / 180
|
||||||
|
|
||||||
return fuerzaMagnetica/masa - g*(cteRoz * np.cos(anguloDisparo) + np.sen(anguloDisparo))
|
return fuerzaMagnetica/masa - g*(cteRoz * np.cos(anguloDisparo) + np.sin(anguloDisparo))
|
||||||
|
|
||||||
|
|
||||||
|
def calcular_resistencia(diamCu, longC, diamC, espiras):
|
||||||
|
|
||||||
|
espirasCapa = int(longC/diamCu)
|
||||||
|
nCapasEnteras = int(espiras/espirasCapa) # solo capas completametne llenas
|
||||||
|
espirasUltimaCapa = espiras - espirasCapa * nCapasEnteras # las espiras de la ultima capa
|
||||||
|
|
||||||
|
longitud = 0
|
||||||
|
|
||||||
|
for i in range(nCapasEnteras): longitud += espirasCapa*np.pi*(diamC + (1+i)*diamCu) # Calculo longitud de total de las capas llenas
|
||||||
|
|
||||||
|
longitud += espirasUltimaCapa*np.pi*(diamC + (1 + nCapasEnteras)*diamCu)
|
||||||
|
|
||||||
|
seccionCu = np.pi * diamCu**2 / 4
|
||||||
|
|
||||||
|
return resCu * longitud / seccionCu
|
||||||
|
|
||||||
|
def calcular_masa(diamFe, longFe): return np.pi * diamFe**2 / 4 * longFe * densidadHierro
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@ -96,10 +114,11 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
longitudBobina = 53.21e-3 # m
|
longitudBobina = 53.21e-3 # m
|
||||||
diametroInteriorBobina = 6.035-3 * 2 # m
|
diametroInteriorBobina = 6.035-3 * 2 # m
|
||||||
espirasBobina = 500
|
espirasBobina = 600
|
||||||
diametroCuBobina = 0.8e-3 # m
|
diametroCuBobina = 0.8e-3 # m
|
||||||
|
|
||||||
longitudVastago = 96e-3 # m
|
longitudVastago = 96e-3 # m
|
||||||
diametroVastago = 3.045e-3 * 2 # m
|
diametroVastago = 3.045e-3 * 2 # m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,13 +13,13 @@ R1 condensador V1 {R}
|
|||||||
.lib C:\Users\osuescuneli\AppData\Local\LTspice\lib\cmp\standard.mos
|
.lib C:\Users\osuescuneli\AppData\Local\LTspice\lib\cmp\standard.mos
|
||||||
.tran 0 {tsim} 0
|
.tran 0 {tsim} 0
|
||||||
.Model SW SW(Ron=1m Roff=100Meg Vt = 5)
|
.Model SW SW(Ron=1m Roff=100Meg Vt = 5)
|
||||||
.param tsim 15m
|
.param tsim 20m
|
||||||
.param toff_sw 25u
|
.param toff_sw 1u
|
||||||
.param ton_mos 50u
|
.param ton_mos 1m
|
||||||
.param R 4
|
.param R 3.42142
|
||||||
.param C 500u
|
.param C 500u
|
||||||
.param L 100u
|
.param L 13.8963m
|
||||||
.param V 150
|
.param V 30
|
||||||
.param delta tsim-ton_mos
|
.param delta tsim-ton_mos
|
||||||
.backanno
|
.backanno
|
||||||
.end
|
.end
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user