0% encontró este documento útil (0 votos)
86 vistas16 páginas

Indicador de Temperatura con LM35 y LCD

Este documento presenta el desarrollo de una práctica que tiene como objetivo mostrar la temperatura en grados Celsius y Fahrenheit utilizando un LM35 y un microcontrolador PIC18F45K50. El programa toma muestras del voltaje del LM35 usando el convertidor analógico-digital y calcula la temperatura aplicando factores de conversión. La temperatura se muestra en una pantalla LCD y se toma el promedio de 50 lecturas para estabilizar el valor mostrado. El código configura los puertos, realiza las conversiones, cálculos y des

Cargado por

ARTURO
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
86 vistas16 páginas

Indicador de Temperatura con LM35 y LCD

Este documento presenta el desarrollo de una práctica que tiene como objetivo mostrar la temperatura en grados Celsius y Fahrenheit utilizando un LM35 y un microcontrolador PIC18F45K50. El programa toma muestras del voltaje del LM35 usando el convertidor analógico-digital y calcula la temperatura aplicando factores de conversión. La temperatura se muestra en una pantalla LCD y se toma el promedio de 50 lecturas para estabilizar el valor mostrado. El código configura los puertos, realiza las conversiones, cálculos y des

Cargado por

ARTURO
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INSTITUTO TECNOLÓGICO

DE LÁZARO CÁRDENAS

PRÁCTICA 2.3.

ALUMNOS: JAIME HUMBERTO GARCÍA VALLE 20560102

ARTURO JOREL AYALA CRUZ 20560024

CARRERA: INGENIERÍA ELECTRÓNICA

PROFESOR: M.C. JULIO CÉSAR GALLO SÁNCHEZ

MATERIA: APLICACIONES DE MICROCONTROLADORES

UNIDAD 2: EL CONVERTIDOR ANALÓGICO A DIGITAL

CD Y PTO. LÁZARO CÁRDENAS MICHOACÁN JUEVES, 05 DE OCTUBRE DE 2023


71S Aplicaciones de Microcontroladores Ingeniería Electrónica

ÍNDICE

Introducción .......................................................................................................................... 1
Material ................................................................................................................................. 2
Equipo .................................................................................................................................... 2
Desarrollo .............................................................................................................................. 3
Funcionamiento del código ................................................................................................. 3
Prueba del programa ........................................................................................................... 7
Código del programa .......................................................................................................... 11
Conclusión ........................................................................................................................... 13
Bibliografía .......................................................................................................................... 14

i
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Introducción

Este informe presenta el desarrollo de la práctica 3 perteneciente a la unidad 2 de la materia


de Microcontroladores de Ingeniería Electrónica. El propósito de esta práctica es aplicar los
conocimientos que se han adquirido en los dos trabajos anteriores y a lo largo de las clases
de la unidad para desarrollar un indicador de temperatura utilizando un LM35, la temperatura
se mostrará en la pantalla LCD en grados Celsius y Fahrenheit, el diagrama del circuito se
muestra en la Figura 1.

La práctica se desarrollará de manera muy parecida a la del medidor de voltaje, pero con
algunas consideraciones que debemos de tener en cuenta acerca del sensor. El LM35 ofrece
una salida de voltaje correspondiente a 10mV por cada grado centígrado por lo que no resulta
necesario el desplegar varios decimales, con imprimir solamente el entero puede llegar a ser
suficiente, esta característica del LM35 determina el factor de conversión que se le aplicará
al voltaje medido por el ADC (el cual ya se había aprendido a calcular en la práctica anterior),
este factor de conversión es 1°C/10mV= 100 °C/V, es decir, bastará con solo multiplicar el
voltaje medido por 100 y obtendremos el valor de la temperatura en grados Celsius, para
pasar a Fahrenheit simplemente aplicamos la fórmula que relaciona estos dos. También será
necesario el realizar “ciclos” de medición de hasta 50 veces para determinar el valor
promedio de la temperatura, ya que, si la fuente de voltaje o el LM35 tienen muchas
variaciones, estas se verán reflejadas en el valor desplegado y no será agradable a la vista del
usuario.

1
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

5V

RESET 5V
39kΩ

5V
LM35 10kΩ
1 2 3 MCLR/Vpp/RE3 1 40 RB7
RA0 2 39 RB6
RA1 3 38 RB5
RA2 4 37 RB4
5V
RA3 5 36 RB3

PIC18F45K50
RA4 6 35 RB2
RA5 7 34 RB1 220Ω
RE0 8 33 RB0
RE1 9 32 VDD 5V 5V
RE2 10 31 VSS
VDD 11 30 RD7
VSS 12 29 RD6 VSS VDD V0 RS RW E D0 D1 D2 D3 D4 D5 D6 D7 A K
5V
RA7 13 28 RD5
RA6 14 27 RD4
RC0 15 26 RC7
RC1
RC2
16
17
25
24
RC6
D+
LCD 16X02
VUSB3V3 18 23 D-
RD0 19 22 RD3
RD1 20 21 RD2

Figura 1.- Diagrama eléctrico propuesto para la práctica.

Material

1. Tarjeta de evaluación µvva (Miuva) con PIC18F45K50.


2. Cable Dupont.
3. Cable Micro USB.
4. LCD de 16x2.
5. LM 35.
6. Cable calibre 22.
7. Protoboard

Equipo

1. Computadora con los softwares MPLAB IDE, CCS y PICkit 2 instalados.

2
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Desarrollo

Funcionamiento del código

El programa se inicia con las líneas que se han estado utilizando a lo largo de la unidad,
donde configuramos el ADC con conversión en 10 bits para aprovechar su máxima
resolución.

#include "18F45k50.h"
#device adc = 10
#fuses NOWDT
#use delay(internal=48MHz)

A continuación, se definen los puertos de conexión de la LCD y se le da el nombre requerido


para que la librería los reconozca y opere con ellos. Se agrega dicha librería para poder hacer
uso de la LCD con funciones básicas.

#define LCD_ENABLE_PIN PIN_D4


#define LCD_RS_PIN PIN_D5
#define LCD_RW_PIN PIN_C2
#define LCD_DATA4 PIN_D0
#define LCD_DATA5 PIN_D1
#define LCD_DATA6 PIN_D2
#define LCD_DATA7 PIN_D3
#include "lcd.c"

Se declaran las variables necesarias para realizar las operaciones y cálculos en el programa.
La variable “tempsp” es necesaria para guardar las conversiones que estará haciendo el ADC,
aquí se irán acumulando las 50 lecturas para después hacer el promedio. Las variables tipo
“float” serán utilizadas en el cálculo de la temperatura y en las de tipo “char” la variable “i”
se usará para iterar en un FOR, “lect” para registrar cuantas mediciones se han hecho y
“grado” guarda el número 223 para poder imprimir el símbolo “°” en la LCD (código ASCII).

3
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

unsigned long tempsp=0;


float tempc=0,tempf=0;
char i=0,lect=0,grado=223;

Como se hizo en la práctica anterior, se procede a iniciar la función principal y se despliegan


algunos datos sobre la práctica en la LCD, se configura y selecciona el canal 0 del ADC, se
habilitan las interrupciones globales y del ADC y por último se inicia la primera conversión
del ADC.

void main(void)

{
output_drive(PIN_B0);
output_low(PIN_B0);
lcd_init();lcd_putc("\f PRACTICA 2.3");
delay_ms(2000);
lcd_putc("\f S. Temperatura");
delay_ms(2000);
lcd_putc('\f');
setup_adc(ADC_CLOCK_DIV_8|ADC_TAD_MUL_4);
setup_adc_ports(sAN0);
set_adc_channel(0);
enable_interrupts(INT_AD); //se activa la
interrupción del adc
enable_interrupts(GLOBAL); //Para usar cualquier
interrupción se requiere la global
read_adc(ADC_START_ONLY);

Se inicia el ciclo infinito y se coloca un IF que estará checando cuando las lecturas (indicadas
por “lect”) lleguen a 50 y se requiera sacar el promedio, cuando esto ocurra se apagará el
ADC para no mantenerlo encendido mientras se realizan los siguientes cálculos, el valor de
“tempsp” que contiene la suma de las 50 mediciones se multiplica por “0.00995” que
proviene de la multiplicación del factor de conversión del valor digital a voltaje (5.09V/1023)
y el factor de voltaje a temperatura (100 °C/V), de esta manera ya contiene la lectura en
grados Celsius y se guarda en “tempc”. Es necesario resetear “tempsp” en 0 para volver a
acumular el valor de solo 50 mediciones y no más. Por último la variable “tempf” que

4
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

contendrá los grados Fahrenheit se calcula utilizando el valor calculado de “tempc” y la


fórmula: F= C*1.8 + 32.

for(;;)
{
if(lect>=50)
{
setup_adc(ADC_OFF);
tempc=tempsp*0.00995;
tempsp=0;
tempf=tempc*(1.8)+32.0;

Los valores calculados anteriormente se despliegan en las dos líneas de la LCD con
solamente un decimal, aquí se hace uso de la variable “grado” para imprimir el símbolo “°”.
El indicador de lecturas “lect” se reinicia a 0 para volver a comenzar y se vuelve a encender
el ADC con las configuraciones de frecuencia que se han utilizado. Con esto hecho se cierra
el IF.

printf(lcd_putc,"C: %0.1f %cC ",tempc,grado);


printf(lcd_putc,"\nF: %0.1f %cC ",tempf,grado);
lect=0;
setup_adc(ADC_CLOCK_DIV_8|ADC_TAD_MUL_4);
}

Antes de cerrar el FOR infinito se coloca un pequeño delay dividido en 3 iteraciones de 5ms,
solamente para añadir un poco de estabilidad al valor desplegado en la LCD, ya que las 50
mediciones del ADC pueden realizarse de manera muy rápida. Por último, se inicializa la
lectura del ADC con el objetivo de que cada vez que realice una conversión y guarde el valor
se vuelva a comenzar la otra con la misma configuración y en el mismo canal, y se cierra el
ciclo infinito.

5
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

for(i=0;i<=2;i++)delay_ms(5);
read_adc(ADC_START_ONLY);
}
}

Por último, se escribe la directiva de la interrupción del ADC y se crea la función que se
ejecutará cuando esta ocurra. Cada vez que la conversión del ADC termine la variable
“tempsp” se incrementará en el valor correspondiente al resultado medido, se incrementará
la variable “lect” en señal de que se ha registrado una nueva conversión y por último se
retorna al ciclo infinito donde se checará el número de lecturas y se iniciará de nueva cuenta
la lectura del ADC.

#int_ad

void Adc_Int()
{
tempsp+=read_adc(ADC_READ_ONLY);
lect++;
return;
}

6
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Prueba del programa

Primeramente, se descarga el programa en la tarjeta Miuva, mostrada la Figura 2, y se realizan


las conexiones correspondientes para comprobar su funcionamiento empleando la LCD
16x02 (Figura 3) y el transductor de temperatura LM35 (Figura 4), tal como se muestran en
la Figura 5.

Figura 2.- Tarjeta de evaluación µvva (Miuva) con PIC18F45K50.

Figura 3.- LCD 16X02.

7
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 4.- Transductor LM35.

Figura 5.- Esquema de conexiones de Miuva con LCD y LM35.

8
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Se procede a realizar una medición de la temperatura con base a la tensión que entrega el
transductor al canal 0. Como se muestra en la Figura 6, se despliega en el LCD la medición
de 32 °C y 89.7 °F respectivamente, la cual corresponde a la temperatura ambiente.

Figura 6.- Medición de temperatura ambiente con el programa desarrollado.

Después se le coloca el dedo al LM35 para incrementar un poco la medición por medio de la
temperatura corporal dando un valor de 34.3 °C y 93.8 °F como se muestra en la Figura 7.

9
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Figura 7.- Medición de temperatura corporal.

Por último, se checó si la temperatura mostrada en la LCD correspondía realmente con el


valor de voltaje entregado por el LM35 midiéndolo directamente con un multímetro. Como
se observa en la Figura 8 la medición indicaba y el voltaje de por lo que este último
efectivamente es la centésima parte del valor de temperatura indicado.

Figura 8.- Comparación temperatura-voltaje.

10
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Código del programa

#include "18F45k50.h"
#device adc = 10
#fuses NOWDT
#use delay(internal=48MHz)

#define LCD_ENABLE_PIN PIN_D4


#define LCD_RS_PIN PIN_D5
#define LCD_RW_PIN PIN_C2
#define LCD_DATA4 PIN_D0
#define LCD_DATA5 PIN_D1
#define LCD_DATA6 PIN_D2
#define LCD_DATA7 PIN_D3
#include "lcd.c"

unsigned long tempsp=0;


float volm=0,tempc=0,tempf=0;
char i=0,lect=0,grado=223;

void main(void)

{
output_drive(PIN_B0);
output_low(PIN_B0);
lcd_init();lcd_putc("\f PRACTICA 2.3");
delay_ms(2000);
lcd_putc("\f S. Temperatura");
delay_ms(2000);
lcd_putc('\f');
setup_adc(ADC_CLOCK_DIV_8|ADC_TAD_MUL_4);
setup_adc_ports(sAN0);
set_adc_channel(0);
enable_interrupts(INT_AD);
enable_interrupts(GLOBAL);
read_adc(ADC_START_ONLY);

for(;;)
{
if(lect>=50)
{
setup_adc(ADC_OFF);
tempc=tempsp*0.00995;
tempsp=0;
tempf=tempc*(1.8)+32.0;
lcd_gotoxy(1,1);
printf(lcd_putc,"C: %0.1f %cC
",tempc,grado);
printf(lcd_putc,"\nF: %0.1f %cC
",tempf,grado);
lect=0;

11
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

setup_adc(ADC_CLOCK_DIV_8|ADC_TAD_MUL_4);
}
for(i=0;i<=2;i++)delay_ms(5);
read_adc(ADC_START_ONLY);

}
}

#int_ad

void Adc_Int()
{
tempsp+=read_adc(ADC_READ_ONLY);
lect++;
return;
}

12
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Conclusión

Esta práctica ha servido para aprender a medir otras variables físicas diferentes al voltaje con
el microcontrolador con el uso del ADC y de sensores especiales para el tipo de variable
necesaria. Aunque en esta ocasión se utilizó un sensor sencillo cuyo paso mínimo de
medición es el doble de la resolución del ADC, permitió poder identificar los principales
pasos sobre el uso de bastantes de los transductores que entregan señal de voltaje, los cuales
son la medición del nivel de voltaje por medio del ADC y posteriormente su conversión al
valor deseado para mostrar al usuario u operar alguna función dentro del microcontrolador,
no obstante se entiende que en muchas ocasiones los sensores pueden llegar a tener
variaciones de respuestas con un valor inferior a la resolución del ADC o que varían en otro
parámetro eléctrico (corriente, resistencia, frecuencia, etc.) para los cuales es importante
hacer un acoplamiento.

En la práctica se han resuelto algunos problemas que han permitido comprender aún mejor
el funcionamiento y creación de un programa de medición de alguna variable física, por
ejemplo, el hecho de que la fuente de alimentación no sea estable y afecte la medición es un
problema que se aprendió a corregir por medio de dos técnicas: sacar la media aritmética de
cierta cantidad de mediciones antes de desplegarlas o utilizarlas en el resto del programa y
utilizar el módulo de voltaje de precisión FVR del microcontrolador como referencia del
ADC. Otro de los problemas importantes consistía en encender y apagar el ADC de manera
repetitiva y provocando una inestabilidad en las mediciones, realizar operaciones complejas
de variables flotantes cuando simplemente no eran necesarias y provocaban un retraso muy
grande en la ejecución del programa y también el error de no realizar exactamente las 50
mediciones para promediar por la forma en la que se iban contabilizando estas. Todos estos
errores mencionados provocaban una lectura con un error considerable, pero con ayuda del
profesor fueron corregidos y el error se redujo significativamente.

13
Reporte Práctica 2.3
71S Aplicaciones de Microcontroladores Ingeniería Electrónica

Bibliografía

1. Fabricante: Microchip.
Título: PIC18(L)F2X/45K50 Datasheet.
Editorial: Microchip.

2. Autor: Julio Cesar Gallo Sánchez.


Título: Programando el Microcontrolador PIC18F4550 en Leguaje C con el
compilador CCS en MPLAB.
Edición: 1era Edición.

3. Autores: Eduardo García Breijo.


Título: Compilador C CCS y simulador PROTEUS para Microcontroladores PIC.
Edición: Primera Edición.
Editorial: Alfaomega.

14
Reporte Práctica 2.3

También podría gustarte