Como usar o ADC embutido do microcontrolador AVR (ATmega16) – (Parte 26/46)

Cómo utilizar el ADC incorporado del microcontrolador AVR (ATmega16) – (Parte 26/46)

El microcontrolador sólo entiende lenguaje digital. Sin embargo, las entradas disponibles desde el entorno al microcontrolador son en su mayoría de naturaleza analógica, es decir, varían continuamente con el tiempo. Para comprender las entradas del procesador digital, se utiliza un dispositivo llamado Convertidor analógico a digital (ADC). Como sugiere el nombre, este periférico recopila la información analógica proporcionada por el entorno y la convierte al formato digital comprensible del controlador, luego el microcontrolador procesa la información y proporciona el resultado deseado en la salida.

((wysiwyg_imageupload:451:))

ATmega16 tiene un sistema ADC integrado de 10 bits y 8 canales. Algunas de las características básicas del ADC Armega16 son:
· 8 canales.
· Resolución de 10 bits.
· Rango de voltaje de entrada de 0 a Vcc.
· Fuente de voltaje de referencia interna seleccionable de 2,56 V.
· Pin AREF para tensión de referencia externa.
· Interrupción completa de la conversión ADC.
Los canales ADC en el Atmega16 están multiplexados PORTA y usan los pines comunes (pin33 a pin40) con PORTA. El sistema ADC del microcontrolador Atmega16 consta de los siguientes pines:
I. ADC0-ADC7: 8 canales desde el pin 40 al pin 33 del periférico ADC Atmega16.
ii. AREF: Pin32 del microcontrolador Atmega16, el voltaje en el pin AREF actúa como voltaje de referencia para la conversión de ADC, el voltaje de referencia siempre es menor o igual al voltaje de suministro, es decir, Vcc.
III. AVCC: Pin30, este pin es el pin de voltaje de suministro para usar PORTA y ADC; El pin AVCC debe estar conectado a Vcc (voltaje de alimentación del microcontrolador) para usar PORTA y ADC.
Nota: Se puede utilizar una fuente de voltaje de referencia externa en el pin AREF. Sin embargo, el Atmega16 también tiene opciones de voltaje de referencia interna de 2,56 V y Vref = Vcc.
La siguiente figura muestra la configuración de pines del sistema ADC del microcontrolador Atmega16.
Números de pinos do ADC no microcontrolador ATmega16 AVR
Fig. 2: Números de pines del ADC en el microcontrolador ATmega16 AVR
Registros ADC
Para utilizar el periférico ADC Atmega16, es necesario configurar ciertos registros.
I. ADMUX (multiplexor ADC y registro de selección)
Valores de bits do multiplexador ADC e registro de seleção para configurar o periférico ADC no AVR
Fig. 3: Valores de bits del multiplexor ADC y registro de selección para configurar el periférico ADC en el AVR
Los bits REF(0:1) determinan la fuente de voltaje de referencia, ya sea interna o externa conectada al pin AREF. Los bits MUX (4:0) se utilizan para seleccionar entre canales que proporcionarán datos al ADC para su conversión. El bit ADLAR, cuando se establece en 1, proporciona el resultado ajustado a la izquierda en los registros de datos ADCH y ADCL.
ii. ADCSRA (Registro de estado y control de ADC)
Configuração de bits do controle ADC e registro de status no microcontrolador AVR
Fig. 4: Configuración del bit de control ADC y registro de estado en el microcontrolador AVR
ÁDEN: Bit de habilitación del ADC, este bit debe establecerse en 1 para encender el ADC.
ADSC: Bit de conversión inicial de ADC, este bit se establece en 1 para iniciar la conversión de ADC; una vez que se completa la conversión, el hardware vuelve a establecer este bit en 0.
A FIND: ADC Auto Trigger Enable, este bit se establece en 1 para habilitar la activación automática de la conversión ADC.
ADIF: indicador de interrupción ADC, este bit se establece en 1 cuando se completa la conversión ADC.
ADIE: Habilitación de interrupción de ADC, este bit se establece en 1 si queremos habilitar la interrupción completa de la conversión de ADC.
ADPS(0:2): Bits de preescalado del ADC, estos bits se utilizan para configurar la frecuencia del reloj del ADC, la configuración de estos bits determina el factor de división por el cual se divide la frecuencia del reloj del microcontrolador para obtener la frecuencia del reloj del ADC. La figura anterior muestra los valores de bits del preescalador para el factor de división respectivo.
Equação da frequência do relógio ADC
Fig. 5: Ecuación de frecuencia de reloj ADC
La frecuencia de reloj del ADC debe estar entre 50 KHz y 200 KHz.
III. ADCH y ADCL (Registros de datos ADC)
Cuando se completa la conversión de ADC, los datos se almacenan en estos dos registros. La configuración de datos depende del valor del bit ADLAR en el registro ADMUX. Si ADLAR=0, los datos se ajustan a la derecha y si ADLAR=1, los datos se ajustan a la izquierda. Lea siempre primero el ADCL y luego el ADCH. En los casos en los que la precisión de 8 bits sea suficiente, establezca el bit ADLAR en 1 para desplazar los datos hacia la izquierda y leer solo el registro de datos ADCH.
Cuando ADLAR = 0,
Configuração de bits do registro de dados ADC em ADLAR = 0 no microcontrolador ATmega16 AVR
Fig. 6: Configuración del bit de registro de datos ADC en ADLAR = 0 en el microcontrolador ATmega16 AVR
Cuando ADLAR = 1,
Configuração de bits do registro de dados ADC em ADLAR = 1 no microcontrolador ATmega16 AVR
Fig. 7: Configuración del bit de registro de datos ADC en ADLAR = 1 en el microcontrolador ATmega16 AVR
Descripción del circuito
Conecte el circuito como se muestra en el diagrama del circuito. Un condensador cerámico 104 está conectado entre AVcc (pin 30) y Aref (pin 32). AVcc (pin 30) está conectado a una alimentación externa de +5 V.
Explicación del código
Para conectar el dispositivo analógico con el microcontrolador AVR, siga los pasos a continuación para programarlo.

Paso 1: inicializar el ADC
I. Establezca el valor en el registro ADMUX según el canal ADC y el voltaje de referencia.
ii. Configure los bits del Prescaler adecuadamente en el registro ADCSRA.
III. Configure el bit ADEN para habilitar el ADC.


 ADC_init vacío (vacío) // inicialización del ADC

{ ADMUX=(1< //AVcc con condensador externo en AREF ADCSRA=(1< // Habilita el ADC y establece el factor de división del Prescaler en 128 }
Paso 2: leer el valor analógico
I. Ingrese el valor del canal en ADMUX
ii. Inicie la conversión configurando el bit ADSC.
III. Supervise el bit ADIF para completar la conversión.
4. Borre el bit de conversión ADIF. Al escribir 1.
v. El resultado convertido digitalmente ahora está disponible en los registros ADCH y ADCL.


 int sin firmar ADC_read (canal de caracteres sin firmar)
 {
 ch= ch&0b00000111; // el canal debe ser blanco y negro del 0 al 7
 ADMUX = canal; //seleccionando canal
 
ADCSRA =(1< //iniciar conversión
 mientras(!(ADCSRA & (1< // esperando ADIF, conversión completa
 ADCSRA =(1< // Limpieza ADIF, se hace escribiéndole 1
 
retorno (ADC);
 }

Código fuente del proyecto

###


 //Programa para que el ADC lea desde el canal 0 y muestre salida de 8 bits en PORTB
#incluir #incluir vacío ADC_init(vacío); unsigned int ADC_read (carácter sin firmar); // ------------------------------------------------ int principal (vacío) { valor interno sin firmar; DDRB=0xFF; DDR=0x03; ADC_init; // inicialización del ADC //ch=0; mientras(1) { valor=ADC_read(0); PORTB=valor; _delay_ms(500); } } //------------------------------------------------ ADC_init vacío (vacío) // inicialización del ADC { ADMUX=(1< //AVcc con condensador externo en AREF ADCSRA=(1< // Habilita el ADC y establece el factor de división del Prescaler en 128 } int sin firmar ADC_read (canal de caracteres sin firmar) { ch= ch&0b00000111; // el canal debe ser blanco y negro del 0 al 7 ADMUX = canal; //seleccionando canal ADCSRA =(1< //iniciar conversión mientras(!(ADCSRA & (1< // esperando ADIF, conversión completa ADCSRA =(1< // Limpieza ADIF, se hace escribiéndole 1 retorno (ADC); }

###

Componentes del proyecto

  • ATmega16
  • CONDUJO

Vídeo del proyecto

Conteúdo Relacionado

A Infineon Technologies AG apresenta os novos MOSFETs CoolSiC...
En cada vehículo hay una red de sensores integrada...
El controlador del motor es uno de los componentes...
ESP32-CAM es un módulo de cámara compacto que combina...
La evolución de los estándares USB ha sido fundamental...
SCHURTER anuncia una mejora de su popular serie SWZ...
Visual Communications Company (VCC) ha anunciado sus nuevos tubos...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo “diodo”,...
Quando você explora a área de Controle V/F dos...
Probablemente se haya encontrado con el término " resistencia...
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.