SDII - ITC - UABCS

5 - Entradas Analógicas y el Potenciómetro

Es momento de utilizar las entradas analógicas de nuestro Arduino. Las entradas analógicas brindan a los microcontroladores un mundo de posibilidades, tienen un potencial enorme como para la lectura de sensores o variables contínuas como del ambiente, recordando que la principal desventaja de los sistemas digitales es que el mundo es por naturaleza analógica.

Las entradas analógicas utilizan un convertidor de analógico a digital, recordando un poco de los convertidores de analógico a digital podemos describir uno por su resolución (en bits) y el voltaje máximo que puede recibir en su entrada. En el caso del Arduino UNO la resolución de su convertidor A/D es de 10 bits y recibe voltajes de hasta 5V. Esto quiere decir que...

1 bit son dos combinaciones, del 0-1

2 bits son 4 combinaciones, del 0-3

3 bits son 8 combinaciones, del 0-7

4 bits son 16 combinaciones, del 0-15

5 bits son 32 combinaciones, del 0-31

6 bits son 64 combinaciones, del 0-63

7 bits son 128 combinaciones, del 0-127

8 bits son 256 combinaciones, del 0-255

9 bits son 512 combinaciones, del 0-511

10 bits son ... combinaciones, del 0-...

 

Partiendo de esta información vamos a comenzar a ver las entradas analógicas en el Arduino.

Tenemos una sección de 6 terminales de entradas analógicas, numeradas como A0 a A5. Cualquiera de estas 6 entradas podemos utilizar como una entrada analógica. Al momento de utilizar la instrucción analogRead en nuestro código de Arduino debemos especificar el número de entrada analógica (0-5) y entonces devolverá un valor entero que representa el valor analógico a la entrada:

 

int valor = 0;

 

valor = analogRead(1);

 

Esto quiere decir que valor nos va a dar un número que representa el voltaje en la entrada analógica A1.

En 10 bits tenemos 1024 combinaciones, valores del 0 al 1023, y si nuestro voltaje de entrada máximo es 5V, tendríamos que ante un voltaje de 0V a la entrada analógica, nos arrojaría un valor de 0, mientras que en un voltaje de entrada de 5V nos entregaría 1023. Para un voltaje de 2.5V tendríamos un valor de alrededor de 512.

 

Para nosotros como desarrolladores Arduino, podría resultarnos útil poder ver el valor que entrega la función analogRead, para eso podemos hacer uso del puerto serie y utilizar la función print y ver en el monitor serial nuestro valor.

 

Serial.print("Valor analógico: ");

Serial.println(valor);

 

Ahora un pequeño ejercicio: Intentar mostrar en el monitor serial el valor digital que corresponde a una entrada analógica de nuestro Arduino UNO.



Arduino:

int pinAnalog = 2; // Podemos usar una variable que defina el pin de la entrada analógica para no tener que recordarlo
int valor = 0;


void setup() {

    Serial.begin(9600);

}


void loop() {

    valor = analogRead(pinAnalog);

    Serial.print("Valor analógico: ");

    Serial.println(valor);

    delay(100);

}


Si la entrada analógica no tiene conectado nada (al aire), el valor que se obtenga puede ser impredecible, para probar podemos poner directamente 5V y ver que valor nos muestra y conectar GND y ver de nuevo que valor nos arroja.

 

Ahora algo más entretenido, un potenciómetro.



Los potenciómetros son resistencias variables, que al girar una perilla podemos variar desde 0 ohms hasta el valor máximo que se tenga, por ejemplo 10k.

Se tienen 3 terminales, la terminal del centro es la que varía, de modo que al colocar la perilla al extremo izquierdo se tendrán 0 ohms entre la terminal central y la terminal izquierda, mientras que se tendrá la máxima resistencia con la terminal derecha. Al mover la perilla se varía entonces la resistencia entre la terminal central y sus extremos. Si se mide la resistencia entre las terminales de los extremos, siempre se tendrá la resistencia máxima (por ejemplo 10k) y no variará.

Si conectamos GND y 5V en las terminales de los extremos respectivamente, tendremos un voltaje variables en la terminal central, desde 0 a 5V. Esto nos sirve para conectar a una entrada analógica de nuestro Arduino:




Volver a probar el programa anterior y ver los nuevos valores al girar el potenciómetro.

Ejercicios:

5B: Agregar una condición para que se muestre un letrero en el monitor serial que diga cuando el valor está por debajo de la mitad y otro diferente cuando esté por arriba de la mitad. "Menos que 512" o "Más de 512".

5C: Agregar al programa un cálculo para que nos muestre el voltaje correspondiente, por ejemplo para un valor de 1023 nos diga: "5.0 Volts", para un valor de 512 nos diga: "2.5 Volts" y así, para esto, recordar la regla de 3. Para lograr esto, se requiere utilizar una variable de tipo float.

5D: Encender un LED cuando el voltaje de entrada sea mayor a 3 V y apagar cuando sea menor.


Regresar

JFVM - Septiembre 2015