01-03-2018, 05:44 AM (Última modificación: 01-03-2018, 05:56 AM por s118.)
Escribo este post por si a alguien le interesa fabricarse un monitor de consumo eléctrico. Se coloca de forma no invasiva en el interior del cuadro eléctrico, con objeto de conocer la potencia consumida en casa en cada momento a través de thingspeak (tiene que existir una red wifi para que el monitor de consumo suba los datos a la web). En mi caso, la idea era estudiar la potencia que se consumía en casa, y estudiar si era posible bajar la potencia contratada. En mi caso, sin aplicar patrones de ahorro, ni cambiar los hábitos de consumo, pude comprobar que tenía suficiente con contratar una potencia de 2.300W, pues la demanda total apenas subía de estos valores.
Bueno, paso a describir un poco el sistema. El cerebro del sistema es un ESP8266 nodemcu. La parte medidora será una pinza no intrusiva capaz de medir la corriente que atraviesa un cable (digo no intrusiva porque no es necesario cortar ni pinchar ningún cable). La pinza que yo he utilizado es una SCT013 30A. Esta pinza tiene una capacidad de medición de hasta 30 amperios. Cuando por el cable pasan 30 amperios la tensión en los extremos de los cables de la pinza es de 1 voltio (la tensión es proporcional a la corriente que circula por el cable). El problema es que la tensión es alterna; cambia constantemente de signo. El arduino solo es capaz de medir valores que van de 0V a 3/5V), con lo que habrá que rectificar la señal, o introducir un elemento que sea capaz de medir valores positivos y negativos. Yo opté por la segunda opción, adquiriendo un ADC, el cual es capaz de medir tensiones positivas y negativas. Yo usé el ADS1115.
Para meter todo esto, con la impresora 3D imprimí una cajita que protege los componentes.
Ya tenemos todo el hardware. El montaje es muy sencillo. Se conectan los dos cables de la pinza en los pines A0 y A1 de ADC (medimos la tensión diferencial entre estos dos pines), y el resto de pines del ADC al nodemcu (5V-VDD, GND-GND, SCL-SCL,SDA-SDA, GND-ADDR). Ya solo queda el código. Éste también es muy sencillo. Utiliza la librería Adafruit ADS1X15. Los datos se suben a THINGSPEAK, por lo que hay que registrarse en esta web y meter los datos del servidor y la apikey (son personales y se obtienen de la cuenta de thingspeak). Indicar que la librería de Adafruit permite ajustar la ganancia del ADS1115, de manera que mientras más ajustado esté, más precisión tendremos. Yo he optado por ajustar a +/-2,048V (usaremos un factor multiplicador de 0.0000625F), pues los valores pico de la pinza son +/-1,41V. El resto son fórmulas matemáticas y físicas, para obtener el valor de la intensidad y de la potencia.
Adjunto capturas de los datos de consumo:
También adjunto fotos del monitor de consumo:
Adjunto también los archivos .stl de la envolvente:
Pienso que lo suyo sería eliminar la parte del código que envía los datos a thingspeak, y adaptarlo para que lo envíe al broker mqtt y poder consultar con grafana.
(01-03-2018, 08:37 AM)s118 escribió: Pienso que lo suyo sería eliminar la parte del código que envía los datos a thingspeak, y adaptarlo para que lo envíe al broker mqtt y poder consultar con grafana.
En cuanto acabe la tarea de documentar el hw, me pondre a revisar tus codigos para enfocarlos y ofrecer una opcion mas, una solucion mas con el mismo material.
Voy con varias cosas y me tengo que repartir, pero todo llegara
Enhorabuena. Muy interesante proyecto pero tengo unas cuantas preguntas:
- Frecuencia de muestreo ¿?
- Resolución conseguida en la medida de la intensidad instantánea en watios
De la gráfica parece como si el "cero" estuviera más bien en 0.6 kW lo que parece un poco elevado a no ser que tengas muchos, muchos "vampiros" eléctricos. Por otra parte parece que hay muchos valores anómalos (espúreos / outliers) sobre todo los que caen por debajo de la "línea de base"
¿Has "calibrado" los valores medidos frente a los "facturados"?
04-03-2018, 08:34 AM (Última modificación: 04-03-2018, 09:12 AM por s118.)
Frecuencia de muestreo: toma 1024 muestras, hace la media, y devuelve el valor de intensidad para calcular la potencia.
Resolución obtenida: antes de echar a andar el aparato hice unas pruebas midiendo la intensidad instantánea con un polímetro y con el monitor, y el error, una vez aplicado el factor de corrección de 1,33 era inferior al 1%. Las pruebas las hice con una plancha de ropa, un secador de pelo, una aspiradora, un tostador de pan, una sandwichera, una licuadora, un ventilador y una plancha de pelo. El error de la pinza, por su diseño, se produce cuando circula muy poca intensidad, pero dado que es poca intensidad el error es despreciable (esto lo he constatado midiendo el consumo que tiene una raspberry, donde el error relativo es grande). Por cierto, la intensidad no se mide en watios, sino en amperios. La potencia se mide en watios.
Los valores obtenidos son los existentes en la vivienda. En su día, el código medía los kw/h, y los valores coincidían con el consumo que daba Sevillana Endesa en su web.
04-03-2018, 12:37 PM (Última modificación: 04-03-2018, 12:53 PM por fbforos.)
El tema es muy interesante y creo que me apunto. Pero creo que deberíamos buscar un sensor de 50A de fondo de escala como mucho. No permitirá tener una mayor precisión para la corriente que estamos midiendo. 30 o 40A para temas caseros.
Otra opción sería dar dos vueltas pero en este caso tendríamos que modificar un poco la longitud del cable y eso no es siempre posible
Impresoras, CeNeCe, aviones, multicopteros y helicópteros.
(01-03-2018, 05:44 AM)s118 escribió: Escribo este post por si a alguien le interesa fabricarse un monitor de consumo eléctrico. Se coloca de forma no invasiva en el interior del cuadro eléctrico, con objeto de conocer la potencia consumida en casa en cada momento a través de thingspeak (tiene que existir una red wifi para que el monitor de consumo suba los datos a la web). En mi caso, la idea era estudiar la potencia que se consumía en casa, y estudiar si era posible bajar la potencia contratada. En mi caso, sin aplicar patrones de ahorro, ni cambiar los hábitos de consumo, pude comprobar que tenía suficiente con contratar una potencia de 2.300W, pues la demanda total apenas subía de estos valores.
Bueno, paso a describir un poco el sistema. El cerebro del sistema es un ESP8266 nodemcu. La parte medidora será una pinza no intrusiva capaz de medir la corriente que atraviesa un cable (digo no intrusiva porque no es necesario cortar ni pinchar ningún cable). La pinza que yo he utilizado es una SCT013 30A. Esta pinza tiene una capacidad de medición de hasta 30 amperios. Cuando por el cable pasan 30 amperios la tensión en los extremos de los cables de la pinza es de 1 voltio (la tensión es proporcional a la corriente que circula por el cable). El problema es que la tensión es alterna; cambia constantemente de signo. El arduino solo es capaz de medir valores que van de 0V a 3/5V), con lo que habrá que rectificar la señal, o introducir un elemento que sea capaz de medir valores positivos y negativos. Yo opté por la segunda opción, adquiriendo un ADC, el cual es capaz de medir tensiones positivas y negativas. Yo usé el ADS1115.
Para meter todo esto, con la impresora 3D imprimí una cajita que protege los componentes.
Ya tenemos todo el hardware. El montaje es muy sencillo. Se conectan los dos cables de la pinza en los pines A0 y A1 de ADC (medimos la tensión diferencial entre estos dos pines), y el resto de pines del ADC al nodemcu (5V-VDD, GND-GND, SCL-SCL,SDA-SDA, GND-ADDR). Ya solo queda el código. Éste también es muy sencillo. Utiliza la librería Adafruit ADS1X15. Los datos se suben a THINGSPEAK, por lo que hay que registrarse en esta web y meter los datos del servidor y la apikey (son personales y se obtienen de la cuenta de thingspeak). Indicar que la librería de Adafruit permite ajustar la ganancia del ADS1115, de manera que mientras más ajustado esté, más precisión tendremos. Yo he optado por ajustar a +/-2,048V (usaremos un factor multiplicador de 0.0000625F), pues los valores pico de la pinza son +/-1,41V. El resto son fórmulas matemáticas y físicas, para obtener el valor de la intensidad y de la potencia.
Adjunto capturas de los datos de consumo:
También adjunto fotos del monitor de consumo:
Adjunto también los archivos .stl de la envolvente:
Muy buen aporte,
Solo una duda, mide consumos inversos o negativos? es decir en lugar de consumos, generación pero como potencia negativa.
Buenos días, como se ha visto en otro tema que abrí, al fichero del nodo de medición de consumo, le falta añadir en el loop la función para reconexión.
if (!client.connected()) {
reconnect();
}
client.loop();
06-07-2021, 02:18 PM (Última modificación: 06-07-2021, 02:21 PM por Fernando Perez.)
He conectado una bobina SCT013 30A/1V a un módulo ADS1115, conectado a su vez a un ESP8266 WEMOS D1 mini.
He cargado su programa mediante el IDE 1.8.14 de Arduino, realizando antes pequeñas modificaciones, como eliminar todo lo relacionado con la conexión Wifi, el enlace a Thingspeak.com y cambiar la referencia <Adafruit_ADS1015.h> por <Adafruit_ADS1X15.h> de la actual librería de Adafruit.
Queda así:
void loop() {
double current = calcIrms(1024);
double P;
P = 230 * current / 1000;
// enviarP(P);
Serial.print("amperios: "); Serial.print(current); Serial.print(" vatios: "); Serial.println(P);
}
Me funciona. Obtengo valores estables y repetitivos para varios electrodomésticos conectados.
Pero cada 5 medidas, se resetea el programa debido, por lo que entiendo, al disparo del WDT.
Código:
--------------- CUT HERE FOR EXCEPTION DECODER ---------------