- lo primero que se procedio a realizar fue el montaje del circuito antes simulado en proteus
fig.1 proteus simulacion de temperatura[1]
los elementos que se utilizaron para desarrollarlo fueron:
-proteus : lm 35 , pic18f4550, virtual terminal
para realizar la programacion de la pic18f4550 fue necesario utilizar el sofware PIC C COMPILER
en el cual se implemento el siguiente codigo:
en el cual se implemento el siguiente codigo:
#include <18f4550.h>//pic a utilizar
#device adc=8//bits
#use delay(clock=4000000)//reloj o cristal a utilziar
#fuses xt,nowdt,put
#use rs232(baud=9600, xmit=pin_c6,rcv=pin_c7,PARITY=N,BITS=8)//datos de la comunicacion
float temperatura;
void main()
{
// convierte los datos analogos a digitales del lm35//
setup_adc_ports(RA0_ANALOG);//ENTRADA DEL LM35 PUERTO AO
setup_adc(ADC_CLOCK_INTERNAL);//reloj
setup_COUNTERS(RTCC_internal,rtcc_div_1);//marca de division
set_adc_channel(0);
//
printf("temperatura");
delay_ms(350);
//ciclo para que siempre mueste la temperatura
while (true)
{
temperatura=(float)read_adc()*2.125;
//lee el convertidor y se lo asigna a la variable temperatura
;
printf("%f",temperatura);
printf("grados\n\r");
delay_ms(200);
}
}
en la practica estos datos fueron observados en el hercules una herramienta que permite mirar los datos que se transmiten en la comunicacion serial
fig.2 hercules datos sobre la temperatura[2]
ya con la configuracion de la pic y con los resultados obtenidos se procedio a generar un codigo en MATLAB para graficar la temperatura vs tiempo de forma que pueda observarse en tiempo real
para ello se implemento el siguiente codigo:
%borrar previos
delete(instrfind({'Port'},{'COM1'}));
s=serial('COM1');
set(s,'BaudRate',9600);
set(s,'DataBits',8);
set(s,'Parity','none');
set(s,'StopBits',1);
set(s,'FlowControl','none');
fopen(s);
tmax = 100; % tiempo de captura
en s
rate = 2; % resultado
experimental
% preparar la figura
f = figure('Name','Captura');
a = axes('XLim',[0 tmax],'YLim',[0 4]);
l1 = line(nan,nan,'Color','k','LineWidth',2);
xlabel('Tiempo (s)')
ylabel('Temperatura (T)')
title('Captura de temperatura en
tiempo real con PIC')
grid on
hold on
% inicializar
v1 = zeros(1,tmax*rate);
i = 1;
t = 0;
% ejecutar bucle
tic
while t<tmax
t
= toc;
% leer del puerto serie
a = fscanf(s,'%d,%d')';
v1(i)=a(1)*5/256;
% dibujar en la figura
x = linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
drawnow
% seguir
i = i+1;
end
% resultado del cronometro
clc;
%% Limpiar
fclose(s);
delete(s);
clear s;
para lo cual se obtuvo la siguiente grafica
fig.3 señal graficada en MATLAB [3]
REFERENCIAS
[1]imagen sacada de proteus por jeferson zuñiga de su pc
[2]imagen obtenida en los laboratorios de la umng
[3]imagen generada en matlab por jeferson zuñiga
REFERENCIAS
[1]imagen sacada de proteus por jeferson zuñiga de su pc
[2]imagen obtenida en los laboratorios de la umng
[3]imagen generada en matlab por jeferson zuñiga
No hay comentarios:
Publicar un comentario