Download - Reporte Sensor Temperatura.docx
-
7/22/2019 Reporte Sensor Temperatura.docx
1/13
REPORTE SENSOR DE
TEMPERATURA DIGITALINSTRUMENTACIN VIRTUAL
PROFESOR:
CESAR ALBERTO GOMEZ GUZMAN
ALUMNOS:
ERICK YSMAEL ROBLES PACHECO
SAUL IBARRA ROSALES
CHRISTIAN VALENTIN HERRERA ALCARAZ
YAIR ESA LPEZ MEDINA
GRUPO:
IMT-72
FECHA: 14/SEP./2012
-
7/22/2019 Reporte Sensor Temperatura.docx
2/13
INTRODUCCIN
Este reporte describe como lograr convertir una seal analgica de un sensor detemperatura (LM35) a una seal digital con el uso del ADC (Convertidor Analgico Digital)
de un pic 16F887 mediante el lenguaje de programacin en C; Acoplando la seal
convertida para que la muestre en un display LCD de una forma precisa y exacta; es decir,
al final tendremos un termmetro digital el cual nos mostrara la temperatura ambiente de
cualquier lugar con exactitud y precisin.
-
7/22/2019 Reporte Sensor Temperatura.docx
3/13
DESARROLLO
Materiales
Para la construccin del circuito es necesario de los siguientes materiales:
PIC16F887
Display LCD de 2X16 (JHD162A SERIES)
Potencimetro 10k
Sensor LM35
Resistencias (3 10k, 2 2.2k)
Capacitor 25v 100uf
Cable UTP
Descripcin y funcionamiento del sensor LM35
El LM35 es un sensor de temperatura con una precisin calibrada de 1C y un rango que
abarca desde -55 a +150C. El sensor se presenta en diferentes encapsulados pero el mas
comn es el to-92 de igual forma que un tpico transistor con 3 patas, dos de ellas para
alimentarlo y la tercera nos entrega un valor de tensin proporcional a la temperatura
medida por el dispositivo. Observando la figura 1.1 podemos ver la configuracin de los
pines.
La salida es lineal y equivale a 10mV/C por lo tanto:
+1500mV = 150C
+250mV = 25C
-550mV = -55CG
Figura 1.1 Configuracin Pines LM35
-
7/22/2019 Reporte Sensor Temperatura.docx
4/13
Para hacernos un termmetro lo nico que necesitamos es un voltmetro bien calibrado y
en la escala correcta para que nos muestre el voltaje equivalente a temperatura.
El LM35 funciona en el rango de alimentacin comprendido entre 4 y 30 voltios. Podemos
conectarlo a un conversor Analgico/Digital y tratar la medida digitalmente, almacenarla o
procesarla con un microcontrolador o similar. Que es exactamente de la manera en quese har en este proyecto.
Distribucin de pines y funcionamiento del Display LCD 2X16
Veamos que funcin cumple cada uno de los pines del display:
Pines 1, 2 y 3: Estos pines estn dedicados a la alimentacin y contraste del LCD.Efectivamente, el pin 1 (VSS) es el que se debe conectar al negativo (masa) de la
alimentacin, y el pin 2 (Vdd/Vcc) es el que va unido al positivo (5 voltios). El pin 3 permite
el ajuste del contraste del panel. Ver figura 1.2.
Pines 4, 5, 6: Estos pines son de alguna manera los que controlan el funcionamiento del
display. El pin 4, tambin llamado RS (Registration Select) es el que le indica al controlador
interno del LCD que el valor presente en el bus de datos es un comando (cuando RS=0) o
bien un carcter para representar (cuando RS=1).
Figura 1.2 Pines alimentacin LCD
-
7/22/2019 Reporte Sensor Temperatura.docx
5/13
El pin 5 (R/W por Read/Write o Leer/Escribir) permite decidir si queremos envi ar
datos al display (R/W=0) o bien nos interesa leer lo que el display tiene en su memoria o
conocer su estado (R/W=1). Por ultimo, el pin 6(E por Enable o habilitado) es el que
selecciona el display a utilizar. Es decir, podemos tener varios LCD conectados a un mismo
bus de datos (pines 7-14) de control, y mediante E seleccionar cual es el que debe usarse
en cada momento.
Pines 7, 8, 9, 10, 11, 12, 13, 14: Estos ocho pines son el bus de datos del controlador de
la pantalla. Llamados DB0-DB7 son los encargados de recibir (o enviar) los comandos o
datos desde o hacia el display. DB0 es el bit de menor peso y DB7 es el ms significativo.
Funcionamiento 8 y 4 bits:
Estos displays soportan dos modos de trabajo: en uno de ellos reciben en DB0-DB7 los 8
bits del dato, y en el otro, llamado modo de 4 bits reciben los datos en dos mitades
(nibbles) por los pines DB4-DB7, en dos pasos sucesivos. Si bien esto puede complicar
ligeramente la programacin, supone un ahorro de 4 pines en el bus de datos, y esto en
microcontroladores con pocos pines de I/O es muy til.
Figura 1.3 Esquema de posicin y funcin de pines LCD
-
7/22/2019 Reporte Sensor Temperatura.docx
6/13
Funcionamiento y distribucin de pines a usar en PIC 16F887
El pic tiene 40 pines de los cuales la mayora son de multipropsito como podemos
observar en la figura 1.4.
Los pines a usar en este proyecto sern los siguientes:
Pin 1 (MCLR): Este pin es usado para poner un botn para hacer un reset al pic.
Pin 2 (AN0): Este pin es el que estar configurado para ser una entrada analgica, es decir
aqu conectaremos la seal del sensor LM35.
Pin 3 (-VREF) y 4 (+VREF): Estos pines sern utilizados para introducir el voltaje de
referencia para la conversin de la seal analoga a digital.
Pin 11 (Vdd) y 12 (Vss): Estos pines son la alimentacin del pic la cual debe ser de 5v y no
mayor ya que si no se podra daar el pic.
Figura 1.4 Distribucin de pines y funcin PIC 16F887
-
7/22/2019 Reporte Sensor Temperatura.docx
7/13
Pin 33 (RB0), 34 (RB1) y 35 (RB2): Estos pines sern utilizados para la comunicacin del pic
con el LCD en los pines de control del mismo.
Pin 37-40 (RB4-RB7): Estos pines sern los 4 bits enviados al LCD para su interpretacin y
prximo muestreo en pantalla.
Instrucciones clave para la conversin de la seal analgica a digital en C
Configuracin de puertos
Una de las instrucciones principales es la configuracin de los puertos, para as decirle al
pic cuales trabajaran como puertos de entrada y cuales como salida.
Con la siguiente instruccin se configuran los pines que necesitamos como entrada los
cuales son RA0, RA2 y RA3:
SET_TRIS_A (0x0D); // RA0, RA2 y RA3 como entradas y las sobrantes como salidas.
Donde:
SET_TRIS_A: Es la instruccin para la configuracin del puerto A.
(0x0D): Es el nmero hexadecimal que indica que pines sern activados como entradas.
Configuracin del ADC (Convertidor Analgico Digital)
Antes de comenzar con la conversin se tiene que configurar el ADC para su correcto
funcionamiento para esto se utilizan las siguientes instrucciones:
SETUP_ADC_PORTS (sAN0 | VREF_VREF); // Pin AN0 como entrada analgica y pin 3 y 4
como entrada de referencia.
Donde:
SETUP_ADC_PORTS: Es la instruccin para la configuracin de los pines que sern usados
como analgicos y los pines de voltaje de referencia.
(sAN0 | VREF_VREF): Son los pines que sern utilizados para la conversin, SAN0 es el pin
de la entrada analgica y VREF_VREF son los pines de referencia.
-
7/22/2019 Reporte Sensor Temperatura.docx
8/13
Otra instruccin importante es el reloj con el que trabajara el ADC para su conversin y
pertenece a la siguiente instruccin:
SETUP_ADC (ADC_CLOCK_DIV_8); // se inicializa el ADC y se selecciona el reloj a utilizar
Fosc/8 Fosc=4Mhz.
Se define los bits a utilizar para la conversin en el ADC, para tener un mejor resultado se
debe elegir 10 bits:
#device adc=10 // esta instruccin configura el adc a 10 bits, poner al principio de todo el
programa.
Calibracin de la seal convertida por el ADC
Si tenemos que el sensor LM35 su temperatura mxima a censar es de 150 grados y porcada grado te entrega 10mv entonces obtenemos un voltaje mximo entregado por el
sensor de:
10mv x 150 grados = 1.5V
Para obtener una gran precisin en la conversin tenemos que poner el mismo voltaje
como referencia; es decir, tenemos que poner un voltaje de referencia entre los pines 4 y
5 de 1.5V para as ese valor dividirlo entre los bits del ADC entonces tenemos que:
1.5V/1024= 0.001464
Entonces tendremos un salto de 0.001464 por cada bit que se tomara en cuenta en la
conversin. Hacindola muy precisa.
Para lograr poner como referencia 1.5v en los pines 4 y 5 se tuvo que implementar un
divisor de tensin resistivo; el cual, como su nombre lo dice divide la tensin de entrada
segn el arreglo de resistencias con las que cuente. El circuito es el siguiente:
Figura 1.5 Circuito divisor de tensin resistivo
-
7/22/2019 Reporte Sensor Temperatura.docx
9/13
Y su formula para calcular el voltaje de salida es el siguiente:
Con la ayuda de esta formula podemos dividir el voltaje a 1.5v y el Voltaje de salidaconectarlo al pin 5 y el pin 4 a GND.
Conversin del valor obtenido por el ADC a grados
Una ves que ya tenemos con los bits que se va a trabajar para la conversin en el ADC y
con el voltaje de referencia de 1.5v en los pines 4 y 5, se emplea la siguiente formula para
obtener el valor en grados y as ya enviarlo al LCD para mostrarlo en pantalla.
( )
Donde:
Temperatura: Valor en grados centgrados.
1.5: Tensin de referencia en pines 4 y 5.
1024: Valor en decimal de los 10 bits del conversor
ADC: Valor Ledo por el ADC del pin 2 (AN0).
0.01: Divisin para convertir de mV a Grados.
Ya calculado el valor de la temperatura en grados se da por terminado la etapa de
conversin de la seal analgica entregada por el sensor LM35 a la seal digital entregada
por el pic para su procesamiento y prximo muestreo.
-
7/22/2019 Reporte Sensor Temperatura.docx
10/13
Circuito sensor de temperatura digital
Figura 1.6 Sensor de temperatura digital
-
7/22/2019 Reporte Sensor Temperatura.docx
11/13
Cdigo en C para la programacin del PIC16F887
#include
#device adc=10
#use delay(clock=8000000,RESTART_WDT)
#include
void init_io()
{
// Configurar Puerto A, Entrada y Salidas
SET_TRIS_A(0x0D); // bit 0 = output, 1 = input
}
void init_adc()
{
// Configurar RA0 como entrada analogica, usar pines de VREF
// Como tensin de referencia
SETUP_ADC_PORTS(sAN0 | VREF_VREF);
SETUP_ADC(ADC_CLOCK_DIV_8);
}
float leer_temp()
{
int16 adc;
float temp;
if (adc_conversion.new_flag == 1)
{
adc=adc_conversion.value;
adc_conversion.new_flag=0;
}
temp=(((1.5/1024.0)*adc)/0.01); // conversin del valor del ADC a grados
return temp;
-
7/22/2019 Reporte Sensor Temperatura.docx
12/13
}
void main()
{
// Inicializar variables globales
float temp
adc_conversion.value = 0;
adc_conversion.new_flag = 0;
init_io();
init_adc();
//Configuraciones del pic
ENABLE_INTERRUPTS(GLOBAL); // Habilitar todo los interruptores en general
ENABLE_INTERRUPTS(INT_RTCC); // Habilitar interruptor 0
lcd_init();
setup_oscillator(OSC_8MHZ|OSC_INTRC);
setup_spi(FALSE);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
//Inicio de cdigo del programa
//Instrucciones a mostrar en pantalla LCD
lcd_gotoxy(1,1);
printf(lcd_putc,"MECATRONICA IMT72");
delay_ms(700);
lcd_gotoxy(1,1);
printf(lcd_putc," SENSOR \n LA TURBIA ");
delay_ms(700);lcd_gotoxy(1,1);
printf(lcd_putc,"INICIANDO... ");
delay_ms(700);
printf(lcd_putc,"\f");
-
7/22/2019 Reporte Sensor Temperatura.docx
13/13
while (1)
{
temp=leer_temp();
lcd_gotoxy(1,1);
printf(lcd_putc,"TEMPERATURA ACT.\n %2.1f C ",temp);
delay_ms(100);
printf(lcd_putc,"\f");
}
}
Imagen del circuito real funcionando
Figura 1.7 Circuito elaborado en protoboard