ARDUINO: ENTRADAS DIGITALES

El uso de las entradas y salidas tanto digitales como analógicas de la tarjeta Arduino resultan muy generales en aplicaciones como la lectura de sensores, accionamiento o control de motores, pulsadores, diodos LED y una gran variedad de dispositivos electrónicos que logran interactuar con el mundo físico mediante la programación de las tarjetas Arduino o microcontroladores.  

En este tutorial comenzarás por aprender a programar entradas digitales en la tarjeta Arduino ya que es una parte fundamental para la creación e implementación de proyectos, también te percatarás de que resulta muy sencillo debido a que el lenguaje de programación es muy amigable.

Aparte de programar entradas digitales en la tarjeta Arduino, podrás conocer lo que es una entrada digital, un ejemplo del código como resultado de la programación y el montaje en la tarjeta Arduino. Así que, si eres principiante y desconoces cómo realizar las conexiones, en este tutorial lo aprenderás. 

¿QUÉ ES UNA ENTRADA DIGITAL?

La tarjeta Arduino o microcontroladores disponen de una serie de terminales también conocidas como pines que permiten la aplicación de señales de voltaje, lo cual es interpretado por los microcontroladores como señales ya sean digitales o analógicas.

Una señal digital solo puede tener 2 estados sin importar el voltaje que se le aplique, es por ello que al tener una variación de voltaje entre -Vcc y +Vcc no se tomarán en cuenta los valores intermedios en este rango, la señal digital solo interpretará un ‘HIGH’ Y ‘LOW’ asociados con encendido y apagado, que también se interpreta como ‘1’ y ‘0’ lógico respectivamente.

En la realidad, Las entradas digitales realizan una comparación entre la medición de tensión y un valor de tensión umbral. Dada una medición superior a la tensión umbral se devuelve un estado HIGH y si la medición es inferior se devuelve un estado LOW. Los valores de tensión umbral suelen estar en el valor medio de -Vcc y +Vcc, este valor cambia para cada tipo de microcontrolador y pueden no permanecer constantes a lo largo del tiempo.

Para evitar mediciones incorrectas, no se recomienda medir tensiones cercanas a la tensión umbral.

CONEXIÓN DE ENTRADAS DIGITALES EN ARDUINO

En la tarjeta Arduino las entradas y salidas digitales comparten la misma terminal o pin, por ello se les denominan I/O digitales. Esto quiere decir que, la misma terminal o pin puede realizar la función de entrada o salida, pero no de forma simultánea, se debe de configurar en la programación como entrada o salida.

Dependiendo de la versión o modelo de la tarjeta Arduino con la que se cuente, las entradas o salidas digitales pueden variar. Una tarjeta Arduino UNO cuenta con 16 entradas o salidas a diferencia de la tarjeta Arduino MEGA que cuenta con 54 entradas o salidas.

En la tarjeta Arduino la tensión de alimentación habitual está entre 0 Volts y 5 Volts. Dados estos valores de alimentación, la tensión umbral estará muy cercana a 2.5 Volts. Es por ello que si se toma una medición de tensión en un rango entre 0 a 2.5 Volts, la tarjeta Arduino devolverá una lectura LOW, y si la medición de tensión se toma en el rango de 2.5 Volts a 5 Volts, se devolverá una lectura HIGH.

NOTA: Debes de tener mucho cuidado de no alimentar las I/O digitales o analógicas fuera del rango entre 0 Volts a 5 Volts ya que se puede dañar la terminal o pin que se esté utilizando.

Ahora realizaremos un ejemplo para utilizar la tarjeta Arduino empleando un sensor o cualquier dispositivo electrónico que dispone de una salida de tensión ininterrumpida entre 0 Volts y 5 Volts. Para este ejemplo no consideraremos que la entrada digital quede completamente desconectada, solo se enviará una señal de encendido sin que el sensor permanezca encendido a lo largo del tiempo.

En el esquema de conexión que se presenta a continuación se tomará la medición de voltaje en el sensor.

La lectura devolverá un estado ‘HIGH’ si el valor de tensión medido es superior a la tensión umbral y devolverá un estado ‘LOW’ si el valor de tensión es inferior a la tensión umbral.

CÓDIGO EN ARDUINO

Programar en la tarjeta Arduino resulta muy sencillo ya que el lenguaje de programación es muy amigable, el código se muestra a continuación con una breve descripción.

Primero definimos el pin de la tarjeta Arduino que vamos a utilizar, ahora debemos de configurar una I/O digital como entrada con el comando pinMode(), después realizar la lectura con el comando digitalRead() y consecuentemente imprimimos un  mensaje que indica si el sensor está encendido o apagado.


int pin = 2;
int value = 0;
 
void setup() {
  Serial.begin(9600);   //iniciar puerto serie
  pinMode(pin, INPUT);  //definir pin como entrada
}
 
void loop(){
  value = digitalRead(pin);  //lectura digital de pin
 
  //mandar mensaje a puerto serie en función del valor leido
  if (value == HIGH) {
      Serial.println("Encendido");
  }
  else {
      Serial.println("Apagado");
  }
  delay(1000);
}

Las terminales o pines que se configuran como entradas digitales presentan un estado de alta impedancia, lo cual significa que se comportan como resistencias de elevado valor (aproximadamente 100 megaohms) con una corriente despreciable que circula por estos pines.

NOTA: Aunque las terminales o pines de la tarjeta Arduino (ATmega) por defecto están iniciadas como entradas, aunque no sea forzosamente necesario se sugiere configurarlas como entradas.

¿Cómo realizar una medición cuando el nivel de tensión es mayor a 5 Volts?

Debido a que no se recomienda alimentar las I/O digitales o analógicas fuera del rango entre 0 Volts a 5 Volts por razón de llegar a dañar la terminal o pin, se puede emplear un divisor de voltaje para medir voltajes superiores al voltaje de alimentación.

En el esquema que se presenta a continuación se tomará la lectura de la señal digital comprendida entre 0 Volts y 5 Volts por medio de un divisor de voltaje.

NOTA: Si quieres realizar la lectura de voltaje para una señal mayor a 35 Volts o de dispositivos de corriente alterna, el método del divisor de voltaje no es recomendado a menos que se tenga la certeza y conocimiento de lo que se está haciendo ya que las resistencias pueden no ser las adecuadas.

Dada esta configuración, la terminal o pin digital de la tarjeta Arduino recibirá una tensión que variará entre 0 a 3.84 Volts, lo cual resulta suficiente para poder disparar el voltaje umbral y está dentro del límite de alimentación.

En el divisor de voltaje, los valores de las resistencias dependen del voltaje que se va a leer, así como de la impedancia del sensor. A continuación, se presentan varias condiciones a cumplir para la selección del valor de las resistencias:

  • Deben proporcionar un voltaje superior a la tensión de umbral.
  • Deben ser muy superiores a la impedancia equivalente del dispositivo a medir.
  • Deben ser despreciables respecto a la impedancia de la entrada Arduino.
  • Deben limitar la corriente que circula por ellas para minimizar pérdidas.
  • Deben de ser capaces de disipar la potencia que van a soportar.

Erick MéndezArduino, Digital