Hablemos del nuevo pzem-004t-100a-d-p(v1.0) y su uso practico


Amigos lectores , probablemente recordareis el famoso modulo de medida electrica PZEM004. Ciertamente la versión PZEM-004T V3.0 o versión 3.0 era la versión actualizada para reemplazar la antigua PZEM004T V1.0 dado que la versión anterior se ha agotado desde hace bastante tiempo en la mayor parte de las tiendas en línea y ya no se producen ( de hecho se necesitan librerías especiales para poder usarlo). La versión actualizada de PZEM004T sigue siendo interesante para proyectos, donde necesitamos medir el voltaje, la corriente, la potencia, la energía, la frecuencia, el factor de potencia (la frecuencia y el PF se agregan adicionales en la nueva versión) utilizando Arduino / ESP8266 -ESP32/ /Raspberry Pi como plataforma de código abierto.

Ahora bien, si bien PZEM-004T V3.0 o versión 3.0 sigue siendo una versión funcional por el momento, desde hace un año aproximadamente, tenemos disponible una nueva versión: la versión PZEM-004T-100A-D-P (v1.0). Esta nueva versión ser caracteriza por su mayor precisión y respuesta rápida, con una versión mejorada de pulso de PIN que facilita la integración en PCB y la medición de potencia con menor error de calibración.

Utiliza una interfaz de comunicación UART a TTL con una velocidad de baudios de 9600, y emplea el protocolo Modbus-RTU para la capa de aplicación, soportando funciones como lectura de registros, escritura de registros, calibración y limpieza de potencia cero. La comprobación CRC se realiza en un formato de 16 bits con un polinomio específico.

En cuanto a los parámetros del producto, el modelo Pzem-004t-100A-d-p v1.0 (como el antiguo PZEM-004T V3.0) permite medir corrientes de hasta 100A y voltajes entre 80 y 260V, con una potencia activa máxima de 2.3KW y un factor de potencia de hasta 1.00. La frecuencia operativa va de 45Hz a 65Hz, y cuenta con una función de alarma para exceso de potencia. La comunicación se realiza a través de una interfaz TTL, y el dispositivo opera en un rango de temperatura de -20℃ a +60℃.

Este es el aspecto del nuevo modelo donde como vemos se puede observar que el diseño se ha cambiado para poder soldar el modulo en una placa o incluso enchufar en una placa proto board prescindiendo de conectores.

Asimismo tenemos un nuevo pin: el pin CF de salida de pulsos, por lo que también han cambiado el diseño incluyendo un nuevo optoacoplador en la propia placa

El pin CF (Frequency Output) en el PZEM-004T-100A-D-P (v1.0) se utiliza para proporcionar una salida de frecuencia proporcional a la potencia activa medida. Esta señal de frecuencia puede ser utilizada para monitorear y registrar el consumo de energía en tiempo real, y mas adelante en el código arduino veremos cual es su utilidad.

Como en versiones anteriores, la interfaz TTL de este módulo es una interfaz pasiva y necesita una fuente de alimentación externa de 5V, es decir, los cuatro puertos (5V, RX, TX y GND) debe estar conectado durante la comunicación; de lo contrario, la comunicación falla.

Por ultimo la temperatura de funcionamiento del modulo va entre -20 ℃ ~ + 60 ℃.

Conexiones con un ESP32

Las conexiones no han cambiado respecto a la configuraciones antiguas a excepción de que tenemos un hilo mas( el pin CF) .Para conectar el PZEM-004T-100A-D-P (v1.0) al ESP32 WROOM 32 usando los GPIO 16, 17 y 4, sigue estos pasos:

Conexiones de alimentación:

  • Conecta el pin VCC del PZEM-004T al pin de 5V del ESP32.
  • Conecta el pin GND del PZEM-004T al pin GND del ESP32.

Conexiones de comunicación:

  • Conecta el pin RX del PZEM-004T al pin GPIO 16 (TX2) del ESP32.
  • Conecta el pin TX del PZEM-004T al pin GPIO 17 (RX2) del ESP32.
  • Conecta el pin CF del PZEM-004T al pin GPIO 4 del ESP32.

Conexión de la entrada de CA:

  • Conecta los terminales de entrada de CA del PZEM-004T a la fuente de alimentación de CA que deseas medir. Asegúrate de seguir las precauciones de seguridad al trabajar con corriente alterna.
  • Conexión de la bobina del sensor de corriente:Pasa el cable de la carga a través del agujero de la bobina del sensor de corriente (CT) del PZEM-004T. Esto permitirá medir la corriente que pasa a través del cable.

A continuación podemos ver el esquema del montaje final:

Ejemplo de código ARduino probado con la nueva versión del PZEM004

El siguinte nuevo código Arduino con el pzem004 le permite medir el voltaje de CA, la corriente de CA, la potencia, la energía, la frecuencia y el factor de potencia en la interfaz serie con el microcontrolador Arduino. Ademas tambien usaremos leos pulsos CF .

La biblioteca de PZEM-004t V30 funciona tanto en serie de hardware como en serie de software con este nuevo modulo. El resultado de todos los parámetros se imprime en el monitor serie de Arduino IDE. Este código de biblioteca se ha usado con un ESp32 pero debería funcionar también con arduino uno, arduino mega y nano board.

CODIGO ARDUINO:

#include <PZEM004Tv30.h>
#include <HardwareSerial.h>

// Definir los pines de conexión
#define RX_PIN 17
#define TX_PIN 16
#define CF_PIN 5

// Crear una instancia del objeto HardwareSerial
HardwareSerial PZEMSerial(2);

// Crear una instancia del objeto PZEM
PZEM004Tv30 pzem(PZEMSerial, RX_PIN, TX_PIN);

// Variables para contar los pulsos del pin CF
volatile unsigned long pulseCount = 0;
unsigned long lastPulseTime = 0;

void IRAM_ATTR onPulse() {
  pulseCount++;
  lastPulseTime = millis();
}

void setup() {
  Serial.begin(115200);
  Serial.println("Iniciando PZEM004T con ESP32");

  // Iniciar la comunicación serial con el PZEM
  PZEMSerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);

  // Configurar el pin CF como entrada y adjuntar la interrupción
  pinMode(CF_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(CF_PIN), onPulse, RISING);
}

void loop() {
  // Leer las variables eléctricas
  float voltage = pzem.voltage();
  float current = pzem.current();
  float power = pzem.power();
  float energy = pzem.energy();
  float frequency = pzem.frequency();
  float pf = pzem.pf();

  // Mostrar las variables en el monitor serie
  Serial.print("Voltaje: "); Serial.print(voltage); Serial.println(" V");
  Serial.print("Corriente: "); Serial.print(current); Serial.println(" A");
  Serial.print("Potencia: "); Serial.print(power); Serial.println(" W");
  Serial.print("Energía: "); Serial.print(energy); Serial.println(" Wh");
  Serial.print("Frecuencia: "); Serial.print(frequency); Serial.println(" Hz");
  Serial.print("Factor de Potencia: "); Serial.println(pf);

  // Mostrar el conteo de pulsos del pin CF
  Serial.print("Pulsos CF: "); Serial.println(pulseCount);

  // Esperar un segundo antes de la siguiente lectura
  delay(1000);
}

Este código Arduino configura un ESP32 para comunicarse con un módulo PZEM-004T-100A-D-P (v1.0) a través de los pines RX (17) y TX (16), y utiliza el pin CF (5) para contar pulsos de frecuencia. En el setup, se inicializa la comunicación serial y se configura una interrupción en el pin CF.

El pin CF (Frequency Output) del PZEM-004T-100A-D-P (v1.0) se utiliza para proporcionar una señal de frecuencia que es proporcional a la potencia activa medida por el módulo. Esta señal de frecuencia puede ser utilizada para monitorear y registrar el consumo de energía en tiempo real.

En el código Arduino, el pin CF está conectado al GPIO 5 del ESP32 y se configura una interrupción para contar los pulsos generados por el pin CF. Cada pulso representa una cantidad específica de energía consumida, y al contar estos pulsos, se puede calcular el consumo total de energía.

Aquí un resumen de cómo se usa el pin CF en el código:

  1. Configuración del pin CF: En el setup, se configura el pin CF como entrada y se adjunta una interrupción para contar los pulsos.
  2. Interrupción: La función onPulse se llama cada vez que se detecta un pulso en el pin CF, incrementando el contador de pulsos.
  3. Lectura de pulsos: En el loop, se muestra el conteo de pulsos en el monitor serie, lo que permite monitorear el consumo de energía en tiempo real.

Por ultimo en el loop, se leen y muestran en el monitor serie las variables eléctricas (voltaje, corriente, potencia, energía, frecuencia y factor de potencia) y el conteo de pulsos del pin CF, con un retraso de un segundo entre lectura.

A continuación para terminal un ejemplo de salida del monitor serie usando el montaje explicado:

Espero amigo lector que si adquiera un modulo de estos, sepa darle utilidad.

Iluminación ambiental barata para PC con Arduino


El Ambilight propuesto por  VladI4 es completamente casero y utiliza algunos LED RGB económicos con controladores integrados y una placa compatible Arduino. En cuanto al software, tenemos el famoso programa Ambibox ejecutándose en el PC (solo para Windows) y la biblioteca FastLED en Arduino, disponible esta ultima en Github.

El Ambilight es totalmente DIY y tiene la suficiente potencia como para que no se necesite otra luz. La pantalla se monta en la pared y queda al ras de la mesa (por lo que no hay Ambilight en la parte inferior).

Este proyecto de emulación de un Ambilight utiliza lo siguiente:

  • Software Ambibox para PC (gratis, pero sólo para Windows).
  • Arduino con un script simple que utiliza la biblioteca FastLed (más abajo) .
  • 50 LED RGB WS2811 tipo luces «árbol de Navidad».
  • Fuente de alimentación opcional 5v 3Amp (según el numero de leds).

¡Algunas precauciones!

Esta configuración es muy económica, pero solo funciona en un PC . No puedes usarla en tu reproductor de Blu-ray ni en tu televisor independiente ( para ello existen soluciones muy interesantes como vimos en este blog, como por ejemplo en esta entrada:configurar ambilight goove). Solo se necesita un software que se ejecute en segundo plano en tu PC.

No se admiten Linux ni MAC. El software Ambibox solo está disponible en Windows, pero para aplicaciones independientes existe una variante RPI, bastante cara.

Los LED funcionan bastante bien y sin retrasos notables en el escritorio y mientras se ven películas. Los juegos son otra historia. Si el juego se ejecuta en modo de pantalla completa, la mayoría de las veces el software no podrá capturar la imagen. ¡Pero el modo sin bordes funciona! (Ten en cuenta que se necesita una potencia de CPU adicional de aproximadamente el 5 %).

Los LED necesarios para este proyecto

Los LED necesarios para este proyecto

La parte más importante de este proyecto son los LED RGB con controladores individuales.

En realidad, no importa qué controlador LED RGB adquieras, siempre que estos sean compatibles con la biblioteca FastLed. Aquí tienes un enlace a los chips LED compatibles: https://github.com/FastLED/FastLED/wiki/Overview

Los LED más comunes son los WS2811 o WS2812, ya que son baratos y fáciles de usar. También se utilizan en este proyecto. Se venden en al menos dos tipos diferentes:

  • Como bombillas individuales (12 mm) tipo «arbol de Navidad» con un espaciado variable de alrededor de 10 cm como máximo. Generalmente se obtienen pares de 50, pero puede agregar o quitar LED como desee.
  • Como tiras de LED (con adhesivo en la parte posterior). Estas se compran por metro con un espaciado fijo. (30/60/o más LED por metro).También se pueden cortar para obtener las formas y tamaño que deseemos ( lógicamente conectando con cables todas en el sentido de la tira).

Con los LED de una sola bombilla, obtienes la ventaja de una colocación y un espaciado completamente libres, pero, por otro lado, tienes que encontrar una manera de agregarlos a tu monitor.

¿Cuantos leds necesito?

Basaremos esta decisión en el tamaño del monitor que estés usando. Por ejemplo se pueden usar 50 LEDs en un monitor de 27″ con una configuración de 4 lados. También se pueden usar los mismos LED en un monitor de 40″ con una configuración de 3 lados pero el espacio entre los LED sera de alrededor de 3 cm aproximadamente. Por lo tanto, si sabes que necesitas alrededor de 1 LED cada 3 cm, puedes calcular fácilmente cuántos LED necesitas para toda tu configuración.

Las tiras LED tienen una gran ventaja sobre la versión con una sola bombilla, ya que puedes pegarlas fácilmente en la parte posterior de tu monitor y listo. El problema con esto es que no puedes variar el espaciado o la posición de los LED. Además, el brillo de la versión con una sola bombilla en algunos casos parece mayor.

Si eliges la tira no necesitas construir un marco como se ve en la siguiente imagen por lo que con esta opción de usar tiras es mucho mas fácil y limpio el montaje como ya hemos visto en este blog.

El marco (para bombillas LED tipo árbol de navidad)

El marco (para bombillas LED)

Si elegimos la versión de bombillas LED, tenemos que construir algún tipo de marco. Se puede construir con láminas de aluminio o madera ( incluso cartón duro), un taladro y algunas bridas para cables. Cortaremos 3 tiras de la lámina, que sean un poco más pequeñas que las dimensiones del monitor. Luego dividimos toda la longitud por 50 para obtener el espacio correcto y comenzaremos a perforar los agujeros para las bridas para cables. Luego solo tenemos que cerrar bien los LED. Si el monitor está al ras del escritorio, no se necesitan ningún LED en la parte inferior de la pantalla pero si tu pantalla tiene un espacio considerable en la parte inferior, consideraría cubrir todo el contorno.

Otra forma más sencilla de añadir estos LED al monitor es simplemente utilizando clips adhesivos del tamaño adecuado, pero en ese caso tenemos el problema de las esquinas que si cortamos deberemos seguir las continuidad lineal de la tira completa .

El Arduino (nano)

Para controlar los LED, se necesita un controlador central. Para ello, se puede utilizar un clon barato de Arduino de China. No se necesita muchas funciones, así que supongo que cualquier Arduino servirá (or ejemplo es típico usar un Arduino UNO) . En el ejemplo se utiliza un Arduino nano, ya que son muy baratos y muy pequeños. En este caso, solo se necesita el conector USB, un solo pin digital y el pin de tierra.

¡El poder!

Para que los LED funcionen, necesitan algún tipo de alimentación. La mayoría de los chips LED utilizan 5 Voltios DC.

Es muy importante que conozcas las especificaciones de potencia exactas que necesitan tus LEDs. Los LED WS28XX utilizados en este ejemplo necesitan 0,3 W/unidad. Por lo tanto se necesita una fuente de 5 V y por cada led una corriente de 60 mA. Si tienes 50 LED, ¡eso suma 3 amperios!

Hay dos formas de obtener esta energía:

1. Puedes comprar un bloque de alimentación externa que tenga la potencia necesaria. Simplemente debes soldarlo a los LED y enchufarlo a la pared.

2. (NO lo recomiendo) Puedes obtener la alimentación de tu fuente de alimentación en tu ordenador. La mayoría de las fuentes de alimentación tienen una potencia nominal de alrededor de 20 A en la línea de 5 V, que rara vez se usa. Por lo tanto, puedes cortar fácilmente uno de estos adaptadores en Y y soldarlos a tus LED. El efecto positivo es que los LED se apagan automáticamente con la alimentación de la computadora y no necesitas comprar otro bloque.

Las conexiones

Las conexiones

Si está utilizando los LED WS2811/12, solo hay 3 conexiones que debe realizar.

  1. Debes conectar la alimentación de 5 V con la línea de 5 V correspondiente en los LED.
  2. Tienes que conectar la tierra de la fuente de alimentación con la tierra del Arduino y la tierra de los LED.
  3.  Tienes que conectar la línea de datos de los LED con un puerto digital del Arduino. No importa cuál sea, pero tienes que recordar el número. (¡No usé la resistencia que aparece en la imagen!)

El software Arduino

El software Arduino

Después de conectar todo, debes configurar el IDE de Arduino e instalar el controlador correspondiente.

Si no tienes experiencia con el uso de Arduino, debes comenzar aquí: https://www.arduino.cc/en/Guide/HomePage

Después de configurar todo, debes agregar la biblioteca http://fastled.io/ . Este es el script que se puede ejecutar en Arduino:

http://pastebin.com/53xsb97c

Algunas cosas que debería personalizar en dicho script:

  • NUM_LEDS, configure esto en su cantidad de LED
  • DATA_PIN, configúrelo con el PIN de Arduino que se utilize
  • SerialRate, define la velocidad de los LED (el máximo es 500000)

En «FastLED.addLeds» debes cambiar el controlador al que estás usando. ¡Estos controladores necesitan que se defina otro CLOCK_PIN! Consulta la documentación de fastLED para tu chipset.

El software Ambibox en Windows

¡El software Ambibox en Windows!

Obtenga la versión más reciente de Ambibox desde la página de inicio del desarrollador: http://www .ambibox .ru/en/index/php/Main_Page

Durante la instalación, se es posible que pida que elija otros componentes para instalar. No elegir ninguno. Si necesita alguno, puede instalarlo fácilmente más tarde.

Después de instalar Ambibox, debe ingresar al directorio de instalación y cambiar una línea en el siguiente archivo: C:\Program Files (x86)\AmbiBox\SerialPortConfig.ini Debe cambiar la velocidad en Baud del Adalight a 50000, el mismo número que se utilize en el script de Arduino. Guarde el archivo y reinicie Ambibox.

[Adalight] Tasa de Baud = 500000

Panel de configuración principal

Panel de configuración principal

¡Primero, debes presionar el botón «Más configuraciones» en la parte inferior derecha!

Los ajustes más importantes se encuentran en la parte inferior. El dispositivo para esta configuración debe ser «Adalight«. Puedes intentar encontrar el puerto COM correcto revisándolos y mirando el estado del dispositivo o simplemente abrir el administrador de dispositivos y buscarlo. El orden estándar de colores es RGB. Si tienes problemas con colores cambiados, puedes cambiarlo aquí. En el último campo, puedes seleccionar la cantidad de LED. Esta debe coincidir con la cantidad de LED que indicaste en el script. Otros ajustes:-

  • F7 es una tecla de acceso rápido para encender y apagar los LED
  • No es necesario usar perfiles diferentes, por eso es solo el predeterminado.
  • Con «Modo» puedes elegir lo que deberían hacer tus LED. Te recomiendo comenzar con un color estático para verificar que todos funcionen correctamente y muestren los colores correctos. Después de eso, puedes configurarlo para que haga capturas de pantalla y elegir «Windows 8» como método de captura. Esto funciona bastante bien en Windows 7 a 10.
  • Establezca el retraso al mínimo y los FPS al máximo para minimizar el retraso.

Áreas de captura

Áreas de captura

Si hace clic en el botón «Mostrar áreas de captura», aparecerán muchos cuadros con números en ellos. Probablemente estarán por toda la pantalla. Para que estas áreas de captura queden en la posición correcta, debes usar el botón «Zonas de captura del asistente«. En este menú, puedes configurar muchos parámetros diferentes. ¡Prueba un poco para que queden bien! La mayoría de las veces, necesitas más de un intento. Pero después de eso, deberías obtener algo que se parezca al de la iamgen (o completamente si estás usando los 4 lados). Después de eso, guardar la configuración y ocultar las áreas de captura.

Corrección de color

Corrección de color

Estas puedes son un ejemplo de configuraciones para corrección de color, brillo, etc. ¡Solo tienes que copiarlos o probar los tuyos propios! En youtube hay por cierto bastantes videos para ajustar nuestra configuración ( por ejemplo probar buscando «test ambilight» o frases similares).

¡Visualiza cualquier video o una película y prueba a jugar moviendo los controles deslizantes!

¡Eso es todo!

¡Felicitaciones, ahora puedes ver películas y jugar juegos con clase!

Créditos: https://www.instructables.com/Cheap-Ambilight-Tutorial-for-PC-Using-Arduino/