Загрузил(а) файлы в 'Project/program_files'
This commit is contained in:
parent
9777b815ca
commit
febe43f08a
56
Project/program_files/analize.py
Normal file
56
Project/program_files/analize.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
from scipy.optimize import curve_fit
|
||||||
|
from numpy import linspace
|
||||||
|
import numpy as np
|
||||||
|
from numpy import tanh
|
||||||
|
from scipy.constants import e, k
|
||||||
|
from numpy import sqrt
|
||||||
|
from numpy import array
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
|
||||||
|
# Global variables
|
||||||
|
|
||||||
|
new_U = linspace(-22, 22, 1000)
|
||||||
|
|
||||||
|
|
||||||
|
# Function for approximation
|
||||||
|
|
||||||
|
|
||||||
|
def function_IU(U, I_n, T_e, A, B):
|
||||||
|
return I_n * tanh(e*U/2/k/T_e) + A*U + B
|
||||||
|
|
||||||
|
# Find the best fit params of In and Te
|
||||||
|
|
||||||
|
|
||||||
|
def find_FitParams(data_I, data_U):
|
||||||
|
popt, pcov = curve_fit(function_IU, data_U, data_I, p0=[0, 50000, 0, 0])
|
||||||
|
return popt, pcov
|
||||||
|
|
||||||
|
|
||||||
|
# Returns disperancy of given value
|
||||||
|
|
||||||
|
|
||||||
|
def discrepancy(data, popt):
|
||||||
|
I = data[0]
|
||||||
|
U = data[1]
|
||||||
|
tmp = []
|
||||||
|
|
||||||
|
for i in range(len(U)):
|
||||||
|
temp = sqrt((function_IU(
|
||||||
|
U[i], *popt)-I[i])**2/len(U)/(len(U)-1))
|
||||||
|
tmp.append(temp)
|
||||||
|
|
||||||
|
return tmp
|
||||||
|
|
||||||
|
|
||||||
|
# Returns pandas.DataFrame with approximated Current and Voltage values
|
||||||
|
|
||||||
|
|
||||||
|
def getApproxValues(data):
|
||||||
|
data = data.sort_values(by=['U'])
|
||||||
|
popt, pcov = find_FitParams(data['I'], data['U'])
|
||||||
|
df = pd.DataFrame()
|
||||||
|
df['U'] = new_U
|
||||||
|
df['I'] = function_IU(df['U'], *popt)
|
||||||
|
error = np.sqrt(np.diag(pcov))
|
||||||
|
return [df, popt, error]
|
40
Project/program_files/voltmeter.py
Normal file
40
Project/program_files/voltmeter.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
class AKIP():
|
||||||
|
|
||||||
|
def __init__(self, folder):
|
||||||
|
self.folder = folder
|
||||||
|
|
||||||
|
def getVoltageDC(self):
|
||||||
|
self.instr = open(self.folder, 'w')
|
||||||
|
self.instr.write('MEAS:VOLT:DC?\n')
|
||||||
|
self.instr.flush()
|
||||||
|
self.instr = open(self.folder, 'r')
|
||||||
|
data = self.instr.readline()
|
||||||
|
self.instr.close()
|
||||||
|
return float(data)
|
||||||
|
|
||||||
|
def getCurrentDC(self):
|
||||||
|
self.instr = open(self.folder, 'w')
|
||||||
|
self.instr.write('MEAS:AMP:DC?\n')
|
||||||
|
self.instr.flush()
|
||||||
|
self.instr = open(self.folder, 'r')
|
||||||
|
data = self.instr.readline()
|
||||||
|
self.instr.close()
|
||||||
|
return float(data)
|
||||||
|
|
||||||
|
def getVoltageAC(self):
|
||||||
|
self.instr = open(self.folder, 'w')
|
||||||
|
self.instr.write('MEAS:VOLT:AC?\n')
|
||||||
|
self.instr.flush()
|
||||||
|
self.instr = open(self.folder, 'r')
|
||||||
|
data = self.instr.readline()
|
||||||
|
self.instr.close()
|
||||||
|
return float(data)
|
||||||
|
|
||||||
|
def getCurrentAC(self):
|
||||||
|
self.instr = open(self.folder, 'w')
|
||||||
|
self.instr.write('MEAS:AMP:AC?\n')
|
||||||
|
self.instr.flush()
|
||||||
|
self.instr = open(self.folder, 'r')
|
||||||
|
data = self.instr.readline()
|
||||||
|
self.instr.close()
|
||||||
|
return float(data)
|
Loading…
Reference in New Issue
Block a user