Tabla de contenido:
- Paso 1: ¿Qué es un ADC?
- Paso 2: Cómo funciona ADC en AVR - Microcontrolador
- Paso 3: Fórmula de conversión de ADC
- Paso 4: ¿Cómo configurar ADC en ATmega8?
- Paso 5: Selección de ADLAR
- Paso 6: Selección de ADCSRA
- Paso 7: si desea aprovechar el valor de ADC, debe realizar algunos trabajos que se enumeran a continuación
- Paso 8: Establecer el valor ADC
- Paso 9: configurar el pin del LED de salida
- Paso 10: configurar el hardware ADC
- Paso 11: Habilite ADC
- Paso 12: Inicie las conversiones de analógico a digital
- Paso 13: MIENTRAS SIEMPRE
- Paso 14: Al final, el código completo es
Video: Introducción a ADC en microcontrolador AVR - para principiantes: 14 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
En este tutorial conocerás todo lo ADC en el microcontrolador avr
Paso 1: ¿Qué es un ADC?
Un ADC, o convertidor analógico a digital, permite convertir un voltaje analógico en un valor digital que puede ser utilizado por un microcontrolador. Hay muchas fuentes de señales analógicas que a uno le gustaría medir. Hay sensores analógicos disponibles que miden la temperatura, la intensidad de la luz, la distancia, la posición y la fuerza, solo por nombrar algunos.
Paso 2: Cómo funciona ADC en AVR - Microcontrolador
El AVR ADC permite que el microcontrolador AVR convierta voltajes analógicos en valores digitales con pocas piezas externas o ninguna. El ATmega8 presenta un ADC de aproximación sucesiva de 10 bits. ATmega8 tiene un ADC de 7 canales en PortC. El ADC tiene un pin de voltaje de suministro analógico separado, AVCC. AVCC no debe diferir más de ± 0,3 V de VCC. La referencia de voltaje puede estar desacoplada externamente en el pin AREF. AVCC se utiliza como referencia de voltaje. El ADC también se puede configurar para que se ejecute continuamente (el modo de ejecución libre) o para que realice una sola conversión.
Paso 3: Fórmula de conversión de ADC
Donde Vin es el voltaje en el pin de entrada seleccionado y Vref la referencia de voltaje seleccionada
Paso 4: ¿Cómo configurar ADC en ATmega8?
Los siguientes registros se utilizan para la implementación de ADC en ATmega8
Selección de multiplexor ADC
Paso 5: Selección de ADLAR
Resultado de ajuste izquierdo de ADC El bit ADLAR afecta la presentación del resultado de la conversión de ADC en el registro de datos de ADC. Escribe uno en ADLAR para ajustar el resultado a la izquierda. De lo contrario, el resultado se ajusta a la derecha
Cuando se completa una conversión de ADC, el resultado se encuentra en ADCH y ADCL. Cuando se lee ADCL, el registro de datos de ADC no se actualiza hasta que se lee ADCH. En consecuencia, si el resultado se deja ajustado y no se requiere más de 8 bits de precisión, es suficiente leer ADCH. De lo contrario, primero se debe leer ADCL y luego ADCH. Bits de selección de canal analógico El valor de estos bits selecciona qué entradas analógicas están conectadas al ADC.
Paso 6: Selección de ADCSRA
• Bit 7 - ADEN: ADC Habilitar Escribir este bit en uno habilita el ADC. Escribiéndolo a cero, el ADC se apaga
• Bit 6 - ADSC: ADC Iniciar conversión En el modo de conversión simple, escriba este bit en uno para iniciar cada conversión. En el modo de ejecución libre, escriba este bit en uno para iniciar la primera conversión.
• Bit 5 - ADFR: Selección de funcionamiento libre de ADC Cuando este bit está establecido (uno), el ADC funciona en modo de funcionamiento libre. En este modo, el ADC muestrea y actualiza los registros de datos continuamente. Borrar este bit (cero) terminará el modo de funcionamiento libre.
• Bit 4 - ADIF: Bandera de interrupción de ADC Este bit se establece cuando se completa una conversión de ADC y se actualizan los registros de datos. La interrupción de conversión completa de ADC se ejecuta si se establecen el bit ADIE y el bit I en SREG. El hardware borra ADIF al ejecutar el vector de manejo de interrupciones correspondiente. Alternativamente, ADIF se borra escribiendo uno lógico en la bandera.
• Bit 3 - ADIE: habilitación de interrupción de ADC Cuando este bit se escribe en uno y el bit I en SREG está establecido, se activa la interrupción de conversión completa de ADC.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Seleccionar Bits De acuerdo con la hoja de datos, este prescalar debe configurarse para que la frecuencia de entrada del ADC esté entre 50 KHz y 200 KHz. El reloj ADC se deriva del reloj del sistema con la ayuda de ADPS2: 0 Estos bits determinan el factor de división entre la frecuencia XTAL y el reloj de entrada al ADC.
Paso 7: si desea aprovechar el valor de ADC, debe realizar algunos trabajos que se enumeran a continuación
- Establecer valor de ADC
- Configurar el pin del LED de salida
- Configurar el hardware de ADC
- Habilitar ADC
- Iniciar conversiones analógicas a digitales
- MIENTRAS PARA SIEMPRE
SI el valor ADC es más alto que el valor establecido, encienda el LED ELSE Apague el LED
Paso 8: Establecer el valor ADC
Código: uint8_t ADCValue = 128;
Paso 9: configurar el pin del LED de salida
Código: DDRB | = (1 << PB1);
Paso 10: configurar el hardware ADC
Configurar el hardware de ADC
Esto se hace estableciendo bits en los registros de control del ADC. Primero, configuremos el prescalar para el ADC. De acuerdo con la hoja de datos, este preescalar debe configurarse para que la frecuencia de entrada del ADC esté entre 50 KHz y 200 KHz. El reloj ADC se deriva del reloj del sistema. Con una frecuencia del sistema de 1MHz, un preescalador de 8 dará como resultado una frecuencia ADC de 125 Khz. El preescalado lo establecen los bits ADPS en el registro ADCSRA. De acuerdo con la hoja de datos, los tres bits ADPS2: 0 deben establecerse en 011 para obtener el preescalador 8.
Código: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
A continuación, establezcamos el voltaje de referencia del ADC. Esto está controlado por los bits REFS en el registro ADMUX. Lo siguiente establece el voltaje de referencia en AVCC.
Código: ADMUX | = (1 << REFS0);
Para configurar el canal que pasa a través del multiplexor al ADC, los bits MUX en el registro ADMUX deben configurarse en consecuencia. Dado que estamos usando ADC5 aquí
Código: ADMUX & = 0xF0; ADMUX | = 5;
Para poner el ADC en modo de ejecución libre, establezca el bit ADFR con el nombre adecuado en el registro ADCSRA:
Código: ADCSRA | = (1 << ADFR);
Se realizará un último cambio de configuración para facilitar la lectura del valor ADC. Aunque el ADC tiene una resolución de 10 bits, esta cantidad de información a menudo no es necesaria. Este valor de 10 bits se divide en dos registros de 8 bits, ADCH y ADCL. Por defecto, los 8 bits más bajos del valor de ADC se encuentran en ADCL, siendo los dos superiores los dos bits más bajos de ADCH. Al establecer el bit ADLAR en el registro ADMUX, podemos alinear a la izquierda el valor de ADC. Esto coloca los 8 bits más altos de la medición en el registro ADCH, y el resto en el registro ADCL. Si luego leemos el registro ADCH, obtenemos un valor de 8 bits que representa nuestra medición de 0 a 5 voltios como un número de 0 a 255. Básicamente, estamos convirtiendo nuestra medición ADC de 10 bits en una de 8 bits. Aquí está el código para establecer el bit ADLAR:
Código:
ADMUX | = (1 << ADLAR); Eso completa la configuración del hardware ADC para este ejemplo. Es necesario configurar dos bits más antes de que el ADC comience a tomar medidas.
Paso 11: Habilite ADC
Para habilitar el ADC, establezca el bit ADEN en ADCSRA:
Código: ADCSRA | = (1 << ADEN);
Paso 12: Inicie las conversiones de analógico a digital
Para iniciar las mediciones de ADC, es necesario establecer el bit ADSC en ADCSRA:
Código: ADCSRA | = (1 << ADSC);
En este punto, el ADC comenzaría a muestrear continuamente el voltaje presentado en ADC5. El código hasta este punto se vería así:
Paso 13: MIENTRAS SIEMPRE
Lo único que queda por hacer es probar el valor de ADC y configurar los LED para que muestren una indicación alta / baja. Dado que la lectura de ADC en ADCH tiene un valor máximo de 255, se eligió un valor de prueba de th para determinar si el voltaje era alto o bajo. Una simple declaración IF / ELSE en los bucles FOR nos permitirá encender el LED correcto:
Código
si (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Enciende el LED
}
demás
{
PORTB & = ~ (1 << PB0); // Apagar LED
}
Paso 14: Al final, el código completo es
Código:
#incluir
int main (vacío)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Establecer LED1 como salida
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Establecer ADC prescalar a 8 - // Frecuencia de muestreo de 125KHz 1MHz
ADMUX | = (1 << REFS0); // Establecer la referencia de ADC a AVCC
ADMUX | = (1 << ADLAR); // Ajuste a la izquierda el resultado de ADC para permitir una lectura fácil de 8 bits
ADMUX & = 0xF0;
ADMUX | = 5; // Los valores de MUX deben cambiarse para usar ADC0
ADCSRA | = (1 << ADFR); // Establecer ADC en modo de ejecución libre
ADCSRA | = (1 << ADEN); // Habilitar ADC
ADCSRA | = (1 << ADSC); // Iniciar conversiones A2D mientras (1) // Bucle para siempre
{
si (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Enciende LED1
}
demás
{
PORTE & = ~ (1 << PB1); // Apagar LED1
}
}
return 0;
}
Primero publique este tutorial Haga clic aquí
Recomendado:
Introducción a Bascom AVR: 5 pasos
Comenzando con Bascom AVR: Este es el comienzo de una serie para enseñarle a programar su microcontrolador AVR con Bascom AVR. Por qué estoy haciendo esto. La mayoría de las muestras de programa en esta serie se pueden hacer con Arduino. Algunos más fáciles y otros más difíciles, pero al final ambos
Introducción al microcontrolador CloudX: 3 pasos
Introducción al microcontrolador CloudX: el microcontrolador CloudX es una microcomputadora de software y hardware de código abierto que le permite crear sus propios proyectos interactivos. CloudX es una pequeña placa de chip que permite a los usuarios decirle qué hacer antes de realizar cualquier acción, acepta diferentes k
Microcontrolador AVR. Sensor de distancia ultrasónico. HC-SR04 en LCD NOKIA 5110: 4 pasos
Microcontrolador AVR. Sensor de distancia ultrasónico. HC-SR04 en LCD NOKIA 5110: ¡Hola a todos! En esta sección hago un simple dispositivo electrónico para detectar la distancia y estos parámetros se muestran en LCD NOKIA 5110. Los parámetros se muestran como un diagrama y números. El dispositivo se basa en el microcontrolador AVR ATMEG
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: 4 pasos
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: En esta sección, aprenderemos cómo hacer el código C del programa para ATMega328PU para alternar el estado de los tres LED de acuerdo con la entrada de un interruptor de botón. Además, hemos explorado una solución al problema de "Switch Bounce". Como de costumbre, nosotros
Configuración de bits de fusibles del microcontrolador AVR. Creación y carga en la memoria flash del microcontrolador el programa de parpadeo de LED: 5 pasos
Configuración de bits de fusibles del microcontrolador AVR. Creando y cargando en la memoria flash del microcontrolador el programa de parpadeo de LED: en este caso crearemos un programa simple en código C y lo grabaremos en la memoria del microcontrolador. Escribiremos nuestro propio programa y compilaremos el archivo hexadecimal, utilizando Atmel Studio como plataforma de desarrollo integrada. Configuraremos fuse bi