-
Notifications
You must be signed in to change notification settings - Fork 0
/
LIA_CAL.py
46 lines (36 loc) · 1.6 KB
/
LIA_CAL.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
############################################################################################
import numpy as np
import math as m
from scipy.fft import fft, ifft,fftfreq
import eyes17.eyes
p=eyes17.eyes.open()
import time as tim
###########################################################################################
################################ Lock in Amplifier ########################################
def LIA(V_in,t_in,f): #V_in is the input voltage, t_in is the time list (in S),
V_in_sin=[] #f is the frequency
V_in_cos=[]
for i in range(len(V_in)):
V_in_sin.append(V_in[i]*2*np.sin(2*np.pi*f*t_in[i]))
V_in_cos.append(V_in[i]*2*np.cos(2*np.pi*f*t_in[i]))
V_out_sin_fft=fft(V_in_sin)
V_out_cos_fft=fft(V_in_cos)
V_out= np.sqrt((V_out_sin_fft[0].real/len(V_out_sin_fft))**2+(V_out_cos_fft[0].real/len(V_out_cos_fft))**2)
return V_out
############################################################################################
############################# Defining input Parameters ####################################
f=500
p.set_sine(f)
p.set_sine_amp(2)
p.set_pv1(2)
############################################################################################
t1,v1 = p.capture1('A2',8192,2)
t1=[t1[i]/1000 for i in range(len(t1))]
V_in_rms=LIA(v1,t1,f)/np.sqrt(2)
tim.sleep(3)
t2,v2 = p.capture1('A1',8192,2)
t2=[t2[i]/1000 for i in range(len(t2))]
V_out_rms = LIA(v2,t2,f)/np.sqrt(2)
print(V_in_rms,V_out_rms)
with open(f'Data\\Calibration\\CAL_{f}.txt','a') as file1:
file1.write(str(V_in_rms)+'\t'+str(V_out_rms)+'\n')