hay que ajustar valores para ver como se comporta realmente, los resultados son bastante jujos

This commit is contained in:
Oscar Suescun Elizalde 2025-04-10 15:59:28 +02:00
parent 26186fc38e
commit 3a87c4e4bd
6 changed files with 99 additions and 9 deletions

View File

@ -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()

View File

@ -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()

View File

@ -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

View File

@ -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