as
This commit is contained in:
parent
5da5391c28
commit
04076e9292
@ -1,6 +1,6 @@
|
||||
from funcionesSimELectrica import *
|
||||
from funcionesSimFisica import *
|
||||
from scipy.integrate import cumulative_trapezoid as integrar
|
||||
from scipy.integrate import cumulative_trapezoid
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
@ -45,41 +45,30 @@ if __name__ == '__main__':
|
||||
|
||||
inductancia = espirasBobina**2 / reluctancia
|
||||
|
||||
tTemp = 0
|
||||
tempAcel = 0
|
||||
tempVelocidad = 0
|
||||
longTemp = longitudBobina
|
||||
tiempo = np.arange(0,tiempoSimulacion, step)
|
||||
|
||||
corriente = solver_manual(Tension, resistencia, inductancia, Capacitancia, tiempo)
|
||||
fuerza = fuerza_magnetica(corriente, reluctancia, espirasBobina, diametroVastago)
|
||||
|
||||
aceleracion = []
|
||||
|
||||
for i in np.arange(numeroModulos):
|
||||
t = np.arange(0,tiempoSimulacion, step)
|
||||
|
||||
aceleracion = np.append(aceleracion, calcular_aceleracion(masa, anguloDisparo, fuerza))
|
||||
|
||||
if i == 0:aceleracion[aceleracion<0] = 0 # Evitar que la aceleracion sea negativa en la primera vuelta
|
||||
else:pass
|
||||
|
||||
corriente = solver_manual(Tension, resistencia, inductancia, Capacitancia, t)
|
||||
fuerza = fuerza_magnetica(corriente, reluctancia, espirasBobina, diametroVastago)
|
||||
acel = aceleracion(masa, 40, fuerza)
|
||||
velocidad = cumulative_trapezoid(aceleracion,tiempo,initial=0)
|
||||
posicion = cumulative_trapezoid(velocidad, tiempo, initial=0)
|
||||
|
||||
idx = posicion <= longitudBobina*(i+1)
|
||||
|
||||
tiempo = tiempo[idx] # Recorto los vectores
|
||||
posicion = posicion[idx] # para tener en cuenta
|
||||
velocidad = velocidad[idx] # que el vastago recorre
|
||||
aceleracion = aceleracion[idx] # la longitud de la bobina
|
||||
|
||||
t = tTemp + t
|
||||
|
||||
velocidad = integrar(acel, t, initial = 0)
|
||||
posicion = integrar(velocidad, t, initial = 0)
|
||||
|
||||
idx = posicion<=longTemp
|
||||
|
||||
t = t[idx]
|
||||
corriente = corriente[idx]
|
||||
fuerza = fuerza[idx]
|
||||
acel = acel[idx]
|
||||
velocidad = velocidad[idx]
|
||||
posicion = posicion[idx]
|
||||
|
||||
tempAcel = acel[-1]
|
||||
tempVelocidad = velocidad[-1]
|
||||
longTemp = longitudBobina + longTemp
|
||||
|
||||
|
||||
plt.figure()
|
||||
#plt.plot(t, corriente, label='corriente')
|
||||
#plt.plot(t, fuerza, label = 'Fuerza')
|
||||
#plt.plot(t, acel, label='aceleracion')
|
||||
plt.plot(posicion, velocidad, label = 'velocidad')
|
||||
plt.legend()
|
||||
plt.show()
|
@ -52,7 +52,9 @@ def solver_manual(tensionCap, Rtotal, Lbobina, Ctotal, t):
|
||||
def simular_LTS(tensionCap, Rtotal, Lbobina, Ctotal, lts_path, tSim = 100e-3, toff_sw = 1e-3, ton_mos = 1.5e-3):
|
||||
|
||||
'''
|
||||
Funcion principal de simulacion.
|
||||
Funcion principal de simulacion. Es legado por si se quisiera simular
|
||||
con LTSpice. No se usa porque hay problemas con el tamaño del step
|
||||
en los resultados.
|
||||
|
||||
Entradas Obligatorias:
|
||||
- tensionCap -> Tension del capacitor
|
||||
|
@ -86,16 +86,14 @@ def fuerza_magnetica(corriente, reluctancia, espiras, diamFe):
|
||||
|
||||
return np.sign(corriente) * 0.5 * b**2 * secFe / muVacio
|
||||
|
||||
def aceleracion(masa, anguloDisparo, fuerzaMagnetica):
|
||||
def calcular_aceleracion(masa, anguloDisparo, fuerzaMagnetica):
|
||||
'''
|
||||
Retocar esto, tiene en cuenta el principio solo pero hay cosas raras
|
||||
|
||||
'''
|
||||
|
||||
anguloDisparo = anguloDisparo * np.pi / 180
|
||||
|
||||
acel = fuerzaMagnetica/masa - g*(cteRoz * np.cos(anguloDisparo) + np.sin(anguloDisparo))
|
||||
acel[acel < 0 ] = 0
|
||||
return acel
|
||||
|
||||
|
||||
@ -118,17 +116,63 @@ def calcular_resistencia(diamCu, longC, diamC, espiras):
|
||||
def calcular_masa(diamFe, longFe): return np.pi * diamFe**2 / 4 * longFe * densidadHierro
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
numeroModulos = 1
|
||||
if __name__ == '__main__':
|
||||
from funcionesSimELectrica import *
|
||||
from scipy.integrate import cumulative_trapezoid
|
||||
|
||||
tiempoSimulacion = 10e-3
|
||||
step = tiempoSimulacion / 1e6
|
||||
|
||||
numeroModulos = 2
|
||||
|
||||
longitudBobina = 53.21e-3 # m
|
||||
diametroInteriorBobina = 6.035e-3 * 2 # m
|
||||
espirasBobina = 600
|
||||
espirasBobina = 500
|
||||
diametroCuBobina = 0.8e-3 # m
|
||||
|
||||
longitudVastago = 96e-3 # m
|
||||
diametroVastago = 3.045e-3 * 2 # m
|
||||
|
||||
Tension = 30 # V
|
||||
Capacitancia = 500e-3 # 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
|
||||
|
||||
tiempo = np.arange(0,tiempoSimulacion, step)
|
||||
|
||||
corriente = solver_manual(Tension, resistencia, inductancia, Capacitancia, tiempo)
|
||||
fuerza = fuerza_magnetica(corriente, reluctancia, espirasBobina, diametroVastago)
|
||||
aceleracion = calcular_aceleracion(masa, anguloDisparo, fuerza)
|
||||
aceleracion[aceleracion<0]=0
|
||||
velocidad = cumulative_trapezoid(aceleracion, tiempo, initial=0)
|
||||
posicion = cumulative_trapezoid(velocidad, tiempo, initial=0)
|
||||
|
||||
idx = posicion <= longitudBobina
|
||||
|
||||
tiempo = tiempo[idx]
|
||||
posicion = posicion[idx]
|
||||
velocidad = velocidad[idx]
|
||||
aceleracion = aceleracion[idx]
|
||||
|
||||
plt.figure()
|
||||
#plt.plot(t, corriente, label='corriente')
|
||||
#plt.plot(t, fuerza, label = 'Fuerza')
|
||||
plt.plot(tiempo, aceleracion, label='aceleracion')
|
||||
# plt.plot(tiempo, velocidad, label = 'velocidad')
|
||||
#plt.plot(posicion, velocidad, label = 'posicion')
|
||||
plt.legend()
|
||||
plt.show()
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user