Vous êtes sur la page 1sur 15

Universidad Nacional Autnoma de Mxico

Convertidor Analgico/Digital de Aproximaciones Sucesivas


Circuitos Integrados Analgicos
Profesor Lauro Santiago Cruz

Corona Cadenas Mario Alberto


Gonzlez Ocaa Moiss

Introduccin El ADC de aproximaciones sucesivas es uno de los ADCs ms usados y tiene como parte de sus caractersticas fundamentales la conversin en lapso de tiempo corto, con respecto a las configuraciones que le preceden como el convertidor de rampa. Su modo de operacin es de la siguiente manera: De inicio, borra todo lo que tenga almacenado en los bits y lo pone a ceros, esto con el objetivo de partir desde el bit ms significativo por su modo de operacin. Lo primero que se realizar es colocar un uno en el bit ms significativo y comenzar la comparacin con el voltaje de entrada, que se expresar en cdigo binario para que resulte ms sencilla la operacin. Suponiendo un ADC de aproximaciones sucesivas que opera de 0 a 5 volts (en donde el voltaje mximo de 5 volts ser tomado como el voltaje de referencia para la conversin), con un voltaje de entrada de 2 volts. Por lo tanto, tenemos al inicio solo ceros, en el paso 0 paso de inicio, como se puede apreciar en la tabla

Despus se agrega el bit ms significativo con un uno y se realiza la comparacin con los 2 volts de entrada. La tabla muestra la operacin realizada en donde dividimos el cdigo representado por el ADC (valor numrico decimal de la palabra digital) entre el nmero mximo de codificacin para los 8 bits, que es 255, encontrando la resolucin en voltaje correspondiente a la palabra digital, para despus multiplicar ese resultado por los 5 volts (voltaje de entrada), obteniendo el voltaje de la palabra digital y compararlo con el voltaje de entrada. Ahora, si el valor del voltaje obtenido de la palabra digital es menor al voltaje de entrada, ese bit que se agreg como uno es conservado y el ADC agrega un uno al bit siguiente deforma descendente, es decir, se agreg un uno al bit ms significativo y ahora, se deber agregar un bit uno a la derecha de este. Pero si es mayor el voltaje de la palabra digital, entonces el bit que haba sido agregado es cambiado a su estado original (a cero) y se fija la atencin al bit en precedencia descendente, es decir, se deja en cero el bit ms significativo y el bit que se encuentra a su derecha es ahora el centro de atencin para que ah sea agregado el bit uno. Podemos verlo ms claramente en la tabla

siguiente, en donde el primer bit a la derecha del bit ms significativo fue cambiado de cero a uno. Se realiza el clculo mencionado y encontramos que el resultado del voltaje de la palabra digital es menor al voltaje de entrada, por lo que, siguiendo lo que definimos anteriormente, ese bit uno quedar en ese lugar y ahora, el bit a la derecha del mismo ser ocupado por un uno.

Y siguiendo esa secuencia, obtendremos la aproximacin al valor de entrada (2 volts) como se observa en la tabla. Hasta donde nuestra tabla ha resuelto, estamos demasiado cerca de alcanzar el valor deseado, pero es justo aqu en donde se ven algunos detalles de la aproximacin. El siguiente paso, que ser el pulso nmero 8 arrojado por el reloj, pero el paso nmero 7 tomando en cuenta el inicio de las aproximaciones, dice que ser agregado un uno en el bit que se encuentra antes de llegar al bit menos significativo, lo que incrementar nuestro valor de palabra digital y se quedar a escasos 0.01 volts del valor deseado, que son los 2 volts de entrada.

Esto nos bastara para ser visto como resultado, pero el ADC no detendr ah su proceso, porque tiene que hacer el recorrido completo, para cerciorarse de que no existe otro dato ms cercano, por lo que adiciona un uno al bit menos significativo, obtiene el voltaje de la palabra digital y compara. El resultado es de 2.01 volts, cantidad superior a los 2 volts de entrada, por lo que el ADC intentar buscar un resultado ms cercano y la nica opcin que tiene es quitar es ultimo bit uno que agrego en la casilla menos significativa, comparar ese voltaje de palabra digital con el voltaje de entrada y agregar otro bit uno a la derecha de su posicin anterior, pero dicha posicin ya no existe porque est al lmite de bits y el valor resultante de quitar el bit recin agregado lo remonta a su opcin anterior, por lo que con la siguiente tabla habr culminado y habr encontrado el voltaje expresado en palabra digital. Existe la duda entre cul de los dos valores debe ser tomado como el resultado y esta se disipa debido a que la eleccin del valor correcto en estos casos siempre es la menor o la palabra digital anterior a la que excede del valor de entrada, por lo que el resultado se marca en la tabla con la fila iluminada.

Descripcin General El convertidor Analgico-Digital de aproximaciones sucesivas principalmente se compone de 3 etapas: el comparador, registro de aproximaciones sucesivas y el convertidor Digital-Analgico (DAC). Para el comparador utilizamos un LM311, el cual tiene a las entradas la salida del DAC y un voltaje de referencia. El voltaje de referencia se conecta a la entrada positiva (pin 2 del LM311) y se puede modificar mediante un potencimetro. La salida del DAC se conecta a la entrada negativa (pin 3 del LM311) haciendo que estos dos voltajes sean los que se comparen.

Para la parte del DAC utilizamos un arreglo R-2R de 8 bits. Este conversor digital analgico es muy eficiente y la ventaja es que solo necesita dos valores de resistencias, en nuestro caso solo utilizamos resistencias de 10 K y para la parte de las 2R utilizamos dos resistencias en serie, lo que aumenta el tamao de nuestro diseo en el circuito impreso. Otra ventaja del R-2R es su alta velocidad de conversin y su sencillo funcionamiento.

La resolucin del convertidor se obtiene por la frmula:

Los puertos usados en el PIC fueron el puerto B y puerto A, el puerto B simula la salida del registro de aproximaciones sucesivas. En el puerto A RA0 es la entrada de control, del comparador y es la que decide si es mayor o menor la aproximacin. RA1 decide si toma un retardo para visualizar la aproximacin.

Simulaciones

Pruebas de Laboratorio BIN 111 Vmed [V] 0.1462 DEC 7 V [V] 0.136719

1001

0.1837

0.175781

10001

0.349

17

0.332031

10111

0.465

23

0.449219

100001

0.666

33

0.644531

100110

0.761

38

0.742188

101010

0.837

42

0.820313

101100

0.876

44

0.859375

111101

1.202

61

1.191406

111101

1.202

61

1.191406

111111

1.236

63

1.230469

1000011

1.324

67

1.308594

1001111

1.542

79

1.542969

1010010

1.626

82

1.601563

1101001

2.061

105

2.050781

1101011

2.09

107

2.089844

1101011

2.09

107

2.089844

1110001

2.223

113

2.207031

1110111

2.321

119

2.324219

1111011

2.395

123

2.402344

1111111

2.461

127

2.480469

10000001

2.571

129

2.519531

10001001

2.707

137

2.675781

10001111

2.792

143

2.792969

10001111

2.797

143

2.792969

10011101

3.073

157

3.066406

10011111

3.09

159

3.105469

10101111

3.407

175

3.417969

10110111

3.569

183

3.574219

10111101

3.682

189

3.691406

11000101

3.867

197

3.847656

11111111

4.9

255

4.980469

El error de offset es de 0.078125, ya que al tener cero en la referencia, resulta un dos binario (1000), que al multiplicarse con la resolucin se obtiene tal error de offset.

En la grfica se muestra la comparacin de los datos que se midieron con el multmetro con los datos que se obtienen del valor digital multiplicado por la resolucin. Se puede observar que los errores de linealidad son casi despreciables.

Evaluacin y Puesta a Punto

Una vez ms, al momento de hacer el circuito impreso cometimos errores bsicos de polarizacin, esta vez fue en el ICL7660, intercambiando los voltajes de polarizacin.

Resultados y Conclusiones En este proyecto el resultado fue muy satisfactorio ya que el convertidor analgico digital de aproximaciones sucesivas funciona correctamente utilizando elementos discretos. Debido a que se nos pidi un convertidor AD de aproximaciones sucesivas y no uno de rampa sencilla o doble, tenamos que utilizar un registro de aproximaciones sucesivas de 8 bits. El integrado que se encarga de hacer esa funcin esta descontinuado y fue por eso que decidimos utilizar un PIC16F88 para poder simular el registro de aproximaciones sucesivas. Y a pesar de que pudimos haber utilizado un DAC08 para nuestro proyecto, decidimos utilizar la red R-2R para hacer la conversin Digital-Analgica ya que tiene una alta velocidad de conversin y su funcionamiento es muy sencillo, adems de que podamos utilizar un solo valor de resistencias, que en nuestro caso fueron de 10 k, usando dos en serie para las ramas de 2R.Los errores de exactitud que tuvimos en la conversin analgica a digital fueron casi despreciables, ya que la diferencia era de solo algunas dcimas en los valores pequeos y en valores ms altos casi no haba errores. Tambin tuvimos un error de offset muy pequeo, del orden de las centsimas al igual que el error que tuvimos en la linealidad, este error puede ser despreciable dependiendo de la aplicacin que tengamos y para nosotros es un error despreciable. Aunque pensamos que hubiera sido mejor armar el proyecto solo en protoboard, ya que difcilmente le vamos a dar una aplicacin inmediata como otro proyectos que hemos realizado en los que s tienen una finalidad por s mismos y aplicaciones inmediatas.

Apndice: Programa registro SAR: #include<16f88.h> #use delay(clock=4000000) #fuses INTRC,NOWDT,NOPROTECT,NOWRT,MCLR #byte PORTA=0x05 #Byte PORTB=0x06 #byte TRISA=0x85 #byte TRISB=0x86 int bit_ultimo=0; void ultimo_bit_prende(void){ bit_ultimo+=1; bit_set(PORTB,bit_ultimo); } void ultimo_bit_cambia(void){ bit_clear(PORTB,bit_ultimo); bit_ultimo+=1; bit_set(PORTB,bit_ultimo); } main(){ int i; setup_oscillator(OSC_INTRC | OSC_4MHZ); TRISA=0xff; TRISB=0x00; PORTB=0x00; bit_set(PORTB,0); for(i=0;i<8;i++){ if(bit_test(PORTA,1)==1) delay_ms(1000); delay_us(50); if(bit_test(PORTA,0)==1) ultimo_bit_prende(); else ultimo_bit_cambia(); } }

PROGRAMA: #include<16f88.h> #fuses INTRC,NOWDT,NOPROTECT,NOWRT,MCLR #device adc=10 #use delay(clock=4000000) #include<lcd_b.c> #use fast_io(A) main(){ int16 conv_l,sar_l; float conv,sar; setup_oscillator(OSC_4MHZ|OSC_INTRC); set_tris_a(0x02); setup_adc(ADC_CLOCK_DIV_8); setup_adc_ports(sAN0|sAN1|VSS_VDD ); lcd_init(); for(;;){ set_adc_channel(0); delay_us(25); conv=read_adc(); set_adc_channel(1); delay_us(25); sar=read_adc(); conv=conv*5/1023; sar=sar*5/1023; lcd_gotoxy(1,1); printf(lcd_putc,"ADC PIC: %f[v]",conv); lcd_gotoxy(1,2); printf(lcd_putc,"ADC DAC: %f[v]",sar); } }

Vous aimerez peut-être aussi