¿Cómo usar el sensor de radar FMR10 con un PLC ESP32 14?

Una guía completa para medir niveles de líquido con ESP32 PLC
30 de agosto de 2024 por
Boot & Work Corp. S.L, Arnau Tena

El sensor de radar Micropilot FMR10 de Endress+Hauser es un dispositivo pequeño que proporciona medición continua de distancia. Ideal para monitorear niveles de líquidos en tanques. En este blog, te explicaremos cómo integrarlo con un PLC ESP32 14, una herramienta potente para la automatización industrial.


Primeros pasos con ESP32 PLC y el software necesario

Para seguir este blog, necesitas tener instalado el Arduino IDE con las librerías de Industrial Shields y Node-RED para la visualización de datos. Si aún no has configurado el Arduino IDE, te recomendamos seguir los pasos a partir de la página 17 del manual del ESP32 PLC 14

Descargar el manual de ESP32 PLC 14

Si aún no tienes Node-RED instalado, sigue la primera lección de este curso gratuito:

Desarrolla tu aplicación SCADA basada en Node-RED

¿Cómo conectar el sensor de radar FMR10 a un PLC ESP32?

El sensor de radar FMR10 puede emitir los resultados de las mediciones de dos maneras: a través de Bluetooth o mediante una entrada analógica de 4-20mA. Para conectar el FMR10 a un PLC ESP32, puedes usar Bluetooth o leer directamente los mA del circuito de salida. Si decides conectarlo por la primera opción, necesitarás la aplicación SmartBlue de Endress+Hauser para Android, que te permite configurar varios aspectos del sensor de radar, como la sensibilidad y la calibración. Puedes encontrar más información aquí:

SmartBlue app

Si prefieres operar el radar leyendo la señal analógica, hemos utilizado un ESP32 PLC 14, con sus entradas analógicas, configuradas a 4-20mA. Esta configuración te permite leer las mediciones del radar directamente en el controlador industrial. Así es como se ve el circuito:


Así es como se ve el circuito

Puedes usar cualquiera de nuestros otros PLCs con entradas analógicas. En este caso, necesitarás convertir la salida del radar a 0-10V.

Crear un flujo en Node-RED para mostrar las mediciones del sensor de radar

Antes de programar el PLC, crearemos un "Node-RED flow" para mostrar las mediciones. Este flujo tendrá un nodo "mqtt in", tres nodos "function", dos nodos "text" y dos nodos "chart". Luego, añade el tema "fmr10" al nodo "mqtt in". Configura el eje X de uno de los nodos "chart", para mostrar los últimos 5 minutos, y configura el otro "chart" como un gráfico de barras. Para dos de los nodos "function", añade este código

msg.payload = parseFloat(msg.payload).toFixed(2) + "m";
return msg;

Y para el nodo "function" restante, este código:

msg.payload = 8-msg.payload;
return msg;

El flujo debería verse así:

El flujo para mostrar las mediciones del sensor de radar en Node-RED

También tendrás que crear un grupo de dashboard para los nodos "text" y "chart".

Configuración del servidor MQTT y codificación para ESP32 PLC con FMR10

Hemos creado un código sencillo que convierte y envía la señal recibida al puerto serie y al servidor MQTT. Lee desde I0_7 porque es donde hemos conectado el circuito al PLC. Los resultados se convierten a metros y se envían tanto al monitor serial como al flujo de Node-RED a través de MQTT.

Puedes descargar el código desde aquí:

O copiarlo desde aquí: 

#include <SPI.h>
#include <String.h>
#include <Ethernet.h>
#include <PubSubClient.h>

// Update these with values suitable for your network.
byte mac[]    = {  0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
IPAddress ip(10, 10, 10, 70);
IPAddress server(10, 10, 10, 60);

EthernetClient ethClient;
PubSubClient client(ethClient);


void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("arduinoClient")) {
      Serial.println("connected");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(I0_7, INPUT);
  client.setServer(server, 1883);
  Ethernet.begin(mac, ip);
  // Allow the hardware to sort itself out
  delay(1500);
}

float distance;

void loop() {
  // put your main code here, to run repeatedly:
  distance = (-0.002347)*analogRead(I0_7)+9.88478;
  if(distance < 0)
    distance=0;
  if(distance >8)
    distance=8;
  Serial.print(distance);
  Serial.println("m");
  if (!client.connected()) {
    reconnect();
  }
  client.publish("fmr10", String(distance).c_str());
  client.loop();
  delay(100);
}

Si tu PLC tiene una entrada analógica de 0-10V, usarás esta fórmula para la distancia:

  distance = ((float)analogRead(I0_7) / 2047.0) * 8.0;

Resultados:Monitorización de las mediciones del radar FMR10 con paneles de Node-RED

Después de configurar el flujo en Node-RED y cargar el programa en el PLC, deberías poder ver la distancia medida en el panel de control de Node-RED:

Como deberías ver la distancia medida resultante en Node-RED

Y en el "Serial Monitor":

Cómo aparecen los datos en Serial Monitor


 Maximizando la eficiencia con el radar FMR10 y ESP32 PLC

Using the FMR10 radar sensor with an ESP32 PLC 14 allows for precise liquid level measurements in tanks, making it an excellent choice for various industrial automation applications. With the help of tools like Arduino IDE, Node-RED, and the SmartBlue app, configuring and managing the sensor becomes straightforward. This setup provides flexibility in how data is captured and displayed, ensuring that users can tailor the system to meet their specific needs.


By leveraging these components, industries can achieve efficient, accurate, and reliable data collection and monitoring, enhancing overall operational efficiency and safety.


Buscar en nuestro blog

Boot & Work Corp. S.L, Arnau Tena 30 de agosto de 2024
Compartir esta publicación
Etiquetas

¿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.

Comparativa de PLCs