Entradas digitales en Arduino


¿Qué seria Arduino sin poder interaccionar con el mundo físico? Una de las características más importantes que tiene nuestro Arduino son sus entradas y salidas, digitales o analógicas. Gracias a estas entradas, se pueden realizar mediciones de tensión, leer estados de sensores, controlar dispositivos, etc. En este artículo, veremos cómo usar las entradas digitales.

El uso de las entradas digitales es algo muy sencillo, pero… ¿Sabemos que es una entrada digital? Resolveremos esta duda o afianzaremos conceptos con un poco de teoría.

¿Qué es una entrada digital?

En este punto, sería interesante recordar un antiguo artículo en el que se habla sobre las señales digitales y analógicas: Señales analógicas y digitales

Resumiendo, una señal digital es una variación de voltaje entre un valor negativo -Vcc y un valor positivo +Vcc sin pasar por valores intermedios, es decir una señal discreta. Por lo tanto, esta señal solo dispone de dos estados. Al valor más bajo de tensión -Vcc se le asocia un valor lógico LOW o ‘0’, mientras que al valor más alto +Vcc le asociamos un valor lógico HIGH o ‘1’. Normalmente, para el valor lógico LOW se usa como referencia el valor 0 de voltaje, y para el valor lógico HIGH 5 voltios.

Realmente, en una entrada digital se realiza una comparación del valor de tensión de entrada con un valor de tensión umbral. De esta forma, si el valor de tensión en la entrada es mayor al valor umbral se considera como valor HIGH, por el contrario, si el valor en la entrada es menor a un valor de tensión umbral se considera LOW.

Podemos pensar que el valor umbral es el punto medio entre -Vcc y +Vcc, aunque no es del todo cierto podemos aproximarlo, pero no debemos trabajar con valores cercanos a este umbral porque podemos provocar funcionamientos incorrectos.

Conectar entradas digitales en Arduino

Nuestro Arduino tiene las entradas y salidas digitales en el mismo pin, por eso se llaman I/O digitales. Podemos usar estos pines tanto como entradas como salidas digitales, obviamente no a la vez. Para determinar cómo se va a usar, se debe indicar en el código.

El valore de alimentación normal en Arduino  es de 5v. En este caso la tensión umbral será aproximadamente 2,5v. Si a la entrada digital tenemos una tensión superior a 2,5v Arduino lo interpretará como un valor lógico HIGH, y por el contrario si a la entrada digital tenemos una tensión inferior a 2,5v Arduino lo interpretará como un valor lógico LOW.

entrada digital arduino 01
Esquema de conexión de un sensor con salida máxima 5v.

Usemos los conceptos anteriormente explicados para un caso práctico, en el cual, queremos leer el estado de un sensor digital que tiene dos estados de salida, siendo su valor LOW = 0v y su valor HIGH = 5v. ¿Cuál será el código de Arduino para leer el estado de este sensor?

int pin = 2; // Número del pin digital
int value = 0;

void setup() {
Serial.begin(9600);
pinMode(pin, INPUT); // Definimos el pin como entrada
}

void loop(){
value = digitalRead(pin); // Leemos el pin digital

if (value == HIGH) { // Si el valor es alto:
Serial.println("ON");
} else { // Si el valor es bajo:
Serial.println("OFF");
}

delay(1000); // Esperamos
}

Este código es muy siemple, lee el valor de la entrada digital 2 y muestra su estado booleano (LOW o HIGH) por el puerto serie.

pinMode(pin, INPUT);

Esta función es la encargada de hacer que nuestro pin de arduino se comporte como entrada. Si queremos que se comporte como salida simplemente usamos:

pinMode(pin, OUTPUT);

Donde pin es una variable que contiene el número del pin digital.

Los pines de Arduino que se configuran como entrada tienen una alta impedancia (del orden de 100 mega ohmios), por tanto, por ellos circula una corriente despreciable.

El divisor de tensión

No debemos introducir en las entradas de Arduino voltajes fuera del rango de 0v a 5v, podemos dañar las entradas de Arduino permanentemente. Si queremos medir un nivel de tensión superior a 5v, la forma más adecuada es usar un divisor de tensión.

Por ejemplo, para leer una señal de un sensor que trabaja para un valor LOW = 0v y para un valor HIGH = 12v, podemos usar el siguiente divisor de tensión:

entrada digital arduino 02

Esquema de conexión de un sensor con salida máxima 12v.

Con el valor estándar de estas resistencias y esta configuración Arduino recibirá 0v y 3,9v de tensión, lo necesario para un correcto funcionamiento.


Deja un comentario