# -*- coding: utf-8 -*- """ Created on Wed Jul 22 18:49:57 2020 @author: User """ #%% #cargamos las librerias de python que necesistmos: import numpy as np import matplotlib.pyplot as plt from scipy.optimize import curve_fit import os from IPython import get_ipython #%% ------------------------ Elegir modo de salida de los gráficos ----------------------------------- ''' Descomentar la línea que corresponda. Si quieren que las figuras aparezcan en la terminal: inline Si quieren que las figuras aparezcan en una ventana emergente: qt5 ''' #get_ipython().run_line_magic('matplotlib', 'inline') get_ipython().run_line_magic('matplotlib', 'qt5') #%% ---------------------- Carga de datos --------------------------------------- # Colocar la ruta de la carpeta con los archivos entre r' ': os.chdir (r'G:\Mi unidad\Labo 3 1er cuat 2022\Clase 04 19\Mediciones') # Nombre del archivo a analizar entre ' ' con la terminación .txt incluida: file = '1100.txt' resist=float(os.path.splitext(file)[0]) print(resist) # Valor de la resistencia que están usando en Ohms ''' Con np.loadtxt(ruta) podemos cargar los datos de una matriz guardada en un archivo de texto como un array de numpy. Cada renglón es una fila. Las columnas están separadas por una coma. Eso lo indicamos en el "delimiter". Con skiprows=1 le pedimos que se saltee la primer fila, que tiene los títulos. ''' data = np.loadtxt(file,dtype=float,delimiter = ' ',skiprows= 1) ''' Armamos arrays(vectores) con las columnas de mi archivo: ''' x1i = data[:,0] #columna de tiempo en segundos y0i= data[:,1] #tensión de entrada y1i = data[:,2] #caida de tensión sobre la bobina y2i= (data[:,1]-data[:,2])/resist #corriente del circuito [ I = (V1-V2)/R ] #%% ----------------------------- Gráfico de los datos crudos----------------------- ''' Graficamos los datos tal cual salieron del Arduino, ordenados según el voltaje, para observar si su comportamiento es lineal o no en una primera instancia. ''' plt.ion() # Activa el modo interactivo del gráfico. plt.close('all') # Cierro los gráficos abiertos por si había alguno. ''' La función plt.subplots() me crea una figura 'fig' y ejes 'ax1, que en principio están vacíos. Los vamos a llenar con la función plot. Graficamos el vector numdatos que creamos contra los valores de tensión en el eje ax1 con color verde ax2.ax1.twinx() crea un segundo eje en el mismo gráfico, compartiendo el mismo eje X con ax1. En este segundo eje graficamos la corriente en rojo. Las funciones ''' #Graficando nuestros datos en función del número de dato fig, ax1 = plt.subplots() ax1.plot(x1i, y1i,'.-g'); ax1.set_ylabel('Tensión(Vc)'); ax1.set_xlabel('Tiempo'); ax2=ax1.twinx() ax2.plot(x1i, y2i,'.-r') ax2.set_ylabel('Corriente(A)', color='r') #%% ----------------------------- Seleccionar los ciclos a analizar----------------------- """ Vamos a limitar los datos al rango de interés Con el ciclo elegido armamos 2 variables que nos den el primer y último dato de cada ciclo. Para eso consideramo que Arduino nos da 80 datos por cada ciclo. """ #limitar los datos al rango de interés j=5 datoinicial1=0 datofinal1=0 dif=0 n=5 tolerancia=1.0 while dif