Análisis de la respuesta temporal del pinout del PLC ESP32

Descripción de las especificaciones de los pines del PLC ESP32 para un desarrollo eficaz de las aplicaciones
20 de junio de 2023 por
Análisis de la respuesta temporal del pinout del PLC ESP32
Boot & Work Corp. S.L., Joan Vilardaga Castro

Introducción

El PLC ESP32 es un controlador industrial potente y versátil que ofrece una amplia gama de funcionalidades. En este artículo, aprenderás más sobre sus características de pin-out, midiendo cosas como la frecuencia máxima de conmutación y los tiempos de subida o bajada.

Comprender estos aspectos es crucial para interactuar con periféricos externos y desarrollar aplicaciones que requieran una temporización precisa.

ESP32 PLC de Industrial Shields

Requisitos

Los sketches utilizados en este blog han sido probados con el PLC ESP32 21+, pero pueden funcionar con otro PLC industrial siempre que sus entradas/salidas utilizadas coincidan con sus funciones.

Si deseaa medir las características del PLC basado en hardware open source, también necesitarás un osciloscopio preciso capaz de leer en la escala de 100ns.

Salidas digitales

El PLC ESP32 utiliza un multiplexor de pines conocido como PCA9685A, que es un circuito integrado que utiliza la comunicación I2C. Este componente permite muchas más salidas que un ESP32 solo, pero añade cierta latencia que puede ralentizar la velocidad a la que se pueden conmutar las salidas.

TaskHandle_t Task1;

void setup() {
pinMode(Q0_0, OUTPUT);
xTaskCreate(Task1code,"Task1",10000,NULL,25,&Task1);
}
void loop() {}

void Task1code( void * parameter ) {
for(;;) {
digitalWrite(Q0_0, HIGH);
delay(10);
digitalWrite(Q0_0, LOW);
delay(10);
}
}

Usando este código sin retardo puedes obtener hasta 406,5 Hz de frecuencia de conmutación en cualquier salida digital con un ciclo de trabajo del 82,11%. Si quieres un ciclo de trabajo del 50% o menos, tendrás que subir a 10ms de retardo para una frecuencia de 50 Hz 59,4%.


El tiempo de subida de estos pines es de 0,5µs, mientras que el de bajada es de 92,4µs.

Frecuencia de salidayPeriodPulse Width
Delay
406.5Hz
2.46ms
2.02ms0ms
100Hz10ms
5.98ms
5ms
50Hz
20ms11.88ms10ms

Entradas digitales

Para las entradas digitales, el PLC ESP32 utiliza un multiplexor de pines conocido como MCP23008, que es un circuito integrado que utiliza la comunicación I2C. Aunque este componente tiene 8 puertos generales de E/S, se utiliza para proporcionar el PLC de entradas digitales.

TaskHandle_t Task1;
unsigned long t1, t2, t_max, t_average;

#define PIN I0_5
#define READ_TYPE digitalRead
#define N_AVERAGE 10000

void setup() {
Serial.begin(115200);
pinMode(PIN, INPUT);
xTaskCreate(Task1code, "Task1", 10000, NULL, 25, &Task1);
}
void loop() {}

void Task1code( void * parameter ) {
t_max = 0;
t_average = 0;
for (long i = 0; i < N_AVERAGE; i++) {
t1 = micros();
READ_TYPE(PIN);
t2 = micros();
t_average += (t2 - t1);
if (t_max < t2 - t1) t_max = t2 - t1;
}
Serial.print("Max time: ");
Serial.println(t_max);
Serial.print("Average time: ");
Serial.println(t_average / (float)N_AVERAGE);

vTaskDelete(NULL);
}

El tiempo de respuesta de las entradas digitales optoaisladas promedia 458 µs, con un máximo de hasta 888 µs.​

Los pines de interrupción, gracias a no estar optoaislados y estar directamente conectados al ESP32, son mucho más rápidos. El tiempo promedio de lectura de una interrupción es de solo 1 µs, con un tiempo máximo de 48 µs.

En cuanto a las entradas digitales no optoaisladas, el retardo entre lecturas es de 1500µs de media, con un máximo de 2365µs.

Salidas analógicas

Las salidas analógicas reales están disponibles gracias a la conversión del PWM del PCA9685A (salidas digitales) con un convertidor PWM a CC y algunos circuitos adicionales para la adaptación de voltaje.

TaskHandle_t Task1;

void setup() {
pinMode(A0_5, OUTPUT);
xTaskCreate(Task1code,"Task1",10000,NULL,25,&Task1);
}
void loop() {}

void Task1code( void * parameter ) {
for(;;) {
analogWrite(A0_5, 4095);
delay(150);
analogWrite(A0_5, 0);
delay(150);
}
}

Como la frecuencia PWM máxima del PCA9685A es de unos 1,5 kHz, la frecuencia de conmutación de estas salidas es baja, de unos 2,26 Hz. El tiempo de subida de estos pines es de 157,6 ms, mientras que el tiempo de bajada es de 221,6 ms.

Entradas analógicas

En el PLC ESP32, las entradas analógicas se realizan con ADS1015IDGST, un chip ADC de 12 bits que se comunica a través de I2C. Tiene una frecuencia de muestreo de 3,3kHz.

TaskHandle_t Task1;
unsigned long t1, t2, t_max, t_average;

#define PIN I0_7
#define READ_TYPE analogRead
#define N_AVERAGE 10000

void setup() {
Serial.begin(115200);
pinMode(PIN, INPUT);
xTaskCreate(Task1code, "Task1", 10000, NULL, 25, &Task1);
}
void loop() {}

void Task1code( void * parameter ) {
t_max = 0;
t_average = 0;
for (long i = 0; i < N_AVERAGE; i++) {
t1 = micros();
READ_TYPE(PIN);
t2 = micros();
t_average += (t2 - t1);
if (t_max < t2 - t1) t_max = t2 - t1;
}
Serial.print("Max time: ");
Serial.println(t_max);
Serial.print("Average time: ");
Serial.println(t_average / (float)N_AVERAGE);

vTaskDelete(NULL);
}

Debido a la sobrecarga de la comunicación I2C, la frecuencia de muestreo máxima desciende a unos 400-666Hz (un tiempo de ejecución de 1500µs y un máximo de 2393µs).

Pins directos

TX1

Este pin digital se puede utilizar sólo como salida, siempre que no se esté utilizando Serial1 o RS-232. Este pin tiene una frecuencia de conmutación de 1.026MHz, con tiempos de subida y bajada de 100ns cada uno..

RX1

Este pin digital puede utilizarse sólo como entrada, siempre que no se esté utilizando Serial1 o RS-232. Este pin tiene un tiempo máximo de lectura de 48µs con 0,8µs de media.

Pins SPI (SO, SI, SCK)

Estos pines digitales pueden utilizarse como entrada o salida, siempre que no se utilicen SPI o Ethernet. Tienen tiempos de subida de 100 ns y de bajada de 100ns. Estos pines tienen un tiempo máximo de lectura de 48µs con una media de 0,8µs.

GPIO 0

Este pin funciona a 5V y puede utilizarse como entrada o salida digital. Tiene un tiempo de subida y bajada de 5µs cada uno. Este pin tiene un tiempo máximo de lectura de 888µs con una media de 485,3µs.

SCL/SDA

Estos pines digitales tienen una resistencia externa de pull-up de 2,2kOhm y funcionan a 5V. El tiempo de subida de estos pines es de 2µs, mientras que su tiempo de bajada es de 200ns.

Aunque ambos pueden actuar como entrada o salida, esto no es recomendable ya que todos los periféricos I2C que controlan entradas y salidas dejarían de funcionar correctamente.

Resumen

Entradas

Tipo de entradaFrecuencia de muestreo - MediaFrecuencia de muestreo - Tiempo máximo de lectura
Interrupción digital (IX.5-6)1.25MHz (0.8µs)20.833kHz (48µs)
Digital Optoaislada (IX.0-4)2183.4Hz (458µs)1126.1Hz (888µs)
Digital No Optoaislada (IX.7-12)666.67Hz (1500µs)422.3Hz (2365µs)
Analógica (IX.7-12)666.67Hz (1500µs)418.06Hz (2393µs)
RX1
1.25MHz (0.8µs)20.833kHz (48µs)
SPI
1.25MHz (0.8µs)20.833kHz (48µs)
GPIO 0
2060.6Hz (485.3µs)1126.1Hz (888µs)
Salidas
Tipo de salida
Frecuencia máxima estable
Frecuencia de señal - MáximaTiempo de subida
Tiempo de bajada
Digital (QX.0-7)50Hz (59.4%)
406.5Hz (82.11%)
0.5µs92.4µs
Analógica (AX.5-7)2.26Hz (50%)
2.64Hz (37.31%)
157.6ms
221.6ms
TX1
1.026MHz (50%)
1.026MHz (50%)
100ns
100ns
SPI
1.026MHz (50%)
1.026MHz (50%)100ns
100ns
GPIO 0
200kHz (50%)
200kHz (50%)
5µs5µs

Conclusión

En resumen, el PLC ESP32 tiene muchas características y opciones de temporización precisas, que lo convierten en una opción sólida y flexible para diferentes usos. Es importante conocer las características de los pines, como la velocidad máxima de conmutación, los tiempos de subida y bajada, y los tiempos de lectura, para trabajar bien con dispositivos externos.

Cada una de las salidas digitales, entradas digitales, salidas analógicas y entradas analógicas del PLC tiene características de rendimiento específicas que deben tenerse en cuenta a la hora de crear y desarrollar aplicaciones.

Con la configuración adecuada y una cuidadosa atención a estos detalles, el PLC ESP32 puede proporcionar resultados consistentes y precisos para tus necesidades de automatización y control industrial.

ESP32 PLC

Buscar en nuestro blog

Análisis de la respuesta temporal del pinout del PLC ESP32
Boot & Work Corp. S.L., Joan Vilardaga Castro 20 de junio de 2023
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>