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
	 Oscar Suescun Elizalde
						Oscar Suescun Elizalde