Matlab - Valor en "x" correspondiente al "y"

 
Vista:

Valor en "x" correspondiente al "y"

Publicado por juan (1 intervención) el 23/03/2017 19:21:35
El problema es el siguiente:
Tengo una lectura de datos proveniente de una placa "arduino", en la cual fue conectado un sensor Lm35 para medir la temperatura de un cautin. Se gráfica el tiempo en "x" y el valor de temperatura en "y", el problema es que para obtener la función de transferencia del sistema tengo que obtener el tiempo que tarda en arrojarme el 63.2% del valor máximo de temperatura.
El 63.2% lo obtuve multiplicando .623*(max(max(YData))) ----- [P.D "YData" es la temperatura], donde "max" me arroja el valor máximo de la gráfica. El problema es que no se a que tiempo corresponde ese valor (que seria "XData" el valor del tiempo)



Para obtener los valores del LM35 use el siguiente codigo (el lm35 lo conecte el positivo a los 5V, el negativo a GND y la salida a la entrada del arduino A0),:

%Práctica #2

delete(instrfind({'Port'},{'COM3'}));
s=serial('COM3','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscan:unsuccessfulRead');
fopen(s);
%Parámetros de medidas
tmax=2500; %Tiempo de Captura en s
rate=33; %Resultado experimental (Comprobar)

%Preparar la figura

f=figure('Name','Captura');
a=axes('XLim',[0 2*tmax], 'Ylim', [0 80]);
l1=line(nan,nan,'Color','r','LineWidth',2);
xlabel=('Tiempo(S)');
ylabel=('Temperatura(Cº)');
title('Captura de voltaje en tiempo real con Arduano xD xD')
grid on
hold on

%Nucleo del programa
%Inicializar
v1=zeros(1,tmax*rate*100);
i=1;
t=0;

%Ejecutar bucle cronometrado
tic
while t<tmax
t=toc;
%Leer del puerto serie
[a]=fscanf(s,'%d,%d');
v1(i)=a(1)*500/1024;
%dibujar en la figura
x= linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
drawnow
if(tmax==0)
fprintf('Temperatura inicial: %g',v1(1));
end
%seguir
i=i+1;
end
%Resultado del cronómetro
clc;
fprintf('%g s de captura a %g cap/s \n',t,i/t);
fclose(s);
delete(s);
clear s;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Valor en "x" correspondiente al "y"

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 24/03/2017 06:31:52
Juan espero te encuentres bien , sé que para hallar la constante de tiempo es necesario medir el tiempo en que la temperatura alcanza el 63,2% de su valor en estado estable que en este caso corresponde al valor de la temperatura máxima , lo que no entiendo es por qué tienes

.623*(max(max(YData))) , pues según entiendo YData es un vector, y solo bastaría con escribir una sola vez máximo , en tal caso yo te recomiendo esta línea:

1
valor=interp1(YData,XData,0.624*max(YData))

y ese sería el valor del tiempo en ese porcentaje

saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar