4.9 Ejemplo 7
Utilizar el convertidor A/D
El convertidor A/D del microcontrolador PIC16F887 se utiliza en este ejemplo. ¿Hace falta decir que todo es pan comido? Una señal analógica variable se aplica al pin AN2, mientras que el resultado de la conversión de 10 bits se muestra en los puertos POTRB y PORTD (8 bits menos significativos en el puerto PORTD y 2 bits más significativos en el puerto PORTB). La Tierra (GND) se utiliza como voltaje de referencia bajo Vref-, mientras que VCC se utiliza como voltaje de referencia positivo.
Si se utiliza el voltaje variable como Vref+ (refiérase a la línea punteada), se habilita estirar y encojer la escala de medición.
En otras palabras, el convertidor A/D siempre genera un resultado binario de 10 bits, lo que significa que reconoce 1024 niveles de voltaje en total (210=1024). La diferencia entre dos niveles de voltaje no es siempre la misma. Cuánto menor sea la diferencia entre Vref+ y Vref-, tanto menor será la diferencia entre dos de 1024 niveles. Como hemos visto, el convertidor A/D es capaz de detectar pequeños cambios de voltaje.
'Cabecera******************************************************
program example_7 ' Nombre de programa
dim temp_res as word ' Variable temp_res es de tipo word
main: ' Inicio del programa
ANSEL = 0x0C ' Pin AN2 se configura como analógico
TRISA = 0xFF ' Todos los pines del puerto PORTA se configuran como entradas
ANSELH = 0 ' Los demás pines se configuran como digitales
TRISB = 0x3F ' Pines del puerto PORTB, RB7 y RB6 se configuran como salidas
TRISD = 0 ' Todos los pines del PORTD se configuran como salidas
ADCON1.B4 = 0 ' Voltaje de referencia positivo es VCC.
while 1 ' Bucle infinito
temp_res = ADC_Read(2) ' Resultado de la conversión A/D es copiado a temp_res
PORTD = temp_res ' 8 bits menos significativos se mueven al puerto PORTD
PORTB = temp_res >> 2 ' 2 bits más significativos se mueven a los bits RB6 y RB7
wend
end. ' Final de programa
Para que este ejemplo funcione apropiadamente, es necesario marcar la librería ADC en la ventana Library Manager antes de compilar el programa: