Leer una sonda de nivel 4-20 mA en un PLC ESP32, de la forma correcta
analogRead. Este ejemplo, extraído de un despliegue real en una estación de bombeo de agua, lee una sonda hidrostática en la entrada I0_11 de un ESP32 PLC 38AR a través de una resistencia shunt de 500 Ω (4-20 mA pasan a ser 2-10 V en la entrada de 0-10 V), filtra la lectura bruta, la convierte a centímetros, detecta un lazo roto y gobierna la bomba con una histéresis bien planteada.Por qué 4-20 mA empieza en 4 y no en 0
broken wire, enciende el piloto de alarma y conmuta a una boya de rebose cableada en duro: la medida falla, pero la estación sigue segura.Filtrado y escalado a unidades de ingeniería
Histéresis en lugar de un único umbral
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el ESP32 PLC 38AR. Cópialo libremente:
void setup() {
Serial.begin(115200);
pinMode(I_LEVEL_SENSOR, INPUT);
pinMode(I_OVERLEVEL, INPUT);
pinMode(Q_PUMP, OUTPUT);
pinMode(Q_PILOT, OUTPUT);
digitalWrite(Q_PUMP, LOW);
digitalWrite(Q_PILOT, LOW);
// Preload the filter so it does not start with a zero average
uint16_t first = analogRead(I_LEVEL_SENSOR);
for (uint8_t i = 0; i < N_SAMPLES; i++) samples[i] = first;
}El ejemplo completo es un programa entero, con la cabecera de conexionado, el setup y el bucle principal, listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Cómo conecto un sensor 4-20 mA a dos hilos al PLC?
Conecta el +24 Vdc al + del transmisor y su - a la entrada analógica, y pon una resistencia de 500 Ω entre esa entrada y GND. Las entradas analógicas del ESP32 PLC 38AR miden de 0 a 10 V, así que la resistencia convierte 4-20 mA en 2-10 V. El 0 V de la fuente y el GND del PLC deben ser la misma referencia.
¿Qué significa una lectura por debajo de 4 mA?
Fallo de lazo: cable roto, sonda desconectada o transmisor muerto. Trátalo como avería, nunca como "nivel cero", y conmuta a un respaldo seguro como una boya cableada en duro.
¿Puedo usar esto en un ESP32 PLC 14?
Sí, y sin resistencia. El ESP32 PLC 14 tiene dos entradas analógicas, AI0.0 y AI0.1, con un modo 4-20 mA que se selecciona por software (datasheet del ESP32 PLC 14). Usa una de ellas en ese modo, adapta el pin y la conversión a mA y mantén la misma lógica de filtrado, escalado y detección de cable roto.