208 lines
5.5 KiB
Python
208 lines
5.5 KiB
Python
import numpy as np
|
|
import pandas as pd
|
|
import matplotlib.pyplot as plt
|
|
import json
|
|
|
|
def ensayo_vacio(V,f):
|
|
|
|
'''
|
|
Entrada:
|
|
V = {
|
|
'a': [datos]
|
|
'b': [datos]
|
|
'c': [datos]
|
|
}
|
|
|
|
f = [datos]
|
|
|
|
Salida:
|
|
ke media por fase
|
|
ke por fase
|
|
'''
|
|
|
|
keA = []
|
|
keB = []
|
|
keC = []
|
|
|
|
for i in range(len(f)):
|
|
|
|
keA.append(V['a'][i]/f[i])
|
|
keB.append(V['b'][i]/f[i])
|
|
keC.append(V['c'][i]/f[i])
|
|
|
|
keMedia = {
|
|
'a': np.mean(keA),
|
|
'b' : np.mean(keB),
|
|
'c' : np.mean(keC)
|
|
}
|
|
ke = {
|
|
'a': keA,
|
|
'b' : keB,
|
|
'c' : keC
|
|
}
|
|
|
|
return keMedia, ke
|
|
|
|
def ensayo_corto(I, f, ke, R):
|
|
'''
|
|
Entrada:
|
|
I = {
|
|
'a': [datos]
|
|
'b': [datos]
|
|
'c': [datos]
|
|
}
|
|
|
|
f = [datos]
|
|
|
|
R = cte
|
|
|
|
Salida:
|
|
media induccion [mH]
|
|
todas las inducciones
|
|
coeficiente de variacion
|
|
'''
|
|
L = []
|
|
for i in range(len(f)):
|
|
xa = np.sqrt((ke['a']*f[i]/I['a'][i])**2 - R**2 )
|
|
xb = np.sqrt((ke['b']*f[i]/I['b'][i])**2 - R**2 )
|
|
xc = np.sqrt((ke['c']*f[i]/I['c'][i])**2 - R**2 )
|
|
|
|
L.append(np.mean([xa,xb,xc]) / (2 * np.pi * f[i]) * 1e3)
|
|
|
|
return np.mean(L), np.array(L), np.std(L)/np.mean(L)*100
|
|
|
|
|
|
def ensayo_carga(V, I, f, R, L):
|
|
'''
|
|
Entrada:
|
|
V = {
|
|
'a': [datos]
|
|
'b': [datos]
|
|
}
|
|
|
|
I = {
|
|
'a': [datos]
|
|
'b': [datos]
|
|
}
|
|
|
|
f = [datos]
|
|
|
|
'''
|
|
E = []
|
|
Ireal = []
|
|
for i in range(len(f)):
|
|
Vtemp = np.mean([V['a'][i], V['b'][i]])
|
|
Itemp = np.mean([I['a'][i], I['b'][i]])
|
|
|
|
Ireal.append(Itemp)
|
|
E.append(np.sqrt((R + Vtemp/Itemp) ** 2 + (2*np.pi*f[i]*L*1e-3) ** 2) * Itemp)
|
|
|
|
|
|
return np.array(E), np.array(Ireal)
|
|
|
|
def ensayar_material(resistencia, material, ruta):
|
|
|
|
vacio = pd.read_excel(ruta, sheet_name='vacio', engine='openpyxl').dropna()
|
|
corto = pd.read_excel(ruta, sheet_name='corto', engine='openpyxl').dropna()
|
|
carga = pd.read_excel(ruta, sheet_name='carga', engine='openpyxl').dropna()
|
|
|
|
tensionVacio = {
|
|
'a' : np.array(vacio['V1'][vacio['material'] == material]),
|
|
'b' : np.array(vacio['V2'][vacio['material'] == material]),
|
|
'c' : np.array(vacio['V3'][vacio['material'] == material])
|
|
}
|
|
fVacio = np.array(vacio['f'][vacio['material'] == material])
|
|
|
|
Emean = np.mean(np.array([tensionVacio['a'], tensionVacio['b'], tensionVacio['c']]), axis=0)
|
|
|
|
return Emean, fVacio
|
|
|
|
keMedia, ke = ensayo_vacio(tensionVacio, fVacio)
|
|
|
|
corrienteCorto ={
|
|
'a' : np.array(corto['I1'][corto['material'] == material]),
|
|
'b' : np.array(corto['I2'][corto['material'] == material]),
|
|
'c' : np.array(corto['I3'][corto['material'] == material])
|
|
}
|
|
fCorto = np.array(corto['f'][corto['material'] == material])
|
|
|
|
lMedia, l, lCV = ensayo_corto(corrienteCorto, fCorto, keMedia, resistencia)
|
|
|
|
tensionCarga = {
|
|
'a' : np.array(carga['V1'][carga['material'] == material]),
|
|
'b' : np.array(carga['V2'][carga['material'] == material])
|
|
}
|
|
corrienteCarga = {
|
|
'a' : np.array(carga['I1'][carga['material'] == material]),
|
|
'b' : np.array(carga['I2'][carga['material'] == material])
|
|
}
|
|
fCarga = np.array(carga['f'][carga['material'] == material])
|
|
|
|
E, I = ensayo_carga(tensionCarga, corrienteCarga, fCarga, resistencia, lMedia)
|
|
|
|
return E, I, fCarga
|
|
|
|
|
|
if __name__ == '__main__':
|
|
archivo = 'Ensayos.xlsx'
|
|
|
|
vacio = pd.read_excel(archivo, sheet_name='vacio', engine='openpyxl').dropna()
|
|
corto = pd.read_excel(archivo, sheet_name='corto', engine='openpyxl').dropna()
|
|
carga = pd.read_excel(archivo, sheet_name='carga', engine='openpyxl').dropna()
|
|
|
|
|
|
resistencia = 4.5
|
|
materiales = np.unique(vacio['material'])
|
|
|
|
fig = plt.figure()
|
|
ax = fig.add_subplot(111, projection='3d')
|
|
|
|
for material in materiales:
|
|
tensionVacio = {
|
|
'a' : np.array(vacio['V1'][vacio['material'] == material]),
|
|
'b' : np.array(vacio['V2'][vacio['material'] == material]),
|
|
'c' : np.array(vacio['V3'][vacio['material'] == material])
|
|
}
|
|
fVacio = np.array(vacio['f'][vacio['material'] == material])
|
|
|
|
keMedia, ke = ensayo_vacio(tensionVacio, fVacio)
|
|
|
|
|
|
corrienteCorto ={
|
|
'a' : np.array(corto['I1'][corto['material'] == material]),
|
|
'b' : np.array(corto['I2'][corto['material'] == material]),
|
|
'c' : np.array(corto['I3'][corto['material'] == material])
|
|
}
|
|
fCorto = np.array(corto['f'][corto['material'] == material])
|
|
|
|
lMedia, l, lCV = ensayo_corto(corrienteCorto, fCorto, keMedia, resistencia)
|
|
|
|
|
|
tensionCarga = {
|
|
'a' : np.array(carga['V1'][carga['material'] == material]),
|
|
'b' : np.array(carga['V2'][carga['material'] == material])
|
|
}
|
|
corrienteCarga = {
|
|
'a' : np.array(carga['I1'][carga['material'] == material]),
|
|
'b' : np.array(carga['I2'][carga['material'] == material])
|
|
}
|
|
fCarga = np.array(carga['f'][carga['material'] == material])
|
|
|
|
E, I = ensayo_carga(tensionCarga, corrienteCarga, fCarga, resistencia, lMedia)
|
|
|
|
ax.plot3D(I, fCarga, E, label = material)
|
|
|
|
ax.set_xlabel('Corriente [A]')
|
|
ax.set_ylabel('Frecuencia [Hz]')
|
|
ax.set_zlabel('Tension [V]')
|
|
|
|
Imax = np.max(I)
|
|
Emax = np.max(E)
|
|
fmax = np.max(fCarga)
|
|
|
|
ax.set_xlim(0, Imax * 1.1)
|
|
ax.set_ylim(0, fmax * 1.1)
|
|
ax.set_zlim(0, Emax * 1.1)
|
|
|
|
ax.legend()
|
|
plt.show() |