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;
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


0