Introducción
¿Tienes un SCT010T-D y quieres leer la corriente de un cable?
En este post aprenderás cómo:
- conectarlo a tu controlador industrial Raspberry PLC,
- leer los valores de una entrada analógica y
- hacer un esquema simple en Node-RED.
Requisitos
Preparación del entorno de trabajo
Lo primero que tienes que hacer es conectar el sensor a tu PLC industrial en la entrada analógica que quieras. Es importante conectar el cable -L a GND y el +K a la propia entrada.
A continuación, conéctate al controlador PLC de la Raspberry. Para poder leer el sensor correctamente, instala la librería Industrial Shields para poder utilizar nuestros nodos personalizados.
cd /.node-rednpm i node-red-contrib-rpiplc-node
Abra Node-RED y vaya a la URL: http://10.10.10.20:1880/
node-red
El proyecto paso a paso
1) El primer nodo va a ser de inyección. A continuación, pon un nodo de lectura analógica y selecciona el modelo de Raspberry que tienes y la entrada que vas a utilizar para conectar el sensor.
2) A continuación, crea un nodo de función con el siguiente código:
var resolution = 5 / (Math.pow(2, 12) - 1); // 0,001221001221msg.payload = msg.payload * resolution * 5 / 5;return msg;
La resolución es el mínimo voltaje que el sensor puede enviar a la Raspberry, siendo 5V el máximo y 12 los bits de rango de la entrada analógica. Así, multiplicando el valor del sensor por la resolución, obtendrás el voltaje que mide el sensor. Luego solo ttienes que multiplicar ese valor por la relación del sensor, 5A / 5V para el SCT010T-D, para obtener los Amperios correctamente con el factor de conversión. Si tienes un sensor diferente, consulta su documentación para conocer la fórmula de conversión.
3) Por último, después de añadir algunos nodos de depuración, tu esquema debería tener este aspecto:
4) Ahora solo tienes que pulsar el botón de inyectar nodo y recibirás la corriente en tu ventana de depuración de Node-RED. Si te fijas, el número que estás leyendo en el primer nodo de depuración es el valor que está leyendo el sensor, y el segundo es el valor convertido a Amperios.
👉🏼 Para que el programa envíe la corriente cada 1 segundo, puedes añadir algunos nodos así.
1) Crea otro nodo de función, conéctalo justo después del nodo de inyección y copia el código siguiente. Actuará como una inyección automática cada 1 segundo:
var DELAY = 1000; // 1 secondvar sendCurrent = setInterval(send, DELAY);global.set("sendCurrent", sendCurrent);function send() {msg.payload = send;node.send(msg);}return;
La función send() será llamada automáticamente cada DELAY ms por setInterval()..
2) Agrega una función adicional que detenga setInterval() indefinidamente. Para hacer esto, arrastra otro nodo de inyección y otro nodo de función en el esquema. El último nodo debería tener este aspecto:
clearInterval(global.get("sendCurrent"));return msg;
3) Si todo se ha hecho correctamente, su flujo debería tener este aspecto:
So that's all!
A very simple way to read current values from SCT010T-D with your Raspberry PLC industrial controller for industrial automation and Node-RED.
Cómo leer los valores de corriente del SCT010T-D con un Raspberry PLC y Node-RED