Revista 100% Verde

Medidor de Consumo Eléctrico CHINT + ESP8266 y Matrix Led MAX7912

Por Soloelectronicos @soloelectronico

En esta post volveremos a un tema recurrente en este blog: la medición del consumo eléctrico de forma invasiva en un ambiente doméstico ,pero esta vez usaremos el medidor CHINT DDS666, lo que técnicamente es un medidor residencial o residencial tradicional pero con una salida óptica (también llamada salida de pulsos)-

Precisamente por esa característica de salida óptica, dado que en el mercado existe una amplia variedad de dispositivos con este tipo de salida , esta propuesta que vamos a ver es perfectamente viable también para t odo tipo de contadores con salida de pulso, como la mayoría de los contadores modernos para uso personal que se comercializan para fijar en carril DIN en el cuadro de distribución de c.a. cuya velocidad de flash de salida de prueba es de 500 impulsos por kWh ( es decir cada impulso corresponde a un 2W/H)

Lógicamente dado que la relación de pulsos/kwh es diferente según el contador , tendremos que ajustar el código de nuestro programa para que el resultado sea exacto , pero insistimos: como esta relación es conocida no es demasiado complejo ajustar el código para el contador que elijamos

Medidor de Consumo Eléctrico CHINT + ESP8266 y Matrix Led MAX7912

Advertencia: Se recomienda precaución ya que este tipos de proyectos implican riesgo eléctrico o electrocución ya que se utiliza un equipo conectado de 220VCA -120 VCA por los que se requieren conocimientos básicos de electricidad , por favor esté documentado previamente en este sentido.

Conviene recordar que por seguridad cuando trabaje en cuadros de baja tensión siempre trabaje cortando la alimentación general y asegúrese después con un polímetro o un busca-polos que efectivamente no hay tensión c.a.

Obviamente si no se tiene experiencia en cableados de baja tensión o no esta seguro de la instalación , le recomendamos encarecidamente que este tipo de trabajos lo realice un instalador o un electricista pues manejar por error tensiones de ca puede ser peligroso .

Medidor de Consumo Eléctrico CHINT + ESP8266 y Matrix Led MAX7912

El circuito

El viejo modelo CHINT DSS66 permite la medición de energía activa o potencia activa en instalaciones domésticas. Es un registrador ciclométrico, registrando medidas siempre positivas que evitan pérdidas fraudulentas de conexiones. Como se trata de un medidor invasivo que se requiere para abrir nuestro circuito eléctrico, se capturan los pulsos generados, Genera 3200 imp / kWh, que nos permitirá medir la potencia y el consumo de energía. El medidor tiene un optoacoplador para aislar la salida de pulso para realizar la medición.

Algunos medidores tienen una salida de pulso asociada con el consumo eléctrico, en el caso de este medidor específico, cada vez que se enciende el diodo led frontal, envía un pulso que activa un optoacoplador para la salida de pulsos terminales (11 +) (12 -) y e l medidor integrado realiza la medición e integración de kilovatios / hora y enviando pulsos según el consumo siendo la relación de este medidor de 3200 imp "impulsos" / kwh,.

Este medidor tiene 2 características:

  • Es invasivo, es decir el circuito debe abrirse para colocar en serie el medidor entre la fuente y la carga
  • No tiene un protocolo de comunicación en serie, siendo la relación de salida de pulsos de 3200imp / kwh.

Gracias a la ayuda de un microcontrolador "Arduino, ESP8266 o ESP32" podemos medir los watios consumidos. La elección precisamente de un ESP8266 12E o Arduino Nano Clone , de hecho dependerá de si necesitamos enviar los datos o no a un servidor en la nube o simplemente queremos mostrar la información en un display

Como contábamos al principio de este post el modelo DSS66 es algo anticuado por lo que es perfectamente viable usar de contadores con salida de pulso de carril DIN , como la mayoría que se comercializan para fijar en el cuadro de distribución de c.a. cuya velocidad de flash de salida de prueba es de 500 impulsos por kWh ( es decir cada impulso corresponde a un 2W/H)

Medidor de Consumo Eléctrico CHINT + ESP8266 y Matrix Led MAX7912

Durante las primeras pruebas se conectaron el GPIO directamente al medidor,dado que el medidor de mentón tiene su propio optoacoplador, pero por alguna razón cada vez que se genera un pulso, el módulo ESP8266 grababa 2 pulsos, algo que no sucedió con Arduino .

La solución para el problema es aislar la salida del watímetro mediante la adición de un optoacoplador 4n25 y una fuente de alimentación de 5v :de esta manera sólo llegaría un pulso y ademas por seguridad se aislan los circuitos .

Para las primeras pruebas se propone usar un ESP8266 y/o arduino y solo haremos la medición de Active Power, por ejemplo utilizando una bombilla de 45W, para tener una carga fija que represente un "hogar".

Lista de componentes

Código IDE de Arduino

El código para el módulo ESP8266 por ahora no tiene ninguna rutina de comunicación de envio hacia el Cloud, así que por el momento visualizaremos la potencia con un Matrix led x4 MAX7912 pero se puede usar un display de 7 segmentos o simplemente la salida serie

El medidor solo tiene una salida de pulso,por lo que para realizar el cálculo del consumo eléctrico, capturamos a través de una interrupción en el GPIO 5 (D1), técnicamente utilizando el factor apropiado del medidor 3200imp / kWh = 3.2, se calcula la potencia activa instantánea.

Una diferencia horaria entre pulsos y basada en 1 hora = 3600 s. potencia = (3600000000.0 / (pulseTime - lastTime)) / 3.2

Este cálculo se realiza en la interrupción, solo cada vez que se registra un nuevo pulso.

Inicialmente, gracias a OpenEnegyMonitor, por la documentación, el cálculo se tomó de una de las versiones anteriores de su página

Este es el codigo usado para probar la funcionlidad

unsigned long lastMoved = 0;
unsigned long MOVE_INTERVAL = 20; // mS
int messageOffset;
int counters=0;


// 12 chips (módulos de pantalla), SPI de hardware con carga en D10


MAX7219_Dot_Matrix display (chips, 2); // Chips / LOAD

char message [64] = " mensaje a mostrar inicial ....";
char myCharMessage[64];
String Message;

// Número de pulsos, utilizados para medir la energía.
long pulseCount = 0;


// Se usa para medir la potencia.
unsigned long pulseTime,lastTime,diffTime;
long timeout_reset=0;


//power and energy
double power elapsedkWh,watts;

// Número de pulsos por wh - encontrado o configurado en el medidor. //1000 pulsos/kwh = 1 pulso por wh 3200 imp = 3.2

float ppwh = 3.2 ;

int First_pulse = 0;
///***********************************************************************************


const byte interruptPin = 5; /// pin 5 D1


#include <Ticker.h>
Ticker flipper;

//bucle para almacenar en un array el mensaje de bienvenida
for (int i=0;i<64;i++)
{
message[i] = myCharMessage[i];
}
updateDisplay ();

}

Y este es el cuerpo del programa_

void setup ()
{
pinMode(interruptPin, INPUT_PULLUP); //define el pin como entrada binaria
attachInterrupt(digitalPinToInterrupt(interruptPin), onPulse, FALLING);
Serial.begin(115200);
display.begin ();
} // end of setup

void updateDisplay ()
{
display.sendSmooth (message, messageOffset);
// la próxima vez muestra un píxel en adelante

if (messageOffset++ >= (int) (strlen (message) * 8))
messageOffset = - chips * 8;
} // end of updateDisplay

// DEBUG SERIAL
Serial.print("watts = ");
Serial.println(watts,4);

////las cadenas se deben cargar a la variable (Message) para que se visualicen en la matriz

//Message ="Power "+String(watts)+" W :)";
Message =String(watts)+"W";

//sacamos por consola la potencia
Serial.println(Message);

int L_Message = Message.length(); ///length String
String(Message).toCharArray(myCharMessage, L_Message+1);

/// String to char array y scroll
flipper.attach(0.1, flip);


} //fin del bucle

En el siguiente video podemos ver el circuito en acción:

Mas informacion en https://www.instructables.com/id/Electric-Consumption-Meter-CHINT-ESP8266-Matrix-Le/


Volver a la Portada de Logo Paperblog