You are on page 1of 6

Laboratorio 4: Convertidor Analgico a Digital.

4.1 Objetivo.
Familiarizarse con el mdulo de conversin analgico digital mediante la implementacin prctica
del ejemplo Leer_ADC.
4.2 Contestar las siguientes Preguntas:
1. Cuntas entradas analgicas tiene el PIC16F887?
2. De cuntos bits es el mdulo ADC interno del PIC16F887 y cmo podemos modificarlos?
3. Qu pines del PIC podemos utilizar como Voltajes de referencia?
4. Cunto es el Tiempo de adquisicin del PIC16F887?
5. Cunto es el Tiempo de conversin AD del PIC16F887?
6. Si en la entrada del convertidor analgico se le conecta una fuente de 1.5 volts cual es el valor
que se obtendr en el momento de la lectura.
4.3 Introduccin.
Existe una gran cantidad de proyectos en las que es necesario que nuestros dispositivos digitales
realicen operaciones de control de variables analgicas tales como temperatura, presin, flujo,
caudal, peso, distancia, velocidad o similares. Este laboratorio trata de explicar cmo realizar la
configuracin del mdulo ADC del PIC para realizar las mediciones antes mencionadas.
4.4 Conversor Analgico Digital.
Un conversor analgico-digital (ADC, Analog-to-Digital Converter) es un dispositivo
electrnico capaz de convertir una entrada analgica de voltaje en un valor binario, Se utiliza en
equipos electrnicos como ordenadores, grabadores de sonido y de vdeo, y equipos de
telecomunicaciones. La seal analgica, que vara de forma continua en el tiempo, se conecta a la
entrada del dispositivo y se somete a un muestreo a una velocidad fija, obtenindose as una seal
digital a la salida del mismo. [Wikipedia]
El convertidor Analgico-digital del PIC16F887 permite la conversin de una seal de entrada
analgica a un valor en representacin binaria de 10 bits o de 8 bits. Este dispositivo usa entradas
analgicas que son multiplexadas en un circuito de muestreo y retencin (Sample and Hold). La
salida del muestreo y retencin es conectada a la entrada del convertidor. El convertidor genera un
resultado binario de 10 bits o de 8 bits mediante aproximaciones sucesivas y almacena el resultado
de la conversin los registros de resultado de ADC. Las figuras siguientes muestran el diagrama en
bloques del mdulo ADC y el modelo de la Entrada Analgica.

A continuacin se muestra la funcin de transferencia del ADC.

4.4.1 Formato del resultado de la conversin.


Para cambiar el formato del resultado de la conversin se escribe arriba de todas las funciones lo
siguiente:
#device adc=10
Donde el valor que se le asigna a ADC puede ser 8 o 10.
4.4.2 Configuracin de los puertos ADC.
Para realizar la configuracin de los puertos ADC se utiliza la siguiente funcin:
setup_adc_ports(value)

Sintaxis setup_adc_ports(value)

Ejemplo setup_adc_ports(sAN0|sAN1|VSS_VDD); //Seleccionamos AN0 y AN1 como


analgicas, Vss y Vdd como Vref.
4.4.3 Configuracin del ADC.
Para realizar la configuracin del ADC se utiliza la siguiente funcin:
setup_adc()

4.4.4 Seleccion del Canal


Para escoger que canal del microcontrolador ir al convertidor interno, se utiliza la instruccion:
set_adc_channel();
4.4.5 Lectura del Canal
Para realizar la lectura del valor de la conversin ADC se utiliza la siguiente funcin:
read_adc( )

4.5 Procedimiento.
1. Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS.
2. Crear una Nueva carpeta llamada Lab4 en la ubicacin que consideres necesaria (Ejemplo:
Carpeta Mis Documentos).
3. Abrir la carpeta Lab4 y guardar el proyecto con el nombre de Leer_ADC.
4. Copiar el Cdigo LED_Botones. Cdigo Leer_ADC.
5. Compilar el proyecto.
6. Crear el circuito en Proteus. Para ello ser necesario buscar mediante la caja de bsqueda en la
ventana PICK DEVICE el PIC16F887, el LCD 16x2 y el POT-HG.

4.6 Cdigos.
4.6.1 Cdigo Leer_ADC.
#include <16f877A.h>//pic a utilizar
#device adc=10
#FUSES NOWDT
#FUSES HS
#FUSES NOPUT
#FUSES NOPROTECT
#FUSES NOWRT
#use delay (clock=4M)

//Fosc=4Mhz

//Definir Pines de conexion al LCD


#define LCD_ENABLE_PIN PIN_C5
#define LCD_RS_PIN
PIN_C6
#define LCD_RW_PIN
PIN_C7
#define LCD_DATA4
PIN_D4
#define LCD_DATA5
PIN_D5
#define LCD_DATA6
PIN_D6
#define LCD_DATA7
PIN_D7
#include <lcd.c> //Llamada a la libreria lcd.c
///PROGRAMA
void main(void){
long val;
setup_adc_ports(AN0); //AN0 sera analogica las demas Digitales.
SETUP_ADC(ADC_CLOCK_INTERNAL); //La fuente de reloj para la conversion sera
//El circuito RC interno del PIC, su TAD tipico
//es de 4us.
SET_ADC_CHANNEL(0);
//Seleccionamos canal 0 para leerlo.
lcd_init();
//Inicializamos el LCD.
lcd_putc("\fValor Leido=");
//Se muestra en el LCD la cadena "Valor Leido="
while(TRUE){
//Inicia el ciclo Infinito.
val=READ_ADC();
//Se lee y guarda el valor del ADC
lcd_gotoxy(13,1);
//Se envia el cursor a la columna 13 fila 1.
printf(lcd_putc,"%4Lu",val); //Se imprime en el LCD el valor leido del ADC
}
}

4.7 Trabajo en Clase


4.7.1 Modificar el ejercicio de laboratorio para convertirlo en un termometro digital usando el
sensor LM35 y poder imprimir temperaturas en grados celsius y en grados farenheit.
Nota: Ver la hoja de Datos del LM35.
4.7.2 Transformar el termometro digital en un control de climatizacion que trabaje en un rango de
temperatura determinado segun la tabla que se muestra a continuacion:
Rango de
Temperaturas
35C 150C
35C 20C
20C -55C

Actividad a Realizar
Activar un motor en
representacion de un
Aire Acondicionado
No activar Nada
Activar un motor en
representacion de un
Calefactor

Representacion de
Temperatura
Encender un led color
Rojo en representacion
de Temp Altas
Encender un led verde
en representacion de
Temp Agradables
Encender un led Azul
en representacion de
Tem Frias

4.8 Trabajo en Casa


4.8.1 Hacer que el control de climatizacion acepte temperaturas negativas y se puedan visualizar en
el lcd.
4.8.2 Agregar un teclado 4x4 para cambiar la variable correspondiente que controla el rango de
temperatura del control de climatizacion. Ahora el usuario podra cambiar ese rango mediante el
acceso por teclado.

You might also like