Entradas analógicas en Arduino

En esta entrada vamos a ver las entradas analógicas, su funcionamiento y características.

Son pines de entrada a los que podemos conectar periféricos que proporcionan señales eléctricas variables; por ejemplo un sensor de luz cuya tensión es proporcional a la cantidad de luz que recibe.

¿Qué es una señal analógica?

Una señal analógica es una magnitud que puede tomar cualquier valor dentro de un intervalo –Vcc y + Vcc. Por ejemplo, una señal analógica de tensión entre 0V y 5V podría valer 2,72V, o cualquier otro valor con cualquier número de decimales. Por contra, recordemos que una señal digital de tensión teórica únicamente podía registrar dos valores (en el ejemplo, 0V o 5V).

 Por norma general en los autómatas las entradas analógicas son más escasas, más lentas y más caras que las entradas digitales. En el caso de Arduino uno disponemos de un número variable de entradas analógicas, que en el caso de Arduino Uno y Mini Pro son 6 (A0, A1, A2, A3, A4, A5).

Precisión de la medición

 Para entender la precisión de una entrada analógica es necesario entender cómo funciona un conversor analógico digital (ADC), que es su componente fundamental. Un ADC es un dispositivo que convierte una medición analógica en una medición digital codificada con un número N de bits.

En el caso de Arduino Uno, Mini Pro, y Mega, las entradas analógicas disponen de 10 bits de resolución, lo que proporciona 1024 niveles digitales, lo que a 5V supone una precisión de la medición de +-2,44mV.

 Conexión de entradas analógicas en Arduino

Supongamos que dispongamos un sensor analógico que proporciona una señal analógica entre 0V a 5V.

El código para realizar la lectura es similar al que realizado para las entradas digitales. Simplemente realizamos la lectura mediante AnalogRead() y almacenamos el valor devuelto en una variable.

Ejemplo: Leer el valor de un sensor y mostrar en el monitor serie un mensaje en función del valor leído.

#define pinSensor 0; // seleccionar la entrada para el sensor A0
int valorSensor; // variable que almacena el valor (0 a 1023)

void setup()
{
Serial.begin(9600);
}

void loop()
{
valorSensor = analogRead(pinSensor); // realizar la lectura
//mandar mensaje al monitor serie en función del valor leído

if (valorSensor > 512)
{
Serial.println("Mayor que 2,5V");
}
else
{
Serial.println("Menor que 2,5V");
}
delay(1000);
}

 En la siguiente entrada se puede observar el uso de la utilización de las entradas analógicas para la lectura del valor devuelto por una LDR (Medidor de luz con LDR).