馃挕 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 鈥楬IGH鈥 Y 鈥楲OW鈥 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 鈥楬IGH鈥 si el valor de tensi贸n medido es superior a la tensi贸n umbral y devolver谩 un estado 鈥楲OW鈥 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.9 Volts(valor aproximado), 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.

Ver m谩s sobre: Lectura de se帽ales superiores a 5V