La conversin analgica digital, es la que nos permite transformar una seal analgica (un
voltaje), en una representacin digital (nmeros binarios) del valor correspondiente a la
tensin en el pin de entrada para poder trabajar con ella. Se utiliza en infinidad
de aplicaciones, lo ms comn es usarla para leer seales provenientes de algn sensor
(temperatura, humedad, acelermetros, etc.).
Un convertidor anlogo digital tiene como entrada un nivel de voltaje (valor analgico) y
produce en su salida un nmero binario de n bits proporcionales al nivel de la entrada (valor
digital). Los convertidores de seal anloga a digital abrevian ADC o A/D.
Uno de los parmetros que definen al A/D es la resolucin como la mnima variacin de
voltaje en la entrada que produce cambio del valor digital en la salida. Por ejemplo un
convertidor de 10 bits tiene un total de 210 valores (1024 valores de 0 a 1023).
Si tenemos 10V a la entrada la resolucin seria de 9,765mV. En este caso el voltaje es de
10V a 0V pero pueden variar. Por ejemplo si tenemos de 10v a 5v la resolucin ser:
Resolucin= (10v 5v)/1024=4.88 mV
Una frmula para el clculo ser:
Resolucin= (Vref2-Vref1)/1024
Donde las tensiones de referencia son 10V y 5V.
En este ejercicio se nos pide leer una seal analgica usando un LDR y por medio del
dispositivo desplegar los valores en los puertos del PIC.
Al desarrollar este ejercicio en donde se programa en lenguaje assembler, donde tengo
algunas dificultades al habilitar los puertos C y D, lo que hice en mi programa es que en los
puertos RC0 y RC7 se mostrara el comportamiento del LDR desplegando as las distintas
reacciones del dispositivo. Cuando la fotorresistencia enva valores de 0.9555 voltios y
valores superiores existentes se enciende el LED conectado en RC0. Si la fotorresistencia
enva valores de 1.00338 voltios o que llegue al lmite de capacidad del LDR enciende el
LED conectado en RC7. Leyendo las seales anlogas por el puerto RA0.
A continuacin el cdigo y diagrama esquemtico:
LIST P=16F887
INCLUDE P16F887.INC
ERRORLEVEL -302
__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF
& _BOREN_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _BOR40V & _WRT_OFF
CBLOCK 0X20
PDel0, VALORAD
ENDC
ORG 0x00
GOTO CONFIGURA
RETAD movlw .123 ; 1 establecer el numero de repeticiones
movwf PDel0 ; 1 |
PLoop0 clrwdt
; 1 limpiando watchdog
decfsz PDel0, 1 ; 1 + (1) es el tiempo durante....
goto PLoop0 ; 2 no, bucle
PDelL1 goto PDelL2
; 2 ciclos delay
PDelL2 clrwdt
; 1 ciclos delay
return
; 2+2 termina
GOTO MAYOR
MAYOR BCF PORTC,0
BSF PORTC,7
GOTO INICIO