# -*- coding: utf-8 -*- """ Created on Wed Jul 22 18:49:57 2020 @author: Adriana Márquez Estudio de la corriente de circuito RLC sobreamotriguado """ #%% #Loading modules import numpy as np import matplotlib.pyplot as plt from scipy.optimize import least_squares from scipy.optimize import curve_fit import os from IPython import get_ipython #%% #selecciono el grafico en Terminal (inline) o en ventana emergente (qt5) #get_ipython().run_line_magic('matplotlib', 'inline') get_ipython().run_line_magic('matplotlib', 'qt5') #Elijo el directorio donde se encuentran los archivos que voy a analiza os.chdir (r'G:\Mi unidad\Labo 3 1er cuat 2022\Clase 04 19\Mediciones') print("nombre del archivo completo con terminación .txt incluida") file = input() #Completar con los parámetros del circuito print("Cargar valor de la Resistencia del cirucito en ohm") R= float(input()) print("Cargar valor de la Inductancia del cirucito en H") L= float(input()) #print("Cargar valor de la Capacidad del cirucito en F") #C= float(input()) #Importing our data data = np.loadtxt(file,dtype=float,delimiter = ' ',skiprows= 1) x1i = data[:,0]#tiempo y1i = data[:,1]#señal de tensión Vin y2i = data[:,2]#señal de tensión Vc #Graficando todos nuestros datos en función del tiempo plt.close("all") plt.figure(1) plt.plot(x1i, y1i,'.-r') plt.plot(x1i, y2i,'.-g') plt.grid('on') plt.xlabel('tiempo(s)') plt.ylabel('Tensión(V)') #%% #limitar los datos al rango de interés j=5 datoinicial1=0 datofinal1=0 dif=0 n=5 tolerancia=1.0 while dif threshold] V = V[:S.size] pcov = np.dot(V.T / S**2, V) s_sq = 2 * res.cost / (y_datos.size - res.x.size) pcov = pcov * s_sq return pcov pcov1 = calcular_cov(res_lsq1,y2) #pcov2 = calcular_cov(res_lsq2,y2) # De la matriz de covarinza podemos obtener los valores de desviación estándar # de los parametros hallados pstd1 =np.sqrt(np.diag(pcov1)) #pstd2 =np.sqrt(np.diag(pcov2)) print() print('Modelo aproximado para el Vcpactior =a*np.exp(-b*time)+Vfinal')# print('a = (', round(popt1[0],6), '+/-', round(perr1[0],6), ')V') print('b = (', round(popt1[1],3), '+/-', round(perr1[1],3), ') 1/s') """ print('Modelo aproximado para la corriente =a*np.exp(-b*time)')# print('a = (', round(popt2[0],6), '+/-', round(perr2[0],6), ')V') print('b = (', round(popt2[1],3), '+/-', round(perr2[1],3), ') 1/s') #best=popt1[1] #res1=L/best*(1/(L*C)-best**2) #print('valor aproximado de resistencia (ohm): ', int(res1)) print() print('parametros iniciales para el ajuste de la corriente') print(guess_parameters2) print() print('Parámetros hallados con el modelo completo de la corriente (con incertezas):') print('Best A2: ',(best_parameters2[0]),' ± ',( pstd2[0])) print('Best landa1: ' ,best_parameters2[1],' ± ', pstd2[1]) print('Best landa2: ' ,best_parameters2[2],' ± ',( pstd2[2])) #print('Best V0: ' ,round(best_parameters[3],3),' ± ',round( pstd[3],3)) """ print() print('parametros iniciales para el ajuste de la V capacitor') print(guess_parameters1) print() print('Parámetros hallados con el modelo completo de la Vcapacitor (con incertezas):') print('Best A1: ',best_parameters1[0],' ± ', pstd1[0]) print('Best landa1: ' ,(best_parameters1[1]),' ± ',( pstd1[1])) print('Best landa2: ' ,(best_parameters1[2]),' ± ',( pstd1[2])) fitted_functionVC=modeloVC(best_parameters1,x1) #fitted_functionI=modeloI(best_parameters2,x1) #Plotting results plt.figure(3) plt.scatter(x1, y2, label='data') plt.plot(x1, fitted_functionVC, color = 'red', linewidth = 2.0, label='modelo completo') plt.plot(x1, funcredVC, color = 'green', linewidth = 2.0, label='modelo aproximado') plt.xlim(x1[0],x1[-1]) plt.xlabel("Time (s)") plt.ylabel("V Capacitor (V)") plt.title("RLC Sobreamortiguado") plt.legend() plt.show() """ plt.figure(4) plt.scatter(x1, y2, label='data') plt.plot(x1, fitted_functionI, color = 'red', linewidth = 2.0, label='modelo completo') plt.plot(x1, funcredI, color = 'green', linewidth = 2.0, label='modelo aproximado') plt.xlim(x1[0],x1[-1]) plt.ylim(y2[-1],y2[0]) plt.xlabel("Time (s)") plt.ylabel("Corriente (A)") plt.title("RLC Sobreamortiguado") plt.legend() plt.show() print() print('A partir del ajuste de la corriente') ResInduci=-(best_parameters2[1]+best_parameters2[2]) Induci= Vfinal/best_parameters2[0]/(best_parameters2[1]-best_parameters2[2]) Capi=1/Induci*1/(((best_parameters2[1]+best_parameters2[2])/2)**2-((best_parameters2[1]-best_parameters2[2])/2)**2) Resi=ResInduci*Induci print("resistencia(ohm):", round(Resi,3)) print("Capacidad(C):", (Capi)) print ('Inductancia (H)',Induci) """ print() print('A partir del ajuste de la Vcapacitor') ResInduc=-(best_parameters1[1]+best_parameters1[2]) Induc= Vfinal/best_parameters1[0]/(best_parameters1[1]-best_parameters1[2]) Cap=1/Induc*1/(((best_parameters1[1]+best_parameters1[2])/2)**2-((best_parameters1[1]-best_parameters1[2])/2)**2) Res=ResInduc*Induc print("resistencia(ohm):", round(Res,3)) print("Capacidad(C):", (Cap)) print ('Inductancia (H)',Induc)