DyLab_3D_MOT/time_response/04_Intermediate_time_response.py
2022-09-02 13:30:37 +02:00

127 lines
3.2 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
HH_Coil = BC.BCoil(HH=1, distance=79.968, radius=80.228, layers=8, windings=8, wire_height=0.5,
wire_width=0.5, insulation_thickness=0.046 / 2, is_round=True,
winding_scheme=2)
AHH_Coil = BC.BCoil(HH=-1, distance=100.336, radius=85.016, layers=10, windings=10, wire_height=1.18,
wire_width=1.18, insulation_thickness=0.06, is_round=True,
winding_scheme=2)
I = 1
Max_field = HH_Coil.max_field(I)
HH_Coil.cooling(I, 22)
# 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_current(Coil, I_0, t):
L = Coil.induct_perry()*2
R = Coil.resistance(22.5)*2
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_current_exp(I_0, R, L, t):
print("")
print(L / R)
I = I_0 * (1 - np.exp(-R / L * t))
return I
#%%
def U_t(t, coil, U_0, I_end, scaling):
U_end = I_end * coil.resistance(22)
U = (U_0-U_end) * np.exp(-t/coil.tau() * scaling) + U_end
return U
# t = np.linspace(0, 0.005, 1000)
# plt.plot(t* 1e3,U_t(t, AHH_Coil, 15, I))
# plt.xlabel("t [ms]")
# plt.show()
# print(U_t(0, AHH_Coil, 15, I))
U_vec = np.vectorize(U_t)
def I_t_exp(time, coil, I_end, U_0, scaling):
I = U_vec(time, coil, U_0, I_end, scaling) / coil.resistance(22) * (1 - np.exp(- time/coil.tau()))
return I
def I_t_cut(time, coil, I_end, U_0):
R = 2 * coil.resistance(22)
print(f"resistance I_cut = {R} Ω")
I = U_0 / R * (1 - np.exp(- time / coil.tau()))
if I >= I_end:
I = I_end
return I
I_t_cut_vec = np.vectorize(I_t_cut)
# %%
t = np.linspace(0, 0.003, 10000)
fig, axs = plt.subplots(2, 1, figsize = (7,7.5))
fig.suptitle(f"Time response HH-coil: I_max = {I} A --> Max Field = {Max_field:.2f} G \n \n I(t) = U(t) / R * (1 - exp(- R/L * t))")
ax = axs[0]
# ax.title("test")
ax.plot(t * 1e3, I_current(HH_Coil, I, t), label=f"U_0 = U_end = 1.5 V")
for U_0 in [10, 15, 28, 58]:
ax.plot(t * 1e3, I_t_cut_vec(t, HH_Coil, I, U_0), label=f"U_0 = {U_0} V, U_end = 1.5 V")
# for scaling in np.arange(2,5,0.5):
# ax.plot(t * 1e3, I_t_exp(t, AHH_Coil, I, 15, scaling), label=f"Exponential decay U")
ax.set_xlabel("time [ms]")
ax.set_ylabel("current I [A]")
ax.legend()
ax = axs[1]
ax.plot(t * 1e6, I_current(HH_Coil, I, t), label=f"U_0 = U_end = 1.5 V")
for U_0 in [10, 15, 28, 58]:
ax.plot(t * 1e6, I_t_cut_vec(t, HH_Coil, I, U_0), label=f"U_0 = {U_0} V, U_end = 1.5 V")
# for scaling in np.arange(2,5,0.5):
# ax.plot(t * 1e3, I_t_exp(t, AHH_Coil, I, 15, scaling), label=f"Exponential decay U")
ax.set_xlabel("time [μs]")
ax.set_ylabel("current I [A]")
ax.set_xlim(0,300)
ax.legend()
plt.savefig('time_response_estimation.png', dpi=400)
plt.show()
# %%
print(HH_Coil.max_field(0.4))
print(f"L = {HH_Coil.induct_perry() * 1e6} μH")
print(f"R = {HH_Coil.resistance(22)}")
V_max = 15
I_set = 5e-3
L = HH_Coil.induct_perry()
f_drop = V_max/(2*np.pi*L*I_set)
print(f_drop)