JEFERSON ANDRES ZUÑIGA,JHON KEVIN SEGURA

domingo, 8 de septiembre de 2013

TEMPERATURA

lo siguiente es la explicacion de como se realizo el codigo y el montaje de un medidor de temperatura realizado con la pic 18f4550 y el sensor de temperatura LM 35

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

#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 

No hay comentarios:

Publicar un comentario

Jeferson zuñiga,Jhon segura. Tema Sencillo. Imágenes del tema: follow777. Con la tecnología de Blogger.