sensor digital de temperatura

19
Sensor digital de temperatura Enviado por Mauricio Orozco Anuncios Google Curso c para PICS Curso-taller c para PIC16f887 Diplomado de programación de pics www.commtechcomputers.net Termometro Digital Taylor Garantía de 1 año Compre ahora www.taylorla.com Exergen, Non-Contact, IR temperature sensors, reliable, accurate, in stock, worldwide suppt www.exergen.com/industrl Indice 1. Objetivo del circuito 2. Conversor Análogo/Digital ADC0804 3. Sensor de temperatura LM35 4. Circuito Integrado MAX232 5. Microcontrolador PIC16F84A 6. Diagrama de flujo del programa para programar el PIC16F84A 7. Código fuente del programa para el PIC16F84A 8. Programa TermoPIC 9. Código fuente del programa TermoPIC 1. Objetivo del circuito El circuito que se ha construido, consiste en un sensor de temperatura LM35, el cual otorga al PIC16F84A el valor de la temperatura en el ambiente, para tal propósito, el PIC16F84A y el LM35 se encuentran conectados por medio de un conversor análogo/digital, el ADC0804. Una vez el PIC16F84A obtiene el dato binario del conversor correspondiente a la temperatura, lo envía al PC vía serial, para ello se utiliza el circuito integrado MAX232. 2. Conversor Análogo/Digital ADC0804 Un convertidor análogo/digital es un circuito integrado que convierte señales análogas en datos binarios: 0s y 1s. El convertidor analogo/digital ADC0804 es un circuito integrado capaz de convertir una muestra analógica entre 0v y 5v, en un valor binario de 8 dígitos binarios. Para saber la resolución del convertidor tenemos que saber el valor máximo que la entrada de información utiliza y la cantidad máxima de la salida en dígitos binarios. Como ejemplo vamos a hacer los cálculos para el ADC0804.

Upload: genaro-sanchez-sanchez

Post on 04-Jul-2015

545 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Sensor Digital de Temperatura

Sensor digital de temperaturaEnviado por Mauricio Orozco

Anuncios Google

Curso c para PICSCurso-taller c para PIC16f887 Diplomado de programación de pics www.commtechcomputers.net

Termometro Digital TaylorGarantía de 1 año Compre ahora www.taylorla.com

Exergen, Non-Contact, IRtemperature sensors, reliable, accurate, in stock, worldwide suppt www.exergen.com/industrl

Indice1. Objetivo del circuito2. Conversor Análogo/Digital ADC08043. Sensor de temperatura LM354. Circuito Integrado MAX2325. Microcontrolador PIC16F84A6. Diagrama de flujo del programa para programar el PIC16F84A7. Código fuente del programa para el PIC16F84A8. Programa TermoPIC9. Código fuente del programa TermoPIC

1. Objetivo del circuito

El circuito que se ha construido, consiste en un sensor de temperatura LM35, el cual otorga al PIC16F84A el valor de la temperatura en el ambiente, para tal propósito, el PIC16F84A y el LM35 se encuentran conectados por medio de un conversor análogo/digital, el ADC0804. Una vez el PIC16F84A obtiene el dato binario del conversor correspondiente a la temperatura, lo envía al PC vía serial, para ello se utiliza el circuito integrado MAX232.

2. Conversor Análogo/Digital ADC0804

Un convertidor análogo/digital es un circuito integrado que convierte señales análogas en datos binarios: 0s y 1s.El convertidor analogo/digital ADC0804 es un circuito integrado capaz de convertir una muestra analógica entre 0v y 5v, en un valor binario de 8 dígitos binarios. Para saber la resolución del convertidor tenemos que saber el valor máximo que la entrada de información utiliza y la cantidad máxima de la salida en dígitos binarios. Como ejemplo vamos a hacer los cálculos para el ADC0804.

Page 2: Sensor Digital de Temperatura

Distribución de pines

Conversor ADC0804Vcc: voltaje positivo de alimentación

Page 3: Sensor Digital de Temperatura

AGND: tierra del sistema análogoDGND: tierra del sistema digitalVin(+): terminal positiva del voltaje de entradaVin(-): terminal negativa del voltaje de entradaDB7-DB0: salidas de la conversión digital, con DB7 el MSB y DB0 el LSBCLKin: entrada de relojCLKr: salida del reloj cuya frecuencia depende de una resistencia y un condensador externosCS: chip select, para que el ACD0804 funciones debe estar en lowRD: cuando este pin esta en low, las salidas tristate están activas y se puede leer el datoWR: cuando va a low, el proceso de conversión se iniciaINTR: genera una interrupción de nivel low cuando finaliza el proceso de conversiónVref/2: este pin debe ser alimentado con la mitad del rango de voltaje analógico máximo que va a recibir el ADC0804 por el pin Vin(+). Ejemplo: para un rango de entrada entre 0,5v y 3,5v el valor de Vref/2 será igual a: (3,5 – 0,5 )/2 o sea 1,5v

3. Sensor de temperatura LM35

El sensor de temperatura utilizado, es el circuito integrado LM35D de National SemiconductorsCaracterísticas principalesEl circuito integrado LM35D es un sensor de temperatura cuya tensión de salida es linealmente proporcional con la temperatura en la escala Celsius (centígrada) . Posee una precisión aceptable para la aplicación requerida, no necesita calibración externa, posee sólo tres terminales, permite el sensado remoto y es de bajo costo

Factor de escala : 10mV/ºC ( garantizado entre 9,8 y 10,2mV/ºC) Rango de utilización : -55ºC < T < 150ºC Precisión de : ~1,5ºC (peor caso) No linealidad : ~0,5ºC (peor caso)

4. Circuito Integrado MAX232

Este circuito integrado soluciona los problemas de niveles de voltaje cuando se requiere enviar señales digitales sobre una línea RS-232. el MAX232 se usa en aquellas aplicaciones donde no se dispones de fuentes dobles de +12V; por ejemplo, en aplicaciones alimentados con baterías de una polaridad. El MAX232 necesita solamente una fuente de +5V para su operación; un elevador de voltaje interno convierte el voltaje de +5V al doble de polaridad de +-12V. A continuación se muestra la estructura interna del MAX232 y algunas de sus características.

Page 4: Sensor Digital de Temperatura

Circuito Integrado MAX232

5. Microcontrolador PIC16F84A

Este PIC está fabricado con tecnología CMOS de altas prestaciones y encapsulado en plástico con 18 pines.A continuación se comenta brevemente la misión de cada uno de los pines.Vdd: Pin por el que se aplica la tensión positiva de la alimentación.Vss: Pin conectado a tierra o negativo de la alimentación.OSC1 / CLKIN: Pin por el que se aplica la entrada del circuito oscilador externo que proporciona la frecuencia de trabajo del microcontrolador.OSC2 / CLKOUT: Pin auxiliar del circuito oscilador.MCLR#: Este pin es activado con un nivel lógico bajo, lo que se representa con el símbolo 3. su activación origina reinicialización o Reset del PIC.También se usa este pin durante la grabación de la memoria de programa para introducir por ella la tensión, Vpp, que está comprendida entre 12 y 14 V DC.

Diagrama de conexión de pines del PIC16F84ARA0 – RA4: Son 5 líneas de E/S digitales correspondientes a la Puerta A.La línea RA4 multiplexa otra función expresado por TOCKI. En este segundo caso sirve para recibir una frecuencia externa para alimentar al temporizador interno TMR0.RB0 – RB7: Estos 8 pines corresponden a las 8 líneas de E/S digitales de la Puerta B.

Page 5: Sensor Digital de Temperatura

La línea RB0 multiplexa otra función, que es la de servir como entrada a una petición externa de una interrupción, por eso se la denomina RB0 / INT.

6. Diagrama de flujo del programa para programar el PIC16F84A

Diagrama de flujo de la subrutina reloj

Page 6: Sensor Digital de Temperatura

Diagrama de flujo de la subrutina enviar

Page 7: Sensor Digital de Temperatura
Page 8: Sensor Digital de Temperatura

Diagrama de flujo de la subrutina delay

7. Código fuente del programa para el PIC16F84A

;Proyecto final de Microcontroladores;Medición digital de la temperatura;mediante un LM35 y ADC0804 y envío;de la temperatura al PC mediante un PIC16F84A;y un MAX232 vía RS-232LIST P=16F84;*****************************;Declaración de registrosstatus equ 0x03PORTA equ 0x05PORTB equ 0x06carry equ 0TX equ 1WR equ 2CLK equ 3INTR equ 4loops equ 0x0c

Page 9: Sensor Digital de Temperatura

r0d equ 0x0dr0e equ 0x0etrans equ 0x0forg 0goto inicioorg 5;****************************;Subrutina reloj, que se encarga de dar pulsos al ADC0804reloj bsf PORTA,CLK ;sube la linea del relojmovlw 0x1Fmovwf loops ;retardoreloj2 decfsz loopsgoto reloj2bcf PORTA,CLK ;baja la linea de relojmovlw 0x1Fmovwf loops ;retardoreloj3 decfsz loopsgoto reloj3return;Fin de la subrutina reloj;****************************;Subrutina delay para transmitir un bitdelay movlw .166 ;cargar para 833 microseg aproximadamentestartup movwf r0e ;llevar a cabo el retardoredo nop ;limpiar circuito de vigilancianopdecfsz r0egoto redoretlw 0;Fin de la subrutina delay;****************************;Subrutina enviar, envia el valor de la temperatura;al PC de manera serialenviar movwf trans ;llevar el contenido de w a transmisionxmrt movlw 8 ;cargar con el numero de bitsmovwf r0d ;el contadorbcf PORTA,TX ;colocar la linea de transmision en bajocall delay ;para generar bit de arranquexnext bcf PORTA,TX ;colocar la linea de transmision en bajobcf status,carry ;limpiar el carryrrf trans ;rotar registro de transmisionbtfsc status,carry ;preguntar por el carrybsf PORTA,TX ;si es uno, colocar linea en altocall delaydecfsz r0d ;decrementar el contador, saltar si cerogoto xnext ;repetir hasta transmitir el datobsf PORTA,TX ;colocar la linea de transmision en altocall delay ;llamar retardo 1 bit -bit de parada-

Page 10: Sensor Digital de Temperatura

retlw 0;Fina de la subrutina enviar;****************************;Inicio del programainicio bsf status,5movlw 0x11movwf PORTAmovlw 0xFFmovwf PORTBbcf status,5bsf PORTA,TX ;colocar la linea de transmision en altobcf PORTA,WR ;colocar en bajo WR para resetear el ADCmovlw 0x1Fmovwf loops ;retardosalto1 decfsz loopsgoto salto1bsf PORTA,WR ;colocar en alto WR para iniciar la conversionmovlw 0x1Fmovwf loops ;retardosalto2 decfsz loopsgoto salto2pulsos call reloj ;llamar a la subrutina relojbtfsc PORTA,INTR ;preguntar se INTR es cero, si lo es saltargoto pulsosmovf PORTB,w ;cargar el dato binario en wcall enviar ;llamar a la subrutina enviargoto inicio;Fin del programa principal;*****************************end

Grafica Del Circuito

Page 11: Sensor Digital de Temperatura

8. Programa TermoPIC

El programa que se utiliza para visualizar la temperatura en el PC se llama TermoPIC, el cual se ha desarrollado en lenguaje Delphi.Nota importante: para que el programa funcione, debe bajarse de Internet el componente para delphi conocido como TComport

Page 12: Sensor Digital de Temperatura

9. Código fuente del programa TermoPIC

unit TermoPIC;interface

usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Comport, StdCtrls, ExtCtrls, Buttons, Gauges;typeTForm1 = class( TForm )GroupBox1: TGroupBox;shPortOpen: TShape;StaticText6: TStaticText;shError: TShape;StaticText11: TStaticText;cbPorts: TComboBox;StaticText1: TStaticText;ComPort1: TComPort;SpeedButton1: TSpeedButton;SpeedButton2: TSpeedButton;Image1: TImage;Label1: TLabel;Label2: TLabel;Label3: TLabel;GroupBox2: TGroupBox;Gauge1: TGauge;Label4: TLabel;Label5: TLabel;procedure btnOpenClick( Sender: TObject );

Page 13: Sensor Digital de Temperatura

procedure btnCloseClick( Sender: TObject );//procedure btnSendClick( Sender: TObject );procedure Button6Click( Sender: TObject );procedure Button7Click( Sender: TObject );procedure Button8Click( Sender: TObject );procedure Button9Click( Sender: TObject );procedure FormCreate( Sender: TObject );procedure FormDestroy( Sender: TObject );procedure ComPort1PortOpen( Sender: TObject );procedure ComPort1ReceiveCallBack( Data: string );procedure ComPort1PortClose(Sender: TObject);//procedure Edit2KeyPress( Sender: TObject; var Key: Char );private{ Private declarations }public{ Public declarations }end;varForm1 : TForm1;Implementation{$R *.DFM}//==========================================procedure TForm1.FormCreate( Sender: TObject );beginEnumPorts( cbPorts.Items );if cbPorts.Items.Count > 0 thencbPorts.ItemIndex := 0; // show first available portend;//===========================================procedure TForm1.FormDestroy( Sender: TObject );beginComPort1.Free;end;//============================================procedure TForm1.btnOpenClick( Sender: TObject );begincbPorts.Enabled := false;ComPort1.Port := cbPorts.Items[cbPorts.ItemIndex];ComPort1.Open;end;//=============================================procedure TForm1.btnCloseClick( Sender: TObject );beginComPort1.Close;cbPorts.Enabled := true;label1.Caption:='0';Gauge1.Progress:=0;end;

Page 14: Sensor Digital de Temperatura

//===================================================procedure TForm1.ComPort1ReceiveCallBack( Data: string );vari,temperatura: longint;beginTemperatura:=Ord(Data[1]);Temperatura:= (Temperatura*100) div 256;Image1.Visible := not Image1.Visible;label1.Caption:=IntToStr(Temperatura);gauge1.Progress:=Temperatura;for i:=0 to 100000000 dobeginend;end;//===============================================procedure TForm1.ComPort1PortOpen( Sender: TObject );beginshPortOpen.Brush.Color := clYELLOW;end;//===========================================================(*procedure TForm1.Edit2KeyPress( Sender: TObject; var Key: Char );beginif Key = #13 thenbeginBtnSendClick( Sender );Key := #0;end;end; *)//===========================================(*procedure TForm1.btnSendClick( Sender: TObject );beginComPort1.send( edit2.Text + #13#10 );end; *)//===========================================procedure TForm1.Button6Click( Sender: TObject );beginComPort1.SetRTS( true );end;//===========================================procedure TForm1.Button7Click( Sender: TObject );beginComPort1.SetRTS( false );end;//===========================================procedure TForm1.Button8Click( Sender: TObject );begin

Page 15: Sensor Digital de Temperatura

ComPort1.SetDTR( true );end;//============================================procedure TForm1.Button9Click( Sender: TObject );beginComPort1.SetDTR( false );end;procedure TForm1.ComPort1PortClose(Sender: TObject);beginshPortOpen.Brush.Color:=clGray;end;end.

Adquisición de datos analógicos con el temporizador NE555

Para leer señales analógicas, es necesario hacer la respectiva conversión a señal digital. El temporizador NE555 genera pulsos variables (tiene como respuesta una frecuencia) a partir de dos resistencias y un capacitor. Este enfoque de adquisición de datos implica los siguientes pasos:

1. Adecuar la variable física en estudio para que se comporte como resistencia eléctrica2. Calcular los valores de la resistencia restante y el capacitor 3. Conectar la salida del temporizador a uno de los bits del registro de estado4. Elaborar un programa que calcule la frecuencia a partir de los pulsos de entrada5. Realizar las mediciones con valores conocidos de referencia6. Construir un modelo de transformación de frecuencia a la variable en estudio (regresión, interpolación)

Descripción del temporizador NE555

Page 16: Sensor Digital de Temperatura

Fig. Temporizador NE555

Alimentación

Vcc 5 voltios Ground Tierra

La fuente de 5 voltios para alimentar este circuito se puede obtener directamente de la fuente de poder del PC, o del puerto de juegos (ver fuente de alimentación).

Circuito genérico

Fig. Circuito genérico

Modo de operación

El temporizador NE555 genera un pulso de acuerdo a los valores de dos resistencias y un capacitor.

La siguiente fórmula se utiliza para calcular el periodo de este pulso.

Donde:

Ra : Valor de la resistencia conectada a los pines 7 y 8

Page 17: Sensor Digital de Temperatura

Rb : Valor de la resistencia conectada a los pines 2 y 7Cap : Valor del capacitor polarizado conectado a tierra y a los

pines 2 y 6

Como ejemplo, se evalúa la formula con los siguientes valores:

Ra : 540 ohmioRb : 620 ohmio

Cap : 1 microfaradio = Faradios

Resultando

T= 0.00123354 segundos

Lo que genera un pulso con una frecuencia de

La frecuencia calculada puede diferir de la frecuencia que se lee del temporizador NE555 por los efectos de la temperatura tanto en las resistencias como en el capacitor de este circuito.

En un caso de aplicación