Cómo configurar el comparador analógico de Arduino.

 Cómo configurar el comparador analógico de Arduino. 

Enseño también el manejo de los registros del hardware, veréis que es muy fácil.

Lo primero paso a explicar de forma muy simplificada ¿Qué es un comparador analógico? y ¿Qué es un registro de hardware?

    ¿Qué es un comparador Analógico?

Es un componente que tiene 2 entradas, una con un signo + y otra con un signo - y tiene una salida que solo puede ser 0 ó 1. El comparador compara la tensión de las dos entradas, y si la tensión de la entrada negativa es menor que la positiva la salida será 1 y si por el contrario la tensión de la entrada negativa es mayor que la positiva, la salida será 0. Y esta conmutación la puede hacer a varios MHz perfectamente.

    



    ¿Qué es un registro de hardware?

Es una posición de memoria cuyos bits afectan directamente a funciones del hardware del microprocesador. Arduino tiene los registros de 8 bits y cada uno habilita/deshabilita funciones específicas.



En Arduino por defecto el comparador analógico viene habilitado y con la entrada positiva en el pin digital 6 (AIN0)  y la entrada negativa en el pin digital 7 (AIN1).



El manejo del comparador será a modificando los bits de los registros de wardware del chip atmega328
con las "funciones" bitWrite y bitRead.

bitWrite(x,n,b) escdibe el bit b en la posición n de la variable x
ejemplo: bitWrite(ACSR,ACBG,1); escribe 1 en el registro ACSR posición ACBG.

 bitRead(x,n); lee el valor de la posición n de la variable x y devuelve un valor binario, 0 o 1
ejemplo: if(bitRead(ACSR,ACO)){....} ejecuta la sentencia si la salida del comparador es 1

El registro del comparador se llama ACSR, y Estas siglas las interpreta el compilador como la posición de
memoria en la que se encuentra dicho registro. Véase ACSR en la hoja de datos del micro.

Por defecto está habilitado y configurado con la entrada + en la para 6 y la entrada - en la 7 así que sin más 
podemos leer el estado del comparador  con éste código:
bitRead(ACSR,ACO); // ACO muestra el estado del comparador

Si queremos deshabilitar el comparador:
bitWrite(ACSR,ACD,1); // Así consumirá menos el micro.

La referencia de voltaje interna de 1.1v (ACBG) se puede conectar a la entrada positiva del comparador, en ese caso
se desconectará de el pin digital 6:
bitWrite(ACSR,ACBG,1); // colocando aquí un 0 se conectará la entrada + al pin 6.

Se puede habilitar una interrupción relacionada al comparador la cual se activa así:
bitWrite(ACSR,ACIE,1); // colocando aquí un 0 se deshabilita la interrupción.

La función de interrupción ha de escribirse en el siguiente código:
ISR(ANALOG_COMP_vect)
{
  // Aquí se escribe el código de interrupción
}

Se puede selecciónar el evento que activa la interrupción mediante los bits ACIS1 y ACIS0:
bitWrite(ACSR,ACIS1,1); bitWrite(ACSR,ACIS0,0); // FALLING Flanco de subida
bitWrite(ACSR,ACIS1,1); bitWrite(ACSR,ACIS0,1); // RISING Flanco de bajada

Se puede cambiar la entrada negativa del comparador a cualquiera de los pines analógicos de arduino(A0...A5)
mediante la multiplexación, para ello hay que deshabilitar el ACD y habilitar la multiplexación del comparador:
bitWrite(ADCSRA,ADEN,0); // Deshabilita el ADC (Conversor Analógico Digital)
bitWrite(ADCSRB,ACME,1); //habilita la multiplexación
La entrada negativa se define mediante los 3 bits del ADMUX. ver las combinaciones en la hoja de datos. Un ejemplo:
bitWrite(ADMUX,MUX0,1); //En éste ejemplo la entrada negativa del comparador está en pin A1
bitWrite(ADMUX,MUX1,0); 
bitWrite(ADMUX,MUX2,0);


El bit ACI por defecto está en 0, y se pone en 1 automáticamente cuando la salida del comparador pasa a 1, y permanece
ACI en 1 hasta que se reinicie el micro o de cambie mediante bitWrite(ACSR,ACI,0);

Otra función que tiene el comparador es activar un contador en el tiner1, pero eso no lo he probado.
Ver hoja de datos para configurarlo

Puedes descargar la hoja de datos de Arduino y de Attiny85 aquí: https://drive.google.com/drive/folders/1rv94BCembQQwTOWvvWqxsl-uybZJW_Yj?usp=sharing


Comentarios

Publicar un comentario