LECTURA DE ENTRADAS ANALOGICAS Y SENSOR DE TEMPERATURA

I. CAPACIDAD TERMINAL
Utilizar al microcontrolador en aplicaciones de control electrónico.
Desarrollar y ejecutar programas en un microcontrolador PIC
Programar y configurar interfaces básicas del microcontrolador.

II. COMPETENCIA ESPECÍFICA DE LA SESION
Lecturas analógicas de un canal del PIC
Configuración de un Sensor de Temperatura
Lectura analógica en una pantalla LCD

III. CONTENIDOS A TRATAR
Entradas analógicas
Sensor de Temperatura

IV. RESULTADOS
Diseñan y optimizan sistemas y procesos para cumplir con las condiciones establecidas y gestionando adecuadamente los recursos materiales y humanos.

V. MATERIALES Y EQUIPO
CCS Compiler instalado.
Entrenador de PICS
Pantalla LCD
PIC16F877A
Guía de Laboratorio. El trabajo se desarrolla de manera GRUPAL.
PC con Software de simulación.
VI. REPASO DEL LABORATORIO ANTERIOR
Herramientas de Programación en Hardware y Software

VII. FUNDAMENTO TEÓRICO
Lectura de un puerto analógico
Sensor de temperatura LM35
Sensor de temperatura DS18B20

VIII. DESCRIPCIÓN Y FUNCIONAMIENTO DE LAS ENTRADAS ANALÓGICAS.

Una señal eléctrica analógica es aquella en la que los valores de la tensión o voltaje varían constantemente y pueden tomar cualquier valor. En el caso de la corriente alterna, la señal analógica incrementa su valor con signo eléctrico positivo (+) durante medio ciclo y disminuye a continuación con signo eléctrico negativo (–) en el medio ciclo siguiente.
En un sistema de control (como un microcontrolador) no tiene capacidad alguna para trabajar con señales analógicas, de modo que necesita convertir las señales analógicas en señales digitales para poder trabajar con ellas.

La señal digital obtenida de una analógica tiene dos propiedades fundamentales:
Valores :Que valor en voltios define 0 y 1. En nuestro caso es tecnología TTL (0 – 5V)
Resolución analógica :Número de bits que usamos para representar con una notación digital una señal analógica


IX. TAREAS GUIADAS DENTRO DEL LABORATORIO:

1. Simule y pruebe en el entrenador el programa del LCD de acuerdo al circuito y código siguiente. Asegúrese que el PIN RW esté conectado a GND (jumper sin conectar) y que el LCD esté conectado al PUERTO D mediante interruptores rojos debajo del mismo:






2. Realice los cambios sugeridos a continuación y muestre sus resultados

a. Donde dice “#device adc=8” cambie por “#device adc=10”; convierta la variable “lectura” en entero de 16 bits y la línea printf cambie “%4u” por “%4lu”. ¿Cuál es el cambio mostrado en la pantalla LCD? ¿por qué?.

b. Convierta el valor leído en valor de voltaje de 0 a 5 voltios. Para esto cambie la variable “lectura” a variable tipo float y configure su forma de mostrarse en el LCD. Luego, en la función While(true),  añada la instrucción “lectura = lectura /  204.6”. Cambie las instrucciones para que en la pantalla del LCD aparezca algo así “Tension: 3.456 v”.

c. Finalmente agregue una condición IF para que si el valor de voltaje supera 4.5 voltios, mostrar el mensaje “WARNING” en la primera línea del LCD.


CODIGO USADO

//Desactivar dip switch de DISPLAYS para correcto funcionamiento.
//Entrada analógica en el puerto A3.

#include <16f877a.h>             // Incluimos archivo con PIC a utilizar
#device adc=10                    // Utilizamos 8 bits de RESOLUCION de lectura
#use delay (clock=20M)           // Indicamos al compilador que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT      // Configuración básica de los fusibles

#define LCD_ENABLE_PIN        PIN_D3   //Definimos los pines a ser utilizados por la
#define LCD_RS_PIN            PIN_D2   //pantalla LCD
#define LCD_RW_PIN            PIN_A0  
#define LCD_DATA4             PIN_D4
#define LCD_DATA5             PIN_D5
#define LCD_DATA6             PIN_D6
#define LCD_DATA7             PIN_D7 
#include <lcd.c>                 // Incluimos librería para manejar Pantalla LCD

int16 tem=0;
float lectura=0;

void main ()
{
   lcd_init () ; // Inicializamos pantalla LCD
   setup_adc_ports (AN0_AN1_AN3);
   setup_adc (ADC_CLOCK_INTERNAL);
   set_adc_channel (3); //lectura del canal analogico 3
   delay_us (20);
  
   WHILE (true)
   {
      tem = read_adc ();        // Leemos Canal A0
      tem = tem / 10.23 ;
      delay_ms (20) ;
      lcd_gotoxy(1,1);
      printf (lcd_putc, "Temp:  %3lu\337C", tem); // imprimimos valor
        
     
      lectura = read_adc ();        // Leemos Canal A0
      lectura = lectura / 409.2 ;
      delay_ms (20) ; // ubicamos cursos en LCD// esperamos para una correcta lectura
      lcd_gotoxy(1,2);
      printf (lcd_putc, "Voltaje: %1.2f V", lectura); // imprimimos valor
        
     
      IF (tem <= 100)
      {
      output_high (PIN_C0);
      output_low (PIN_C1);
      output_low (PIN_C2);
      }
      IF (tem <= 90)
      {
      output_high (PIN_C1);
      output_low (PIN_C0);
      output_low (PIN_C2);
      }
      IF (tem <= 15)
      {
      output_high (PIN_C2);
      output_low (PIN_C0);
      output_low (PIN_C1);
      }
     
    
    }
   
}


3. Tarea de investigación: 
a. Averigüe cómo funciona un sensor LM35 y cómo se puede leer dicha temperatura en una pantalla LCD.

El LM35 es un sensor de temperatura con una precisión calibrada de 1 °C. Su rango de medición abarca desde -55 °C hasta 150 °C. La salida es lineal y cada grado Celcius equivale a 10 mV, por lo tanto:

150 °C = 1500 mV
-55 °C = -550 mV
Opera de 4v a 30v.


El LM35 no requiere de circuitos adicionales para calibrarlo externamente. La baja impedancia de salida, su salida lineal y su precisa calibración hace posible que este integrado sea instalado fácilmente en un circuito de control. Debido a su baja corriente de alimentación se produce un efecto de auto calentamiento muy reducido. Se encuentra en diferentes tipos de encapsulado, utilizado por transistores de baja potencia




b. Lo mismo con un sensor DS18B20.

Este sensor es idóneo cuando queremos medir la temperatura en ambientes húmedos e incluso dentro del agua. Esto es debido a que podemos comprar una versión que viene en forma de sonda impermeable.Este sensor puede medir temperaturas entre -55ºC y 125ºC.
Este sensor tambien admite resoluciones de 9-bit, 10-bit, 11-bit y 12-bit. Pero por defecto utiliza la resolución de 12-bit.

-Voltaje de Operación: 3.0V – 5.5V
-Rango de Trabajo: -55℃ hasta +125℃ (-67°F to +257°F)
-Precisión en el rango de -10°C hasta +85°C: ±0.5°C.
-Resolución seleccionable de 9-12 bits



X. OBSERVACIONES

-Los circuitos digitales, como por ejemplo un microcontrolador, usan la lógica de dos estados representados por dos niveles de tensión eléctrica.

-Se utilizaron valores de referencia en este caso para la temperatura y el voltaje.

-Fue necesario hacer cálculos matemáticos para hallar el dividendo para así lograr el limite del rango en el LCD.

-Se tuvo que incluir la librería del LCD1.c para poder visualizar los valores en nuestro LCD al momento de programar.

XI. CONCLUSIONES

-Se pueden modificar las librerías según las necesidades que se tengan para la programación, También debemos adecuarnos al hardware existente, modificando el software en función al hardware.

-En una señal digital están las transiciones de alto a bajo y de bajo a alto, denominadas flanco de bajada y de subida, respectivamente. 

-El programa de regulación de voltaje nos ayuda a interpretar los valores de 0 a 5V de manera eficiente

Realizamos la comunicación de los 16 pines con eficiencia al LCD con relación al código fuente.

Comentarios