Está en la página 1de 9

Sistemas Embebidos

Conversor AD

Ejemplo de funcionamiento
Entradas anlogas Xtal Reset

RS232

C
16F877A
7 6 5 4 3 2 1 CP 1 4 7 C 2 5 8 0 3 6 9 F H E

Teclado

Muestreo y cuantizacin
1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000

Error de cuantizacin

OUTPUT DIGITAL

Funcin Seno

ADC Output

4-bit (16 level) ADC sampling a sinewave input

EL Conversor AD
1. 2. 3. 4. Conversor analgico a digital de 10 bits Tensin de referencia interna (VDD) o externa (AN3/Vref) La conversin se realiza con uno de sus canales. El resultado se deposita en el registro ADRESL y ADRESH y se activa el sealizador ADIF, que provoca una interrupcin si el bit de permiso correspondiente est activado. Adems, al terminar la conversin el bit GO/DONE se pone a 0. Se gobierna con dos registros: ADCON0 y ADCON1. El primero controla la operacin del mdulo AD, selecciona el canal a convertir con los bits CHS <2:0>, activa al conversor y contiene el sealizador que avisa del fin de la conversin (ADON) y el bit GO/DONE.

5. 6.

ADCON1 y ADRES
El ADCON1 establece las entradas que son digitales y analgicas, el tipo de tensin de referencia (interna o externa). (Ver manual)

El registro ADRES sirve para configurar la alineacin de los resultados (con el bit ADFM A/D Result Format Select bit)

Ejemplo de funcionamiento
El tiempo de conversin AD por bit es de TAD. Se requiere 2TAD para iniciar la siguiente conversin. Es decir que para convertir los 10 bits se necesitan 12TAD

Segn la hoja tcnica del PIC se tiene, a 16MHz:


TAD = 32xTOSC = 32x1/(16x106) = 2 us Entonces para convertir un dato se necesitan 12xTAD = 24 us y esperar 2xTAD y adems un tiempo de adquisicin o de seteo y carga del condensador de mantenimiento (ver hoja tcnica) de 19,72 us. Todos estos tiempo sumados nos dan 47,72 us lo que es aproximadamente 50 us. Se limita el ancho de banda a 10 kHz por el teorema del muestreo.

Funcionamiento
1. Configurar el mdulo AD.
//Iniciar el ADC ADCON1=0b10000010; TRISA=0XFF;

2. Llamar a ADC_Read(CANAL) 3. Llamar seguir leyendo por mediante el paso 2.

Rutinas en C

; Convertir el canal AN0 del A/D a 8bits y mostrar el valor cada 10ms por el LCD.
U1
13 14 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

84%

ADCON1=0b10000010; TRISA=0XFF;

RV1

1k

VSS VDD VEE

RS RW E 4 5 6

adc_value=ADC_Read(0); delay_ms(10); }

1 2 3

RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A

7 8 9 10 11 12 13 14

D0 D1 D2 D3 D4 D5 D6 D7

for(;;){

RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT

LCD1
LM016L

También podría gustarte