Tutorial [Arduino Energy Shield] Rev. [1.0] MCI-TU-0003 INGENIERÍA MCI LTDA. Luis Thayer Ojeda 0115. Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 2 of 38 TUTORIAL MCI Ltda. Luis Thayer Ojeda 0115. Oficina 1105 Santiago, Chile www.olimex.cl Tel: +56 2 23339579 Fax: +56 2 23350589 ® MCI Ltda. 2013 Desarrollado por Cesar Muñoz para MCI Atención: Cambios y modificaciones hechas en el dispositivo, no autorizados expresamente por MCI, anularán su garantía. Código Manual: MCI – TU – 0003 Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 3 of 38 TUTORIAL Tabla de Contenidos Descripción .......................................................................................................................................... 4 Recursos Necesarios............................................................................................................................ 5 Configuraciones y Esquema Eléctrico ................................................................................................. 6 Conexionado ................................................................................................................................... 6 Procedimiento de Armado .................................................................................................................. 8 Procedimiento de Ejecución del experimento ................................................................................ 8 Instalar XCTU ................................................................................................................................. 10 Instalar Xbee Explorer USB............................................................................................................ 10 Configurar los módulos Xbee ........................................................................................................ 11 Como configurar la red Xbee Serie 1............................................................................................. 13 Como configurar la red Xbee Serie 2............................................................................................. 16 Como programar la tarjeta Arduino Energy Shield ........................................................................... 19 Instalar plataforma Arduino .......................................................................................................... 20 Bajar el Código fuente ................................................................................................................... 21 Compilar y Cargar .......................................................................................................................... 21 Extra 1: Introducción a Sistemas Electromecánicos...................................................................... 26 Cómo medir el consumo de un equipo usando la tarjeta Arduino Energy Shield ............................ 32 ANEXO 1: ........................................................................................................................................... 35 Como modificar el código y algunos tips sobre su implementación............................................. 35 Relación de vueltas del transformador de voltaje (referencia de cruce por cero) ....................... 36 Numero de vueltas del cable de medición de corriente ............................................................... 37 Como modificar el cruce por cero y dejar el chip en lazo abierto ................................................ 38 Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 4 of 38 TUTORIAL Descripción La tarjeta Arduino Energy Shield nos permite medir el nivel de consumo eléctrico de cualquier dispositivo conectado a la red domiciliaria, a través de un sencillo conexionado. Por medio de esta plataforma se puede monitorear un dispositivo eléctrico y enviar los datos medidos a través de una interfaz serial y/o comunicar todo por la red Zigbee usando los módulos Xbee Serie 1 (para comunicación punto a punto), o mediante una red distribuida (mesh) usando los módulos Xbee Serie 2. Además se puede incorporar una pantalla LCD para desplegar las mediciones en forma local y crear un sistema de medición de características profesionales. Entre las ventajas que presenta esta tarjeta podemos mencionar: la capacidad de usar las librerías Arduino, el monitoreo en tiempo real de variables por medio de una red inalámbrica, el monitoreo constante de los valores medidos a través de la pantalla LCD. Las limitaciones de esta tarjeta son que no permite el uso de los pines de la tarjeta Arduino de manera directa, sin embargo es bastante fácil acceder a ellos por medio de un conector intermedio o a través de cables. Además debemos tener en cuenta que las mediciones realizadas son referenciales y representan una aproximación de los valores reales que se están midiendo. De todas formas, los resultados nos entregarán información suficientemente certera para tomar decisiones y a un costo muy reducido de las alternativas de mercado. La tarjeta Arduino Energy Shield cuenta con las siguientes características: Entrada para sensor de Voltaje Entrada para sensor de Corriente Reloj de Tiempo Real Comunicación inalámbrica Socket para XBee Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 5 of 38 TUTORIAL Recursos Necesarios Arduino Energy Shield Arduino UNO o Arduino Leonardo Xbee Explorer USB 2 Xbee ‘Serie 1’ o ‘Serie 2’ GLCD con interfaz serializada Programas Arduino XCTU1 (www.digi.com ->Support -> XCTU) Driver FTDI2 Putty o Hércules (para manejar el puerto serie) PC O Notebook 1 Es conveniente asegurarse que la versión que vayamos a instalar sea una reciente o actualizada. 2 Solo para Windows 7, las versiones anteriores de Windows pueden encontrar el driver de manera automática en Windows Update. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 6 of 38 TUTORIAL Configuraciones y Esquema Eléctrico En esta sección describiremos como realizar el conexionado completo. Conexionado El siguiente diagrama describe la tarjeta Arduino Energy Shield de manera esquemática, en ella indicaremos donde debemos conectar los sensores para realizar las mediciones de consumo. En cada uno de los sectores marcados, encontramos: N° 1 2 3 4 5 6 Descripción Arduino Energy Shield Arduino UNO (montada con la anterior) Transformador (220/12 VAC) Sensor de Corriente Enchufe macho (a red eléctrica) Enchufe hembra (dispositivo a medir) 1 2 6 3 4 5 A LA RED ELECTRICA Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 7 of 38 TUTORIAL La razón por la cual debemos conectar el circuito a la red eléctrica se debe a que el chip que realiza las mediciones de energía y cálculos de potencia necesita tener una referencia contra que medir, para nuestro caso esto se realiza cada vez que la onda eléctrica cruza el cero, con lo cual se miden los ciclos. Así, para realizar una medición de 50 ciclos (o 1 segundo para una red eléctrica de 50 [Hz]), se necesitan medir 100 cruces por cero*. *Recordar que un periodo completo tiene dos cruces por cero, uno que define la parte donde la onda se encuentra por sobre el cero y el otro que define la parte donde la onda está por debajo del cero. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 8 of 38 TUTORIAL Procedimiento de Armado Procedimiento de Ejecución del experimento Nuestro experimento completo incluye el uso de un GLCD con interfaz serializada y de un módulo de transmisión inalámbrico Xbee, con lo cual podemos realizar un monitoreo local y/o remoto: por ejemplo podemos centralizar el monitoreo de diversas unidades de congelamiento en una oficina central, o colocar el visor GLCD de un camión frigorífico en la cabina. Si se desea pasar directo a la sección de las mediciones, solo debemos ir a la sección “Mediciones”. XBEE Si hemos optado por hacer uso de Xbee, debemos realizar la configuración de nuestros dispositivos de comunicación Módulos Xbee Serie 1 o Xbee Serie 2. Según sea la elección que se haya hecho se debemos proseguir en la sección que corresponda (las que siguen a continuación). RTC (Real Time Clock) Una parte importante de la operación de la tarjeta, es configurar el RTC. Para esto, debemos ir a la página de la tarjeta Arduino Energy Shield y descargar el código llamado ‘DemoConfigureRTC’. El procedimiento de carga es el mismo que usaremos para subir el código del presente tutorial a la tarjeta Arduino Energy Shield y que se describe a continuación; una vez que tengamos cargado el código para configurar el RTC se desplegará un menú en la consola serial que nos permitirá ingresar la fecha y hora. CONECTAR EL LCD Para conectar el LCD haremos uso de la interfaz SoftwareSerial de la plataforma Arduino, con lo cual deberemos conectar nuestra tarjeta Arduino (UNO R3 o Leonardo) hacia el GLCD Backpack, solo necesitaremos un pin (TX de la tarjeta Arduino conectado al RX del GLCD Backpack). Para el caso de nuestro ejemplo se ha seleccionado el PIN 8 para este trabajo. Debido a las restricciones propias del diseño, esta conexión deberemos realizarla por medio de algún cable o algún otro tipo Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 9 of 38 TUTORIAL de intervención (para una instalación permanente es una buena opción soldar un cable al pin, y recubrirlo con termoretráctil, para mayor resistencia mecánica). *Como no usaremos el PIN RX en la tarjeta Arduino (el GLCD Backpack no tiene TX), podemos asignar el valor 0 a ese pin cuando definamos nuestra interfaz SoftwareSerial, con lo cual dejamos un pin más disponible para otros propósitos. La relación del transformador es importante al momento de realizar las mediciones, en este caso se ha usado una conversión de 220/12 [VAC], aunque esto es modificable en el código si se opta por algún otro tipo de transformador. (Ver sección Anexo 1, al final del presente manual). Una vez realizados los procedimientos anteriores, continuaremos con la programación de la tarjeta Arduino Energy Shield, por medio de la plataforma Arduino. ES IMPORTANTE RECORDAR QUE LAS MEDICIONES REALIZADAS POR LA TARJETA ARDUINO ENERGY SHIELD SON MEDIDAS REFERENCIALES Y NOS ENTREGAN UNA BUENA APROXIMACIÓN A LOS VALORES REALES Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 10 of 38 TUTORIAL Instalar XCTU La instalación de la plataforma XCTU es bastante simple, si bien puede tomar una cantidad de tiempo considerable dado que el programa bajará los firmwares actualizados para los diferentes módems que puede manejar. Una vez realizado el proceso de instalación nos encontraremos con la siguiente interfaz. El manejo del programa es muy simple, si bien nos presenta muchas opciones solo debemos usar una cantidad muy limitada de ellas. Instalar Xbee Explorer USB Antes de continuar, debemos tener instalado el Xbee Explorer USB, el cual nos permitirá configurar y operar el módem Xbee desde nuestro PC. Simplemente debemos poner el modem ‘Xbee’ en el ‘Xbee Explorer USB’ y enchufar el puerto USB a nuestro computador, para las versiones de Windows Vista y anteriores, los drivers serán instalados de manera automática. Para Windows 7 debemos realizar el proceso de instalación de los drivers de manera manual desde el administrador de dispositivos. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 11 of 38 TUTORIAL Configurar los módulos Xbee Una vez realizado el proceso de instalación del ‘Xbee Explorer USB’ deberemos abrir nuevamente el XCTU y veremos como el puerto que acabamos de instalar aparece en la lista de puertos COM. Para asegurarnos que todo está operativo, podemos presionar el botón “Test/Query” y se desplegará una pequeña ventana con la información de nuestro módulo Xbee. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 12 of 38 TUTORIAL Para configurar el módulo Xbee debemos acceder a la pestaña “Modem Configuration” y presionar el botón “Read” con lo cual se leerán los parámetros del modem que tenemos conectado. Ahora, debemos seguir en la sección correspondiente al tipo de módulo que hayamos adquirido (Serie 1 o Serie 2). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 13 of 38 TUTORIAL Como configurar la red Xbee Serie 1 En la imagen podemos encontrar la configuración básica de un módulo Xbee Serie 1. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 14 of 38 TUTORIAL En las siguientes tablas, podemos encontrar la descripción de los campos y los valores que debemos asignar a cada uno de ellos para configurar los Xbee Serie 1 en “modo transparente” o en una conexión punto a punto. Indicador DH DL MY ID SH SL CE Nombre Destination Address High Destination Address Low 16-bit Source Address PAN ID Serial Number High Serial Number Low Coordinator Enable A continuación se muestra un ejemplo de cómo se deben de configurar los dos módulos: XBee A Valores DH 13A200 DL 4076E267 MY AAAA SH 13A200 (viene por defecto) SL 4076E26E (viene por defecto) CE 1 -Coordinator XBee B Valores DH 13A200 DL 4076E26E MY AAAA SH 13A200 (viene por defecto) SL 4076E267 (viene por defecto) CE 0 -End Device Serie 1 Pro Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 15 of 38 TUTORIAL Existen otras formas de configurar una red Xbee, la anterior es una forma fácil que solo involucra dos módems; aunque en todas ellas debemos asegurarnos que se comparta el mismo identificador de la red (PAN ID), pues este valor nos permite diferenciar redes que se encuentren cercanas y descarta cualquier recepción que no corresponda con el valor PAN ID de nuestro modem. Si deseamos conectar 3 nodos, podemos optar por una forma fácil donde todos se escuchen entre ellos, algo que es similar a una red tipo bus. Para ello, optaremos por hacer un broadcast desde cada uno de los Xbee Serie 1 configurándolos de la siguiente forma: XBee A DH 0 DL FFFF MY 0 PAN ID 8888 SH (viene por defecto) SL (viene por defecto) CE 1 -Coordinator XBee B DH 0 DL FFFF MY 0 PAN ID 8888 SH (viene por defecto) SL (viene por defecto) CE 0 -End Device Xbee C (o cualquier otro) DH 0 DL FFFF MY 0 PAN ID 8888 SH (viene por defecto) SL (viene por defecto) CE 0 -End Device Para usar esta red, debemos hacer un pequeño protocolo por software, que envié un identificador desde cada módem y que se tomen acciones por cada uno de estos identificadores (y aquellos que no sean dirigidos al módem involucrado deben ser descartados). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 16 of 38 TUTORIAL Como configurar la red Xbee Serie 2 En la imagen podemos encontrar la configuración básica de un módulo Xbee Serie 2, no hay muchas diferencias en su forma básica de configuración con la Serie 1, si bien en esta versión encontraremos más campos y una distribución un poco diferente de los mismos. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 17 of 38 TUTORIAL En las siguientes tablas, podemos encontrar la descripción de los campos y los valores que debemos asignar a cada uno para configurar los Xbee Serie 2 en “modo transparente” o en una conexión punto a punto Indicador DH DL MY SH SL PAN ID Nombre Destination Address High Destination Address Low 16-bit Network Address Serial Number High Serial Number Low Operating PAN ID A continuación se muestra un ejemplo de cómo se deben de configurar las dos módulos XBee A Valores DH 13A200 DL 4076E267 MY AAAA PAN ID 234 SH 13A200 (viene por defecto) SL 4076E26E (viene por defecto) XBee B Valores DH 13A200 DL 4076E26E MY AAAA PAN ID 234 SH 13A200 (viene por defecto) SL 4076E267 (viene por defecto) La ventaja de los módems Xbee Serie 2, es que se pueden configurar redes más completas (tipo mesh). Esto nos brinda la ventaja de poder tener redes que abarquen zonas geográficas mucho más amplias que con la serie 1, si bien estas redes son mucho más complejas. Acá se entrega una pequeña descripción de cómo configurar una red Xbee Serie 2 con más de dos dispositivos: Punto a multipunto: Una conexión punto a multipunto es óptima cuando se requiere enviar información de manera controlada a uno o varios nodos a la misma vez, lo cual lo diferencia de una broadcast. Solo basta con utilizar el método de una red punto a punto para la transmisión a un nodo, para realizar la transmisión a varios nodos a la vez solo basta con utilizar como dirección destino 0xFFFF. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 18 of 38 TUTORIAL Es importante tener en cuenta que se debe configurar el módulo Xbee en la misma dirección PAN y el mismo canal de comunicación: recuerde que la Xbee tiene 16 canales de comunicación. Red Broadcast Esta red se diferencia de las demás en que todos los nodos tienen la dirección broadcast configurada lo que implica que los datos son recibidos hacia y por todos los nodos de la red. La dirección broadcast es DH=0x00000000 DL=0x0000FFFF. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 19 of 38 TUTORIAL Como programar la tarjeta Arduino Energy Shield Para programar la nuestra plataforma debemos montar la tarjeta Arduino Energy Shield junto con la tarjeta Arduino seleccionada. Las plataformas Arduino UNO R3 y Arduino Leonardo tienen los módulos de programación incorporados en la placa, por lo cual solo debemos conectarla a través de un Cable USB para su programación. Es apropiado conectar la tarjeta a una fuente de energía externa, pues el consumo de la Arduino Energy Shield puede afectar el proceso de programación. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 20 of 38 TUTORIAL Instalar plataforma Arduino La instalación de la plataforma Arduino es muy sencilla, simplemente debemos bajarlo desde el sitio de Arduino (acá) y descomprimirlo en una carpeta. Luego ejecuta “Arduino.exe” y ya está operativo! Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 21 of 38 TUTORIAL Bajar el Código fuente El código fuente de nuestro ejemplo lo podemos obtener desde el sitio de la tarjeta Arduino Energy Shield. Debemos descomprimirlo en un lugar de nuestra elección para acceder a él en la siguiente sección. Compilar y Cargar Lo primero, es identificar el modelo de la tarjeta o su compatibilidad, que para nuestro caso es compatible con “Arduino Uno” o “Arduino Leonardo”. En el caso de Arduino el código fuente está escrito en lenguaje C, pero de manera simplificada pues solo se deben escribir dos funciones principales - Setup() y loop() - y si lo deseamos, podemos definir algunas funciones auxiliares, estos códigos se llaman “Sketch”. En la página de Arduino podemos encontrar mucha información de cómo utilizar la plataforma, además de una extensa documentación sobre el uso de las librerías que incorpora la plataforma y que la convierten en una de las más populares para desarrollo. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 22 of 38 TUTORIAL Para cargar el código en la tarjeta Arduino Energy Shield debemos seguir el siguiente procedimiento (mismo proceso a seguir para cargar cualquier código). Seleccionar el Microcontrolador compatible (Arduino Uno o Arduino Leonardo) Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 23 of 38 TUTORIAL Seleccionar el puerto asignado al Módulo FTDI (esto varía según la propia instalación, el puerto indicado es solo referencial). Se puede observar en la parte inferior de la ventana el modelo de tarjeta elegida y el puerto en el cual se encuentra conectado el módulo FTDI (esto es muy útil cuando estamos trabajando con diversos modelos de tarjetas). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 24 of 38 TUTORIAL Una vez hecho esto, abrimos el código que bajamos en la sección previa y deberá verse algo así: Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 25 of 38 TUTORIAL Una vez realizado lo anterior, debemos compilar nuestro proyecto: para ello presionamos el botón de la parte superior izquierda, marcado en rojo en la siguiente imagen. Una vez que hayamos completado el proceso de compilación, debemos cargar nuestro proyecto a la tarjeta Arduino Energy Shield. Junto al botón compilador (al lado derecho) encontraremos el botón Cargar. Una vez terminado el proceso, el programa empezará a correr automáticamente. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 26 of 38 TUTORIAL Extra 1: Introducción a Sistemas Electromecánicos Diferencia entre energía y potencia Todos los seres vivos y la mayoría de las cosas que usamos en nuestra vida cotidiana requieren energía. Los aviones, trenes y coches con los que nos desplazamos, la calefacción que hace habitables nuestras casas en invierno, nuestros cuerpos, incluso sin realizar ninguna actividad, todo consume energía ya sea en su uso o en su fabricación. En física, ‘energía' se define como la capacidad para realizar un trabajo. Sin embargo, en la vida de todos los días, ‘energía' se refiere a un recurso natural -que suele requerir una tecnología asociada - para extraerla, transformarla, y luego darle un uso. La energía se obtiene a partir de diversas fuentes. El criterio más habitual para diferenciar los tipos de energía es el carácter limitado o no renovable – como petróleo, carbón o gas natural-, o si su procedencia es de fuentes renovables - por ejemplo, solar, eólica, o biomasa. Pero ¿cuál es la diferencia entre potencia y energía? Si nos fijamos en aparatos que usamos en nuestra vida diaria como, por ejemplo, una bombilla, un equipo de aire acondicionado o un secador, todos ellos consumen energía eléctrica y la transforman en un trabajo útil: iluminar, enfriar o secar. En las etiquetas de estos dispositivos podemos leer su potencia, normalmente indicada en watt (W), y esto nos indica la velocidad a la que consumen la energía. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 27 of 38 TUTORIAL La energía consumida por un equipo se calcula multiplicando la potencia del aparato por el tiempo de funcionamiento y se mide en watt-hora (Wh). Por ejemplo, veamos un cálculo del consumo de energía a partir de la potencia: supongamos que tenemos una lámpara de bajo consumo de 18 W de potencia, su consumo a lo largo de un día sería 18 W multiplicado por 24 horas, es decir, 432 Wh de energía. La unidad Wh es una unidad artificial, que es equivalente a la unidad de energía Joule. Manejar este concepto tiene utilidad práctica A diario nos encontramos con esta diferenciación entre potencia y energía: - Suele figurar en nuestra cuenta de electricidad cuando se nos indica "potencia contratada", es aquella cantidad de energía que se nos reserva, es decir, a la que tenemos derecho por contrato. - Mientras que el "consumo de energía" es aquella que realmente hemos consumido en el periodo de tiempo al que se refiere el recibo y está controlada por un contador. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 28 of 38 TUTORIAL Unidades de medida de la Potencia En un circuito AC, la potencia es más eficiente cuando la corriente está en fase con el voltaje. Sin embargo, la mayoría de los equipos tienden a extraer la corriente con un retardo, desfasándose con la onda de voltaje. Esto se traduce en que más corriente está siendo consumida para suministrar la cantidad necesaria de energía para hacer funcionar el equipo. Y cuanta más corriente consume un equipo con algún retardo, menos eficiente es el equipo. El factor de potencia es una forma de medir la eficiencia con que la energía eléctrica se utiliza en el sistema eléctrico de una instalación, a través del análisis de los componentes de energía eléctrica en un circuito AC. Estos componentes se conocen como potencia real, potencia aparente y potencia reactiva: • La potencia real (W) – la potencia que realiza trabajo y que se utiliza para mover el equipo. Su unidad de medida es Watts (W). • La potencia aparente (VA) - la combinación de la potencia real y potencia reactiva. Su unidad de medida es “Volt-Ampere” (VA). • Potencia reactiva (var) – la potencia producida/consumida que no realiza trabajo, se requiere para magnetizar y poner en marcha el equipo. Su unidad de medida es “Volt-Ampere Reactivo” (var). *Debemos tener en cuenta que lo anterior es una definición simplificada de los conceptos expuestos. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 29 of 38 TUTORIAL El triángulo de Potencia Los conceptos de Potencial Real o Activa (P), Potencia Aparente (S) y Potencia Reactiva (Q) se pueden representar gráficamente como vemos en la figura superior. En general, encontraremos estos términos referidos con sus letras PSQ en la mayoría de los sistemas de medición que hay en el mercado. El Factor de Potencia Como se mencionó antes, el ángulo de este "triángulo de potencia" indica gráficamente la relación entre la cantidad de potencia disipada y la cantidad de potencia absorbida / devuelta. También pasa a ser el mismo ángulo que el de la impedancia del circuito en su representación en coordenadas polares. Cuando se expresa como una fracción, esta relación entre la potencia real y la potencia aparente se llama “factor de potencia” para este circuito. Debido a que la verdadera potencia y la potencia aparente forman los lados adyacentes y la hipotenusa de un triángulo rectángulo, respectivamente, la relación del factor de potencia es también igual al coseno de ese ángulo de fase. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 30 of 38 TUTORIAL Utilizando algunos valores de ejemplo: Debe tenerse en cuenta que el factor de potencia, como todas las mediciones de relación, es una cantidad adimensional. Para un circuito puramente resistivo, el factor de potencia es 1 (perfecto), porque la potencia reactiva es igual a cero. Aquí, el triángulo de poder se vería como una línea horizontal, porque el lado contrario (potencia reactiva) tendría una longitud cero. Para un circuito puramente inductivo, el factor de potencia es cero, porque la potencia activa es igual a cero. Aquí, el triángulo de potencia se vería como una línea vertical, porque el lado adyacente (la potencia activa) tendría longitud cero. Lo mismo podría decirse de un circuito puramente capacitivo. Si no hay componentes disipativos (resistivos) en el circuito, entonces la potencia real debe ser igual a cero, por lo que cualquier potencia en el circuito es puramente reactiva. El triángulo de potencia para un circuito puramente capacitivo de nuevo sería una línea vertical (apuntando hacia abajo en lugar de hacia arriba como lo fue para el circuito puramente inductivo). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 31 of 38 TUTORIAL El factor de potencia debe ser un aspecto importante a considerar en un circuito de AC, ya que cualquier factor de potencia menor que 1 significa que el cableado del circuito tiene que transportar más corriente de lo que sería necesario con cero reactancias en el circuito para suministrar la misma cantidad de potencia real a la carga resistiva. Un factor de potencia pobre genera un sistema ineficiente Un factor de potencia ineficiente se puede corregir, paradójicamente, mediante la adición de una nueva carga para el circuito de una cantidad igual y opuesta a la potencia reactiva, para anular los efectos de la reactancia de la carga. La reactancia inductiva sólo se puede cancelar con una reactancia capacitiva, por lo que hay que añadir un condensador en paralelo a nuestro circuito como carga adicional (y viceversa). El efecto de estas dos reactancias opuestas en paralelo es lograr que la impedancia total del circuito sea igual a su resistencia total (para hacer que el ángulo de fase sea igual, o al menos cercana a cero). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 32 of 38 TUTORIAL Cómo medir el consumo de un equipo usando la tarjeta Arduino Energy Shield Una vez que hayamos realizado los pasos previos, y teniendo en cuenta las definiciones del capítulo anterior, podemos realizar las mediciones usando nuestro circuito. En este punto, ya deberíamos tener el circuito armado y conectado a la red eléctrica (sin haber conectado el equipo a medir aun). Esto es de vital importancia pues el chip necesita tener una referencia para realizar las mediciones (paso por cero de la onda de voltaje). Si todo marcha en orden, deberíamos tener las mediciones iniciales en cualquiera de nuestras salidas: CONSOLA SERIAL * Se ha detectado un problema intermitente en los controladores de Windows 7, que bloquea la consola serial de Arduino cuando se realiza un cambio en la carga o dispositivo a medir. Si se presenta este comportamiento, se recomienda reiniciar el controlador USB (reconectando) o usar otra consola Serial (como Putty o Hércules). Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 33 of 38 TUTORIAL GLCD Consola XBEE ++ Como vemos, en todas nuestras salidas podemos observar los mismos valores iniciales (similares), en este punto el más importante es el valor del voltaje medido desde la red eléctrica el cual para Chile debe ser cercano a los 220 [V] con una frecuencia de 50[Hz] o un periodo de 20 [ms]. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 34 of 38 TUTORIAL No debemos olvidar dos factores importantes: LOS VALORES PRESENTADOS SON REFERENCIALES SIEMPRE DEBEMOS TENER CONECTADA LA REFERENCIA DE LA RED ELECTRICA Ahora, debemos conectar un equipo que consuma energía eléctrica al enchufe hembra disponible en nuestro circuito (marcado como LOAD). A LA RED ELECTRICA Hecho lo anterior, ya solo nos queda realizar las mediciones o hacer nuestra instalación del sistema de monitoreo ! Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 35 of 38 TUTORIAL ANEXO 1 Como modificar el código y algunos tips sobre su implementación La siguiente sección describe algunos números mágicos o constantes de proporcionalidad que se encuentran en la implementación del código. Las constantes de proporcionalidad usadas, son derivadas de las características propias del chip medidor de energía ADE7753 y de los criterios de diseño del hardware. En este último se han usado atenuadores para adaptar las entradas esperadas por el chip, lo cual influye en las mediciones finales realizadas. *El chip espera que sus entradas análogas no superen los 2.5 [V], por lo cual es imprescindible el adaptar las entradas desde la red eléctrica. Archivo: DemoTutorial.ino Línea 88 -91 kv = (ratioTraf)*VOLTDIV*(0.5/0x2851EC); //(0.5/0x2851EC) From Datasheet ki = CURRDIV*(0.5/0x17D338); //(0.5/0x17D338) From Datasheet ke = (10/16.0)*VOLTDIV*CURRDIV/4096.0; // 1/(2^12) basetime = (1.0*NUMCYC)/100.0; // tiempo por el cual se acumula energia kt=CLKIN/8; //period register, resolution x.y[us]/LSB -per bit- Para acelerar el procesamiento, se pueden reemplazar estos valores por su equivalente numérico, sin embargo se puede volver más difícil incorporar modificaciones al circuito (en sus componentes externas o internas), y dada la ubicación de las mismas en el código su cálculo no afecta la toma de mediciones. También, debemos tener presente que en algunos casos será necesario reemplazar o cambiar algunos valores, derivados de modificaciones hechas al hardware por mejoras o nuevas revisiones. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 36 of 38 TUTORIAL Los valores derivados del diseño del hardware, los podemos encontrar en Archivo: ADE7753.h Línea: 128-130 #define VOLTDIV 48 //By desing, rel 1/48 #define CURRDIV 50 //By desing, rel 1/48 #define NUMCYC 20 Relación de vueltas del transformador de voltaje (referencia de cruce por cero) El transformador que se indica en la configuración de conexión, se utiliza para atenuar la entrada a la tarjeta Arduino Energy Shield, la cual está diseñada para recibir 12 [V] desde la referencia de voltaje de la red eléctrica. Internamente se tiene además un atenuador o divisor de tensión de relación cercana a 1:50 (en la sección anterior se indica donde se encuentra y como modificarlo). Si se usa un transformador con una relación de transformación diferente a 220:12, se debe modificar este valor en: Archivo: DemoTutorial.ino Línea: 37 #define ratioTraf (220/12) //18.3 Se debe tener presente que el circuito está diseñado para operar con una entrada en el rango de 12 [V], si se desea usar un transformador de una relación de transformación muy diferente se deberá modificar el hardware (divisor de tensión del canal de voltaje) y reemplazar el nuevo valor en el código fuente (VOLTDIV), esto debido a que el chip no soporta una entrada superior a los 2.5[V]. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 37 of 38 TUTORIAL Numero de vueltas del cable de medición de corriente En la configuración de conexionado se indica que se debe hacer pasar un único cable del circuito a través del sensor de corriente. Por temas de diseño se ha optado por esta solución que es bastante simple, sin embargo por temas de resistencia mecánica o mejorar la precisión en la medición de la corriente podemos optar por enrollar el cable con más de una vuelta a través del sensor de corriente: esto tendrá un impacto directo en la medición realizada pues el sensor de corriente medirá N veces la corriente que pasa por el cable, siendo N el número de vueltas que se enrolle el cable en el sensor. Si se opta por realizar esta conexión, se debe modificar el código para incluir el número de vueltas o atenuar las mediciones extras realizadas por el sensor de corriente. Archivo: DemoTutorial.ino Línea: 63 ki = CURRDIV*(0.5/0x17D338) / N; Donde N representa el número de vueltas que se utilizó. Sobre esta situación, también podemos encontrarnos con sensores de corriente que ya incluyen una relación de atenuación, y que generalmente viene indicada en el mismo sensor. Para incorporar está atenuación en la medición debemos modificar la misma constante de medición ki, solo que esta vez tendremos que amplificar por el radio de atenuación señalado. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl ARDUINO ENERGY SHIELD Page 38 of 38 TUTORIAL Como modificar el cruce por cero y dejar el chip en lazo abierto Una característica que puede ser útil, pero que no está recomendado usar, es quitar el cruce por cero para realizar mediciones en situaciones muy particulares (por ejemplo, medir una onda continua): Sin embargo, debemos tener presente que realizar esto altera el funcionamiento del chip el cual está diseñado para opera usando la referencia de cruce por cero. En el datasheet del chip podemos encontrar información sobre este tópico en la sección ‘Zero Crossing’. Archivo: ADE7753.cpp Línea: múltiples El flag que debemos buscar se llama ZX y define que las funciones de medición esperen el evento de cruce por cero de la onda de voltaje para realizar la medida. Las funciones más comunes donde podemos realizar esta modificación se llaman getIRMS() y getVRMS(). En ambas funciones podemos modificar la línea del ciclo while para que luzca así: while( ! ( ADE7753::getInterruptStatus() ) ) Con esto lograremos que la medición se realice de manera directa (en lazo abierto), y ya no será obligatorio tener la referencia de la red eléctrica para realizar las mediciones. Luis Thayer Ojeda 0115 Of. 1105 ▪ Santiago, Chile ▪ Tel. +56 2 23339579 ▪ info@olimex.cl www.olimex.cl