lunes, 6 de mayo de 2019


MICROCONTROLADORES

LABORATORIO N° 06

Lectura  de Entradas Analógicas 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

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


      I.     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.


 Pantalla LCD

                             Resultado de imagen para pantalla LCD

La pantalla LCD es un dispositivo empleado para la visualización de contenidos o información de una forma gráfica, mediante caracteres, símbolos o pequeños dibujos dependiendo del modelo. Está gobernado por un microcontrolador el cual dirige todo su funcionamiento.


Pantalla LCD en PIC 16F877A

Para realizar una programación en PIC C Compiler, se tiene que agregar una serie de
definiciones o librerías que hacen bien simple el uso de las pantallas LCD estas son las que se
indican a continuación:
DEFINE LCD_DREG PORTX          ‘Se utiliza el puerto x para  los datos a enviar al LCD.
DEFINE LCD_BITS 4                    ‘Se utilizarán 4 bits para el bus de datos.
DEFINE LCD_DBIT 4                   ‘Se utilizarán los pines D4, D5, D6 y D7 del LCD.
DEFINE LCD_RSREG PORTx         ‘El pin RS del LCD se conectará al puerto x.
DEFINE LCD_RSBIT n                  ‘RS se conectará en el pin n del puerto  x.
DEFINE LCD_EREG PORTx           ‘El pin E del LCDse conectará al puerto x.
DEFINE LCD_EBIT m                   ‘E se  conectará al pin m del puerto x.
DEFINE LCD_LINES 2                  ‘El LCD será de 2 líneas (2×16).
Una vez configurados los pines a utilizar, mediante la instrucción lcdout del PBP se hace que las
pantallas LCD hagan algo.


TAREA PARA LA CASA 

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é?.

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”.

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.




#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);
      }
     
    
    }
   
}



TAREA DE INVESTIGACION
 LM35
En esta entrada vamos a ver como armar un circuito para sensar la tempratura, que sale muy barato y se encuentra practicamente en cualquier lado.

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.
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. Qué valor en voltios define 0 y 1. En nuestro caso es tecnología TTL (0 – 5V)
•Resolución analógica: nº de bits que usamos para representar con una notación digital una señal analógica
                                        

VIDEO DEL LABORATORIO Y MODIFICACIONES

TAREA DE INVESTIGACIÓN:

Averigüe cómo funciona un sensor LM35 y cómo se puede leer dicha temperatura en una pantalla LCD.

El LM35 es un circuito electrónico sensor que puede medir temperatura. Su salida es analógica, es decir, te proporciona un voltaje proporcional a la temperatura. El sensor tiene un rango desde −55°C a 150°C. Su popularidad se debe a la facilidad con la que se puede medir la temperatura. Incluso no es necesario de un microprocesador o microcontrolador para medir la temperatura. Dado que el sensor LM35 es analógico, basta con medir con un multímetro, el voltaje a salida del sensor.

El LM35 funciona en el rango de alimentación comprendido entre 30 voltios.
Podemos conectarlo a un conversor Analógico/Digital y tratar la medida digitalmente, almacenarla o procesarla con un μ Controlador o similar.

Sensor DS18B20

El DS18B20 es un sensor digital de temperatura que utiliza el protocolo 1-Wire para comunicarse, este protocolo necesita solo un pin de datos para comunicarse y permite conectar más de un sensor en el mismo bus.
El sensor DS18B20 es fabricado por Maxim Integrated, el encapsulado de fabrica es tipo TO-92 similar al empleado en transistores pequeños.




OBSERVACIONES:
•Una señal digital es un tipo de señal generada por algún tipo de fenómeno electromagnético en que cada signo que codifica el contenido de la misma puede ser analizado en término de algunas magnitudes que representan valores discretos, en lugar de valores dentro de un cierto rango.
•Los sistemas digitales, como por ejemplo un microcontrolador, usan la lógica de dos estados representados por dos niveles de tensión eléctrica.
•Por abstracción, dichos estados se sustituyen por ceros y unos, lo que facilita la aplicación de la lógica y la aritmética binaria.
•El potenciómetro nos ayuda a regular la interpretación de voltaje y temperatura,




. CONCLUSIONES
•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.
•En una señal digital, se denomina flanco a la transición del nivel bajo al alto (flanco de subida) o del nivel alto al bajo (flanco de bajada).
•Podemos modificar las librerías según las necesidades, incluir nuevas funciones, nuevas prestaciones. Debemos adecuarnos al hardware existente, modificando el software en función al hardware.
•Podemos mejorar procesos existentes, hacer estos que sean más amigables a los usuarios finales. Para esto debemos hacer un análisis de las exigencias de los usuarios y de lo que actualmente se tiene.


1 comentario: