Programación y Control Automático S.L.

Automatización Industrial - Integración de Sistemas - Industria 4.0

Archivo de la etiqueta arduino

Consumo eléctrico de un frigorífico.

Frigorifico1

Vamos a monitorizar parámetros básicos de funcionamiento de un frigorífico, tales como temperatura interior, temperatura ambiente o estado de la puerta, para ver cómo afectan al consumo de energía eléctrica.

Principio de funcionamiento.

Antes abordar cuál es el consumo eléctrico de un frigorífico, vamos a describir brevemente el principio que rige su funcionamiento. El obetivo de un frigorífico es extraer calor del interior, donde se almacenan los alimentos frescos, y verterlo hacia el exterior. Para lograr este objetivo, se hace circular un fluido refrigerante a través de un circuito cerrado compuesto por 4 elementos fundamentales:
  • Válvula de expansión. El líquido refrigerante se expande pasando a un estado de menor presión y temperatura.
  • Serpentín interior. El líquido refrigerante a baja presión se evapora absorviendo calor en el proceso. El serpentín aumenta la superficie de contacto entre el fluido refrigerante y el aire a enfriar.
  • Compresor. Incrementa la presión del refrigerante, que está en estado gaseoso, mediante aporte de energía.
  • Serpentín exterior. Situado normalmente en la parte trasera del frigorífico, en él, el refrigerante, a alta presión, se condensa (pasa a estado líquido) cediendo calor al medio.
Ciclo de un frigorífico.

Ciclo de un frigorífico.

Este proceso se repite de manera cíclica para lograr el enfriamiento mientras el compresor se encuentra en marcha, lo que se activa por un termostato regulable situado generalmente en el interior. El aporte energético al frigorífico se invierte principalmente en comprimir el fluido en el compresor eléctrico.

El montaje.

Vamos a disponer de un complejo sistema de monitorización a  tiempo real desarrollado con un microprocesador Arduino Uno, al que se han acoplado dos shield: una Adafruit Data logger Shield con reloj a tiempo real y tarjeta SD para archivar datos en formato csv (fácilmente exportable a Excel), y una emonTx Arduino Shield SMT para acondicionar la señal de un medidor de intensidad eléctrica.

Montaje micro, shields y sensor ambiente.

Montaje micro, shields y sensor ambiente.

A su vez se conectan los sensores para adquirir los parámetros de funcionamiento:

  • Temperatura interior. Se instala una sonda de temperatura DS18B20 con rango de medida de -55 a +125ºC.
  • Temperatura exterior y humedad relativa. Se instala un equipo digital DHT22.
  • Consumo eléctrico. La intensidad eléctrica se mide mediante un transformador de intensidad no invasivo tipo pinza conectado a la emonTX Shield. Hay una entrada del blog con información detallada sobre cómo medir consumo eléctrico.
Instalación sensor intensidad.

Instalación sensor intensidad.

  • Puerta abierta. Para conocer el estado abierto o cerrado de la puerta del refrigerador hemos instalado una fotorresistencia que varía según la intensidad luminosa.
Montaje interior sonda de temperatura y fotorresistencia.

Montaje interior sonda de temperatura y fotorresistencia.

La fotorresistencia se instala próxima a la lámpara interna del frigorífico, y la sonda de temperatura en el techo.

Los datos.

Vamos a analizar en un primer momento las temperaturas interior del frigorífico y ambiente, así como el estado abierto de la puerta, en un rango de aproximadamente una hora, en la que la puerta se ha abierto en varias ocasiones. En el eje izquierdo tenemos las temperaturas, y en el derecho el estado de la puerta, representado como 0->cerrado ó 1->abierto.

Medida Temperaturas.

Medida Temperaturas.

Podemos observar como al abrirse la puerta, se produce un rápido ascenso de la temperatura interior. Éste ascenso va a depender del tiempo que se encuentre el frigorífico abierto, y de la temperatura ambiente, pues ambas temperaturas tienden a igualarse. Si extendemos el rango e introducimos el resto de variables, podemos observar la tendencia de funcionamiento del equipo.

Parámetros Principales.

Parámetros Principales.

En el eje izquierdo tenemos representadas la potencia instantánea en W la y humedad relativa en %. En el eje derecho tenemos las temperaturas en ºC y el estado de la puerta en rango 0->cerrada, 10->abierta.

Podemos distinguir dos fases perfectamente diferenciadas, las zonas en las que el compresor está en marcha, donde hay un consumo instantáneo de aproximadamente 120W, y en las que la temperatura desciende de manera brusca en un primer momento, para ascender suavemente a continuación. Por otro lado, tenemos las zonas en las que el compresor no se encuentra en marcha, donde el consumo eléctrico es mínimo, y las temperaturas se van elevando de forma pausada.

En torno a las 03:000 horas se registra un pico de consumo más elevado de lo habitual, al que no sigue un descenso de la temperatura interior, y que se corresponde con un ciclo de refrigeración en el congelador, al que sigue casi de manera inmediata un ciclo más prolongado de refrigeración de la zona interior.

Resulta curioso que la temperatura media del interior disminuye aproximadamente un grado durante la noche, y que los ciclos de arranque del compresor se encuentra muy equiespaciados (aproximadamente 50 minutos), con una duración aproximada de 20 minutos, como si respondiesen a un patrón predeterminado. Por otro, el compresor se mantienen en marcha una vez iniciado el ciclo durante bastante tiempo después de haberse alcanzado la temperatura mínima en el interior.

Consumo eléctrico del frigorífico.

La potencia media instantánea es 62.62W, lo que supone un consumo energético diario de 1.5KWh, con un coste de 0.225€, lo que al final de mes supone aproximadamente un coste de 7€ antes de impuestos. Hay que tener en cuenta que las medidas se han tomado en invierno, con una temperatura ambiente en torno a 17ºC, y con un uso moderado.  

Consumo eléctrico de una lavadora.

Lavadora

¿Cuál es el consumo eléctrico de una lavadora?.

Continuando con la monitorización de electrodomésticos, y aprovechando el monitor de consumo que hemos desarrollado con Arduino, vamos a analizar el consumo eléctrico de una lavadora, estableciendo una comparativa entre dos unidades bien distintas, una con más de 10 años de antigüedad, y una moderna con certificación energética A+++. Seleccionaremos dos programas muy similiares para poder establecer un análisis de consumo energético.

El ciclo de lavado.

Aunque el ciclo de lavado puede presentar variaciones en función del programa seleccionado, de forma somera, podemos identificar tres fases principales en el programa de una lavadora:

  1. Lavado. Hay aporte de agua y calor.
  2. Aclarado. Hay aporte de agua.
  3. Centrifugado.
Ciclo de un programa de lavado.

Ciclo de un programa de lavado.

El mayor consumo de energía se realiza en la fase de lavado al actuar las resistencias eléctricas para calentar el agua mediante el efecto Joule. La cantidad de energía consumida va a depender de la temperatura seleccionada en el programa de lavado, de la temperatura del agua de aporte de red y de la cantidad de agua a calentar.

El montaje.

Emplearemos una placa Arduino Mega conectada a internet a través de la shield oficial Arduino GSM Shield. Para la medida de intensidad eléctrica hemos empleado pinzas no invasivas que colocadas alrededor de una fase, generan una intensidad proporcianal a la que circula por la misma. Esta señal se modifica y adapta para ser interpretada por la placa Arduino mediante una shield desarrollada por la plataforma Open Energy Monitor. Para obtener información más detallada sobre cómo desarrollar el monitor, y sobre cómo funciona, os recomendamos consultar la entrada del blog sobre cómo realizar un monitor de energía eléctrica.

Lavadora con más de diez años de antigüedad.

Comenzamos monitorizando una lavadora antigua, seleccionamos el programa para sintéticos con temperatura a 60ªC, que según la placa del frontal incluye las fases:
  1. Sintético 60ºC.
  2. Sintético delicado 40ºC.
  3. Lana 35ºC.
  4. Rápido 30ºC.
  5. Suavizante.
  6. Centrifugado suave.
  7. Vaciado.
Obtenemos la siguiente curva de consumo:
Curva Consumo Lavadora Antigua Agua Caliente

Curva Consumo Lavadora Antigua Agua Caliente

Se observan dos zonas de elevado consumo energético, que se corresponden con las fases 1, donde el agua se calienta hasta 60ºC, y la fase 2 del programa, donde se calienta hasta 40ºC. La potencia media a lo largo del programa es de 718.6 W, la duración del programa es de 1 hora y treinta minutos, y la energía consumida es de 1077.86 Wh, con un coste aproximado antes de impuestos de 0.162€. Ejecutamos de nuevo el mismo programa, pero esta vez en frío, para tener una comparativa al emplear las resistencias eléctricas para calentar agua, y obtenemos la curva de resultados:  
Curva Consumo Lavadora Antigua Agua Fría

Curva Consumo Lavadora Antigua Agua Fría

La potencia media a lo largo del programa es de 156.6 W, la duración del mismo no varía, es decir es una hora y media, y la energía consumida es  234.87 Wh, con un coste por programa de 3.5 céntimos de euro. Con las medidas de consumo del programa en frío y caliente podemos establecer una comparativa donde las diferencias, como ya se ha comentado con anterioridad son debidas al aporte de calor al agua para alcanzar las temperaturas de las fases del programa.
Curva Consumo Comparativa en Lavadora Antigua

Curva Consumo Comparativa en Lavadora Antigua

El aporte de calor al agua supone un 78% del consumo total de energía del programa en caliente, este valor variará en función de la temperatura del agua de aporte a la lavadora.

Lavadora con calificación energética A+++.

Monitorizamos una moderna lavadora recién adquirida con calificación energética A+++, y una de las más eficientes del mercado, obviaremos marca y modelo para no hacer publicidad. Elegimos un programa de similares características, pero con temperatura a 40ºC en lugar de 60ºC como en el caso anterior, y comenzamos la monitorización de datos.  
Curva Consumo Lavadora Calificacion A+++

Curva Consumo Lavadora Calificacion A+++

La potencia media durante el ciclo es 611.14 W, la duración del programa es una hora y media, y la energía consumida es 916.72 Wh, con un coste aproximado de 13.75 céntimos de euro. El aporte de energía en forma de calor se realiza durante los primeros 20 minutos del programa, con una potencia media de aproximadamente 2 KW, y una energía consumida durante el proceso de 652.68 Wh, lo que implica que el 67% de la energía del programa se invierte en calentamiento del agua por efecto Joule. En el resto del ciclo, la potencia media es 251.73 W, y el consumo energético es de 363.34 Wh, con un coste de 4.9 céntimos de euro.

Comparativa.

Antes de extraer conclusiones del análisis de datos es necesario recordar que en la lavadora antigua el programa tiene establecido por defecto una temperatura de trabajo en la primera fase del programa de 60ºC, temperatura que va dismunyendo en las distintas etapas del ciclo de lavado. En la nueva lavadora es posible seleccionar la temperatura de lavado, que hemos establecido en 40ºC.  
Datos Comparados Lavadoras

Datos Comparados Lavadoras

Observamos que los valores de energía consumida son muy parecidos en ambos casos. A pesar de la diferencia de temperatura en los programas, hay un diferencial de energía de solo un 9%. Sin embargo en una lavadora moderna, la energía consumida en el proceso de lavado excluyendo el calentamiento, es mayor en términos globales, 326.34 Wh frente a 234.87, debido a un mayor consumo del motor eléctrico, hecho que puede observarse en la comparativa gráfica, lo que se traduce en mejor centriguado y mejor lavado. El ratio de energía en el lavado excluyendo el calentamiento es muy superior en una lavadora moderna 33% frente a 21%.
Gráfica Comparativa Lavadoras

Gráfica Comparativa Lavadoras

Aunque los datos de consumo son muy parecidos, el porcentaje de energía aportada en forma de calor es menor en una moderna lavadora, además gracias a la posibilidad de elegir la temperatura de lavado, puede optimizarse este valor.  

Consumo eléctrico de un lavavajillas.

Lavavajillas

¿Cuánto consume un Lavavajillas?

Si realizamos una exhaustiva búsqueda en internet sobre el consumo energético de un lavavajillas, encontraremos abundantes artículos que nos hablan sobre el ahorro que supone, en términos de consumo de agua y energía, el uso del lavavajillas frente el lavado ‘a mano’, y de cómo nos va a ayudar en el ahorro al final de mes, adquirir uno con la mejor calificación energética. Pero los datos reales sobre el consumo eléctrico, o como dirían en algunas regiones ‘la pela’, es algo más dificilmente accesible.

Aprovechando que hemos desarrollado un monitor de energía eléctrica capaz de medir la intensidad y de enviar los datos a la nube, vamos a monitorizar a tiempo real el consumo eléctrico de un lavavajillas durante un programa normal de lavado.

El ciclo de lavado.

Un ciclo de lavado básico incluye una fase de prelavado, un lavado con agua caliente, un periodo de aclarado y finalmente el secado. Los tiempos de cada fase dependen del equipo y del programa seleccionado.

Ciclo de un programa de lavado

Ciclo de un programa de lavado

Si observamos el programa de lavado, los mayores consumos de energía se producen en aquellas fases en las que hay aporte de energía al agua para calentar, lo que se realiza mediante el efecto Joule a través de resistencias. En el resto de fases, el consumo de energía se emplea en abrir/cerrar válvulas, arrancar los motores de impulsión y la bomba de de desagüe.

El montaje.

Vamos a emplear un Arduino Mega equipado con una shield a la que conectar transformadores de corriente, con los que medir intensidad eléctrica de modo no invasivo. Para enviar los datos a la nube, incorporamos al proyecto la shield oficial Arduino GSM. Información más detallada sobre cómo realizar el monitor está accesible en una entrada anterior del blog.

Para realizar medidas de intensidad eléctrica, es muy importante tener en consideración que la pinza amperimétrica de medida sólo debe abrazar una de las fases.

Conexion Sensor Intensidad

Conexion Sensor Intensidad

Para ello se puede emplear un conjunto como el de la imagen, donde se han separado las fases y el cable de tierra, dejándolos accesibles. En caso de colocar la pinza en un cable al uso, con las dos fases embutidas, la medida de la pinza será cero, ya que la intensidad que entra por una fase, sale por el neutro, siendo el total nulo.

Los datos.

Gracias al servidor gratuito de emoncms podemos conectar el lavavajillas al ‘internet de las cosas’, lo que nos va a permitir realizar un análisis detallado de los datos. Con el fin de contrastar valores adquiridos, colocamos dos pinzas de medida independientes, denominadas 1 y 2 en las gráficas. Seleccionamos el programa estándar y comenzamos la monitorización. El lavavajillas tiene certificación energética clase A.

En este primera gráfica se muestra la intensidad medida por las pinzas de manera redundante.

Medida de Intensidad

Medida de Intensidad

El programa tiene una duración aproximada de tres horas, y podemos observar dos zonas de elevado consumo que se corresponden con las fases de calentamiento para el lavado y aclarado, además de picos de consumo de corta duración como consecuencia de arranque de motores.

Vamos a mostrar la potencia calculada por el monitor a partir de la intensidad, multiplicando la intensidad por la tensión de suministro, con un valor de referencia de 230V.

Potencia = Intensidad * Voltaje
Grafica Potencia

Grafica Potencia

Observamos claramente que el grueso del consumo eléctrico se invierte en aporte de calor en las fases de lavado y aclarado. En el resto del programa, el consumo de energía es muy reducido, unos 150 W de media, que a lo largo del ciclo completo supone unos 0.45 KW/hora, lo que a un precio de 0.14 €/KWh, apenas si tiene un coste de 7 céntimos antes de impuestos.

La energía necesaria para el aporte térmico es de unos 1500 W de media, suministrados durante dos periodos de aproximadamente media hora, lo que supone un consumo de 1.5 KWh totales, y en términos económicos, 0.21 €, tres veces más que la energía consumida en el resto del programa.

El coste energético del programa completo es de 0.28 € antes de impuestos y tasas, de los que el 75% se ha invertido en aporte de calor. Esto abre las puertas a conseguir grandes ahorros en la factura, por ejemplo alimentando el lavavajillas con agua calentada mediante energía termosolar, pero esto es otro campo que corresponde al ahorro y eficiencia energética.

Monitor de energía eléctrica con Arduino.

Monitor Energia Electrica

Monitor Energia Electrica

El internet de las Cosas.

Arduino y las plataformas de software libre están permitiendo realizar proyectos electrónicos cada vez más complejos y sofisticados a un coste realmente asequible a nivel de hardware, y gracias a la colaboración y difusión de contenidos, con un menor tiempo de desarrollo. Como parte de un proyecto más complejo de monitorización a través de página web, tecnología conocida como ‘Internet de las cosas‘, hemos desarrollado, basándonos en Arduino y la plataforma libre Open Energy Monitor, un monitor de energía eléctrica no invasivo, empleando sensores tipo pinza que se abrazan a la fase a medir.

Descripción.

Vamos a desarrollar un monitor de energía eléctrica o medidor de consumo eléctrico (intensidad y potencia aparente) a tiempo real y a través de internet. Para ello emplearemos una tarjerta Arduino Mega (la placa Arduino Uno carece de memoria suficiente para trabajar con la librería GSM); dos sensores para medir intensidad eléctrica, que conectaremos a nuestro Arduino mediante una shield que acondiciona la señal de los sensores; y un módem GSM para conectarnos a internet y poder enviar las medidas.

Para almacenar datos en la nube necesitamos una plataforma especializada en ‘Internet of Things’ (iot), capaz de recibir y procesar los datos de nuestro nodo de monitorización. Existen en el mercado diversas plataformas para iot con distintas funcionalidades como Carriots o Xively (anteriormente Pachube). En este proyecto nos basaremos en la plataforma Emoncms, un proyecto OpenSource que proporciona almacenamiento limitado gratuito en sus servidores, y que permite descargar la plataforma y ejecutarla en un servidor propio. Incluye además tratamiento de datos y diversos formatos de visualización personalizables, que nos van a ayudar a desarrollar una completa interfaz de monitorización incluyendo seguridad de acceso.

Medida de consumo eléctrico.

Para la monitorización de consumo eléctrico uno de los métodos más empleados consiste en emplear sensores no invasivos de tipo pinza, que son básicamente transformadores de corriente (TC), especialmente indicados para medir corriente alterna.

PinzaAmperimetrica

Sensor Intensidad Eléctrica

Como cualquier transformador, están constituidos por un bobinado de primario, un bobinado de secundario, y un núcleo magnético.

FuncTrafoINT

Funcionamiento trafo Intensidad

La relación de transformación es el cociente entre entre el número de vueltas de bobinado entre primario y secundario, y la intensidad que fluye por el secundario es directamente proporcional a la relación de transformación:

RelacionTransformacion = nVueltasPrimario / nVueltasSecundario.
ISecundario = RelacionTransformacion * IPrimario

Habitualmente en este tipo de sensores, el número de vueltas de bobinado en el secundario es 2000, y el primario está constituido únicamente por la fase a medir, así que la relación de transformación es 1:2000, y la intensidad en el secundario es 1/2000 de la intensidad que fluye por el primario. Para un sensor de 100A como el que hemos adquirido, la intensidad del secundario será 100A/2000 = 0.05A, lo que suele escribirse en la forma 100:0.05.

Tal como hemos visto, el cable de fase a monitorizar constituye el primario del transformador, y al circular por él una corriente alterna, se induce una corriente proporcional en el secundario. Esta señal en forma de intensidad de corriente alterna debe ser acondicionada para poder medirse en una entrada analógica de nuestro Arduino, que es una entrada de tensión variable 0-5 V . Sobre la forma a realizar esta conversión eléctricamente hay amplia documentación en internet. Nosotros nos hemos decantado por adquirir una shield para Arduino realizada y distribuida por Open Energy Monitor, la Emon TX Arduino Shield  que incorpora 4 entradas para sensores de corriente configuradas con los componentes necesarios para medir en los canales análogicos de Arduino, y con conectores de 3.5mm para los sensores; además de dos entradas de temperatura para sensores digitales tipo DS18B20.

EmonTXShield

emonTx Shield V2

Mediante 4 entradas de 3.5mm se conectan a la shield, de forma simple, los equipos de medida que hemos adquirido también en la misma web: Yhdc SCT-013-000. Estos sensores están diseñados para medir una intensidad máxima de 100A. Es posible adquirirlos con una menor intensidad máxima, lo que aumenta la precisión de la medida a realizar.

Una vez la shield montada en la placa Arduino y conectados los sensores, estamos listos para comenzar a probar nuestro monitor de energía eléctrica. Únicamente necesitamos importar la librería EmonLib e incorporarla a nuestro proyecto. Hay que tener en cuenta  que los ejemplos incluidos en la instalación de la librería Emonlib no están desarrollados para la shield de Arduino, sino para otro dispositivo similar. Pare poder utilizar los ejemplos de la librería debemos modificar la línea en que se configura la instancia, introduciendo como constante el valor 60.606. Este valor es el cociente entre la relación de transformación (2000) y la resistencia de carga del circuito (33ohm).

Cte = RelacionTransformacion / ResistenciaCarga = 2000 / 33Ohm = 60.606
emon1.current(1, 60.606) //(pin analógico, cte configuración)

La shield EmonTx está preparada para realizar medidas de voltaje y potencia eléctrica, simplemente conectando una fuente de 9V alterna al conector de alimentación de la propia shield, para hacer de referencia. Si optamos por no incluir la fuente, sólo tenemos la posibilidad de medir intensidad. Para calcular la potencia aparente basta con multiplicar la intensidad medida por la tensión en línea, que debemos incluirla como una constante. En el caso de España, la tensión de suministro es de 230V, aunque este valor puede variar ligeramente en cada punto de suministro.

#include "EmonLib.h" // Incluye la libreria

EnergyMonitor emon1; // Crea una instancia 
void setup() 
{ 
  Serial.begin(9600); 
  emon1.current(1, 60.606); // Configuración: entrada Pin Analógico, calibracion. 
} 
void loop() 
{ 
  double Irms = emon1.calcIrms(1480); 
  Serial.print(Irms*230.0); // Potencia Aparente 
  Serial.print(" "); 
  Serial.println(Irms); // Irms 
}

Conexión de Arduino a Internet.

Aunque existen diversas alternativas para conectar Arduino a internet, nos decantamos por la shield oficial Arduino GSM Shield. Aunque la placa es compatible con nuestro Arduino Mega, es necesario, como se indica en la documentación oficial, realizar unas pequeñas modificaciones para hacerla funcionar:

Arduino Mega Modificacion GSM

Arduino Mega Modificacion GSM

  • Puentear los canales digitales  2 y 10.
  • Doblar la patilla del canal 2 para dejarlo sin conectar
Con estas sencillas modificaciones estamos listos para conectar nuestro Arduino Mega a internet, en este caso a la web de Emoncms. La mejor opción para enviar datos a un servidor web es realizar un enlace cliente-servidor, donde Arduino es el cliente web. Hay abundante documentación sobre el modo de realizar la conexión como cliente, tanto en internet como en los propios ejemplos de la librería GSM.

No debemos olvidar que para conectarnos a internet a través de la shield GSM, debemos tener contratada una tarifa de datos con algún operador móvil. Como en elpaquete de la shield oficial se incluye una tarjeta de Movistar activable vía web, para probar el prototipo hemos adquirido un bono de 10MB a través de la web M2M. Es necesario tener a mano los datos de conexión del operador a la hora de realizar el enlace web:

#include <GSM.h>

// PIN de la tarjeta, en el caso de M2M está vacío #define PINNUMBER "" //Operador #define GPRS_APN "sm2ms.movilforum.es" #define GPRS_LOGIN "" #define GPRS_PASSWORD "" GSMClient client; GPRS gprs; GSM gsmAccess; void setup() { Serial.println("Iniciando la conexion WEB."); boolean notConnected = true; // Inicia el acceso GSM while(notConnected) { if((gsmAccess.begin(PINNUMBER)==GSM_READY) & (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY)) { notConnected = false; Serial.println("Conectado a red GSM"); } else { Serial.println("No conectado"); delay(1000); } } }

Montaje del conjunto.

Ya tenemos todos los componentes del monitor de energía eléctrica probados por separado, es momento de ensamblar el conjunto y programar el código para comenzar a enviar datos al servidor web. El primer paso es montar las shields sobre la placa Arduino. Vamos a emplear dos sensores para tener medidas redundantes, en uno de ellos mediremos la intensidad del cable de fase, y en el otro la intensidad del neutro, ambas medidas deben coincidir.
Arduino Monitor Energia

Arduino Monitor Energia

Arduino Monitor Energia

Arduino Monitor Energia

 

En el sketch añadimos el código para realizar la segunda medida y preparamos la cadena del envío. Para transmitir los datos al servidor de emoncms, empleamos una cadena json según se detalla en la información de la página sobre como transmitir datos, con el formato:

http://emoncms.org/input/post.json?json={power:200}

Debemos estar registrado en el servidor para poder operar en la aplicación. Una vez registrados, se nos asigna un APIKEY con permiso de escritura que es necesario reflejar en el sketch al enviar datos. Este valor indica al servidor emoncms qué usuario está enviando datos. Tambiés podemos incluir, en caso necesario, el número de nodo desde el que se envía, para distinguir en caso de disponer de distintos equipos, o querer monitorizar distintas zonas.

Empleamos el pin 12 como indicador de que hay una transacción de lectura-envío en marcha.

#include "EmonLib.h"
#include 

#define PINNUMBER ""
#define GPRS_APN       "sm2ms.movilforum.es" 
#define GPRS_LOGIN     ""    
#define GPRS_PASSWORD  "" 

//APIKEY para la conexion con Opencms
const String APIKEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx";

char server[] = "emoncms.org"; 
const int port=80;
int node = 1;

unsigned long ultimoEnvio=0; 
const unsigned long intervaloEnvio = 10;  //periodo entre envios

String json;

// Inicialización de las librerías
GSMClient client;
GPRS gprs;
GSM gsmAccess;
EnergyMonitor emon1;
EnergyMonitor emon2;

void setup()
{  
  Serial.begin(9600);
  emon1.current(1, 60.606);
  emon2.current(2, 60.606);
  Serial.println("Iniciando la conexion WEB.");

  boolean notConnected = true;
    // Inicia el acceso GSM
  while(notConnected)
  {
    if((gsmAccess.begin(PINNUMBER)==GSM_READY) &
        (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY))
      {
        notConnected = false;
        Serial.println("Conectado a red GSM");
      }
    else
    {
      Serial.println("No conectado");
      delay(1000);
    }
  }
  pinMode(13, OUTPUT);
}

void loop()
{
  //Lectura de datos enviados por el servidor web
  if (client.available())
  {
     char c = client.read();
     Serial.print(c);
  }

  if (!client.connected() && ultimoEnvio)
  {
    client.stop();
  }
 //envio de datos
 if(((millis() - ultimoEnvio)/1000 > intervaloEnvio))
  {
    digitalWrite(13, HIGH);
    double Irms1 = emon1.calcIrms(1480);  // Calculate Irms only
    double PotAct1=Irms1*230.0;
    double Irms2 = emon2.calcIrms(1480);  // Calculate Irms only
    double PotAct2=Irms2*230.0;
    //preparamos el dato para enviar
    char aux_Irms1 [8];
    char aux_Pot1 [8];
    char aux_Irms2 [8];
    char aux_Pot2 [8];    
    dtostrf(Irms1, 4, 2, aux_Irms1);
    dtostrf(PotAct1, 4, 2, aux_Pot1);
    dtostrf(Irms2, 4, 2, aux_Irms2);
    dtostrf(PotAct2, 4, 2, aux_Pot2);
    //preparamos la cadena de envio
    json="{";
    //pasamos los datos a la cadena
    datosSerie(json, "Int1", aux_Irms1, true);
    datosSerie(json, "Pot1", aux_Pot1, false);
    datosSerie(json, "Int2", aux_Irms2, false);
    datosSerie(json, "Pot2", aux_Pot2, false);
    json += "}";
    Serial.println(json);
    sendData();
  }
}

void sendData()
{
  // Realizamos la conexión al servidor
 if (client.connect(server, port))
  {
    client.print("GET /api/post?apikey=");
    client.print(APIKEY);
    if (node > 0) {
      client.print("&node=");
      client.print(node);
    }
    client.print("&json=");
    client.print(json);
    client.println(" HTTP/1.1");
    client.println("Host:emoncms.org");
    client.println("User-Agent: Arduino-GSM");
    client.println("Connection: close");
    client.println();   
    Serial.println("Enviada con éxito");
  }
  else
  {
    // if you couldn't make a connection:
    Serial.println("Error en la Conexion.");
    Serial.println();
    Serial.println("desconectando.");
    client.stop();
  }
  // note the time that the connection was made or attempted
  digitalWrite(13, LOW);
  ultimoEnvio = millis();
}

void datosSerie(String &dataString, String Campo, String Valor, boolean Primero)
{
    if (Primero==false) {
      dataString += ",";
    }
      dataString += Campo+":";
      dataString += Valor;
}

Muy importante es recordar que debemos colocar el sensor alrededor de sólo uno de los dos hilos de alimentación, si medimos sobre un cable convencional donde están embutidos los dos hilos de alimentación, la medida será siempre cero, ya que a la intensidad que entra por un hilo es igual y de signo contrario a la que sale por el otro, para que fluya la intensidad.

Conexion Sensor Intensidad

En la próxima entrada, mostraremos como configurar el servidor Opencms para que almacene datos en forma histórica y cómo crear una pantalla de monitorización de datos amigable con gráficos.

Introduce tu email para suscribirte al blog y recibir notificaciones importantes.

Únete a otros 287 suscriptores

Acceso