# Como funciona un ADC0808?



## jimmykaoz (May 26, 2009)

Les queria preguntar exactamente eso. Veo en el datasheet un EOC, un ALE, un START, un OUTPUT ENABLE que no entiendo. Les pido, con un tanto de afan, que me pudiesen colaborar. En el datasheet no explica muy claramente.

Gracias


----------



## lobito (May 26, 2009)

hola. Encontré esto buscando en google:

"El convertidor ADC0808 es un componente para la adquisición de datos, este circuito CMOS tiene un convertidor analógico-dígital de 8 bits, un multiplexor de 8 canales y una lógica de control que lo hace compatible con todos los microprocesadores. Para la conversión utiliza el método de aproximaciones sucesivas. Este dispositivo ofrece gran velocidad, gran exactitud, mínima dependencia a la temperatura, excelente repetitibilidad y un consumo mínimo de energía, por lo tanto lo hace un dispositivo ideal en aplicaciones de control y de automotores. Las características del ADC0808 son : 

* Opera radiometricamente, con 5VDC ó con un voltaje de referencia ajustable como span analógico.

* No requiere ajuste a cero ó a escala completa. 

* Tiempo de acceso de 135 nseg. 

* 8 bits de resolución. 

* Tiempo de conversión de 100 mseg. 

* Fácil interface con todos los microprocesadores. 

* Error total de +/- ½ LSB y +/- 1 LSB. 

* Consumo de potencia de 15 mW. 

una forma de conexión común es entre el ADC0808 y una microcomputadora para una aplicación de adquisición de datos. La microcomputadora controla el momento en que se llevará acabo la conversión mediante la generación de las señales CS y WR ( nivel bajo ). Después adquiere los datos de salida del ADC tras generar las señales CS y RD ( nivel bajo ) después de detectar el TPN en INTR ( nivel bajo ), la que indica el fin de la conversión. INTR cambia hacia el estado ALTO cuando CS y WR lo hacen hacia el estado BAJO, pero el proceso de conversión no comienza sino hasta que CS y WR regresan al estado ALTO. las líneas de datos que forman la salida del ADC se encuentran en el estado de alta impedancia hasta el momento en que la microcomputadora activa las señales CS y RD; en ese instante se habilitan los buffers del ADC y los datos son transferidos sobre el canal de datos hacia la microcomputadora. Las líneas de datos regresan al estado de alta impedancia cuando CS y RD regresan al estado ALTO. 

enlaces interesantes y esquemas 

http://www.control.com/1026168948/index_html 

http://thayer.dartmouth.edu/~engs031/databook/adc0808.pdf 

http://www.geocities.com/fzamora.rm/SMADACweb.PDF 

http://www.depi.itchihuahua.edu.mx/electro/electro2001/mem2001/articulos/ins5.pdf 

http://users.ipfw.edu/broberg/ADC0808.pdf"

Espero que te sirva.


----------



## resistron (May 28, 2009)

Hola...yo utilice ese conversor con un PIC en un proyecto...te explico como le hice para leer datos.

En vref(+) coloque 5V, vref(-) lo mande a tierra, trabaje con un reloj de 500KHz en el conversor (lo genere con un modulo de PWM del PIC), el OE (output enable) funciona de la siguiente manera, si le madas un "0" las salidas trabajan en alta impedancia y no puedes leerlas...si quieres leerlas debes mandarle un "1", yo lo deje conectado a Vcc (5V) para poder leerlas en todo momento sin tener que manipular este pin, los pines ALE y START los conecte juntos a una salida del PIC, es decir, a ambos pines les mande la misma señal, el pin ALE sirve para que el conversor lea que canal se quiere usar, es decir lea el estado de los pines ADD1, ADD2 y ADD3, que son los que se usa para escojer el canal, el pin START indica el inicio de la conversion. Ya, el procedimeinto que use para leer un dato es el siguiente:

Escojes que canal se va a leer en el conversor a traves de los pines ADD1, ADD2 y ADD3. En el datasheet tienes una tabla que te dice con que combinacion escojes cada canal. 

Generas un flanco ascendente ALE y START, es decir los pones en "1", en el diagrama de tiempo del datasheet primero genera el flanco ascendente en ALE y luego en START, pero no hay problema si lo haces al mismo tiempo. Si trabajas con un uC debes asegurarte que pase el tiempo suficiente para que el conversor lea los pines ADD1-3, ya que la frecuencia de trabajo de un uC suele ser mayor que la del conversor.

Luego debes esperar a que el pin EOC(end of conversion) se ponga en "0".

Despues de que el pin EOC este en cero, generas un flanco descendente en ALE y START (los pones en "0").

Esperas a que el pin EOC se ponga en "1" y por ultimo lees el dato en las salidas del conversor. 


Te dejo la subrutina que use en el PIC porciacaso te ayude a entender, esta en lenguaje asemble.

;====================================================
;SUBRUTINA QUE CONTROLA LA CONVERSION DE UN ADC0808, SE DEBE ELEGIR
;EL CANAL ANTES DE ENTRAR A LA SUBRUTINA Y EL VALOR OBTENIDO SE LO GUARDARA
;EN WREG
;========================================
CONVERTIR_AD    
                NOP
	NOP
	NOP
	NOP
	BSF	PORTC,5			;FLANCO ASCENDENTE EN ALE Y START
	NOP
	NOP
	BTFSC	PORTA,5			;ESPERO QUE EOC ESTE EN "0"
	GOTO	$-1
	BCF		PORTC,5		;FLANCO DESCENDENTE EN ALE Y START
	BTFSS	PORTA,5			;ESPERO QUE EOC ESTE EN "1"
	GOTO	$-1
   	NOP
	NOP
	NOP
                NOP
	MOVF	PORTB,0			;FIN CONVERSION LEO DATOS DE PORTB
                RETURN

Asi la use
                ..................
                ..................
                BCF	PORTC,0			;ESCOJO CANAL "0" DEL ADC0808
	BCF	PORTC,1
	CALL	CONVERTIR_AD                        ;EJECUTO SUBRUTINA DE CONVERSOR
	MOVWF	DATO_SE			;GUARDO DATO LEIDO
                ................
                ................

Espero te sirva mi ayuda

SALUDOS


----------



## Meliklos (Jul 14, 2010)

una pregunta...

A0.A1 y A2, que son los canales...donde los conecto?? al micro?? y de ser asi, donde??
ALE y START tambien van conectados al micro???

y una ultima pregunta...el CLOCK lo conecto al clock del micro o le pongo un capacitor y resistencia u oscilador??

gracias


----------



## lubeck (Jul 14, 2010)

Hola MeliKlos



> A0.A1 y A2, que son los canales...donde los conecto?? al micro?? y de ser asi, donde??


si los conectas al micro y con eso seleccionas el puerto a sensar... en binario..


000-0
001-1
010-2
011-3
100-4
101-5
110-6
111-7



> ALE y START tambien van conectados al micro???


no esos conectalos entre si...  ale con start a menos que quieras saber si ya hizo la lectura... no es muy necesario...



> y una ultima pregunta...el CLOCK lo conecto al clock del micro o le pongo un capacitor y resistencia u oscilador??


puedes hacerlo de ambas formas... yo prefiero ponerle un temporizador externo creo que de 2Mhz o algo asi... no recuerdo pero si quieres lo checo....

saludos...


----------



## Meliklos (Jul 14, 2010)

gracias lubeck! 

el clock con un temporizador??un capacitor y una resistencia no son suficientes??

ok, todo como dijiste! pero los 3 canales no estoy segura en que parte del micro... porque éstas son las patas del micro que uso (Rabbit 2100)...


----------



## lubeck (Jul 14, 2010)

> el clock con un temporizador??un capacitor y una resistencia no son suficientes??


no lo creo... tendria que ser un señal cuadrada yo utilizo el tc4047BP... en astable...
y creo que tambien se puede con un 7414 y un RC... para lograr la frecuencia del ADC... o con un 555 cmos.. o cosas asi...



> k, todo como dijiste! pero los 3 canales no estoy segura en que parte del micro... porque éstas son las patas del micro que uso (Rabbit 2100)...


pues en tres puertos libres que tengas del micro... y lo programas para hacer la seleccion...



> AGREGO



mira este link... del oscilador
https://www.forosdeelectronica.com/f26/interface-paralelo-64bits-i-amateurs-27566/#post225193
_https://www.forosdeelectronica.com/f26/interface-paralelo-64bits-i-amateurs-27566/index2.html#post232042_


----------



## Meliklos (Jul 14, 2010)

hno: tenes razon...jeje... obvio pero no lo pense
gracias lubeck! siempre ahi vos!


----------

