Cómo medir el nivel de un depósito con la entrada analógica de un PLC industrial

Aprende a programar tu controlador industrial para detectar y controlar los niveles de los depósitos
26 de junio de 2023 por
Cómo medir el nivel de un depósito con la entrada analógica de un PLC industrial
Boot & Work Corp. S.L., Ricard Franch Argullol

Introducción


En esta entrada del blog, te contamos cómo utilizar la entrada analógica de un PLC para determinar el nivel de un depósito.

Utilizando este método, podrás reducir el número de entradas digitales necesarias, optimizando así el uso de los recursos del PLC.

Odoo • Text and Image


Circuito de conexión


Para conectar las 4 boyas a una entrada analógica y poder determinar el nivel del depósito, es necesario crear un circuito sencillo. Conectando una resistencia adecuada entre cada boya y la entrada analógica (AI), se puede crear un circuito tal que la tensión en la entrada sea diferente en función del nivel del depósito y de las boyas activas. En este esquema, las boyas (B1, B2, B3 y B4) se caracterizan como un interruptor entre Vcc y GND.


Circuito de connexión


Analicemos este circuito considerando que B1 es la boya más baja del depósito, y B4 la más alta. Esto significa que hay 5 combinaciones posibles, porque si una boya está activa, todas las boyas inferiores a ella deben estar activas también. Esta tabla muestra las 5 combinaciones posibles y la tensión de entrada resultante en función de Vcc y de las resistencias::

Boyas activas (VCC)
Boyas inactivas (GND)
Tensión de la entrada
Ninguna
B1, B2, B3, B4

GND

B1
B2, B3, B4

v1

B1, B2
B3, B4

v2

B1, B2, B3
B4

v3

B1, B2, B3, B4
GND
Vcc

Suponer que sólo existen estas 5 salidas simplifica el análisis del circuito. En realidad, sin embargo, hay 16 posibles salidas para este circuito, dependiendo de todas las combinaciones de boyas. Las ecuaciones para calcular la salida en tensión son como las de la tabla anterior, pero cambiando los valores de las resistencias según corresponda. La elección de los valores adecuados de las resistencias nos permitirá identificar todas las combinaciones.

Además, aunque la entrada analógica puede admitir hasta 24V, el ADC sólo puede leer entre 0-10V, lo que significa que los voltajes superiores a 10V se leerán sólo como 10V. Las resistencias deben elegirse de forma que los distintos valores de tensión estén dentro de este rango, con la excepción de Vcc, que puede interpretarse como 10V.

Por ejemplo, tomando estos valores de Vcc y resistencia, fácilmente obtenibles de resistencias estándar:

  • Vcc = 12v

  • R1 = 4.7kΩ

  • R2 = 3.7kΩ

  • R3 = 3.3kΩ

  • R4 = 2.2kΩ

Las tensiones obtenidas a la salida para todas las combinaciones posibles son:

B4
B3
B2
B1
Tensión (V)
0
0
0
0
0
0
0
0
1
2.06
0
0
1
0
2.61
0
0
1
1
4.67
0
1
0
0
2.93
0
1
0
1
4.99
0
1
1
0
5.55
0
1
1
1
7.6
1
0
0
0
4.4
1
0
0
1
6.45
1
0
1
0
7.01
1
0
1
1
9.07
1
1
0
0
7.33
1
1
0
1
9.39
1
1
1
0
9.94
1
1
1
1
12

De esta forma puedes determinar qué boyas están activas y, por tanto, el nivel del depósito. Aunque 12V es superior al rango del ADC, puedes leerlo como 10V, ya que el valor inmediatamente superior es inferior.



Ejemplo de programación


Veamos cómo programar el PLC para que reconozca el nivel del depósito utilizando el valor de la entrada analógica. Este ejemplo de programa funciona para un PLC M-DUINO, pero puede adaptarse fácilmente a otras plataformas.

Primero hay que definir los niveles de tensión proporcionados por las boyas, que dependen de la configuración del circuito que vimos antes. En este ejemplo se utiliza una macro para convertir los niveles de tensión previstos en la entrada analógica a un número de 10 bits, que es la resolución del ADC en el caso del M-DUINO. Hacerlo de esta forma con macros significa que los cálculos necesarios se computan en tiempo de compilación, lo que ahorra recursos.

Una vez leída la entrada, sólo hay que realizar algunas comparaciones para determinar el nivel del depósito. En este caso el resultado se imprime a través del Serial.

#define CONVERSION(v) (1024*v/10)

#define V1 0
#define V2 2.06
#define V3 2.61
#define V4 4.67
#define V5 2.93
#define V6 4.99
#define V7 5.55
#define V8 7.6
#define V9 4.4
#define V10 6.45
#define V11 7.01
#define V12 9.07
#define V13 7.33
#define V14 9.39
#define V15 9.94
#define V16 12

void setup() {
Serial.begin(115200);
}

void loop() {

uint16_t read = analogRead(I0_12);

Serial.println(read, DEC);

if (read >= CONVERSION(10)) { // B1, B2, B3, B4
Serial.println("Level 4");
}
else if (read >= CONVERSION(V15)) { // B2, B3, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V14)) { // B3, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V12)) { // B1, B2, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V8)) { // B1, B2, B3
Serial.println("Level 3");
}
else if (read >= CONVERSION(V13)) { // B3, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V11)) { // B2, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V10)) { // B1, B4
Serial.println("Error");
}
else if (read >= CONVERSION(V7)) { // B2, B3
Serial.println("Error");
}
else if (read >= CONVERSION(V6)) { // B1, B3
Serial.println("Error");
}
else if (read >= CONVERSION(V4)) { // B1, B2
Serial.println("Level 2");
}
else if (read >= CONVERSION(V9)) { // B4
Serial.println("Error");
}
else if (read >= CONVERSION(V5)) { // B3
Serial.println("Error");
}
else if (read >= CONVERSION(V3)) { // B2
Serial.println("Error");
}
else if (read >= CONVERSION(V2)) { // B1
Serial.println("Level 1");
}
else {
Serial.println("Empty");
}

}

Conclusión



En resumen, medir el nivel de un tanque con la entrada analógica de un PLC tiene muchas ventajas. 

Puedes utilizar un circuito sencillo con las resistencias adecuadas para hacer que la tensión de entrada cambie en función del nivel del tanque y de las boyas que estén encendidas. De esta forma, ahorrarás entradas digitales y aprovecharás mejor los recursos del PLC. 

Esta técnica te ayudará a vigilar y controlar los niveles de los tanques de forma sencilla y precisa.

Industrial Shields M-Duino

Buscar en nuestro blog

Cómo medir el nivel de un depósito con la entrada analógica de un PLC industrial
Boot & Work Corp. S.L., Ricard Franch Argullol 26 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 >>>