jueves, 3 de abril de 2014

CONVERSOR ANÁLOGO DIGITAL CON MICROCONTROLADOR ATMEGA164PA, CODEVISION Y PROTEUS

WE UNIT TALENT THEY CREATE THE FUTURE


Especificaciones:
• Resolución de 10-bits
• Integrador no Lineal 0.5 LSB
• Presición Absoluta ±2 LSB
• Tiempo de Conversión 13 - 260μs
• Máxima Resolución por encima de 15 KSPS
• 8 Canales Multiplexados Simples de Salida
• Modo Diferencial con Ganancia Seleccionable: X1, X10 o X200
• Ajuste opcional Izquierdo para lectura de salida del ADC
• Rango de Voltaje de Entrada del ADC: 0 - VCC
• Rango de Voltaje Diferencial del ADC: 2.7 - VCC
• Voltaje de Referencia Seleccionable ADC: 2.5V o 1.1V
• Modo de Simple Conversión (Free Running)
• Inicio de Conversión ADC por Auto-disparo o Fuente de Interrupción
• Activación de Interrupción al finalizar la Conversión ADC
• En Modo Sleep se cancela el ruido

Bloque Esquemático del Conversor Analógico Digital:

Descripción de Registros:

         ADMUX- Selección de Registros Multiplexados del ADC
     
                                                                               
        Bit 7:6 -REFS1:0: Selección Bits de Referencia
Estos bits seleccionan el voltaje de referencia para el ADC, como se muestra en la siguiente tabla. Si estos bits son cambiados durante la conversión, el cambio no será efectuado hasta que la conversión sea completada (ADIF EN ADCSRA es uno). La opción del voltaje de referencia interno no debe ser usada si una referencia externa esta siendo aplicada en el pin AREF.


Bit 5- ADLAR: Ajuste de resultado hacia la izquierda del ADC 
El bit ADLAR afecta la presentación del resultado de la conversión ADC en el registro de datos del ADC. Escriba uno en ADLAR para ajustar el resultado hacia la izquierda.

Bits 4:0 – MUX4:0: Bits de selección para Canal Análogo y Ganancia
El valor de estos bits seleccionan cual combinación de la entrada analógica son conectadas al ADC. Estos bits también seleccionan la ganancia para los canales diferenciales

ADCSRA – ADC Registro de Control y Estado A

Bit 7- ADEN: Habilitación ADC
Cuando se pone uno en este bit se habilita el ADC, con cero el ADC es apagado.Si se apaga el ADC mientras la conversión está en progreso, la conversión terminará.
Bit 6 -ADSC: Inicio de Conversión ADC
En modo de Simple Conversión, cada vez que se ponga uno en este bit se inicia cada conversión. En modo de Simple Conversión (Free Running), al escribir uno en este bit inicia la conversión. La primera conversión ADSC ha sido escrita después de que el ADC ha sido habilitado o si ADSC es escrito al mismo tiempo que el ADC es habilitado, esto demora 25 ciclos de reloj ADC comparado con los 13 ciclos que demora normalmente. La primera conversión llega a inicializar el ADC.ADSC estará en uno durante la conversión en progreso. Cuando termina la conversión retorna a cero.
Bit 5- ADATE: Habilitación Auto Disparador ADC
Cuando se escribe uno en este bit, el auto Disparador del ADC es habilitado. El ADC empezará la conversión con flanco positivo seleccionado con la señal del disparador. 
Bit 4- ADIF: ADC Banderas de Interrupción
Este bit es uno cuando se completa la conversión ADC y los Registros de Datos son actualizados. Cuando la conversión ADC es completada se ejecuta la interrupción si el bit ADIE y el bit I en SREG son uno.
Bit 3 – ADIE: Habilitación de interrupciones del ADC
Cuando este bit es uno y el bit I en SREG es uno, la conversión ADC es completada y es activada la interrupción.
Bits 2:0 – ADPS2:0: Bits de selección para el Prescalador 
Estos bits determinan el factor de división entre la frecuencia del cristal y la entrada del reloj 
del ADC.


------------------------------------------------------------------------------------------------

Para realizar la conversión análoga digital debemos tener en cuenta un rango dentro del cual se realizará la conversión, en el caso de los microcontroladores el voltaje de referencial es de 5V 



Las líneas de código que debes verificar el momento de la creación de tu proyecto en CODEVISION son las que se detallan a continuación:




#define ADC_VREF_TYPE 0x00

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
 adc_data=ADCW;
   //((x*1023)/5) 
  // (X*1023)/5
    //x=valor del conversor a encontrar
 // 5= valor referencial 

if (adc_data>((0.5*1023)/5)&&(adc_data<((1*1023)/5)))
PORTB=0b00000001;
if (adc_data>((1*1023)/5)&&(adc_data<((1.5*1023)/5)))
PORTB=0b00000011;
if (adc_data>((1.5*1023)/5)&&(adc_data<((2*1023)/5)))
PORTB=0b00000111;
if (adc_data>((2*1023)/5)&&(adc_data<((2.5*1023)/5)))
PORTB=0b00001111;
if (adc_data>((2.5*1023)/5)&&(adc_data<((3*1023)/5)))
PORTB=0b00011111;
if (adc_data>((3*1023)/5)&&(adc_data<((3.5*1023)/5)))
PORTB=0b00111111;
if (adc_data>((3.5*1023)/5)&&(adc_data<((4*1023)/5)))
PORTB=0b01111111;
if (adc_data>((4*1023)/5)&&(adc_data<((4.5*1023)/5)))
PORTB=0b01111111;


ADCSRA=ADCSRA |0x40;  // inicializar la siguiente conversión


}





No hay comentarios:

Publicar un comentario