DyLab_3D_MOT/time_response/R_test.py

129 lines
2.9 KiB
Python

# -*- coding: utf-8 -*-
"""
Created on Tue Sep 7 13:18:18 2021
@author: Joschka
"""
import matplotlib.pyplot as plt
import numpy as np
from src import coil_class as BC
from IPython import get_ipython
# get_ipython().run_line_magic('matplotlib', 'qt')
I = 1
HH_Coil = BC.BCoil(HH = 1, distance = 54, radius = 48, layers = 8, windings = 8, wire_height = 0.5,
wire_width = 0.5, insulation_thickness = (0.546-0.5)/2, is_round = True,
winding_scheme= 2)
HH_Coil.set_R_inner(45.6)
HH_Coil.set_d_min(2*24.075)
# Fast_Coil = BC.BCoil(HH = 1, distance = 54 ,radius = 48 , layers = 8, windings = 8, wire_height =0.5, wire_width = 0.5,windings_spacing=0, layers_spacing = 0)
# Fast_Coil.set_R_outer(49.3)
# Fast_Coil.set_d_min(49.8)
# AHH_Coil = BC.BCoil(-1, 82 , 47.3 , 4, 6, wire_width= 1, wire_height= 1.5 ,layers_spacing = 0.25, windings_spacing= 0.25)
def I_t(Coil, I_0, t):
L = Coil.induct_perry()
# L = Coil.inductivity()
R = Coil.resistance(22.5)
print(f"L={L}")
print(f" R= {R}")
tau = L / R
print(f" τ = {tau}")
I = I_0 * (1 - np.exp(-R / L * t))
return I
def I_t_2(Coil, I_0, t):
L = Coil.induct_perry()
# L = Coil.inductivity()
R = 2 * Coil.resistance(22.5)
print(f"L={L}")
print(f" R= {R}")
tau = L / R
print(f" τ = {tau}")
I = I_0 * (1 - np.exp(-R / L * t))
return I
def U_t(t, U_0, t_f):
if t < t_f:
U = 2 * U_0 - U_0 / t_f * t
else:
U = U_0
return U
test = np.vectorize(U_t)
def I_t_3(Coil, I_0, t_f, t):
L = Coil.induct_perry()
# L = Coil.inductivity()
R = Coil.resistance(22.5)
# print(f"L={L}")
# print(f" R= {R}")
# tau = L/R
# print(f" τ = {tau}")
# print(R*I_0)
I = test(t, R * I_0, t_f * 1e-3) / R * (1 - np.exp(-R / L * t))
return I
def I_current_exp(I_0, R, L, t):
print("")
print(L / R)
I = I_0 * (1 - np.exp(-R / L * t))
return I
def main():
# execute some code here
t = np.linspace(0, 0.002, 1000)
# set up color
color = iter(plt.cm.rainbow(np.linspace(0, 1, 5)))
plt.figure(1)
plt.subplot(2, 1, 1)
plt.title("time response")
plt.plot(t * 1e3, I_t(HH_Coil, I, t), label="R = R_coil, U = const. = 10 V ")
plt.plot(t * 1e3, I_t_2(HH_Coil, I, t), label="R = 2 * R_coil, U = const. = 20 V")
for t_f in np.arange(0.2, 1.2, 0.3):
print(t_f)
plt.plot(t * 1e3, I_t_3(HH_Coil, I, t_f, t), c=next(color), label=f"U overshoot, t_f = {t_f:.1f} ms")
plt.xlabel("time [ms]")
plt.ylabel("current I [A]")
plt.legend()
plt.show()
color = iter(plt.cm.rainbow(np.linspace(0, 1, 5)))
plt.subplot(2, 1, 2)
for t_f in np.arange(0.2, 1.2, 0.3):
plt.plot(t * 1e3, test(t, 10, t_f * 1e-3), c=next(color), label=f"U overshoot, t_f = {t_f:.1f} ms")
plt.xlabel("time [ms]")
plt.ylabel("voltage U [V]")
plt.legend()
plt.show()
if __name__ == "__main__":
print("g")
main()