Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Controle su factura de energía a través de Modbus, MKR WiFi 1010 y RS485

Componentes y suministros

Arduino MKR WiFi 1010
× 1
Arduino MKR 485 Shield
× 1
Cable USB-A a Micro-USB
× 1
Fuente de alimentación USB
Compatible con cualquier fuente de alimentación. El escudo MKR485 tiene un convertidor reductor de 7-24 V incorporado.
× 1
Cable blindado de un solo par trenzado
× 1

Herramientas y máquinas necesarias

Multímetro digital Digilent Mastech MS8217 Autorange
Tijeras de electricista
Destornillador de cabeza plana pequeño
para terminales MKR485
Destornillador Philips de tamaño mediano

Aplicaciones y servicios en línea

Home Assistant
Arduino Web Editor
MQTT

Acerca de este proyecto

Si realmente desea que su hogar sea más inteligente, probablemente querrá comenzar con sus facturas mensuales (es decir, energía, gas, etc.). Como dicen algunos, Good for Planet, The Wallet y The Bottom Line . El hardware de código abierto es nuestra forma de alcanzar la sostenibilidad en el entorno doméstico. Esta idea nos llevó a construir una solución simple y segura, fácil de integrar con cualquier software de domótica ya que expone datos sobre MQTT (en nuestro caso le mostraremos cómo integrarlo en Home Assistant).

Descripción general

Para medir el consumo de energía eléctrica, optamos por utilizar el Finder Energy Meter, ya que está diseñado para uso en carril DIN y encaja perfectamente en el armario principal de nuestra casa. Lo bueno de este producto es que tiene un RS485 Modbus interfaz, un protocolo de comunicación estándar industrial que hace que hablar con un Arduino sea realmente fácil. De hecho, Arduino ha lanzado un escudo oficial, el MKR485 y dos bibliotecas para decodificar el protocolo. Como placa principal, elegimos Arduino MKR WiFi 1010, ya que comparte el factor de forma MKR y tiene conectividad WiFi.

Configuración

¡Advertencia! Consulte las regulaciones de su país sobre el manejo del sistema eléctrico de su casa y tenga mucho cuidado porque puede ser mortal. Si no lo sabe cómo , llame a un electricista. El primer paso es instalar el medidor en su armario eléctrico. Para asegurarse de que está trabajando en un entorno seguro, apague la alimentación del terminal eléctrico delante de su sistema y verifica con el multímetro que no haya voltaje entre los terminales .

Luego coloque el medidor de energía dentro de su gabinete y conecte los cables vivos y neutros desde el disyuntor principal a la entrada del medidor, recuerde usar la convención de color (azul para neutro y marrón / negro / gris para vivo en la UE). La salida debe estar conectada al resto del sistema.

¿Hecho? ¡Es hora de atornillar la conexión RS485! Usaremos cable de un solo par trenzado con conexión a tierra, generalmente utilizado para líneas telefónicas. Con este cable puede transmitir a larga distancia (1,2 km). Sin embargo, solo usamos un cable lo suficientemente largo para salir del gabinete y colocar el arduino en un lugar accesible.

La interfaz RS485 nombra sus terminales A, B y COM.

Dado que el escudo MKR también admite Full Duplex, verá otros dos terminales, Y y Z. Aquí vamos a atornillar el otro extremo del cable, ya que sabemos por la hoja de datos que la comunicación semidúplex ocurre solo en Y y Z terminales. El terminal COM debe estar conectado a ISOGND. Dado que usamos una conexión semidúplex y dado que el cableado es de igual a igual, tenemos que configurar los interruptores en el blindaje MKR485 para que coincidan con nuestra configuración: configuramos HALF (2 en OFF) y terminación en YZ (3 en ON); el primero no importa. La terminación es una resistencia que conecta los dos terminales de datos, para amortiguar las interferencias.

Eso es todo. ¡Ahora puede cerrar el gabinete y concentrarse en el lado del software!

Software

Inicie su computadora y abra su IDE. Puede utilizar Arduino IDE o Arduino Create Editor. El código cumple con las siguientes solicitudes:

  • comunicación Modbus,
  • Gestión de WiFi
  • Protocolo MQTT

Modbus es un protocolo de código abierto para sensores y máquinas industriales. Para hacer que Arduino hable Modbus, usaremos la biblioteca Arduino Modbus. Esta biblioteca incluye todos los controladores y hace que la conexión de cualquier dispositivo Modbus sea realmente rápida. Como vamos a leer registros, siguiendo la hoja de datos del medidor, podemos encontrar toda la información que necesitamos como códigos de función, dirección del registro y tamaño del registro en palabras. Pero para que quede más claro, expliquemos cómo funciona Modbus:

Los mensajes Modbus siguen una estructura simple:

01 03 04 00 16 00 02 25 C7

0x01 es la dirección del dispositivo

0x03 es el Código de función que le dice al dispositivo si queremos leer o escribir datos * en este caso leer registros de retención

0x04 para Byte Count00 16 - Enviamos 4 bytes de dirección de registro (00 16) que le dice al dispositivo lo que queremos leer

00 02 - t uando el tamaño del registro (00 02) en palabras (cada palabra tiene 2 bytes de longitud)

Los últimos 4 bytes son código CRC . Este código se genera a partir de una función matemática sobre bytes anteriores, esto asegura que el mensaje se haya recibido correctamente.

En Arduino, todo esto se maneja en el if condición:

  // Creado por Alberto Perro - Officine Innesto //// Leer entero de un dispositivo modbus que contiene registersfloat readCurrent () {float ampere =0 .; // el siguiente comando formatea la solicitud y la envía por RS485 if (! ModbusRTUClient.requestFrom (0x01, HOLDING_REGISTERS, 0x0016, 2)) {// Error Handling Serial.print ("¡no se pudo leer el voltaje!"); Serial.println (ModbusRTUClient.lastError ()); } else {uint16_t palabra1 =ModbusRTUClient.read (); // leyendo MSW del búfer uint16_t word2 =ModbusRTUClient.read (); // leyendo LSW del búfer int32_t miliamperios =palabra1 <<16 | palabra2; // une palabras para recuperar int ampere =miliamperios / 1000.0; // convertir a amperios} devolver amperios;}  

En else parte tenemos el manejador de respuesta.

Dado que este registro tiene dos palabras, tenemos que unirlos con matemáticas binarias. Leemos las palabras del búfer y las almacenamos en un entero sin signo de 16 bits de largo (2 bytes o una palabra), luego las unimos en un entero con signo de 32 bits de largo, desplazando la primera palabra a la izquierda y aplicamos un código <> O sobre la segunda palabra. De esta manera recuperamos la medida de corriente en mA, dividiéndola por 1000 tenemos corriente en amperios.

Este mismo proceso se adapta a todo lo que queramos leer.

El resto del código está dedicado al manejo de redes MQTT y WiFi.

Integración con Home Assistant

Agregar el medidor a Home Assistant es bastante sencillo. Suponiendo que tiene un agente MQTT configurado (aquí está la guía), todo lo que necesita hacer es agregar nuevas definiciones en el archivo configuration.yaml.

  sensor:- platform:mqtt name:"Main Voltage" state_topic:"energy / main / voltage" unit_of_measurement:"V"  

Aquí tienes que poner el nombre de la medida, el tema MQTT a leer y la unidad de medida de la cantidad. Guarde el archivo, verifique la configuración y vuelva a cargar Home Assistant, ahora las medidas aparecerán en la página principal.

Home Assistant se encargará de crear gráficos y automatizar los procesos desencadenados por sus lecturas. Este tutorial ha finalizado, ahora depende de usted agregar funciones y personalizarlo para sus propios fines.

Código

Puente de Modbus RTU a MQTT para Finder
Este esquema proporciona un puente completo entre el medidor de energía del buscador y mqtt. Desarrollado para monitorear los costos y el uso de la electricidad en Casa Jasmina.

Proceso de manufactura

  1. Cree su robot de transmisión de video controlado por Internet con Arduino y Raspberry Pi
  2. Hacer Monitor Ambilight usando Arduino
  3. Cómo construir un monitor de energía Arduino y un registrador de datos
  4. Animación LCD y juegos
  5. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  6. Monitor de frecuencia cardíaca con IoT
  7. Arduino Temp. Monitor y reloj en tiempo real con pantalla 3.2
  8. WebServerBlink usando Arduino Uno WiFi
  9. Arduino - Enviar temperatura a la web a través de serie
  10. Python3 y comunicación Arduino
  11. Formas de energía:energía cinética y potencial