Como usar o comparador analógico do Arduino

Cómo utilizar el comparador analógico Arduino

Las placas Arduino tienen un comparador analógico integrado que se utiliza para diferentes aplicaciones. Esto es digno de mención porque normalmente se utilizan entradas/salidas digitales y modulación de ancho de pulso (PWM), mientras que los comparadores analógicos no.

Un comparador analógico integrado es útil en microcontroladores, ya que proporciona comparaciones de voltaje, conversiones de digital a analógico, detección de umbral y PWM.

Dependiendo de la placa Arduino (hay varias opciones), se incluyen varias características de hardware y periféricos. La mayoría de las placas tienen un comparador analógico. En este artículo, analizaremos el comparador analógico integrado en el microcontrolador ATmega328p. Arduino UNO, Nano, Mini, Pro Mini, Fio, Ethernet y Lilypad se basan en ATmega328p.

¿Qué es un comparador analógico?
Un comparador analógico es un dispositivo electrónico que compara los niveles de voltaje de dos señales de entrada, produciendo una salida basada en sus magnitudes relativas.

Vale la pena señalar:

  • Si el voltaje de entrada en la entrada no inversora es mayor que el voltaje en la entrada inversora, la salida del comparador se considera lógica ALTA (1).
  • Si el voltaje en la entrada inversora es mayor que el voltaje en la entrada no inversora, la salida del comparador se considera lógica BAJA (0).

Comparador analógico ATmega328p
En todas las placas Arduino, el comparador analógico se implementa a través de un amplificador operacional o un circuito integrado comparador dedicado. El comparador analógico de Arduino se utiliza para tareas como detección de límites, conversión de digital a analógico y PMW.

El microcontrolador ATmega328p tiene un comparador analógico programable interno. La entrada positiva del comparador está disponible en el pin D6 del controlador y la entrada negativa está presente en los pines de entrada analógica A0 a A7.

La salida del comparador analógico Arduino puede activar una interrupción, que es la característica más útil de este periférico en Arduino.

El comparador Arduino es programable y se puede configurar configurando los registros asociados. El comparador se puede utilizar para obtener una salida de comparación analógica o para activar una interrupción.

Como se ve en el diagrama de bloques anterior, AIN0 (PD6) es la entrada positiva del comparador y AIN1 (PD7) es la entrada negativa. Las señales aplicadas a estos dos pines son evaluadas por el comparador.

Si la señal en AIN0 es mayor en magnitud que la señal en AIN1, la salida ACO del bit en el registro ACSR se establecerá en alto. De lo contrario, el bit se ajustará a un nivel bajo.

Puede haber diferentes fuentes de señal para los dos pines de entrada. Para la entrada positiva AIN0, el controlador se puede configurar para usar un voltaje de banda de referencia interna. Para la entrada negativa AIN1, cualquiera de los pines de entrada analógica A0~A7 se puede utilizar como fuente. Además, la salida del comparador se puede utilizar tal cual o puede activar la interrupción de captura de entrada del Temporizador/Contador1.

Cómo utilizar el comparador analógico
Usar el comparador analógico Arduino es relativamente simple, pero primero, identifique los pines del comparador en la placa. Dado que cada tipo de placa Arduino es diferente, la asignación de pines a las entradas positivas y negativas del comparador también es diferente.

Los pines específicos de cada placa están designados para la conversión analógica. Estos son pines de entrada analógica que están numerados (como A0, A1, etc.) o etiquetados con '~' o 'AC'. Conecte las señales de entrada a los pines del comparador. Uno de los pines de entrada también debe estar conectado a una señal de referencia fija. La otra entrada está conectada a la señal, que será comparada y monitoreada.

Luego configure los ajustes del comparador, como el voltaje de referencia, el modo de interrupción y la captura de entrada. Los registros asociados se definen en el programa de usuario o en bibliotecas y se pueden utilizar funciones de biblioteca. Programar el comparador con el apoyo de una biblioteca suele ser más sencillo, ya que no requiere conocimientos de los registros para configurar el comparador correctamente.

Por último, lea la salida del comparador. La salida está disponible a través de una función o variable del programa de usuario de una biblioteca específica. En caso contrario, es posible que necesites leer el estado de un registro asociado o un bit que indique la salida del comparador.

La salida indica claramente si la señal de entrada es de mayor o menor magnitud que el voltaje de referencia fijo. La salida se puede utilizar luego para la toma de decisiones o para desencadenar acciones específicas en el programa de usuario. La salida también puede desencadenar una captura de entrada similar a una interrupción del Temporizador/Contador1 de Arduino UNO.

Registros Arduino
En el ATmega328P, hay cinco registros comparadores analógicos de la siguiente manera:

1. ACSR (Registro de estado y control de comparador analógico)
2. DIDR1 (Registro de desactivación de entrada digital 1)
3. ADCSRA (Registro de estado y control ADC A)
4. ADCSRB (registro de estado y control de ADC B)
5. ADMUX (registro de selección de multiplexor ADC)

Registro ACSR : el registro más importante, que se utiliza para configurar el comparador analógico y monitorear los indicadores asociados. El registro tiene el mapa de bits a continuación.

El bit de desactivación del comparador analógico (ACD) habilita o desactiva el comparador analógico. Si el bit está configurado, el comparador analógico se desactivará. De lo contrario, se habilitará el comparador analógico. Deshabilitar el comparador analógico reduce el consumo de energía del microcontrolador.

El bit de selección de banda prohibida del comparador analógico ( ACBG ) se utiliza para seleccionar la entrada positiva del comparador. Si el bit está configurado, se utiliza un voltaje de referencia de banda prohibida fija como entrada positiva. De lo contrario, la entrada en AIN0 se utiliza como entrada positiva del comparador.

La salida del comparador analógico ( ACO ) es el indicador de salida del comparador. Si el voltaje en AIN0 es mayor que en AIN1, se activará la bandera. De lo contrario, está limpio.

El indicador de interrupción del comparador analógico ( ACI ) indica el estado de la interrupción del comparador analógico. La bandera se establece cada vez que ocurre una interrupción.

La habilitación de interrupción del comparador analógico ( ACIE ) habilita o deshabilita la interrupción del comparador analógico. Si el bit está establecido, se habilitará la interrupción del comparador analógico. De lo contrario, queda deshabilitado.

La activación de la captura de entrada del comparador analógico ( ACIC ) habilita o deshabilita la función de captura de entrada del temporizador/contador1 activada por la salida del comparador analógico. Si el bit está establecido, la captura de entrada está habilitada. De lo contrario, queda deshabilitado.

ACIS1 y ACIS0 son bits de selección del modo de interrupción del comparador analógico. Estos bits se utilizan para configurar el tipo de interrupción del comparador. Si se borran ambos bits, se seleccionará la interrupción del comparador en la conmutación de salida. Si ACIS1 no está marcado y ACIS0 está configurado, el estado está reservado y no se utilizará. Si se establece ACIS1 y se borra ACIS0, se seleccionará la interrupción del comparador en el flanco de salida descendente. Si ambos bits están activados, se selecciona la interrupción del comparador en el flanco ascendente.

Registro DIDR1 : tiene sólo dos bits, AIN0D y AIN1D, con el siguiente mapa de bits:

Si se configura AIN0D, el búfer de entrada digital para AIN0 se desactivará. Si se configura AIN1D, el búfer de entrada digital para AIN1 se desactivará. Deshabilitar el búfer de entrada digital para estos pines es otra forma de ahorrar consumo de energía del controlador.

Registro ADCSRA : un bit importante para la comparación analógica en este registro es ADEN. Tiene el siguiente mapa de bits:

El bit ADEN se utiliza para habilitar o deshabilitar el Arduino ADC. Si está configurado, el ADC está habilitado. De lo contrario, el ADC se desactivará. El resto de bits de este registro configuran conversiones de analógico a digital en Arduino y no tienen nada que ver con la comparación analógica. (Por ejemplo, el bit ADSC se usa para iniciar la conversión de analógico a digital y el ADIF se usa como indicador de interrupción ADC, etc.)

Registro ADCSRB : un bit importante para la comparación analógica en este registro es ACME. Tiene el siguiente mapa de bits:

El bit ACME determina si se utiliza o no la entrada analógica multiplexada. Si ADEN no está marcado (es decir, ADC está deshabilitado y ACME está configurado), los pines de entrada analógica A0~A7 se usarán para la entrada del comparador negativo. Los bits restantes en este registro se refieren a la conversión de analógico a digital y no tienen nada que ver con el comparador analógico.

Registro ADMUX : los bits MUX3:1 del registro ADMUX se utilizan para seleccionar qué entrada analógica A0~A7 debe usarse como entrada negativa para el comparador. Tiene el siguiente mapa de bits:

La fuente analógica se selecciona según el estado del bit MUX3:1, como se muestra en la siguiente tabla.

El resto de bits de este registro están relacionados con la conversión de analógico a digital y no tienen nada que ver con el comparador analógico.

Aplicaciones de un comparador analógico
El comparador analógico Arduino se utiliza normalmente para las siguientes tareas...

Detección de umbral : la comparación analógica en Arduino se utiliza a menudo para detectar si un voltaje excede un cierto nivel de umbral. El voltaje de entrada se compara con un voltaje de referencia fijo. A continuación, se monitorea la salida del comparador analógico para ver si el voltaje de entrada excede el voltaje de referencia fijo. La detección de umbral se usa comúnmente para detectar la salida de un sensor analógico y si ha excedido un valor predefinido.

Conversión de digital a analógico : el comparador Arduino se utiliza junto con una red de resistencia en escalera, que está conectada entre el pin de salida del comparador y un voltaje de referencia fijo. Luego se utilizan puntos de conexión intermedios para crear los niveles de voltaje digital deseados. Esta técnica se utiliza normalmente para generar voltajes de referencia analógicos para el ADC.

PWM : un comparador analógico puede generar señales moduladas por ancho de pulso para controlar un motor, un LED atenuado u otras aplicaciones PWM.

Cómo configurar el comparador analógico ATmega328P
Cuando se utiliza un comparador analógico, solo se deben configurar unos pocos registros. Depende de las fuentes de entrada positivas y negativas del comparador y de la aplicación de su salida.

En funcionamiento normal, cuando las señales del comparador positivo y negativo se aplican a través de AIN0 y AIN1 respectivamente, solo se deben configurar los registros ACSR y DIDR1 en el programa de usuario.

Para una entrada positiva del comparador, se puede utilizar el voltaje de referencia de banda prohibida en lugar de la entrada externa. Cuando se utiliza el voltaje de referencia de banda prohibida como entrada positiva, se debe configurar el ACSR. El ACSR también debe configurar la interrupción del comparador, el modo de interrupción y la captura de entrada.

Para la entrada del comparador negativo, se pueden utilizar los pines de entrada analógica A0~A7. Para configurar la fuente de entrada analógica externa A0~A7 en una entrada negativa, se deben configurar los registros ADCSRA, ADCSRB y ADMUX.

En todos los casos, el registro DIDR1 se puede configurar para habilitar o deshabilitar el búfer de entrada digital para la entrada del comparador positivo y negativo.

Comparando señales
Ahora, programemos una comparación de voltaje analógico normal usando Arduino. Para hacer eso:

  • Conecte dos fuentes de voltaje a los pines PD6 y PD7 del Arduino UNO. El voltaje se puede aplicar a través de potenciómetros de 10K o circuitos divisores de voltaje.
  • Conecte un LED al pin PD4 del Arduino para comprobar el estado del comparador analógico.
  • Nota: el ánodo de los LED debe estar conectado al pin y el cátodo debe estar conectado a tierra a través de una resistencia en serie.

Sube el siguiente boceto al Arduino UNO.

configuración nula {
DDRD = (1<
DIDR1 = (1<

ADCSRB &= ~(1<

CAA =
(0 << DCA) // Comparador analógico: habilitado
(0 << ACBG) // Borra ACBG para usar entrada externa para entrada AIN0 +ve
(0 << ACO)
(1 << ICA) // Borra la interrupción pendiente configurando el bit
(0 << ACIE) //Interrupción del comparador analógico deshabilitada
(0 << ACIC) // Captura de entrada del comparador analógico deshabilitada
(0 << ACIS1) (0 << ACIS0); // Modo de interrupción del comparador analógico: interrupción del comparador en la salida
Palanca
}

bucle vacío {
si (ACSR y (1<


PUERTO = (1<


otro
PUERTO &= ~(1<


}

Al cargar el boceto anterior, si el voltaje en la entrada positiva (INV0/PD6) es mayor que el voltaje en la entrada negativa (INV1/PD7), el bit de salida del comparador ACSR se establece y la salida digital en el pin PD4 se establece en ALTO, lo que hace que el LED se encienda.

Si el voltaje en la entrada positiva (INV0/PD6) es menor que el voltaje en la entrada negativa (INV1/PD7), el bit de salida del comparador ACSR se borra y la salida digital en el pin PD4 se establece en BAJA, lo que hace que el LED se encienda. apagado.

Regresar al blog

Deja un comentario

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