Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

22
__________________________________________________________________________ITSP Documento traducido de la hoja de datos del ATmega32 1 CONVERTIDOR ANALÓGICO DIGITAL del AVR 9.1 INTRODUCCIÓN Características del Convertidor Analógico Digital: 10 bits de resolución. 0.5 LSB No lineal. ±2 LSB Precisión absoluta. 13 a 260µs de Tiempo de Conversión. Hasta 15,000 Muestras por segundo en su Máxima Resolución. 8 Canales de Entrada Multiplexados a una sola Terminación. 7 Canales de entrada diferenciales. Rango de Voltaje de Entrada de 0 a Vcc. Voltaje de referencia seleccionable a 2.56V. Modo de conversión única o libre. Inicio de Conversión del ADC por Auto disparo con fuente de interrupción. Interrupción de Conversión Completa del ADC. Cancelador de Ruido en Modo Sleep. El Convertidor Analógico Digital del ATmega32 es por Aproximaciones Sucesivas con una resolución de 10 bits. El ADC se conecta a un multiplexor de 8 canales análogos el cual permite 8 voltajes de entrada en una sola terminación construido en los pines del puerto A. El voltaje de entrada de una sola terminación se refiere a 0 V (GND). El dispositivo también soporta 16 combinaciones de voltajes de entrada diferenciales. Dos de las entradas diferenciales (ADC1, ADC0 y ADC3, ADC2) están equipadas con una etapa de ganancia programable, proveyendo pasos de amplificación de 0dB (1x), 20dB (10x), o 46dB (200x) en el voltaje de entrada diferencial antes de la conversión del A/D. Siete canales de entrada diferenciales análogos comparten una terminal común negativa (ADC1), mientras que cualquier otra entrada del ADC puede ser seleccionada como la terminal positiva de entrada. Si se usa una ganancia de 1x o 10x, una resolución de 8 bits se espera. Si se usa una ganancia de 200x, una resolución de 7 bits se espera. El ADC contiene un circuito de Muestreo y Retención el cual asegura que el voltaje de entrada al ADC se mantenga constante durante la conversión. El diagrama a bloques se muestra en la siguiente figura. El ADC tiene un pin para la fuente de voltaje separado, AVCC. El AVCC no debe diferir más de ±0.3 V de Vcc. Los voltajes de referencia nominales internos 2.56V de AVCC son provistos dentro del chip. El voltaje de referencia puede ser externamente desacoplado del pin AREF por un capacitor para un mejor desempeño de ruido.

description

Convertidor Analogo Digital del ATmega32 para la materia de Microcontroladores I

Transcript of Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

Page 1: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 1

CONVERTIDOR ANALÓGICO DIGITAL del AVR

9.1 INTRODUCCIÓN Características del Convertidor Analógico Digital:

• 10 bits de resolución. • 0.5 LSB No lineal. • ±2 LSB Precisión absoluta. • 13 a 260µs de Tiempo de Conversión. • Hasta 15,000 Muestras por segundo en su Máxima Resolución. • 8 Canales de Entrada Multiplexados a una sola Terminación. • 7 Canales de entrada diferenciales. • Rango de Voltaje de Entrada de 0 a Vcc. • Voltaje de referencia seleccionable a 2.56V. • Modo de conversión única o libre. • Inicio de Conversión del ADC por Auto disparo con fuente de interrupción. • Interrupción de Conversión Completa del ADC. • Cancelador de Ruido en Modo Sleep.

El Convertidor Analógico Digital del ATmega32 es por Aproximaciones Sucesivas con una resolución de 10 bits. El ADC se conecta a un multiplexor de 8 canales análogos el cual permite 8 voltajes de entrada en una sola terminación construido en los pines del puerto A. El voltaje de entrada de una sola terminación se refiere a 0 V (GND). El dispositivo también soporta 16 combinaciones de voltajes de entrada diferenciales. Dos de las entradas diferenciales (ADC1, ADC0 y ADC3, ADC2) están equipadas con una etapa de ganancia programable, proveyendo pasos de amplificación de 0dB (1x), 20dB (10x), o 46dB (200x) en el voltaje de entrada diferencial antes de la conversión del A/D. Siete canales de entrada diferenciales análogos comparten una terminal común negativa (ADC1), mientras que cualquier otra entrada del ADC puede ser seleccionada como la terminal positiva de entrada. Si se usa una ganancia de 1x o 10x, una resolución de 8 bits se espera. Si se usa una ganancia de 200x, una resolución de 7 bits se espera. El ADC contiene un circuito de Muestreo y Retención el cual asegura que el voltaje de entrada al ADC se mantenga constante durante la conversión. El diagrama a bloques se muestra en la siguiente figura. El ADC tiene un pin para la fuente de voltaje separado, AVCC. El AVCC no debe diferir más de ±0.3 V de Vcc. Los voltajes de referencia nominales internos 2.56V de AVCC son provistos dentro del chip. El voltaje de referencia puede ser externamente desacoplado del pin AREF por un capacitor para un mejor desempeño de ruido.

Page 2: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 2

Figura 1. Diagrama a bloques esquemático del Convertidor Analógico Digital.

Operación El ADC convierte un voltaje de entrada análogo a un valor digital de 10 bits por aproximaciones sucesivas. El mínimo valor representa a GND y el máximo valor representa el voltaje en el pin AREF menos 1 LSB. Opcionalmente, AVCC o un voltaje de referencia interno de 2.56V puede ser conectado al pin AREF escribiendo en los bits

Page 3: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 3

REFs del registro ADMUX. El voltaje de referencia interno puede ser desacoplado por un capacitor externo en el pin AREF para mejorar la inmunidad al ruido. El canal de entrada análogo y la ganancia diferencial son seleccionados escribiendo en los bits MUX en ADMUX. Cualquiera de los pines de entrada del ADC, así como GND y una banda de voltaje de referencia fijo, pueden ser seleccionados como entradas finales independientes al ADC. Una selección de los pines de entrada del ADC pueden ser seleccionados como entradas positivas y negativas al amplificador de ganancia diferencial. Si los canales diferenciales son seleccionados, la etapa de ganancia diferencial amplifica la diferencia de voltaje entre el par del canal de entrada seleccionado por el factor de ganancia seleccionado. Este valor amplificado entonces llega a ser la entrada análoga del ADC. Si se usan las terminaciones independientes de los canales, el amplificador de ganancia es “bypassed” juntos. El ADC se habilita colocando el bit de habilitación del ADC, ADEN en ADCSRA. El voltaje de referencia y la selección del canal de entrada no tendrán efecto hasta que ADEN se habilite. El ADC no consume potencia cuando ADEN se limpia, así es recomendable apagar el ADC antes de que entre al modo de salvado de potencia (sleep). El ADC genera un resultado de 10 bits el cual se presenta en los registros de datos del ADC, ADCH y ADCL. Por default, el resultado se presenta con ajuste a la derecha, pero puede ser opcionalmente presentado con ajuste a la izquierda colocando el bit ADLAR en ADMUX. Si el resultado es ajustado a la izquierda y no más de una precisión de 8 bits se requiere, es suficiente con leer el ADCH. De lo contrario, ADCL debe ser leído primero, después ADCH, para asegurar que el contenido del registro de datos pertenezca a la misma conversión. Una vez que ADCL se lea, el acceso al ADC al registro de datos se bloquea. Esto significa que si ADCL ha sido leído, y una conversión se completa antes de que ADCH sea leído, ni el registro es actualizado y el resultado de la conversión se pierde. Cuando ADCH se lea, el acceso ADC a los registros de ADCH y ADCL se re-habilita. El ADC tiene su propia interrupción la cual puede ser disparada cuando una conversión se completa. Cuando el ADC accede al registro de datos, se prohíbe entre la lectura de ADCH y ADCL sea disparada la interrupción aún si el resultado se pierde. Inicializando una Conversión Una sola conversión es inicializada escribiendo un uno lógico en el bit de inicio de la conversión del ADC, ADSC. Este bit permanece alto tanto como la conversión esté en progreso y sea limpiado por hardware cuando se complete la conversión. Si un canal de datos diferencial se selecciona mientras una conversión está en progreso, el ADC finalizará la conversión actual antes de ejecutar el cambio de canal.

Page 4: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 4

Alternadamente, una conversión puede ser disparada automáticamente por varias fuentes. El auto disparo es habilitado colocando el bit de habilitación de auto disparo del ADC, ADATE en ADCSRA. La fuente de disparo se selecciona colocando los bits de selección de disparo del ADC, ADTS en SFIOR. Cuando un flanco positivo ocurra en la señal de disparo seleccionada, el preescalador del ADC se reinicia y una conversión comienza. Esto provee un método de inicio de conversión a intervalos fijos. Si la señal de disparo aún esta puesta a uno cuando la conversión se completa, una conversión nueva no será iniciada. Si otro flanco positivo ocurre en la señal de disparo durante la conversión, el flanco será ignorado. Note que una bandera de interrupción será puesta a uno, aún si la interrupción especificada esta deshabilitada o el bit de habilitación de interrupciones globales esta limpio, SREG. Una conversión puede dispararse sin causar una interrupción. Sin embargo, la bandera de interrupción debe ser limpiada para que sea disparada en una nueva conversión en el próximo evento de interrupción.

Figura 2. Auto disparo lógico del ADC. Usando la bandera de interrupción del ADC como una fuente de disparo hace que el ADC comience una nueva conversión tan pronto como la conversión en curso finalice. El ADC opera en modo libre, constantemente muestrea y actualiza el registro de datos del ADC. La primera conversión debe ser iniciada escribiendo un uno lógico en el bit ADSC en ADCSRA. En este modo el ADC ejecutará conversiones sucesivas independientemente de la bandera de interrupción del ADC, ADIF se limpia o no. Si el auto disparo esta habilitado, las conversiones únicas pueden ser iniciadas escribiendo un uno en ADSC en el registro ADCSRA. ADSC también se usa para determinar si una conversión está en progreso. El bit ADSC leerá un uno durante una conversión, independientemente de cómo la conversión fue iniciada. Preescalamiento y Tiempo de Conversión

Page 5: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 5

Figura 3. Preescalador del ADC.

Por default, la circuitería de aproximaciones sucesivas requiere una frecuencia de reloj de entrada entre 50kHz y 200kHz para obtener la máxima resolución. Si una resolución más baja de 10 bits se requiere, la frecuencia de reloj de entrada al ADC puede ser mayor de 200kHz para obtener una razón de muestreo mayor. El módulo ADC contiene un preescalador, el cual genera una frecuencia de reloj aceptable para el ADC de cualquier frecuencia del CPU arriba de 100kHz. El preescalador se activa por los bits ADPS en ADCSRA. El preescalador inicia su cuenta desde el momento en que el ADC se enciende colocando el bit a uno en ADEN de ADCSRA. El preescalador se mantiene corriendo mientras el ADEN este en uno, y se reinicia cuando ADEN este en bajo. Cuando se inicia una sola conversión colocando el bit ADSC en ADCSRA, la conversión inicia en la siguiente transición positiva del ciclo de reloj del ADC. Una conversión normal toma 13 ciclos de reloj del ADC. La primera conversión después de que el ADC se enciende (ADEN en ADCSRA se ponga a uno) toma 25 ciclos de reloj del ADC para inicializar la circuitería analógica. El muestreo y retención actual toma lugar 1.5 ciclos de reloj del ADC después del inicio de una conversión normal y 13.5 ciclos de reloj del ADC después del comienzo de la primera conversión. Cuando una conversión se completa, el resultado se escribe en el registro de datos del ADC, y ADIF se activa. En el modo de conversión única, ADSC se limpia simultáneamente. El software puede poner a uno ADSC de nuevo, y una nueva conversión será iniciada en la primera transición positiva del ciclo de reloj del ADC. Cuando se usa el auto disparo, el preescalador se reinicia cuando ocurre el evento se disparo. Esto asegura un retardo fijo desde el evento de disparo hasta el inicio de la

Page 6: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 6

conversión. En este modo, el muestreo y retención toma 2 ciclos de reloj del ADC después de la transición positiva en la señal de la fuente de disparo. Tres ciclos de reloj del CPU adicionales se usan para la sincronización lógica. Cuando se usa el modo diferencial, a lo largo del auto disparo de una fuente a otra conversión completa del ADC, cada conversión requerirá 25 ciclos de reloj del ADC. Esto es porque el ADC debe deshabilitarse y rehabilitarse después de cada conversión. En modo libre, una nueva conversión será iniciada inmediatamente después de que la conversión se completa, mientras ADSC permanece en alto.

Figura 4. Diagrama de tiempos del ADC, primera conversión (Modo de Conversión

Única).

Figura 5. Diagrama de tiempos del ADC, Conversión Única

Page 7: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 7

Figura 6. Diagrama de tiempos del ADC, Conversión con Auto Disparo

Figura 7. Diagrama de tiempos, Conversión libre

Page 8: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 8

Tabla 1. Tiempo de Conversión del ADC. Canales de Ganancia Diferencial Cuando se usan los canales de ganancia diferencial, ciertos aspectos se necesitan tomar en cuenta durante la conversión. Las conversiones diferenciales son sincronizadas con el reloj interno CKADC2 igual a la mitad de reloj del ADC. Esta sincronización se realiza automáticamente por la interfase del ADC de cierta manera que el muestreo y retención ocurra en una fase específica de CKADC2. Se inicia una conversión por el usuario (por ejemplo, en las conversiones únicas, y la primera conversión libre) cuando CKADC2 esta en bajo tomará la misma cantidad de tiempo que una conversión única (13 ciclos de reloj del ADC del próximo ciclo de reloj preescalado). Una conversión se inicia por el usuario cuando CKADC2 esta en alto y tomará 14 ciclos de reloj del ADC debido al mecanismo de sincronización. En el modo libre, una nueva conversión se inicia inmediatamente después que la conversión previa se completa, y ya que CKADC2 esta en alto en este tiempo, todas automáticamente se inician, (por ejemplo, todas pero la primera) las conversiones libres tomaran 14 ciclos de reloj del ADC. La etapa de ganancia se optimiza por un ancho de banda de 4kHz en los ajustes de ganancias. Frecuencias más altas pueden estar sujetas a amplificaciones no lineales. Un filtro pasa bajo externo deberá usarse si la señal de entrada contiene componentes de frecuencia más altas que la etapa de ganancia del ancho de banda. Note que la frecuencia de reloj del ADC es independiente de la limitación de la etapa de ganancia del ancho de banda. Por ejemplo, el periodo de reloj del ADC puede ser de 6µs, permitiendo un canal ser muestreado a 12kMPS (Muestras Por Segundo), sin considerar el ancho de banda de este canal. Si los canales de ganancia diferencial se usan y las conversiones son iniciadas por el auto disparo, el ADC debe ser apagado entre conversiones. Cuando el auto disparo se usa, el preescalador del ADC se reinicia antes que la conversión comience. Ya que la etapa de ganancia es dependiente de la prioridad del reloj estable del ADC de la conversión, esta conversión no será valida. Deshabilitando y rehabilitando el ADC entre cada conversión (escribiendo ADEN en ADCSRA a “0” después a “1”), solamente conversiones extendidas son ejecutadas. El resultado de las conversiones extendidas será validado.

Page 9: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 9

Cambio de canal o Selección de referencia Los bits MUXn y REFS1:0 en el registro ADMUX son de un solo buffer a través de un registro temporal al cual el CPU tiene acceso aleatorio. Esto asegura que los canales y la selección de referencia solamente tomen lugar en un punto seguro durante la conversión. El canal y la selección de referencia continuamente se actualizan hasta que una conversión es iniciada. Una vez que la conversión comienza, el canal y la selección de referencia se cierran para asegurar un tiempo de muestreo suficiente para el ADC. Continuas actualizaciones se resumen en el último ciclo de reloj del ADC antes que la conversión se complete. (ADIF en ADCSRA se pone a uno). Note que la conversión inicia en la siguiente transición positiva del flanco del reloj del ADC después de que ADCSRA se escriba. El usuario de esta manera es aconsejado no escribir en el nuevo canal o los valores de selección de referencia de ADMUX hasta en un ciclo de reloj del ADC después de que ADSC se escriba. Si el auto disparo se usa, el tiempo exacto del evento de disparo puede ser indeterminado. Se deberá tener especial cuidado cuando se actualiza el registro ADMUX, para controlar cual conversión será afectada por los nuevos ajustes. Si ambos ADATE y ADEN se escriben a uno, un evento de interrupción puede ocurrir en cualquier tiempo. Si se cambia el registro ADMUX en este periodo, el usuario no puede decir si la próxima conversión esta basada en los ajustes pasados o los nuevos. ADMUX puede actualizarse de manera segura como sigue:

1. Cuando ADATE o ADEN se limpia.

2. Durante la conversión, mínimo un ciclo de reloj del ADC después del evento de disparo.

3. Después de una conversión, antes que se use la bandera de interrupción como fuente de disparo y sea limpiada.

Cuando se actualiza ADMUX en una de estas condiciones, los nuevos ajustes afectaran la próxima conversión ADC. Especial cuidado deberá tenerse cuando se cambia a canales diferenciales. Una vez que un canal diferencial ha sido seleccionado, la etapa de ganancia puede tomarse hasta 125µs para estabilizarse para un nuevo valor. De esta manera las conversiones no deberán iniciarse dentro de los primeros 125µs después de seleccionar un nuevo canal diferencial. Alternativamente, el resultado de la conversión obtenido dentro de este periodo deberá ser descartado. El mismo ajuste de tiempo deberá ser observado para la primer conversión diferencial después de cambiarse la referencia del ADC (cambiando los bits REF1:0 en ADMUX). Canales de Entrada del ADC Cuando se cambia la selección del canal, el usuario deberá observar la siguiente guía para asegurar que el canal correcto se seleccionó: En el modo de conversión única, siempre selecciona el canal antes de iniciar la conversión. La selección del canal puede ser cambiada en un ciclo de reloj del ADC

Page 10: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 10

después de escribir a uno al ADSC. Sin embargo, el método más simple es esperar que la conversión se complete antes de cambiar la selección del canal. En el modo de corrimiento libre, siempre seleccione el canal antes de iniciar la primera conversión. La selección del canal puede cambiarse en un ciclo de reloj del ADC después de escribir a uno el ADSC. Sin embargo, el método más simple es esperar que la primera conversión se complete, y entonces se cambia la selección del canal. Ya que la próxima conversión ya ha iniciado automáticamente, el próximo resultado reflejara la selección del canal previo. Las conversiones subsecuentes reflejaran la selección del nuevo canal. Cuando se cambia a un canal diferencial con ganancia, el primer resultado de la conversión puede tener una pobre precisión debido al ajuste de tiempo requerido para la cancelación del corrimiento automático de circuitería. El usuario deberá preferiblemente descartar el resultado de la primera conversión. Voltaje de Referencia del ADC El voltaje de referencia para el ADC (VREF) indica el rango de conversión para el ADC. Los canales independientes que excedan a VREF resultaran en códigos cercanos a 0x3FF. VREF puede ser seleccionado ya sea como AVCC, 2.56V de referencia interna, o el pin AREF externo. El AVCC se conecta al ADC a través de un switch pasivo. La referencia interna de 2.56V se genera de la banda de referencia interna (VBG) a través de un amplificador interno. En cualquier caso, el pin externo AREF esta directamente conectado al ADC, y el voltaje de referencia puede ser más inmune al ruido por la conexión de un capacitor entre el pin AREF y tierra. VREF también se puede medir del pin AREF con el voltímetro a alta impedancia. Note que VREF es una fuente de alta impedancia, y solamente una carga capacitiva deberá conectarse en un sistema. Si el usuario tiene una fuente de voltaje fija conectada al pin AREF, el usuario puede no usar la otra opción de voltaje de referencia en la aplicación, como serán cortados para el voltaje externo. Si ningún voltaje externo se aplica al pin AREF, el usuario puede conmutar entre AVCC y 2.56V como selección de referencia. El resultado de la primera conversión del ADC después de conmutar la fuente de voltaje de referencia puede ser impreciso, y se le aconseja al usuario descartar este resultado. Si se usan los canales diferenciales, la referencia seleccionada no deberá ser tan cercana al valor de AVCC. Cancelador de Ruido ADC La característica del ADC de un cancelador de ruido que habilita la conversión durante el modo sleep para reducir el ruido inducido del CPU y otros periféricos de I/O. El cancelador de ruido puede usarse con la reducción de ruido del ADC y el modo ocioso. Para hacer uso de esta característica, el siguiente procedimiento deberá usarse:

Page 11: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 11

1. Asegúrese que el ADC este habilitado y no se encuentre ocupado en una conversión. En el modo de conversión única debe ser seleccionado y la interrupción de conversión completa del ADC debe ser habilitada.

2. Entre al modo de reducción de ruido del ADC (o modo ocioso). El ADC iniciara una conversión una vez que el CPU ha sido detenido.

3. Si ninguna interrupción ocurre antes de que la conversión del ADC se complete, la interrupción del ADC despertara al CPU y ejecutara la rutina de interrupción de conversión completa del ADC. Si otra interrupción activa al CPU antes de que la conversión del ADC se complete, esa interrupción será ejecutada, y una solicitud de interrupción de conversión completa del ADC será generada cuando la conversión del ADC se completa. El CPU permanecerá en modo activo hasta que un nuevo comando de sleep se ejecute.

Note que el ADC no será automáticamente apagado cuando se entra a otro modo sleep o al modo ocioso y el modo de reducción de ruido del ADC. Se le aconseja al usuario escribir a cero en ADEN antes de entrar en tales modos sleep para evitar el excesivo consumo de potencia. Si el ADC es habilitado en tal modo de sleep y el usuario quiere ejecutar conversiones diferenciales, al usuario se le aconseja cambiar de off a on el ADC después de despertar del modo sleep y provocar una conversión completa para obtener el valor valido. Circuitería de Entrada Análoga La circuitería de entrada análoga para los canales independientes se muestra en la siguiente figura. Una fuente análoga aplicada al ADCn esta sujeta a la capacitancia del pin y al escape de la entrada de ese pin, sin considerar que canal es seleccionado como entrada para el ADC. Cuando el canal se selecciona, la fuente debe dirigir el capacitor S/H a través de la serie de resistencias (resistencia combinada en el camino de entrada). Se optimiza el ADC para señales análogas con una impedancia de salida de aproximadamente de 10 KΩ o menos. Si una fuente se usa, el tiempo de muestreo será insignificante. Si una fuente con alta impedancia se usa, el tiempo de muestreo dependerá de que tanto tiempo la fuente necesite cargar al capacitor S/H, que puede variar ampliamente. Se le recomienda al usuario usar solamente fuentes con baja impedancia con una variación en señal baja, ya que esto minimiza la transferencia de carga requerida al capacitor S/H. Si se usan canales de ganancia diferenciales, la circuitería de entrada lucirá diferente, aunque la impedancia de la fuente de unos pocos cientos de kΩ o menos es recomendada. Las componentes de la señal más altas que la frecuencia de Nyquist (fADC/2) no deberán estar presentes por esa clase de canales, para evitar distorsión de señales de convolución impredecibles. Se le aconseja al usuario remover las componentes de alta frecuencia con un filtro pasa bajos antes de aplicarse las señales como entradas al ADC.

Page 12: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 12

Figure 8. Circuitería de Entrada Analógica.

Técnicas de Cancelación de Ruido Analógico La circuitería digital dentro y fuera del dispositivo genera EMI el cual podría afectar la precisión de la medición analógica. Si la precisión de la conversión es crítica, el nivel de ruido puede ser reducido aplicando las siguientes técnicas:

1. Mantenga las rutas de las señales analógicas tan cortas como sea posible. Y mantenga alejadas las rutas de las conmutaciones digitales.

2. El pin AVCC en el dispositivo deberá conectarse a la fuente de voltaje digital Vcc vía la red LC como se muestra en la figura.

3. Use la función del cancelador de ruido del ADC para reducir el ruido inducido del CPU.

4. Si cualquiera de los pines del puerto del ADC se usan como salidas digitales, es esencial que no se conmuten mientras una conversión esta en progreso.

Page 13: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 13

Figure 9. Conexiones de Potencia del ADC.

Esquemas de Corrimiento de Compensación La etapa de ganancia tiene un circuito de cancelación de corrimiento que anula el corrimiento de medidas diferenciales como sea posible. El corrimiento restante en el camino análogo puede ser medido directamente seleccionando el mismo canal para ambas entradas diferenciales. Este residuo de corrimiento puede ser substraído en software de los resultados medidos. Usando este tipo de software basado en la corrección del corrimiento, el corrimiento en cualquier canal puede ser reducido debajo de un LSB. Definiciones del ADC Preciso Una línea de ADC de n-bits convierte un voltaje lineal entre GND y VREF en 2

n pasos (LSBs). El código más bajo se lee como un 0, y el código más alto se lee como 2n-1. Varios parámetros describen la desviación de una conducta ideal.

Page 14: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 14

• Desplazamiento: La desviación de la primera transición (0x000 a 0x001) comparada con la transición ideal (a 0.5 LSB). El valor ideal: 0 LSB.

Figura 10. Error de Desplazamiento.

• Ganancia de Error: Después de ajustar el desplazamiento, la ganancia de error se encuentra por la desviación de la última transición (0x3FE a 0x3FF) comparada con la transición ideal (a 1.5 LSB abajo del máximo). Valor ideal: 0 LSB.

Figura 11. Error de Ganancia.

Page 15: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 15

• No Linealidad Integral: Después de ajustar los errores de desplazamiento y ganancia, la NLI es la máxima desviación de una transición actual comparada con una transición ideal de cualquier código. Valor ideal: 0 LSB.

Figura 12. No Linealidad Integral (NLI).

• No Linealidad Diferencial: La máxima desviación del ancho del código actual (el intervalo entre dos transiciones adyacentes) del ancho de código ideal (1 LSB). Valor ideal: 0 LSB.

Figura 13. No Linealidad Diferencial (NLD).

Page 16: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 16

• Error de Cuantización: Debido a la cuantización del voltaje de entrada dentro un número finito de códigos, un rango de voltajes de entrada (1 LSB de ancho) codificaran el mismo valor. Siempre ± 0.5 LSB.

• Precisión Absoluta: La máxima desviación de una transición actual (sin ajustar) comparada a una transición ideal para cualquier código. Este es el efecto compuesto de desplazamiento, Error de ganancia, Error diferencial, Errores No Lineales y de Cuantización. Valor Ideal: ± 0.5 LSB.

Resultado de la Conversión del ADC Después que termina la conversión (ADIF es alta), el resultado de la conversión puede encontrarse en el Registro de Resultado del ADC (ADCL, ADCH). Para una sola conversión, el resultado es

Con VIN es el voltaje en el pin de entrada seleccionada y VREF el voltaje de referencia seleccionado. 0x000 representa la tierra analógica, y 0x3FF representa el voltaje de referencia menos uno LSB. Si los canales diferenciales se usan, el resultado es:

Donde VPOS es el voltaje en el pin de entrada positivo, VNEG el voltaje en el pin de entrada negativo, GAIN, el factor de ganancia positiva, y VREF el voltaje de referencia seleccionado. El resultado se presenta en formato de complemento a dos, de 0x200 (-512d) a 0x1FF (+511d). Note que si el usuario desea ejecutar un chequeo rápido de polaridad del resultado, es suficiente leer el MSB del resultado (ADC9 en ADCH). Si el bit es uno, el resultado es negativo, si el bit es cero, el resultado es positivo.

Page 17: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 17

Figure 14. Medida de Rango Diferencial.

Tabla 3. Correlación entre el Voltaje de Entrada y el Código de Salida.

Page 18: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 18

Ejemplo: ADMUX = 0xED (ADC3 - ADC2, 10x ganancia, 2.56V referencia, resultado con ajuste a la izquierda) Voltaje en ADC3 es 300 mV, voltaje en ADC2 es 500 mV. ADCR = 512 * 10 * (300 - 500) / 2560 = -400 = 0x270 ADCL leerá 0x00, y ADCH leerá 0x9C. Escribiendo a cero a ADLAR con ajuste a la derecha El resultado es: ADCL = 0x70, ADCH = 0x02. REGISTROS DEL ADC Registro de Selección del Multiplexor ADC – ADMUX

• Bit 7:6 – REFS1:0 Bits de Selección de Referencia Estos bits seleccionan el voltaje de referencia para el ADC, como se muestra en la siguiente tabla. Si estos bits se cambian durante una conversión, el cambio no tendrá efecto hasta que la conversión actual se complete (ADIF en ADCSRA se pone a uno). Las opciones del voltaje de referencia interno no se usan si un voltaje de referencia externo esta siendo aplicado al pin AREF. REFS1 REFS0 Selección del Voltaje de Referencia

0 0 AREF, VREF interno apagado

0 1 AVCC con capacitor externo en el pin AREF

1 0 Reservado

1 1 Voltaje de Referencia Interno 2.56V con capacitor externo en el pin AREF

• Bit 5 – ADLAR: Resultado de Ajuste a la Izquierda del ADC.

El bit ADLAR afecta la presentación de la conversión del resultado del ADC en el registro de datos del ADC. Escriba a uno en ADLAR para el ajuste a la izquierda del resultado. De lo contrario, el resultado se ajustara a la izquierda. Cambiando el bit ADLAR afectara al Registro de Datos Inmediatamente del ADC, sin considerar las conversiones actuales.

• Bits 4:0: Bits de Selección de Ganancia y Canal Analógico El valor de estos bits seleccionan cual combinación de entradas analógicas se conectan al ADC. Estos bits también seleccionan la ganancia para los canales diferenciales. Si estos bits se cambian durante la conversión, el cambio no tendrá efecto hasta que la conversión actual se complete (ADIF en ADCSRA se pone a uno).

Page 19: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 19

Page 20: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 20

Registro A de Estado y Control del ADC – ADCSRA

• Bit 7 – ADEN: Habilitación del ADC Escribiendo un uno a este bit habilita el ADC. Escribiendo un cero aquí, el ADC se apaga. Apagando el ADC mientras una conversión esta en progreso, este terminara la conversión primero.

• Bit 6 – ADSC: Inicia la conversión del ADC En el modo de conversión única, escriba un uno en este bit para iniciar la conversión. En el modo libre, escriba un uno para iniciar la primera conversión. La primera conversión después de que el ADC se habilita, tomara 25 ciclos de reloj del ADC en lugar de los 13. Esta primera conversión ejecuta la inicialización del ADC. ADSC leerá como uno tanto como una conversión esta en progreso. Cuando la conversión se completa, retornara a cero. Escribiendo a cero en este bit no tendrá efecto.

• Bit 5 – ADATE: Habilitación del Auto disparo del ADC. Cuando a este bit se le escribe un uno, el auto disparo del ADC se habilita. La conversión del ADC iniciara por una señal con flanco positivo de la señal de disparo seleccionada. La fuente del disparo se selecciona ajustando los bits de selección de disparo, ADTS en SFIOR.

• Bit 4 – ADIF: Bandera de Interrupción del ADC Este bit se pone a uno cuando una conversión del ADC se completa y los registros de datos se actualizan. La interrupción de conversión completa del ADC se ejecuta si el bit ADIE y el bit I (Habilitación de Interrupciones Globales) en SREG se ponen a uno. ADIF se limpia por hardware cuando se ejecuta el vector de interrupción correspondiente. Alternadamente, ADIF se limpia escribiendo un uno lógico a la bandera. Tenga cuidado de que si se realiza la lectura-modifica-escritura en ADCSRA, una interrupción pendiente puede deshabilitarse. Esto aplica si las instrucciones SBI y CBI son usadas.

• Bit 3 – ADIE: Habilitación de Interrupción del ADC Cuando este bit se le escribe un uno y el bit I en SREG se pone a uno, la interrupción de conversión completa del ADC se activa.

• Bits 2:0 – ADPS2:0. Bits de Selección del Preescalador del ADC Estos bits determinan el factor de división entre la frecuencia del XTAL y la entrada del reloj al ADC.

Page 21: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 21

ADPS2 ADPS1 ADPS0 Factor de Division

0 0 0 2

0 0 1 2

0 1 0 4

0 1 1 8

1 0 0 16

1 0 1 32

1 1 0 64

1 1 1 128

Registro de Datos del ADC ADCL y ADCH

Cuando una conversión en el ADC se completa, el resultado se encuentra en estos dos registros. Si los canales diferenciales se usan, el resultado se presenta en formato complemento a dos. Cuando se lee ADCL, el registro de datos del ADC no se actualiza hasta que ADCH se lea. Consecuentemente, si el resultado se ajusta a la izquierda y no mas de 8 bits de precisión se requieren, es suficiente con leer el ADCH. De lo contrario, ADCL debe ser leído primero, después ADCH. El bit ADLAR en ADMUX y los bits MUXn en ADMUX afectan la manera en que el resultado se lee de los registros. Si ADLAR se pone a uno, el resultado se ajusta a la izquierda. Si ADLAR se limpia (por default), el resultado se ajusta a la derecha.

• ADC9:0. Resultado de la Conversión del ADC Estos bits representan el resultado de la conversión.

Page 22: Capitulo9. Convertidor Analogo Digital del ATmega32 (español)

__________________________________________________________________________ITSP

Documento traducido de la hoja de datos del ATmega32 22

Registro de Función Especial de E/S – SFIOR

• Bits 7:5 – ADTS2:0. Fuente de Auto Disparo del ADC Si ADATE en ADCSRA se escribe a uno, el valor de estos bits seleccionan cual fuente disparara una conversión en el ADC. Si ADATE se limpia, los ajustes de ADTS2:0 no tendrán efecto. Una conversión se disparara por la transición positiva de la bandera de interrupción seleccionada. Note que el cambiar de una fuente de disparo que se limpia a una fuente de disparo que se pone a uno, generara una transición positiva en la señal de disparo. Si ADEN en ADCSRA se pone a uno, esto iniciara una conversión. Cambiando al modo libre (ADTS[2:0]=0) no causara un evento de disparo, aún si la bandera de interrupción del ADC se pone a uno.

• Bit 4 – Res: Bit Reservado Este bis se reserva para uso futuro en el ATmega32. para asegurar la compatibilidad de dispositivos futuros, este bit de pone a cero cuando SFIOR se escribe.