Está en la página 1de 3

1 Conversor Analógico Digital

Un conversor analogico a digital (ADC), convierte el valor de un voltaje analógico en un numero digital, en la
Figura 1.1 se muestra los elementos que forman generalmente un ADC.

7 6 5 4 3 2 1 0

Vin
0 1 0 1 0 1 1 0
Datos en binario
ADC
Vref+
Vref-

Figura 1.1
La relación entre el voltaje de entrada (Vin) que se va a leer y el valor digital a la salida esta dada por la siguiente
ecuación:

(Ec 1.1)

En esta ecuación Vref+ y Vref- , son lo valores de voltaje entre los cuales varia la señal de entrada Vin, n es la
resolución del ADC, es decir, la cantidad de bits que se tiene a la salida del ADC. El voltaje de referencia
positivo(Vref+) no debe debe sobrepasar el voltaje máximo de trabajo del ADC, por otro lado el voltaje de referencia
negativo(Vref-) generalmente se conecta a cero voltios (VSS o GND), por lo que la ecuación 1.1 quedaría de la
siguiente forma:

(Ec 1.2)

Ejemplo 1.1
Un ADC con 10 bits de resolución tiene conectado su pin Vref+ a 5 V y su pin Vref- a cero voltios. Calcular el valor
digital a la salida para los siguientes voltajes de entrada: 1 V, 2,5 V y 4 V.
Para Vin = 1 V.

Para Vin = 2,5 V.

Para Vin = 4 V.

1.1 Modulo ADC del PIC16F877A


El PIC16F877A tiene 8 pines que pueden ser utilizados como entradas analogicas, su modulo ADC tiene
unaresolución de 10 bits, también entradas para voltajes de referencia positivo y negativo, estos pines pueden
conectarseinternamente a VDD y VSS, o pueden conectarse a voltajes externos mediante los pines RA3 y RA2.

1
Para utilizar el modulo ADC se debe seguir los siguientes pasos:
1. Configurar el modulo ADC:
- Configurar los pines del puerto A y del puerto E, cuales serán entradas analógica, o entradas de referencia,
o serán E/S digital (ADCON1).
- Poner en uno el bit ADFM, si queremos que el resultado este en modo 10 bits, o poner el bit ADFM en
cero si queremos que el resultado este en modo 8 bits.
- Configurar el reloj para la conversión, la velocidad de reloj utilizada determina el tiempo que tarda en
obtenerse los 10 bits. (ADCON0).
- Seleccionar el canal de entrada que se utilizara en la conversión(ADCON0)
- Encender el modulo ADC (ADCON0).
2. Configurar la interrupción del ADC, solo si se utiliza
- Escribir cero en el bit ADIF
- Escribir uno en el bit ADIE
- Escribir uno en el bit PEIE
- Escribir uno en el bit GIE
3. Esperar el tiempo de adquisición(carga del capacitor)
4. Iniciar la conversión
- poner en uno el bit GO/DONE (ADCON0)
5. Esperar que la conversión, termine :
- Si se habilitó la interrupción, debemos esperar a que el programa vaya a la rutina de interrupción.
- Si la interrupción no esta habilitada, se debe revisar a que el bit GO/DONE vuelva a cero.
6. Leer el resultado de la conversión, el valor digital, que se encuentra en los registros ADRESH y ADRESL.
7. Para realizar otra conversión se debe repetir desde el paso 1 o 2, de acuerdo a lo que se necesite.

2
Ejemplo 1.2

El siguiente programa lee el valor digital del pin AN0 y lo muestra en un LCD.
void main(void)
{
int valDigital = 0;
char bufLCD[16] = {};
lcd_init();
ADCON1 = 0B00001110;
ADCON0 = 0B01000001;
while(1)
{
__delay_us(20);
ADCON0bits.GO_nDONE = 1;
while(ADCON0bits.GO_nDONE == 1);
valDigital = ADRESH;

sprintf(&bufLCD, "valor: %3d", valDigital);


lcd_gotoxy(1,1);
lcd_puts(&bufLCD);

return;
}

También podría gustarte