La tensión de una salida digital activa es de 3,3V, y 0V para estado apagado. Pero siempre se tendrá uno de los dos estados.

Se está trabajando con salidas a transistor de muy poca potencia. Esto quiere decir que la intensidad de funcionamiento que recomienda el fabricante no superar por cada puerto es de 25 mA. Son por tanto señales de mando o de activación de muy pequeños receptores, como leds de 3 o 5 m, control de drivers de motores, etc. Por tanto, cuidado con alimentar directamente cualquier dispositivo cuyo consumo no se conozca. De igual forma, hay que evitar controlar directamente bobinas de relés o incluso contactores, porque, tanto por el consumo, como por las tensiones inversas o de retorno (si no se instalan diodos antiparalelos), se pueden dañar dichas salidas.

Cableado #

Unos receptores muy utilizado para testear programas son los Leds, de 5 o 3 mm. Estos dispositivos trabajan a una tensión que varía en función de su color, pero que está en torno a los 2V. Por esto y para limitar la intensidad que demanda el Led, hay que colocar una resistencia en serie a estos.

También es importante recordad que un Led es un diodo, y por tanto, tiene polaridad, es decir, solo deja pasar la corriente en un sentido. Es por esto que, si se quiere activar el led al activar la salida y apagarlo al apagarla, se debe conectar la patilla corta del led (o patilla doblada), al negativo de la placa o 0V (GND) y la patilla larga al GPIO que funciona como salida digital.

En la placa Microdesys Esp32 se incluye un Led en la propia placa. Si se usa otro modelo, la conexión se muestra también a continuación:

Para profundizar: En este enlace  puedes encontrar información detallada sobre el cálculo exacto de la resistencia para un led en función de su color. Y aquí hay una calculadora online para su cálculo.

Aquí puedes encontrar en texto toda la información en detalle de tipos de salidas digitales en el microcontrolador Esp32.

Activación #

El bloque principal de lectura de entradas está diseñado con desplegables en los que se disponen los pines que se pueden configurar como salidas digitales en el Esp32, microcontrolador principal del proyecto. El bloque de lectura de salidas DO (Digital Output), así como esta funcionalidad con memorias, se encuentra en el apartado Elementos Ladder / ES y variables.

En automatización encontramos principalmente tres formas de activación de salidas digitales:

Se pueden utilizar los estados de salidas digitales también como condiciones, como cuando se trabaja con el contacto auxiliar de un contactor, por ejemplo. Esta funcionalidad se encuentra en el apartado Elementos Ladder / ES y variables.

En el apartado E/S Esp8266, Arduino, etc. se disponen bloques preparados para escribir el nombre del GPIO deseado, de manera que se pueda trabajar con el microcontrolador Esp8266 de manera totalmente funcional en microLSB, además de facilitar el uso de funciones básicas con otras placas de desarrollo como Arduino UNO.

Igual que ocurre con la supervisión de estos estados, para realizarla en un microcontrolador, podemos imprimir su valor por el puerto serie.

  • Ejercicio 1: Realiza un programa que configure el pin 15 como salida y que haga que se mantenga encendida constantemente.

Sería como conectar un receptor, como una lámpara, directamente a tensión, estará todo el tiempo encendido:

En lenguaje de contactos, el equivalente sería el siguiente:

En la versión de Arduino de C++ podría hacerse lo anterior, de la siguiente manera:

void setup()
{
pinMode(15, OUTPUT);
}
void loop()
{
digitalWrite(15,HIGH);
}

Lectura de estados de salidas #

El estado de activación de una salida digital se puede monitorizar mediante el siguiente boque:

Cuidado de no confundir con el bloque anterior de activación de salidas. Este trae serigrafiado una I de Input, y además, no se puede poner en SET o Reset, trae los contactos para usar su lectura como Normalmente abierta o Normalmente Cerrada.

  • Ejercicio 2: Realiza un programa que configure el pin 15 como salida, que haga que se mantenga encendida constantemente y que se imprima su estado en el puerto serie cada segundo y medio.

No se plantea su solución en lenguaje de contactos, ya que es igual que el ejercicio uno, y no se dispone de una función genérica de impresión por puerto serie habitualmente en PLCs. En la versión de Arduino de C++ se realizaría el programa anterior de la siguiente manera:

  unsigned long Frecuencia_ = 0;
  void setup()
  {
    pinMode(15, OUTPUT);
    Serial.begin(115200);
  }
  void loop()
  {
    digitalWrite(15,HIGH);
    
    if(millis() - Frecuencia_ > 1500){
    Frecuencia_ = millis();
    Serial.println(gpio_get_level(GPIO_NUM_15));}
  }

Activación de varias salidas simultáneas #

En el apartado Elementos Ladder / Estructuras, se ubica el bloque «Q» que permite actuar sobre varias salidas de forma simultánea. El número de salidas se puede variar de la siguiente forma:

  • Ejercicio 3: Realiza un programa mediante el que se activen y se dejen permanentemente activos los GPIOS 5 y 15. Además, se tiene que mostrar en el Puerto Serie el estado de ambas salidas cada medio segundo.
  unsigned long Frecuencia_ = 0;
  void setup()
  {
    pinMode(5, OUTPUT);
    pinMode(15, OUTPUT);
    Serial.begin(115200);
  }

  void loop()
  {
    digitalWrite(5,HIGH);
    digitalWrite(15,HIGH);

    if(millis() - Frecuencia_ > 500){
    Frecuencia_ = millis();
    Serial.println((String(gpio_get_level(GPIO_NUM_5)) + String(gpio_get_level(GPIO_NUM_15))));}
  }