LABORATORIO NRO 6
LECTURA DE ENTRADAS ANALÓGICAS Y SENSOR DE TEMPERATURA
1. OBJETIVOS
2. MATERIALES Y EQUIPOS- Lecturas analógicas de un canal del PIC
- Configuración de un Sensor de Temperatura
- Lectura analógica en una pantalla LCD
- 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.
3. FUNDAMENTO TEÓRICO
3.1. CONVERSOR ANALÓGICO DIGITAL
El módulo de A/D tiene cuatro registros. Estos registros son: ·
ADRESH : Parte alta del resultado de la conversión ·
ADRESL: Parte baja del resultado de la conversión ·
ADCON0: Registro de Control 0 ;control del funcionamiento del conversor ·
ADCON1, Registro de Control 1; configuración de los pines del puerto
Conversor Analógico Digital PIC: El registro ADCON0
En la siguiente imagen se tiene el registro ADCON0 para el control del conversor analógico digital PIC, se pueden ver los nombres que le corresponden a cada uno de sus bits.
Los bits 7 y 6 de este registro junto con el bit 6 del registro ADCON1 se elige el reloj, esto es entre cuanto se fraccionará la frecuencia del oscilador utilizado para que se tenga un tiempo de conversión adecuado, esto es el tiempo que tardará el PIC para realizar la conversión, ademas de estas opciones el conversor analógico digital pic cuenta con su propio oscilador formado por un circuito RC que también puede ser elegido mediante estos bits, en la siguiente tabla se tienen los fraccionamientos del oscilador de acuerdo a los valores que tomen estos bits o si se quiere utilizar el oscilador interno del CAD.
De acuerdo a la frecuencia del oscilador se obtendrá un tiempo para la conversión, ese tiempo tiene que ser mayor a 1,6us para que al leer los registros ADRESH y ADRESL el numero obtenido represente en forma adecuada el valor de la señal analógica.
Por ejemplo, si se usa un cristal con una Fosc de 4Mhz, de la tabla se puede ver que si la Fosc se divide entre 2 se tendrá el el tiempo de conversión será de 0,5us, lo cual no llega a los 1,6us mínimos, si se divide entre la Fosc 4 se tendrá el tiempo de conversión será de 1us, con lo cual tampoco se llega a los 1,6us mínimos, si se divide la Fosc entre 8 se tendrá el el tiempo de conversión será de 2us, con lo cual ya se ha logrado un tiempo de conversión que sobrepasa los 1,6us mínimos que se necesita, por lo que en este caso se elegiría esta opción para el tiempo de conversión y la combinación de bits serian 001, aunque se pueden elegir otros siempre y cuando se obtengan tiempos de conversiones mayores a los 1,6us.
Los bits 5, 4 y 3 son para elegir el canal analógico a utilizar, esto es el pin que previamente mediante los bits 3,2,1 y 0 del registro ADCON1 se ha configurado como entrada analógica, en el cual se leerá la señal analógica, el PIC16F877A cuenta con 8 entradas analógica, 5 de las cuales están en el puerto A y 3 en el puerto E, los pines de las entradas analógicas se conocen como AN0, AN1, AN2, AN3, AN4, AN5, AN6 y AN7, la elección del canal a leerse se hace de acuerdo a los valores de estos bits como se muestra en la siguiente tabla.
El bit 2 se pondrá a 1 para iniciar la conversión analógica digital PIC, cuando la conversión de analógico a digital termina este bit se pone a 0 en forma automática, lo que indica que la conversión a terminado además de que si está habilitada las interrupciones por el CAD pues se producirá una interrupción.
El bit 1 no es utilizado por lo que pondrá a 0.
El bit 0 es para activar o desactivar el conversor analógico digital PIC, cuando este bit es puesto a 1 el conversor está activo y listo para usarse, si este bit es puesto a 0 el conversor estará apagado no pudiendo utilizarse.
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 sensor analógico que devuelve la temperatura en forma detensión, esta tensión devuelta es proporcional a la temperatura. Su rangocomprende desde -55º hasta 150ºC y el valor devuelto es el equivalente a latemperatura dividida por 10, entonces en su salida se obtienen valores comoestos
Este dispositivo es de fácil implementación dado que solo cuenta con dos terminales de polarización, y una salida de voltaje directamente proporcional a la temperatura. Este sensor puede ser polarizado de 4 a 30 voltios y tiene una salida de 10m voltios por cada grado Celsius.
El voltaje de salida del sensor se convierte en un número digital de 10-bits utilizando el ADC interno del PIC16F887. Sabiendo que su salida de voltaje es proporcional a la de temperatura. El valor de temperatura máxima de 150 °C, sería 150 x 10mV = 1. 5 V.
La resolución esta dada por:
entonces,
Supongamos, la temperatura ambiente es de 35,4 °C. La salida del sensor será 354mV (0,354 V). La salida del ADC será;
0.354 / 0.00488 = 72.5409.
Si invertimos este proceso, tenemos 72.5409 de ADC y podemos volver atrás y encontrar la temperatura utilizando el factor de escala del sensor (10mV / °C),
Temp = ADCread * ADCres / LM35Vp
Temp = 72.5409 * 0,00488 (V / Count) / 0,01 (V / °C) = 35,4 °C.
Lo mismo con un sensor DS18B20.
La medición de temperatura es una de las tareas más frecuentes realizadas por el microcontrolador. En este ejemplo, se utiliza un sensor DS1820 para medir. Es capaz de medir en el rango de 55 °C a 125 °C con exactitud de 0.5 °C. Para transmitir los datos al microcontrolador se utiliza un tipo especial de la comunicación serial denominado 1-wire. Debido al hecho de que estos sensores son simples de utilizar y de grandes capacidades, los comandos utilizados para hacerlos funcionar y controlarlos tienen la forma de funciones almacenadas en la librería One_Wire. En total son las siguientes tres funciones:
Ow_Reset se utiliza para reiniciar el sensor;
Ow_Read se utiliza para recibir los datos del sensor; y
Ow_Write se utiliza para enviar los comandos al sensor
https://drive.google.com/file/d/1u2W8AAq-cR2ZNopf0BI9hp2Yx2AbGYEw/view?usp=sharing
5. OBSERVACIONES
- Se utilizo #device adc para la resolución de lectura
- Se configuró los puertos analógicos, el puerto an3 está conectado a un potenciometro que a través de la variación de voltaje se obtenga valores de temperatura
- Es importante conocer que tipo de variable usamos para la lectura de valores, asimismo cuando usamos el comando printf se debe configurar adecuadamente el tipo de valor a leer
- Cuando se varia de adc=8 a adc=10, el valor mostrado varía de 255 a 1023, debido a que 2 elevado a la 10 es 1023, el %4lu (long unsigned) nos permite observar este valor
6.CONCLUSIONES
- Se conoció como leer valores de las entradas analógicas en el PIC 16f877 y convertir este valor en un señal de temperatura u otro para que sea mostrado en la pantalla LCD
- Se estableció rangos de temperatura tomando en consideración la resolución de lectura
- Se conoció como configurar un Sensor de Temperatura de acuerdo a su rango de medición
7. INTEGRANTES
- Corimanya Castelo, Laura Milagros
Revisado
ResponderEliminar