Medidor de consumo electrico Peacefair PZEM 004 + ESP8266 & Arduino Nano

Desde hace un tiempo queria comprar un medidor de consumo eléctrico monofasico,  hace unos meses llego  medidor Referencia PZEM-004  de Peacefair,  su precio me pareció asequible, tiene las ventajas de ser un medidor no invasivo en el circuito eléctrico y tiene un protocolo de comunicación para solicitarle datos tales como Potencia Activa instatanea “kW”, Voltaje “V”, Amperaje “A” y Potencia Activa Acumulada “kWh”.

Advertencia: Se recomienda precaución dado que este proyecto implica riesgo eléctrico o electrocucion dado que se utilizan equipos conectados 110 VAC -120 VAC,  se requieren conocimientos ya sean básicos por favor documentarse previamente al respecto.

Existen 2 versiones

Este medidor es muy popular en proyectos de medición de consumo electrico y existen 2 versiones dependiendo de la aplicacion requerida.

PZEM-004T

PZEM-004

Comparando ambas versiones, técnicamente identicas, la diferencia radica en la visualizacion que uno tiene y el otro no.





 

Conexiones Medidor

Tutorial

Realizaremos algunas pruebas al Medidor PZEM-004  y lo integraremos con 2 plataformas o placas ya utilizadas anteriormente el modulo ESP8266 12E y un Arduino Nano.

Resumen de Caracteristicas

Este medidor PZEM-004 permite visualizar las 4 variables con 4 display 7 segmentos de 4 cifras cada uno,  cuenta con un transformador de corriente de núcleo completo, el cual cumple la función de sensar la corriente, se dice que es un medidor no invasivo por que no requiere modificar o intervenir el circuito de medición. Lo puntos de medición de voltaje son los mismo por los cuales se alimenta el medidor, cuenta con una interface UART TTL a 5V y un protocolo para solicitar los datos mencionados anteriormente.

Vista frontal

Pulsador frontal. permite reiniciar los kWh acumulados.

Vista Trasera

Posee espacio para un buzzer, en algunos lo tiene en mi caso no, afortunadamente por que suena constantemente al comunicarse, su funcion es alarma por limite maximo de potencia activa.

El integrado principal es el SD3004 que esta debajo de la etiqueta verde  realiza la técnicamente todo, Mediciones, conversiones,  cálculos, control de los 7segmentos y comunicación serial.

Datasheet : SDIC  SD3004

En la izquierda arriba  hay otro integrado es una memoria externa EEPROM I²C que almacena lo kWh, en caso de apagar el medidor no reiniciar el acumulado.

Arriba del puerto de comunicacion “TTL PORT” tiene 2 optoacopladores para el aislamiento de la comunicación serial.

En la parte inferior hay un transformador algunos diodos, condensadores y un regulador es sinomino de una fuente, para el SD3004, IMPORTANTE  esta fuente no esta aislada, no conectar otros dispositivos de esta, posiblemente generen un corto circuito.





 

Libreria PZEM004T para Arduino IDE

Dada la popularidad de estos medidores, existen algunas librerías para Arduino IDE para facilitar comunicación y específicamente la solicitud de datos, considero la mas popular la versión creada por  olehs,  gracias por su contribucion.

Github : libreria PZEM004T.h

Modificación UART TTL de 5v a 3.3v

La interface UART del medidor es a 5v. En el caso de conectar el medidor a una placa Arduino no hay problema funcionara correctamente, en caso de conectar con un modulo ESP8266 a 3.3v no funcionara, dado que los optoacopladores no se activaran con 3.3v, en ese caso se deber realizar una acondicionamiento de señal el método mas sencillo que he visto en la internet, modificar el voltaje de uno de los optoacopladores con una resistencia de 1kOhm, es la manera mas sencilla y económica si no tienen al alcance un convertidor TTL de 5 a 3.3v.

Nota: Algunos foros indican que se debe tener precaución al conectar el TTL a un PC, confieso tenia miedo de conectar este medidor a mi pc, pensando en el aislamiento del medidor pero en mi caso  no hubo inconvenientes.

  • Medidor sin modificacion, de fabrica

  • Medidor con modificado con resistencia 1k.





 

Transformador de Corriente

El medidor PZEM 004, trae un transformador de corriente, al parecer de núcleo completo, este transformador mide corriente sin interrumpir el circuito, resultando muy practico, aunque comercialmente los trasformadores de corriente “TC” o “CT” tiene una relación que indica su rango de medida, este transformador no especifica sus características, en algunos foros especulan y ha realizado algunas pruebas.

Este transformador al ser de núcleo completo en algunos caso podría dificultar el montaje en los puntos de medición, en el mercado existen gran variedad de transformadores de núcleo partido, comprare algunos y probare las variaciones, pero atención no es cualquier transformador funcione dado que las cualquier variación generara errores en la medición final.

Prueba con Arduino Nano

De todas las placa arduino, la versión Nano es mi preferida dado que es practico, pequeño y tiene FTDI/usb incluido. Con la modificación que realizamos a la UART ttl, podemos usar el arduino a 3.3v, realizando una conexión directa.

En este caso utilizamos una placa Arduino Nano la cual solo cuenta con un solo puerto serial, la libreria PZEM004T.h tiene la disponibilidad de crear otro puerto serial con la libreria SoftwareSerial.h, utilizaremos los pines D10 (RX)Y D11 (TX) como puerto de comunicación con el medidor.

La librería SoftwareSerial utilizada es la versión para ESP8266, no la versión SoftwareSerial original para arduino, dado que la versión original para arduino utiliza librerías AVR no disponibles para esp8266, descargas completas en parte inferior.

Nota: Utilizar SoftwareSerial a 9600, a velocidades superiores no se garantiza una transmisión optima.

  • Codigo Arduino IDE

Nota: Descarga Completa Abajo.

  • Terminal Serial

  • Conexiones

 





 

Prueba con ESP8266 12E

Para esta prueba utilizaremos un ESP8266 12e NodeMCU,

Dado que solo es una revision realizaremos una prueba basica,teniendo en cuenta que la libreria PZEM004T.h con la libreria SoftwareSerial.h  que permite configurar pines en puertos seriales a 9600 bauds.

Se han realizado 3 pruebas de conexión y comunicación con el medidor Peacefair, tristemente las 2 primeras pruebas no funcionaron correctamente, la comunicación era intermitente, la ultima conexión funciono correctamente, a continuación las 3 conexiones disponibles.

Conexiones prueba 1:

En este caso SoftwareSerial.h utiliza los pines  GPIO 13(Rx) y GPIO 15(Tx):





 

Conclusión: Al realizar la prueba, comunicaba  de manera intermitente, aunque en algunos momentos solo solicitaba el Voltaje, se descarto esta conexión, seguiré probando.

Nota: El GPIO15 debe estar en bajo al reiniciar el ESP8266,  El transistor Q1 evita que este en alto y ESP no arranque en modo Firmware.

 

Conexiones prueba 2:

En este caso SoftwareSerial.h utiliza los pines  GPIO 4(Rx) y GPIO 5(Tx):

Conclusión: la respuesta fue similar a la prueba anterior, comunicaba de manera intermitente retornando en algunos casos Voltaje y vatios/hora, se descarto esta conexión, seguiré probando.

 

Conexiones prueba 3: Version Utilizada

En este caso SoftwareSerial.h utiliza los pines  GPIO 3(Rx) y GPIO 1(Tx) Serial, o Puerto de programación y depuración:

Conclusión: como prueba final se realiza la conexión directa con el puerto de programación serial del modulo ESP8266, en este caso si realizo la comunicación correctamente con el medidor, retornando los 4 valores de mediciones, para la prueba se ha elegido esta conexión.

Importante: La única desventaja practica es que dado que el puerto Serial se utiliza para la comunicación con el medidor Peacefair, no se debe utilizar y/o habilitar el puerto  Serial.begin(9600); dado que interferiría con la comunicación, se deben buscar otros métodos de depuración sin utilizar el serial, para ese caso he creado una rutina con servidor web.

Arduino IDE en mi caso descargo sin problemas,  el código sin requerir desconectar la comunicación con el medidor peacefair, dado que el medidor solo transmite al solicitarle, también dado al los optoacopladores.

Nota: Descarga codigo Arduino IDE Completo abajo.

 





 

Materiales y Donde Comprarlos

Otros Equipos Recomendados

 

 

Test Power Meter PZEM 004 Peacefair + Arduino & ESP8266

  • Prueba completa

Comparison Measurements: Peacefair PZEM 004 Meter VS Chint Meter DDS666 + ESP8266





 

Tutoriales Recomendados

Medidor PZEM-004 + ESP8266 & Plataforma IoT Cayenne Mydevices

Medidor PZEM-004 + ESP8266 & Plataforma IoT Blynk App

Medidor PZEM-004 + ESP8266 & Plataforma IoT Node-RED & Modbus TCP/IP

 

Conclusiones

Inicialmente se debe tomar mucha precaución dado que este proyecto implica riesgo eléctrico o electrocucion dado que se utilizan 110VAC -120 VAC, Aunque no algunos no lo consideren alto voltaje, esto no minimiza el peligro, se recomienda tener conocimientos básicos  o documentarse, nunca realizar conexiones en caliente, siempre des-energizar los circuitos de potencia.

El medidor PZEM 004, es muy practico, muy básico y por su bajo precio cumple con buenas prestaciones, no lo recomiendo para aplicaciones industriales teniendo en cuenta el medio ambiente, su punto de medición de VAC es el mismo punto de alimentación , permitiendo mediciones entre 80-260VAC.

La  medicion de Corriente de 0 a 100A, bueno no estoy muy seguro que este transformador soporte 100A, pero seguire investigando.

Advertencia: No tomar ni 5v ni 3.3v directamente de la fuente del medidor, en caso de alimentar sus módulos adicionar una fuente extra, para evitar cortocircuitos.

  • No realizar modificaciones a circuito de medición del medidor si no se cuenta con suficiente conocimiento.

Arduino

En el caso de las pruebas con Arduino existió ningún inconveniente, inicialmente estaba muy dudoso de conectar el medidor a Arduino y específicamente a mi PC, teniendo en cuenta el aislamiento de tierras, pero  en mi caso no existió ningún inconveniente después de estudiar en detalle el medidor, pero tener precaucion.

ESP8266

En el caso del modulo ESP8266, existieron 2 inconvenientes:

1. Nivel de voltaje de comunicación serial 5v a 3.3v, se requería modificar el medidor de consumo o comprar un convertidor TTL, se realizo prueba adicionando una resistencia de 1kOhm.

2. Conexión y comunicación, se realizaron 3 conexiones disponibles en la red, a simple vista deberían funcionar pero, funcionaban de manera intermitente, solicitando solo “Voltaje”, validare si la resistencia es la causante de la intermitencia aunque con el puerto serial0 del funciona sin ninguna complicación.

En el caso del ESP8266, dado que el puerto de programación esta ocupado, se intentara  implementar aplicaciones OTA.

En proximos tutoriales integraremos este medidor a plataformas IoT probadas anteriormente tales como Emoncms, Node-RED, Cayenne mydevices, blynk, AdafruitIO, Ubidots, ThingSpeak entre otras.

Si tienen sugerencias comentarios o han realizado pruebas con este tipo de medidores por favor comentar su experiencia

Descargas

Referencias y Agradecimientos

 





 

Leave a Reply