scieee Open visual document viewer

Desarrollo de una aplicación con Arduino para la monitorización y registro de los datos de producción energética de la instalación solar fotovoltaica de la EEBE

Ruiz Agüera, Juan Carlos

Abstract

A aquest apartat es pretén donar una visió general del projecte a realitzar. Sense entrar en detalls tècnics però deixant clares les funcionalitats del mateix.El projecte consisteix a desenvolupar una aplicació que sigui capaç de monitoritzar i analitzar el comportament d’una instal·lació fotovoltaica. Per això, comptem amb un analitzador de xarxa i una placa ARDUINO MEGA 2560 amb la qual s’analitzaràn i trataràn les dades rebudes.L’analitzador de xarxa es connectarà entre el convertidor DC/AC de la instal·lació fotovoltàica i la xarxa elèctrica per obtenir les dades de producció de la instal·lació. L’analitzador té sortides RS-485 i USB. En el nostre cas es connectarà a través de la sortida RS-485 amb la que compte.A la Figura 1podem veure el diagrama de fluxe de la instal·lació. Es programarà el software necessari pel tractament de les dades i es carregarà a la placa. D’aquesta manera, la placa ARDUINO Ethernet serà capaç de tractar-les dades d’entrada i enviar-les desprès ala xarxa per poder consultar-lesa distancia, creant-se també un registre històric que podrà ser diari, setmanal, mensual... A més, es pretén també dotar el projecte amb un entorn gràfic per que en un futur les dades puguin ser mostrades a un monitor.Les dades mostrades seran tant de potències i energies generades per la instal·lació, com de la repercussió en el medi ambient que aquesta té.

Full text

TRABAJO FINAL DE GRADO G ado en Enginye ia Elec ónica Indus ial i Au omá ica DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. Memó ia y Anexos Au o : Juan Ca los Ruiz Agüe a Di ec o : Guille mo Velasco Con oca ó ia: Ene o 2019 Desa ollo de una aplicación con A duino pa a la moni o ización y egis o de los da os de p oducción ene gè ica de la ins alación sola o o ol aica de la EEBE. i Resum A aques apa a es p e én dona una isió gene al del p ojec e a eali za . Sense en a en de alls écnics pe ó deixan cla es les uncionali a s del ma eix. El p ojec e consis eix a desa olla una aplicació que sigui capaç de moni o i za i anali za el compo amen d’una ins al·lació o o ol aica. Pe aixó, comp em amb un anali zado de xa xa i una placa ARDUINO MEGA 2560 amb la qual s’anali za àn i a a àn les dades ebudes. L’anali zado de xa xa es conec a à en e el con e ido DC/AC de la ins alació o o ol aica i la xa xa eléc ica pe ob eni les dades de p oducció de la ins alació. L’anali zado é so ides RS-485 i USB. En el nos e cas es connec a á a a és de la so ida RS-485 amb la que comp e. A la Figu a 1 podem eu e el diag ama de luxe de la ins al·lació. Figu a 1. Diag ama de lujo de los da os (Fuen e: Juan Ca los Ruiz). Es p og ama à el so wa e necessa i pel ac amen de les dades i es ca ega à a la placa. D’aques a mane a, la placa ARDUINO E he ne se á capaç de ac a les dades d’en ada i en ia -les desp ès a la xa xa pe pode consul a -les a dis ancia, c ean -se ambé un egis e his ò ic que pod à se dia i, se manal, mensual… A més, es p e én ambé do a el p ojec e amb un en o n g á ic pe que en un u u les dades puguin se mos ades a un moni o . Les dades mons ades se án an de po ències i ene gies gene ades pe la ins al·lació, com de la epe cusió en el medi ambien que aques a é. Memo ia ii Resumen En es e apa ado se p e ende da una isión gene al del p oyec o a ealiza . Sin en a en de alles écnicos pe o dejando cla as las uncionalidades del mismo. El p oyec o consis e en el desa ollo de una aplicación que sea capaz de moni o iza y analiza el compo amien o de una ins alación o o ol aica. Pa a ello, se cuen a con un analizado de ed y una placa ARDUINO en la cual se analiza án y a a án los da os ecibidos. El analizado de ed se conec a á en e el con e ido DC/AC de la ins alación o o ol aica y la ed eléc ica pa a ob ene los da os de p oducción de la ins alación. Cuen a con salidas RS-485 y USB. En nues o caso se conec a á a la placa ARDUINO MEGA 2560 a a és de la conexión RS-485 con la que cuen a. En la Figu a 2 podemos e el diag ama de lujo de la ins alación. Figu a 2. Diag ama de lujo de los da os (Fuen e: Juan Ca los Ruiz). Se p og ama á el so wa e necesa io pa a el a amien o de los da os y se ca ga á en la placa. De es a mane a, la placa ARDUINO E he ne se á capaz de a a los da os de en ada y manda los después a la ed pa a pode consul a los a dis ancia, c eándose ambién un egis o his ó ico que pod á se dia io, semanal, mensual… Además, se p e ende ambién do a al p oyec o con un en o no g á ico pa a que en un u u o los da os puedan se mos ados en un moni o . Los da os mos ados se án an o de po encias y ene gías gene adas po la ins alación, como de la epe cusión medioambien al que es a iene. Desa ollo de una aplicación con A duino pa a la moni o ización y egis o de los da os de p oducción ene gè ica de la ins alación sola o o ol aica de la EEBE. iii Abs ac In his pa ag aph we alk abou he p ojec in a gene al way. We don' explain echnical de ails bu we will explain clea ly i s unc ionali y. The p ojec consis s in he de elopmen o an applica ion ha is able o moni o ing and analyzing he beha io o a pho o ol aic sys em. Fo his, i has a ne wo k analyze and an ARDUINO boa d in which he da a ecei ed will be analyzed and p ocessed. The ne wo k analyze will be connec ed be ween he DC/AC con e e and he elec ici y g id o ob ain he p oduc ion da a o he ins alla ion. Analyze ha e RS-485 and USB ou pu s. In he Figu e 3 you can see he lowcha o he ins alla ion. Figu a 3. Diag ama de lujo de los da os (Fuen e: Juan Ca los Ruiz). The necessa y so wa e o p ocessing he da a will be p og ammed and loaded on o he boa d. In his way, he ARDUINO E he ne boa d will be able o p ocess he incoming da a and hen send hem o he ne wo k o be able o consul hem emo ely. In addi ion, an g aphic en i onmen will be implemen ed so ha in u u e he da a can be displayed on a moni o . The da a shown will be he powe s and ene gies gene a ed by he ins alla ion. Also he en i onmen al epe cussion ha his has. Memo ia i Ag adecimien os Me gus a ía da las g acias a odos los que han colabo ado en la ealización de es e p oyec o de inal de g ado. En p ime luga a mi u o Guille mo Velasco, po su ayuda i comp omiso du an e la ealización del p oyec o. También a mis compañe os, que me han dado su ayuda de mane a o almen e desin e esada en odo momen o, no solo du an e la ealización del p oyec o sino ambién du an e odo el g ado. Habéis hecho de es os años que hemos es udiado jun os una g an expe iencia. Tan o a los compañe os de la EUETIB como a an e io men e a mis compañe os de la EPSEM. A mis amigos de oda la ida, g acias po da me apoyo en odo momen o i po es a siemp e a mi lado. Sois una pasada. I inalmen e, ag adece a mis pad es po odos los es ue zos que habéis hecho pa a que yo haya enido la opo unidad de ene una buena educación. Espe o habe la ap o echado como os me ecéis. G acias po odo lo que habéis hecho, hacéis y ha éis po mí. Solo puedo es a e e namen e ag adecido y o gulloso de ene os. Desa ollo de una aplicación con A duino pa a la moni o ización y egis o de los da os de p oducción ene gè ica de la ins alación sola o o ol aica de la EEBE. Memo ia i Glosa io  Placa de desa ollo ha dwa e: es una compu ado a comple a en un sólo ci cui o. El diseño se cen a en un sólo mic op ocesado con la RAM, E/S y odas las demás ca ac e ís icas de un compu ado uncional en una sola a je a que suele se de amaño educido, y que iene odo lo que necesi a en la placa base.  A duino: es una compañía open sou ce y open ha dwa e, así como un p oyec o y comunidad in e nacional que diseña y manu ac u a placas de desa ollo de ha dwa e.  Shield: un shield en es una placa que se apila sob e el A duino, de o ma que nos pe mi e amplia el ha dwa e o las capacidades del mismo.  Raspbe y: es un o denado de placa educida, o denado de placa única u o denado de placa simple (SBC) de bajo cos e desa ollado en el Reino Unido po la Fundación Raspbe y Pi, con el obje i o de es imula la enseñanza de in o má ica en las escuelas.  RS485: es un es ánda de comunicaciones en bus de la capa ísica. Es á de inido como un sis ema de bus di e encial mul ipun o, es ideal pa a ansmi i a al as elocidades sob e la gas dis ancias (10 Mbi /s has a 12 me os y 100 kbi /s en 1200 me os) y a a és de canales uidosos, ya que el pa enzado educe los uidos elec omagné icos que se inducen en la línea de ansmisión.  Cable de pa enzado: es un ipo de conexión que iene dos conduc o es eléc icos aislados y en elazados pa a anula las in e e encias de uen es ex e nas y dia onía de los cables adyacen es.  E he ne : es un es ánda de edes de á ea local.  H ml: es un lenguaje de p og amación que se u iliza pa a el desa ollo de páginas web.  Ja asc ip (JS): es un lenguaje de p og amación lige o, in e p e ado po la mayo ía de los na egado es y que les p opo ciona a las páginas web, e ec os y unciones complemen a ias a las conside adas como es ánda HTML Es e ipo de lenguaje de p og amación, con ecuencia son empleados en los si ios web, pa a ealiza acciones en el lado del clien e, es ando cen ado en el código uen e de la página web. Desa ollo de una aplicación con A duino pa a la moni o ización y egis o de los da os de p oducción ene gè ica de la ins alación sola o o ol aica de la EEBE. ii  P o ocolo MODBUS: es un p o ocolo de comunicaciones, basado en la a qui ec u a maes o/escla o o clien e/se ido .  Analizado de ed: es un ins umen o capaz de analiza las p opiedades de las edes eléc icas. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 5 3. Ingenie ía de la concepción 3.1. Es udio de las di e en es posibilidades En es e apa ado se p e ende ealiza un es udio sob e las di e en es posibilidades y ecnologías que exis en en el me cado ac ual pa a ealiza un p oyec o de las ca ac e ís icas del nues o. Pa a ello se ha á una compa ación en e dos de las he amien as más usadas en p oyec os elec ónicos: Raspbe y Pi y A duino. Exis en a ias di e encias en e es as dos he amien as, aunque la mayo ía de p oyec os se pod ían ealiza con ambas. A duino es un mic ocon olado que podemos conec a a nues o o denado di ec amen e a a és de su bus USB y p og ama lo en unción de las necesidades de nues o p oyec o, sin emba go no cuen a con un sis ema ope a i o p opio. Figu a 3.1. A duino Uno (Fuen e: www.a duino.cc). Sin emba go es an o ha dwa e como so wa e ya que g acias a los emulado es exis en es podemos simula nues os p oyec os desde el o denado pe sonal. Pod emos hace conexiones i uales y p og ama lo pa a comp oba cual se ía su compo amien o eal. A duino es po lo an o una pla a o ma simple y dedicada a mon a sob e ella los componen es necesa ios pa a c ea el p oyec o. Memo ia 6 Uno de los pun os ue es del A duino es su acilidad pa a conec a se con o os disposi i os a a és de sus pue os de en ada/salida analógicas y digi ales, p og amándolas ácilmen e desde el so wa e. Además, cuen a con g an can idad de shields de expansión capaces de equipa lo con unciones como conec i idad WI-FI, GPS, conexión E he ne , displays... G acias a eso, A duino iene una g an acilidad de p o o ipado en muchos p oyec os dis in os. Exis en dos g andes ipos de p oyec os en los que A duino puede se muy ú il. P oyec os en los que se u iliza el mic ocon olado de A duino como único elemen o in eligen e. Y p oyec os en los que A duino se usa como in e az. Raspbe y Pi, sin emba go, es un o denado asequible. Cuen a con un mic op ocesado de en e 256MB y 1GB de memo ia RAM dependiendo del modelo. Raspbe y iene ins alado un sis ema ope a i o de LINUX. Cuen a con mucha más capacidad de cálculo y memo ia, pe o menos capacidad de conexión con pe i é icos y menos adap abilidad en p oyec os sencillos. Figu a 3.2. Raspbe y Pi 3 (Fuen e: www. aspbe ypi.o g ). La e sión Pi modelo 2, po ejemplo, pe mi e incluso ep oducción de ideo en HD, iene 4 pue os USB y cuen a con conexión a ed E he ne . DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 7 No malmen e Raspbe y Pi suele se u ilizada más en p oyec os in o má icos que elec ónicos. En p oyec os en los que la placa hace de in e az A duino suele adap a se mejo , mien as que si nos in e esa ene más capacidad de compu ación Raspbe y Pi es la opción mas adecuada. Pe o no es necesa io elegi siemp e en e una u o a opción, ya que exis en placas que mezclan ca ac e ís icas de las dos pla a o mas. Po ejemplo, la placa UDOO NEO. Aunque es a opción suele se mas ca a que las o as dos. En cuan o al cos e, las dos ienen p ecios muy simila es. Las placas más básicas de ambas ienen un p ecio ap oximado de en e 35 y 50 eu os. Po lo an o no es el p ecio una ca ac e ís ica demasiado impo an e a la ho a de elegi una u o a opción. La di e encia po lo an o la ma ca el hecho que A duino se adap a mejo a ope aciones de cap u a de da os y manejo de ha dwa e ex e no. Memo ia 8 3.2. Solución elegida Como se ha comen ado con an e io idad, el analizado de ed dispone de dos posibilidades pa a la ansmisión de los da os. Podemos u iliza un adap ado p opo cionado po el ab ican e (CIRCUITOR) de RS485 a USB y de es a mane a ecibi los da os a a és del bus USB, o po el con a io, podemos ecibi los da os di ec amen e po el bus RS485 con el que cuen a el analizado . Tan o Raspbe y como A duino necesi an de un componen e (shield) ex e no pa a pode ecibi los da os a a és del bus RS485. Sin emba go, el manejo de es as placas de expansión és mas sencillo en A duino. Po lo an o, dado el ca ác e elec ónico de nues o p oyec o y la necesidad de u iliza di e en es componen es de ha dwa e pa a la adquisición de los da os del analizado de ed, se conside a más e icien e pa a el desa ollo del mismo la elección de una placa A duino. A con inuación se p esen an los di e en es modelos de A duino exis en es ac ualmen e. P ime amen e hay que acla a que exis en dos ipos de p oduc os de la ma ca A duino en el me cado. Las placas que con ienen el mic ocon olado que con ola el p oceso y que se puede p og ama a a és del bus USB. Y los shields que no son más que placas compa ibles conec ables a la placa p incipal y que la do an de di e en es uncionalidades. ARDUINO UNO Se a a de la placa es ánda , la más conocida y documen ada. Se puso a la en a en sep iemb e de 2010 y con iene el mic ocon olado A mega328 con 32 Kby es de memo ia ROM pa a el código del p og ama. También cuen a con conexión USB HID. Figu a 3.3. A duino UNO (Fuen e: www.a duino.cc ). DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 9 ARDUINO MEGA Es e es el modelo más po en e de A duino. Es el que más pines de en ada/salida iene. Es á ab icado pa a ealiza con él p oyec os más complejos. Cuen a con un mic ocon olado A mega2560 con más memo ia ROM pa a el p og ama y más memo ia RAM que el es o de modelos. Figu a 3.4. A duino MEGA (Fuen e: www.a duino.cc ). ARDUINO ETHERNET Es básicamen e una e sión del ARDUINO UNO con conexión de ed E he ne . Sin emba go, no cuen a con conec o USB. También cuen a con anu a pa a a ge a de memo ia Mic o SD. Figu a 3.5. A duino ETHERNET (Fuen e: www.a duino.cc ). Memo ia 10 ARDUINO DUE Es e es el modelo con mayo capacidad de p ocesamien o. Con iene el mic ocon olado A mel SAM3X8E ARM Co e-M3 CPU. Se a a de un mic ocon olado de 32 bi y a qui ec u a ARM. O a g an di e encia de es e modelo con el es o es que se alimen a a 3,3 V. Es o supone una limi ación ya que la mayo ía de shields, senso es y ac uado es pa a ARDUINO se alimen an a 5 V. Figu a 3.6. A duino DUE (Fuen e: www.a duino.cc ). ARDUINO LEONARDO La di e encia de es e modelo con el es o es que usa el mic ocon olado ATmega32u4 que iene in eg ado la comunicación USB, con lo cual se elimina la necesidad de usa un segundo mic ocon olado pa a es a inalidad. Figu a 3.7. A duino LEONARDO (Fuen e: www.a duino.cc ). DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 11 ARDUINO MICRO Es á basado en el ATmega32u4 del ARDUINO LEONARDO pe o la placa iene un o ma o mucho más compac o. Figu a 3.8. A duino MICRO (Fuen e: www.a duino.cc ). ARDUINO MINI Es una e sión más pequeña del modelo ARDUINO UNO. La única di e encia con es e modelo es que no cuen a con conec o USB. Figu a 3.9. A duino MINI (Fuen e: www.a duino.cc ). Memo ia 12 Dadas las ca ac e ís icas del p oyec o que amos a ealiza , se han alo ado dos opciones de o ma más de allada con la in ención de elegi la opción que nos acili e pos e io men e diseña lo de la mane a más cómoda. La p ime a opción es u iliza la placa ARDUINO ETHERNET, eniendo en cuen a que es a no cuen a con conec o USB. La segunda opción es elegi el modelo ARDUINO MEGA jun o con una placa shield de conexión a ed E he ne . Conc e amen e la conexión E he ne se ealiza ía a a és de la E he ne Shield W5100. A duino E he ne es una placa basada en el mic ocon olado ATmega328, es á basada en el modelo A duino UNO. Dispone de 14 pines I/O, 6 en adas analógicas, un c is al de 16MHz, un conec o de ed RJ45, conec o de alimen ación, un zócalo ICSP pa a ca ga el mic ocon olado y un pulsado de RESET. Es la combinación en una sola placa de un A duino UNO y una E he ne Shield en un meno espacio ísico. En es e modelo los pines 10, 11, 12 y 13 es án ese ados pa a la in e az E he ne y no se deben u iliza pa a o os p opósi os. Es o educe la can idad de pines disponibles a 9 y a 4 con sopo e PWM. Una de las g andes di e encias de es e modelo es que no dispone de un conec o USB ni del chip con e so USB/Sé ie, po lo an o es necesa io un cable FTDI 5V pa a pode p og ama lo lo que hace que sea una a ea mas á dua. Dispone ambién de un zócalo pa a a je as de memo ia Mic oSD que puede se u ilizado pa a lee y esc ibi da os y es muy in e esan e en el caso de pequeños p oyec os de se ido es web. El pin 10 es á ese ado pa a la in e az con el chip Wizne . El pin SS pa a la a je a Mic oSD es á disponible en el pin 4. Es o hay que ene lo en cuen a al u iliza las lib e ías que manejan la a je a SD. El p ecio de es a placa es de 39,90 €. Po o a pa e, el modelo A duino MEGA es una placa elec ónica basada ambién en el mic op ocesado A mega2560. Tiene 54 en adas/salidas digi ales y 15 de es as pueden u iliza se pa a salidas PWM. Además cuen a ambién con 16 en adas analógicas, un oscilado de 16MHz, una conexión USB al con a io que el modelo comen ado an e io men e, un conec o de alimen ación, un heade ICSP y un pulsado pa a el RESET. És e modelo inco po a au oselección del ol aje de alimen ación (DC/USB) g acias a un chip MOSFET incluido en la placa. Además, dispone del boo loade Op iBoo que pe mi e ca ga p og amas a DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 13 115Kbps. Cuen a con salidas DC a 5V y 3,3V que hacen posible abaja con p ác icamen e odo ipo de ha dwa e ex e no. A la placa, se conec a ía la E he ne Shield W5100. Es á basada en el chip W5100 , con las lib e ías o iciales E he ne , y pe mi e la conexión del A duino MEGA a una ed E he ne y su alimen ación a a és de es a línea. El p ecio del A duino MEGA es de 36,62€, mien as que el de la E he ne Shield onda los 10€. Po lo an o el p ecio o al de las dos es a á al ededo de 45€. De es a mane a eniendo en cuen a las ca ac e ís icas del p oyec o y que el espacio no es una cues ión c i ica en el p oyec o, se op a po la segunda opción. De es a mane a además, el ARDUINO se pod á ca ga ía USB de mane a más sencilla sin necesidad de usa un p og amado ICSP. Aho ando ambién dine o ya que el p ecio de es as dos placas es meno que el del modelo ARDUINO ETHERNET. El modelo A duino MEGA iene 256kb de memo ia lash, 8 kb de SRAM y 4 kb de EEPROM. Figu a 3.10. A duino ETHERNET SHIELD (Fuen e: www.a duino.cc ). En memo ia lash es donde se gua da la imagen del p og ama y la da a inicializada. Se a a de una memo ia no olá il, no se bo a cuando la alimen ación se desconec a. La memo ia SRAM es la que se usa mien as el p og ama se es á ejecu ando. La usan las a iables locales, las llamadas a unciones... Hay que ene cuidado con el uso que se le da a es a memo ia ya que, po ejemplo, se equie e una g an can idad de ella (512 by es ap ox.) pa a abaja con las unciones p opias del manejo de la a je a SD. Memo ia 20 3.4. T a amien o de los da os En es e apa ado se de alla el a amien o que se da á a los da os una ez ecibidos a a és del bus RS485. La consul a de da os se ealiza á cada 5 segundos. Se p egun a á al disposi i o analizado de ed po los 6 pa áme os siguien es: ol aje, in ensidad, po encia ac i a, ac o de po encia, ecuencia y ene gía ac i a. Una ez ecibida la espues a po pa e del analizado , se con ie en los da os a o ma o decimal y se egis an en un iche o. El mensaje de consul a es el siguien e: "0A04000000147EF1". Donde: By es Desc ipción 01 Núme o de pe i é ico del CVM-SP 04 Función de lec u a 00 00 Di ección inicial de lec u a 00 14 Núme o de egis os a lee (20 en decimal) 7E F1 Ca ac e es CRC Cada egis o cons a de 2 by es, po lo an o se lee án 40 by es de los egis os de in o mación del analizado . El mensaje de espues a iene el siguien e aspec o: “0A 04 0c aa aa aa aa bb bb bb bb cc cc cc cc dd dd ee ee gg gg CRC” Se eciben 40 by es en o al con ca ac e es hexadecimales. Donde: DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 21 By es Desc ipción 01 Núme o de pe i é ico del CVM-SP 04 Función de lec u a 28 By es ecibidos (40 en decimal) aa aa aa aa By es de in o macion (4 by es pa a cada pa áme o) CRC Ca ac e es CRC (2 by es) Las posiciones de los egis os de cada da o se mues an en la siguien e abla. Pa áme o Posición en el a ay (decimal) Vol aje [01,02] In ensidad [03,04] Po encia Ac i a [05,06] Po encia Reac i a [07,08] Fac o de Po encia [09,10] Cos α [11,12] F ecuencia [13,14] %THD V [15,16] %THD I [17,18] Ene gia Ac i a [19,20] Ene gia Reac i a Induc i a [21,22] Memo ia 22 Ene gia Reac i a Capaci i a [23,24] Po encia Apa en e [25,26] Demanda Máxima [27,28] Pa a con e sión de los da os p ime amen e se gua dan odos los by es ecibidos en un a ay.Después se ex ae cada da o numé ico de cua o by es del a ay, pa a cada uno de los da os ecibidos, ex ayendo de la cadena ecibida los by es de las posiciones co espondien es a cada pa áme o y gua dándolos en una a iable ipo in pa a su mejo manejo en el es o del p oceso. Pese a que los da os se eciben cada 5 segundos, no se g aba un egis o cada ez que se eciben. Los da os ecibidos se displayan en iempo eal en la web en iada a a és de la ed E he ne , a la ez que se hace la media de los da os en lapsos de ap oximadamen e 3 minu os. La media de es os 3 minu os es la que se egis a en el iche o de la a je a SD. El iche o se mon a á dándole el o ma o .cs adecuado pa a pos e io men e pode expo a lo a la he amien a Excel de Mic oso O ice. La p ime a ila con end á, sepa ados po un pun o y coma, los enunciados de las columnas del iche o. Las siguien es ilas con end án odos los da os de los pa áme os ecogidos a a és del bus, en o ma o decimal y sepa ados ambién po pun o y coma. El p ime da o de la ila se á siemp e la echa y ho a en que se han ecogido esos da os. La ecogida de la ho a se ha á a a és de una consul a a a és de la ed y se g aba a con o ma o "hh:mm". Con el egis o de es os da os lo que se p e ende es conoce mejo el compo amien o de la ins alación o o ol aica. Pudiendo así ex ae pa ones de compo amien o como: picos de consumo y p oducción, ho as en las que se p oduce menos ene gía, ho a ios de demanda máxima de ene gía… Pudiendo así adap a la ins alación pa a que el ap o echamien o de la ene gía sea máximo. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 23 4. Ingenie ía del desa ollo En es e apa ado se p e ende explica el uncionamien o del p oyec o desde un pun o de is a más écnico, así como las di e en es ases de su desa ollo y las di e en es he amien as u ilizadas. Pa a desa olla y compila el código se ha u ilizado el so wa e disponible en la web de A duino. El so wa e cuen a con las lib e ías necesa ias pa a la p og amación de la placa. Pa a ealiza p uebas an es de ca ga el p og ama gene ado en la placa A duino se ha usado el so wa e F i zing como he amien a de simulación. El p og ama dispone de los elemen os necesa ios pa a simula el mon aje y las conexiones en e las di e en es shields, y ca ga el código uen e pa a e alua pos e io men e su compo amien o. A con inuación se mues a el mon aje en F i zing pa a la simulación del p oyec o: Figu a 4.1. Esquema elec ónico mon aje (Fuen e: Juan Ca los Ruiz ). Memo ia 24 Pa a conec a la placa de expansión E he ne a nues a placa A duino MEGA no enemos más que hace coincidi los pines de las dos placas y ajus a los has a que queden bien conec ados. Como se obse a en la Figu a 4.1, los pines 4, 10, 11, 12 y 13 quedan u ilizados en exclusi a po la E he ne Shield. Pa a conec a el d i e de comunicación RS485 a la placa A duino MEGA se conec an los pines de ansmisión se ie Rx y Tx a sus análogos en la placa A duino (pines 0 y 1 espec i amen e). Los pines R2 y R3 se conec an a dos de las salidas digi ales de la placa, en nues o caso los pines 2 y 3. De es a mane a el disposi i o puede ac ua en modo hal duplex, an o de ecep o (poniendo la salida a 0) como de emiso (poniendo la salida a 1). El aspec o del mon aje se mues a en las Figu as 4.2, 4.3 y 4.4: Figu a 4.2. E he ne Shield Ve ical (Fuen e: Juan Ca los Ruiz). Vemos que la shield E he ne dispone de una a je a de memo ia Mic o SD de 32 GB. En es a memo ia se g aba á el his ó ico de da os ecibidos a a és del analizado de ed. El PIN 10 queda ese ado pa a la selección de la e he ne shield y el PIN 4 pa a ac i a el uso de la a je a SD. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 25 Figu a 4.3. Encaje placas La e al (Fuen e: Juan Ca los Ruiz ). Los pines de la placa A duino MEGA y Shield E he ne quedan pe ec amen e alineados y encajados. Figu a 4.4. Encaje placas on al (Fuen e: Juan Ca los Ruiz ). Du an e la ejecución del p og ama, la comunicación E he ne y las unciones p opias de la a je a SD no pueden es a ac i as al mismo iempo. Memo ia 26 El p og ama cons a de a ias pa es bien di e enciadas. Tal como se mues a a con inuacion: INICIALIZACIÓN DE VARIABLES GLOBALES SETUP { ESTABLECE COMUNICACIONES RS485 Y ETHERNET } LOOP { RECUPERA FECHA Y HORA PREGUNTA AL ANALIZADOR ESPERA RESPUESTA TRATA DATOS RECIBIDOS CADA 3 MINUTOS { ESTABLECE COMUNICACIÓN CON SD GUARDA DATOS EN TARJETA SD CIERRA COMUNICACIÓN SD } SI HAY CLIENTE CONECTADO { ESTABLECE CONEXIÓN CON SERVIDOR WEB ENVIA WEB CIERRA CONEXIÓN SERVIDOR WEB } En la p ime a pa e de inimos las lib e ías que an a se usadas y las a iables globales del p og ama. En la unción se up() se con igu an las ca ac e ís icas de la comunicación se ie y e he ne . Den o de la uncion loop() enemos odo el p ocedimien o del p og ama, que se ejecu a á de o ma con inua mien as la placa es é alimen ada. La unción loop() iene 4 pa es bien di e enciadas. En la p ime a pa e se ob iene la echa y ho a desde la ed. Después se ealiza la consul a al analizado de ed. Lanzamos la p egun a a a és del pue o se ie y espe amos has a que ecibimos odo el mensaje de espues a. Una ez ecibida la espues a a amos los da os ecibidos, o ma eándolos de la mane a más adecuada a las necesidades del p oyec o. Con los da os ya o ma eados, g abamos un egis o en la a je a con odos los da os en decimal, sepa ados po ";" pa a pode ex ae los en o ma o de hoja de cálculo. Es a pa e se ealiza únicamen e una ez cada 3 minu os, g abando una media de los alo es ob enidos du an e ese pe iodo. El egis o empieza con la echa y la ho a en la que se han ob enido los da os. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 27 Finalmen e, en caso de habe algún clien e coonec ado al se ido web, se mandan los da os a la ed a a és de la comunicación E he ne . A la ho a de a a la g abación del iche o en la a je a SD hay que ene a ias conside aciones p e ias. La placa A duino MEGA 2560 solo es capaz de abaja con o ma os de da os FAT16 o FAT32, po lo an o, end emos que o ma ea la a je a p e iamen e a empeza a abaja con ella pa a asegu a nos que es á con igu ada en uno de es os o ma os. O a cosa a ene en cuen a es que la placa es capaz de lee y esc ibi en la a je a SD pe o no es capaz de o ma ea la ni bo a da os, po lo an o, debemos hace lo p e iamen e desde un o denado . Los nomb es de los iche os deben ene como máximo 8 ca ac e es y una ex ensión de 3 ca ac e es ambién. También hay que ene cuidado a la ho a de es ablece conexiones e he ne y con la a je a SD ya que la shield E he ne no puede abaja con las dos a la ez. El esquemá ico del mon aje se mues a a con inuación en la Figu a 4.5: Figu a 4.5. Esquema elec ónico mon aje (Fuen e: Juan Ca los Ruiz ). Memo ia 28 Vemos como el shield de ansmisión RS485 se con ola a a és de los pines Rx y Tx. La ansmisión se ie se ha con igu ado a una elocidad de 9600 baudios que es la elocidad es ánda de la mayo ía de los disposi i os. A las en adas A y B del MAX485 se conec a el analizado de ed a a és de su pue o de comunicación se ie. La conexión en e la placa y la shield RS485 se ealiza al y como se mues a en la Figu a 4.6: Figu a 4.6. Mon aje placa RS485 (Fuen e: Juan Ca los Ruiz ). 4.1. Módulo RS485 Pa a conec a el módulo MAX485 con la placa A duino y el analizado de ed, en p ime luga , se alimen a el módulo conec ando Vcc y Gnd, espec i amen e, a los pines 5V y Gnd de A duino. Po o o lado, se conec an los conduc o es A(RS485+) y B(RS485-) del pa enzado que cons i uyen el p opio bus RS485, con los pines 2 (RS485+) y 1(RS485-) del analizado de ed. Aho a, se con igu a el módulo como emiso o ecep o , pa a lo cual se emplean los pines RE ( ecei e enable) y DE (d i e enamble). Si se conec an es os pines a Vcc el módulo ac ua á como emiso , y si se conec an a Gnd como ecep o . Finalmen e, se conec an, espec i amen e la en ada de da os al módulo DI (d i e inpu ) en el caso de que ac ué como emiso , o la salida de da os del módulo RO ( ecei e ou pu ) en el caso que ac ué de ecep o . DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 29 Si que emos que du an e la conexión el con e so RS485 pueda cambia su papel de emiso a ecep o (conexión hal duplex) simplemen ese deben conec a los pines RE y DE a una salida digi al pa a pode cambia su ensión de Gnd a Vcc. Figu a 4.7. RS485 Shield (Fuen e: h ps://ap endiendoa duino.wo dp ess.com). El RS485 sólo es un p o ocolo de capa ísica, es deci , un “medio de ansmisión” po el que se puede manda cualquie señal digi al, lo que incluye UART, Modbus, bus SPI, I2C. Pa a conec a se con un disposi i o RS485, como po ejemplo un e mos a o, un senso , o un ac uado indus ial, se necesi a sabe el p o ocolo que emplea y la ama a u iliza . El siguien e ejemplo mues a el uncionamien o en modo hal -duplex, es deci , cada disposi i o puede ac ua como emiso o ecep o , pe o no simul áneamen e. Pa a ello se dispone de dos pines digi ales (pines 2 y 3 en nues o caso) pa a cambia el modo de cada disposi i o. También indicamos el modo en el que es á ope ando cada disposi i o con el pin in eg ado en la placa. El ejemplo simula la solici ud de un da o desde un A duino mas e a un disposi i o sla e. Pa a ello, el mas e en ía un mensaje de solici ud. El sla e esponde en iando una s ing con los da os solici ados, que es ecogido po el mas e . En un p oyec o eal pod íamos en ia dis in os comandos, o una di ección pa a comunica nos con a ios sla es. cons in RS485 = 2; // HIGH = D i e / LOW = Recep o oid se up() { Se ial.begin(9600,SERIAL_8N1); Se ial.se Timeou (100); pinMode(RS485, OUTPUT); } oid loop() { //RS485 ansmiso digi alW i e(RS485, HIGH); Se ial.p in (mensaje_ida[i],BIN); Se ial. lush(); delay(50); //RS485 como ecep o Memo ia 36 4.3. Lib e ía Modbus pa a ARDUINO MEGA 2560 Pa a implemen a el p o ocolo MODBUS en nues o p oyec o A duino se u iliza á la lib e ía ModbusMas e . Es a lib e ía si e pa a es ablece comunicación con cualquie escla o u ilizando el p o ocolo Modbus RTU. Pa a ello se c ea un paque e con oda la in o mación necesa ia pa a comunica se con el escla o, se en ía el paque e y se espe a pa a ecibi la espues a. A con inuación se explica con más de alle el uncionamien o de la lib e ía y su implemen ación den o de nues o p oyec o. Den o de la lib e ía ModbusMas e .h encon amos de inida la clase ModbusMas e jun o con odas las unciones necesa ias pa a es ablece la comunicación. Las unciones u ilizadas son las siguien es: ModbusMas e ModbusMas e ::ModbusMas e ( oid) { _idle = 0; _p eT ansmission = 0; _pos T ansmission = 0; } Se ejecu a cuando se c ea el class objec . node.begin oid ModbusMas e ::begin(uin 8_ sla e, S eam &se ial) { _u8MBSla e = sla e; _se ial = &se ial; _u8T ansmi Bu e Index = 0; u16T ansmi Bu e Leng h = 0; #i __MODBUSMASTER_DEBUG__ pinMode(__MODBUSMASTER_DEBUG_PIN_A__, OUTPUT); pinMode(__MODBUSMASTER_DEBUG_PIN_B__, OUTPUT); #endi } DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 37 Assigna la di ección del escla o y el pue o se ial de la comunicación. node.p eT ansmission oid ModbusMas e ::p eT ansmission( oid (*p eT ansmission)()) { _p eT ansmission = p eT ansmission; } Es a unción se llama jus o an es de que un mensaje Modbus se en íe a a és del pue o se ie y habili a el ans ecep o RS485. node.pos T ansmission oid ModbusMas e ::pos T ansmission( oid (*pos T ansmission)()) { _pos T ansmission = pos T ansmission; } Es a unción se llama jus o después de que un mensaje Modbus se en íe a a és del pue o se ie y deshabili a el ans ecep o RS485. node. eadInpu Regis e s uin 8_ ModbusMas e :: eadInpu Regis e s(uin 16_ u16ReadAdd ess, uin 8_ u16ReadQ y) { _u16ReadAdd ess = u16ReadAdd ess; _u16ReadQ y = u16ReadQ y; e u n ModbusMas e T ansac ion(ku8MBReadInpu Regis e s); } Es a unción ecibe las ca ac e ís icas de la lec u a que se quie e ealiza en los egis os del escla o y llama a la unción ModbusMas e T ansac ion. De uel e el esul ado de la ansmisión y el mo i o en caso de que no sea exi osa. ModbusMas e T ansac ion uin 8_ ModbusMas e ::ModbusMas e T ansac ion(uin 8_ u8MBFunc ion) { uin 8_ u8ModbusADU[256]; uin 8_ u8ModbusADUSize = 0; uin 8_ i, u8Q y; uin 16_ u16CRC; uin 32_ u32S a Time; uin 8_ u8By esLe = 8; uin 8_ u8MBS a us = ku8MBSuccess; // assemble Modbus Reques Applica ion Da a Uni u8ModbusADU[u8ModbusADUSize++] = _u8MBSla e; u8ModbusADU[u8ModbusADUSize++] = u8MBFunc ion; swi ch(u8MBFunc ion) { Memo ia 38 case ku8MBReadInpu Regis e s: u8ModbusADU[u8ModbusADUSize++] = highBy e(_u16ReadAdd ess); u8ModbusADU[u8ModbusADUSize++] = lowBy e(_u16ReadAdd ess); u8ModbusADU[u8ModbusADUSize++] = highBy e(_u16ReadQ y); u8ModbusADU[u8ModbusADUSize++] = lowBy e(_u16ReadQ y); b eak; } // append CRC u16CRC = 0xFFFF; o (i = 0; i < u8ModbusADUSize; i++) { u16CRC = c c16_upda e(u16CRC, u8ModbusADU[i]); } u8ModbusADU[u8ModbusADUSize++] = lowBy e(u16CRC); u8ModbusADU[u8ModbusADUSize++] = highBy e(u16CRC); u8ModbusADU[u8ModbusADUSize] = 0; // lush ecei e bu e be o e ansmi ing eques while (_se ial-> ead() != -1); // ansmi eques i (_p eT ansmission) { _p eT ansmission(); } o (i = 0; i < u8ModbusADUSize; i++) { _se ial->w i e(u8ModbusADU[i]); } u8ModbusADUSize = 0; _se ial-> lush(); // lush ansmi bu e i (_pos T ansmission) { _pos T ansmission(); } // loop un il we un ou o ime o by es, o an e o occu s u32S a Time = millis(); while (u8By esLe && !u8MBS a us) { i (_se ial->a ailable()) { #i __MODBUSMASTER_DEBUG__ digi alW i e(__MODBUSMASTER_DEBUG_PIN_A__, ue); #endi u8ModbusADU[u8ModbusADUSize++] = _se ial-> ead(); u8By esLe --; #i __MODBUSMASTER_DEBUG__ digi alW i e(__MODBUSMASTER_DEBUG_PIN_A__, alse); #endi } else { #i __MODBUSMASTER_DEBUG__ digi alW i e(__MODBUSMASTER_DEBUG_PIN_B__, ue); #endi DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 39 i (_idle) { _idle(); } #i __MODBUSMASTER_DEBUG__ digi alW i e(__MODBUSMASTER_DEBUG_PIN_B__, alse); #endi } // e alua e sla e ID, unc ion code once enough by es ha e been ead i (u8ModbusADUSize == 5) { // e i y esponse is o co ec Modbus sla e i (u8ModbusADU[0] != _u8MBSla e) { u8MBS a us = ku8MBIn alidSla eID; b eak; } // e i y esponse is o co ec Modbus unc ion code (mask excep ion bi 7) i ((u8ModbusADU[1] & 0x7F) != u8MBFunc ion) { u8MBS a us = ku8MBIn alidFunc ion; b eak; } // check whe he Modbus excep ion occu ed; e u n Modbus Excep ion Code i (bi Read(u8ModbusADU[1], 7)) { u8MBS a us = u8ModbusADU[2]; b eak; } // e alua e e u ned Modbus unc ion code swi ch(u8ModbusADU[1]) { case ku8MBReadInpu Regis e s: u8By esLe = u8ModbusADU[2]; b eak; } } i ((millis() - u32S a Time) > ku16MBResponseTimeou ) { u8MBS a us = ku8MBResponseTimedOu ; } } // e i y esponse is la ge enough o inspec u he i (!u8MBS a us && u8ModbusADUSize >= 5) { // calcula e CRC u16CRC = 0xFFFF; o (i = 0; i < (u8ModbusADUSize - 2); i++) { u16CRC = c c16_upda e(u16CRC, u8ModbusADU[i]); } Memo ia 40 // e i y CRC i (!u8MBS a us && (lowBy e(u16CRC) != u8ModbusADU[u8ModbusADUSize - 2] || highBy e(u16CRC) != u8ModbusADU[u8ModbusADUSize - 1])) { u8MBS a us = ku8MBIn alidCRC; } } // disassemble ADU in o wo ds i (!u8MBS a us) { // e alua e e u ned Modbus unc ion code swi ch(u8ModbusADU[1]) { case ku8MBReadInpu Regis e s: // load by es in o wo d; esponse by es a e o de ed H, L, H, L, ... o (i = 0; i < (u8ModbusADU[2] >> 1); i++) { i (i < ku8MaxBu e Size) { _u16ResponseBu e [i] = wo d(u8ModbusADU[2 * i + 3], u8ModbusADU[2 * i + 4]); } _u8ResponseBu e Leng h = i; } b eak; } } _u8T ansmi Bu e Index = 0; u16T ansmi Bu e Leng h = 0; _u8ResponseBu e Index = 0; e u n u8MBS a us; } Es a unción es la que ealiza el g ueso de la comunicación. Tal como se obse a en el código conca ena odo el mensaje a manda po el pue o se ial den o de la a iable u8ModbusADU[i]. P ime o los da os pasados po pa áme o an e io men e: di ección del escla o, unción, los dos by es de la di ección de lec u a y los dos by es de la longi ud de lec u a. Finalmen e calcula el CRC (código de con ol de e o es), lo conca ena al es o del mensaje y lo manda by e a by e a a és del pue o se ie. Una ez se ha mandado odo el mensaje, espe a la espues a y la e alúa. En caso de que haya algún e o en el mensaje de espues a lo e o na en la a iable u8MBS a us. Si la comunicación ha sido exi osa, gua da la espues a en el a ay u16ResponseBu e . DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 41 node.ge ResponseBu e uin 16_ ModbusMas e ::ge ResponseBu e (uin 8_ u8Index) { i (u8Index < ku8MaxBu e Size) { e u n _u16ResponseBu e [u8Index]; } else { e u n 0xFFFF; } } Es a unción pe mi e accede al bu e del mensaje de espues a. El acceso se hace by e a by e. Indicando en el pa áme o u8Index la posición del a ay a la que que emos accede . Pa a u iliza odas es as unciones y clases en nues o p og ama lo p ime o que se hace es inclui la lib e ía en el ske ch de A duino con la siguien e sen encia: #include <ModbusMas e .h> Aho a se de inen los pines a a és de los que se a a elegi si el del disposi i o ac ua á como mas e o sla e. En nues o p oyec o se u ilizan los pines digi ales 2 y 3 de la placa A duino. #de ine MAX485_DE 3 #de ine MAX485_RE_NEG 2 Se ins ancia el obje o “node” a la clase ModbusMas e . ModbusMas e node; A con inuación se de inen dos unciones que con igu an los dos posibles es ados del disposi i o, en modo mas e y sla e. oid p eT ansmission() { digi alW i e(MAX485_RE_NEG, 1); digi alW i e(MAX485_DE, 1);} oid pos T ansmission() { digi alW i e(MAX485_RE_NEG, 0); digi alW i e(MAX485_DE, 0);} Una ez de inido es o, se con igu an las ca ac e ís icas de la comunicación den o de la zona de se up() del p og ama . Se con igu an los dos pins de con ol mas e /sla e como ou pu s. pinMode(MAX485_RE_NEG, OUTPUT); Memo ia 42 pinMode(MAX485_DE, OUTPUT); Se inicializa el disposi i o A duino en modo sla e y la comunicación a una elocidad de 9600 baudios. digi alW i e(MAX485_RE_NEG, 0); digi alW i e(MAX485_DE, 0); Se ial.begin(9600); Se llama a la unción begin de la clase ModbusMas e con ID = 1 y pue o se ie = Se ial. node.begin(1, Se ial); Se llama a las unciones p eT ansmission y pos T ansmission pa a con igu a las con los pa áme os p e iamen e de inidos. node.p eT ansmission(p eT ansmission); node.pos T ansmission(pos T ansmission); Una ez con igu ada la comunicación se implemen a den o del ciclo de ejecución del p og ama. //Funcion comunicacion con el analizado oid com_analizado () { uin 8_ esul ; // Lee 20 (0x14h) egis os empezando en 0x0000) esul = node. eadInpu Regis e s(0x00, 0x14); i ( esul == node.ku8MBSuccess) { Se ial.p in (F("Comunicación con analizado OK -->")); egis os--; _dec = node.ge ResponseBu e (0x01)/10.0 ; i_dec = node.ge ResponseBu e (0x03)/1000.0 ; pac i a_dec = node.ge ResponseBu e (0x05)*1.0 ; po _dec = node.ge ResponseBu e (0x09)/100000.0 ; ec_dec = node.ge ResponseBu e (0x0d)/10.0 ; eac _dec = node.ge ResponseBu e (0x13)/1.0 ; suma_medias();} DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 43 delay(1); } En es a unción lo p ime o que se hace es de ini una a iable “ esul ” numé ica de 1 by e sin signo, pa a e alua el e o no de la unción, y un a ay de 6 elemen os con a iables “da a” numé ica de 2 by es sin signo. Después se llama a la unción eadInpu Regis e s con la di ección del p ime egis o de lec u a = 0x00 y can idad de egis os a lee = 0x14 (20 en decimal). Los da os que nos en ía el analizado de ed ( los de espues a) se gua dan den o de la a iable u16ResponseBu e de la clase ModbusMas e . Pa a accede a ellos, se ha de ealiza una llamada a la unción ge ResponseBu e indicando el egis o den o del a ay de espues a que que emos ecupe a . Debemos ene en cuen a que el a ay se ha de inido con a iables de 16 bi s (2 by es), mien as que cada pa áme o que nos e o na el analizado iene una longi ud de 32 bi s (4 by es). Finalmen e se gua dan los da os ecibidos del analizado en a iables ipo in pa a a a las de mane a más sencilla a lo la go del es o del p oceso. Memo ia 44 4.4. E he ne Como se ha desc i o an e io men e, pa a do a al p oyec o de un en o no más g á ico se implemen a á una página web en lenguaje h ml pa a displaya los da os ecibidos desde el analizado en iempo eal. Pa a ello, se u iliza la shield E he ne de A duino y, a a és de es e p o ocolo de comunicación y u ilizando alguno de los pue os disponibles del ou e de la escuela se en ia án los da os. Pudiéndose es os consul a desde cualquie o denado o moni o conec ado a la ed. Pa a el manejo de las unciones E he ne se u iliza la lib e ía E he ne .h con la que cuen a la placa A duino Mega. Simplemen e enemos que añadi la al ske ch. #include <E he ne .h> A con inuación se de alla el p oceso implemen ado pa a es o. P ime o se deben de ini las di ecciones MAC e IP que se usa an pa a la comunicación E he ne y se selecciona el pue o del se e pa a el HTTP. // In oduzca una di ección MAC y la di ección IP pa a el con olado by e mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAdd ess ip(192,168,1,50); // Di eccion IP de la sub ed de su A ea Local y es la que // usa a pa a conec a se po el Na egado . E he ne Se e se e = E he ne Se e (80); // Pue o 80 po de ec o pa a HTTP Inicializamos la conexión E he ne den o del á ea de se up: //Inicializa la conexión E he ne y el se ido E he ne .begin(mac, ip); se e .begin(); La comunicación E he ne se inicia con las di ecciones MAC e IP ijadas p e iamen e. Una ez con igu ada la comunicación se implemen a den o del ciclo de ejecución del p og ama. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 45 E he ne Clien clien = se e .a ailable(); //Clien e conec ado al se ido i (clien ) { S ing eques = ""; while (clien .a ailable()) { cha c = clien . ead(); i (c == ' n') b eak; else eques += c; } while (clien .a ailable()) { clien . ead(); } i ( eques .s a sWi h("GET / HTTP")) en ia_web(clien ); else i ( eques .s a sWi h("GET /ajax HTTP")) en ia_ajax(clien ); } En caso de que haya solici ud de algún clien e y la pe ición sea de ape u a de la página se ab e el iche o que con iene la página web h mlweb.h m y se en ía a a és del pue o se ial has a inal de iche o, u ilizando la unción w i e de la clase E he ne Se e . Al inaliza de lee el iche o, es e se cie a. oid en ia_web(E he ne Clien &clien _web){ // Ab imos la página de la SD y en iamos la cabece a de la web File web ile = SD.open("h mlweb.h m"); i (web ile) { while (web ile.a ailable()) { clien _web.w i e(web ile. ead()); } web ile.close(); } Memo ia 52 En el p ime sc ip se de ine el es ilo de los indicado es de da os que se an a u iliza , en es e caso unos gauges con un display digi al además del indicado de aguja, el aspec o se mues a en la Figu a 4.17. Figu a 4.17. Indicado de ol aje (Fuen e: Juan Ca los Ruiz ). <sc ip ype=" ex /ja asc ip "> a ol aje; a in ensidad; a po encia; a ecuencia; a po ; a eac ; unc ion upda e() { <!--es a uncion es la que me in e esa --> ecoge los da os del a duino --> a xh p; xh p = new XMLH pReques (); xh p.on eadys a echange = unc ion() { i (xh p. eadyS a e == 4 && xh p.s a us == 200) { a json = JSON.pa se(xh p. esponseTex ); ol aje = json. ol aje; in ensidad = json.in ensidad; po encia = json.po encia; po = json. po ; ecuencia = json. ecuencia; eac = json.eac ; } }; xh p.open("GET", "h p://192.168.1.50/ajax", ue); <!-- la ip po donde se mandan los da os y la pe icion de da os --> xh p.send(); } a id_in e al = se In e al('upda e()',5000); </sc ip > DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 53 En es e segundo sc ip se de inen las unciones Json del documen o. Se ecogen los da os de la espues a y se gua dan en las a iables globales de los di e en es pa áme os: ol aje, in ensidad, po encia, po , ecuencia y eac . Pa a pos e io men e ac ualiza los en el gauge. Seleccionamos un in e alo de pe ición de da os de 5 segundos. <p> VOLTAJE [V]</p> <p> INTENSIDAD [A]</p> <p> POTENCIA [W]</p><b /> <p><can as id="an_gauge_1" da a-majo - icks="0 40 80 120 160 200 240 280 320 360" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="360" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_1').se Value( ol aje);}, 200);"></can as></p> <p><can as id="an_gauge_2" da a-majo - icks="0 2 4 6 8 10 12 14 16 18 20" da a- ype="can - gauge" da a-min- alue="0" da a-max- alue="20" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_2').se Value(in ensidad);}, 200);" ></can as></p> <p><can as id="an_gauge_3" da a-majo - icks="0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="5000" da a- on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_3').se Value(po encia);}, 200);" ></can as></p> <p> FRECUENCIA [Hz]</p> <p> FACTOR DE POTENCIA </p> <p> ENERGIA ACTIVA [W.h]</p><b /> <p><can as id="an_gauge_4" da a-majo - icks="0 10 20 30 40 50 60 70 80 90 100" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="100" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_4').se Value( ecuencia);}, 200);" ></can as></p> <p><can as id="an_gauge_5" da a-majo - icks="0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="1" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_5').se Value( po );}, 200);" ></can as></p> <p><can as id="an_gauge_6" da a-majo - icks="0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="10000" da a- on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_6').se Value(eac );}, 200);" ></can as></p> Aquí es donde de inimos las ca ac e ís icas p opias de cada gauge. Se de ine pa a cada indicado el ango de alo es a mos a y se selecciona como alo a mos a el da o ecibido an e io men e. El aspec o inal de la web es el mos ado en la Figu a 4.18: Memo ia 54 Figu a 4.18. Página Web moni o de da os (Fuen e: Juan Ca los Ruiz ). DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 55 4.7. Ho a Udp Con la in ención de pode analiza los da os ecogidos en la a je a SD de o ma más o denada y pode es ablece una elación con las dis in as anjas ho a ias del día, se ob end á la ho a ac ual desde la ed. Pa a el manejo de las unciones pa a ecoge la ho a de la ed se u iliza la lib e ía E he ne Udp.h con la que cuen a la placa A duino Mega. Simplemen e enemos que añadi la al ske ch. #include <E he ne Udp.h> A con inuación se de alla el p oceso implemen ado pa a es o. P ime o se deben de ini la di ección IP que se usa an pa a la comunicación y se c ea la ins ancia del se e pa a el Udp. IPAdd ess imeSe e (193,92,150,3); // ime.nis .go NTP se e cons in NTP_PACKET_SIZE = 48; // La ho a son los p ime os 48 by es del mensaje by e packe Bu e [ NTP_PACKET_SIZE]; // bu e pa a los paque es E he ne UDP Udp; // Una ins ancia de UDP pa a en ia y ecibi mensajes Inicializamos la conexión E he ne den o del á ea de se up: Udp.begin(80); Una ez con igu ada la comunicación se implemen a den o del ciclo de ejecución del p og ama. oid com_udp_n p() { sendNTPpacke ( imeSe e ); // En ia una pe ición al se ido NTP delay(100); // Damos iempo a la espues a i ( Udp.pa sePacke () ) { Udp. ead(packe Bu e ,NTP_PACKET_SIZE); // Leemos el paque e // La ho a empieza en el by e 40 de la espues a y es de 4 by es o 2 wo ds // Hay que ex ae ambas wo ds: unsigned long highWo d = wo d(packe Bu e [40], packe Bu e [41]); unsigned long lowWo d = wo d(packe Bu e [42], packe Bu e [43]); // se combinan los 4 by es (2 wo ds) en una a iable long in ege // his is NTP ime (seconds since Jan 1 1900): unsigned long secsSince1900 = highWo d << 16 | lowWo d; // Aho a a con e i el iempo NTP en iempo Uxix: // Unix ime empieza en Jan 1 1970. En segundos, son 2208988800: cons unsigned long se en yYea s = 2208988800UL; // ex ae se en a yea s: unsigned long epoch = secsSince1900 - se en yYea s; ho as = ((epoch % 86400L) / 3600) + 2; // Ho as (86400 segundos po dia) minu os = ((epoch % 3600) / 60); // Minu os: } delay(100); } Memo ia 56 unsigned long sendNTPpacke (IPAdd ess& add ess) { // se all by es in he bu e o 0 memse (packe Bu e , 0, NTP_PACKET_SIZE); // Ini ialize alues needed o o m NTP eques // (see URL abo e o de ails on he packe s) packe Bu e [0] = 0b11100011; // LI, Ve sion, Mode packe Bu e [1] = 0; // S a um, o ype o clock packe Bu e [2] = 6; // Polling In e al packe Bu e [3] = 0xEC; // Pee Clock P ecision // 8 by es o ze o o Roo Delay & Roo Dispe sion packe Bu e [12] = 49; packe Bu e [13] = 0x4E; packe Bu e [14] = 49; packe Bu e [15] = 52; // all NTP ields ha e been gi en alues, now // you can send a packe eques ing a imes amp: Udp.beginPacke (add ess, 123); //NTP eques s a e o po 123 Udp.w i e(packe Bu e ,NTP_PACKET_SIZE); Udp.endPacke (); //} Basicamen e lo que hacemos en es e pun o es accede a una URL que con iene el imes amp ac ual y le mandamos una eques pa a que nos con es e con los da os solici ados. Una ez ecibida la espues a y gua dada en el bu e , ecupe amos la ho a exac a del acceso. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 57 4.8. Mon aje de la placa e in eg ación del ci cui o Pa a in eg a nues o p oyec o del ci cui o eléc ico de la EEBE se ha decidido in eg a odos los elemen os del mon aje den o de una caja mecanizada de la ma ca RETEX se ie 102. Figu a 4.19. Caja RETEX se ie 102 (Fuen e: h ps://dio onic.com). Ca ac e ís icas: Las dimensiones de la caja son 155 x 95 x 60 mm. Caja ab icada en ABS con apa en polica bona o anspa en e. Rebaje en apa y base pa a eclados de memb ana. To e as en base pa a ijación de ci cui os. Base esis en e has a 85ºC. Tapa has a 120ºC. Además se alimen a á la placa a a és de un ans o mado de 230V a 9 V de 1A. Memo ia 58 Figu a 4.20. T ans o mado a 9V (Fuen e: h ps://dio onic.com). La caja se ha mecanizado pa a que la placa A duino y sus shields encajen co ec amen e y queden ijadas, además de pe mi i las conexiones. El aspec o del mon aje inal se mues a a con inuación: Figu a 4.21. Mon aje Final 1 (Fuen e: Juan Ca los Ruiz ). DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 59 Figu a 4.22. Mon aje Final 2 (Fuen e: Juan Ca los Ruiz ). La conexión en e la shield RS485 y el analizado de ed se ha á a a és de un pa enzado de dos hilos, a se posible con apan allamien o pa a e i a posibles in e e encias. Sob e odo si la dis ancia en e los dos disposi i os es la ga o si la ed a a pasa po zonas con in e e encias elec omagné icas. Pa a la conexión E he ne se usa á un cable E he ne es ánda del ipo CAT5 o CAT6 con conec o es RJ45. La caja mecanizada cuen a con aguje os pa a, una ez decidida la ubicación del disposi i o, ija la a la pa ed si se equie e. La longi ud de los cables de conexión (E he ne , pa enzado) depende á del emplazamien o de los componen es. En cuan o al cable de alimen ación de la placa A duino iene una longi ud ap oximada de 1,5 me os. Es o ampoco es un g an p oblema a la ho a de elegi la ubicación del sis ema dado que no habe ningún enchu e ce ca, bas a ía con un simple ala go. Memo ia 60 5. So wa e 5.1. Ske ch A duino // Lib e ias usadas #include <E he ne .h> #include <SD.h> #include <ModbusMas e .h> #include <E he ne Udp.h> // Decla acion de iche os File da aFile; File web ile; // Pa ame os y a iables comunicacion RS485 #de ine MAX485_DE 3 #de ine MAX485_RE_NEG 2 oid p eT ansmission() { digi alW i e(MAX485_RE_NEG, 1); digi alW i e(MAX485_DE, 1); } oid pos T ansmission() { digi alW i e(MAX485_RE_NEG, 0); digi alW i e(MAX485_DE, 0); } // Inicializa obje o ModbusMas e ModbusMas e node; // Pa ame os y a iables comunicacion E he ne by e mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Di eccion MAC po de ec o IPAdd ess ip(192, 168, 1, 50); // Di eccion IP de la sub ed del A ea Local que usa a pa a conec a se po el Na egado . E he ne Se e se e = E he ne Se e (80); // Pue o 80 po de ec o pa a HTTP // Va iables decimales de los da os del analizado loa _dec, i_dec, pac i a_dec, ec_dec, po _dec, eac _dec; // Va iables decimales media de los da os del analizado loa _med, i_med, pac i a_med, ec_med, po _med, eac _med; // Va iables e he ne udp ho a y echa IPAdd ess imeSe e (193, 92, 150, 3); // ime.nis .go NTP se e ( allback) cons in NTP_PACKET_SIZE = 48; // La ho a son los p ime os 48 by es del mensaje by e packe Bu e [ NTP_PACKET_SIZE]; // bu e pa a los paque es de la comunicacion E he ne UDP Udp; // Una ins ancia de UDP pa a en ia y ecibi mensajes // O as a iables by e egis os = 150; by e id = 0; in ho as, minu os ; S ing pun ocoma = ";" ; S ing dospun os = ":" ; /////////////////////////////////////////////////////////////////////////////////// //Con igu acion inicial oid se up() { // Comp ueba que la a ge a es a conec ada y g aba egis o de cabece a i (!SD.begin(4)) { Se ial.p in ln(F("No hay a je a")); e u n; DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 61 } pinMode(4, OUTPUT); g aba_cabece a_sd(); // Inicializa la conexion E he ne y el se ido pinMode(10, OUTPUT); E he ne .begin(mac, ip); se e .begin(); // Con igu acion inicial Modbus a 9600 bauds , escla o ID 1 pinMode(MAX485_RE_NEG, OUTPUT); pinMode(MAX485_DE, OUTPUT); digi alW i e(MAX485_RE_NEG, 0); digi alW i e(MAX485_DE, 0); Se ial.begin(9600); node.begin(1, Se ial); // Callbacks pa a con igu a la comunicacion RS485 co ec amen e node.p eT ansmission(p eT ansmission); node.pos T ansmission(pos T ansmission); // Inicializa el se ido udp Udp.begin(80); } // P oceso oid loop() { com_udp_n p(); delay(200); com_analizado (); i ( egis os == 0) { calcula_media(); g aba_sd(); inicializa_medias(); } // En ia da os a la ed ip con igu ada en el inicio E he ne Clien clien = se e .a ailable(); //Clien e conec ado al se ido i (clien ) { Se ial.p in (F("Clien e conec ado -->")); S ing eques = ""; while (clien .a ailable()) { cha c = clien . ead(); i (c == ' n') b eak; else eques += c; } while (clien .a ailable()) { clien . ead(); } Se ial.p in (F("Reques :")); Se ial.p in ( eques ); i ( eques .s a sWi h("GET / HTTP")) en ia_web(clien ); else i ( eques .s a sWi h("GET /ajax HTTP")) en ia_ajax(clien ); } Se ial.p in (F("Fin p og ama :")); Se ial.p in ln( egis os); delay(100); } // Comunicacion udp pa a ecupe a echa y ho a oid com_udp_n p() { Se ial.p in (F("Recupe a ho a: ")); sendNTPpacke ( imeSe e ); // En ia una pe icion al se ido NTP delay(100); // Damos iempo a la espues a i ( Udp.pa sePacke () ) { Udp. ead(packe Bu e , NTP_PACKET_SIZE); // Leemos el paque e // La ho a empieza en el by e 40 de la espues a y es de 4 by es o 2 wo ds unsigned long highWo d = wo d(packe Bu e [40], packe Bu e [41]); unsigned long lowWo d = wo d(packe Bu e [42], packe Bu e [43]); Memo ia 68 lea Rec (- ,-u,C,D);B.sa e(); a g={c x:a};a=B;p();N();J();d();s();b. i le&&(a.sa e(),a. on =24*( /200)+"px A ial",a. illS yle=b.colo s. i le,a. ex Align="cen e ",a. illTex (b. i le,0,- /4.25),a. es o e());b.uni s&&(a.sa e(),a. on =22*( /200)+"px A ial", a. illS yle=b.colo s.uni s,a. ex Align="cen e ",a. illTex (b.uni s,0, /3.25),a. es o e());A .i8d=!0;a=g.c x;dele e g.c x}a.clea Rec (- ,-u,C,D);a.sa e();a.d awImage(A,- ,- u,C,D);i (Gauge.ini ialized)L(),K(),H||(E.on eady&&E.on eady(),H=!0);else a e=se In e al( unc ion(){Gauge.ini ialized&&(clea In e al(e),L(),K(),H||(E.on eady&&E.on e ady(),H=!0))},10); e u n his}};Gauge.ini ialized=!1; ( unc ion(){ a b=documen ,l=b.ge Elemen sByTagName("head")[0],q=- 1!=na iga o .use Agen . oLocaleLowe Case().indexO ("msie"), ="@ on - ace { on - amily: 'Led';s c: u l(' on s/digi al-7- mono."+(q?"eo ":" ")+"');}",k=b.c ea eElemen ("s yle");k. ype=" ex /css";i (q)l.appendChi ld(k),l=k.s yleShee ,l.cssTex = ;else{ y{k.appendChild(b.c ea eTex Node( ))}ca ch(e){k.css Tex = }l.appendChild(k);l=k.s yleShee ?k.s yleShee :k.shee ||b.s yleShee s[b.s yleShee s.le ng h-1]} a g=se In e al( unc ion(){i (b.body){clea In e al(g); a e=b.c ea eElemen ("di ");e.s yle. on Family="Led";e.s yle.posi ion="absolu e";e.s yle.heigh =e.s yle.wid h=0;e.s yle.o e low="hidden";e.inne HTML=".";b.body.appendChild(e);se Timeou ( unc ion(){Gauge.ini ialized=!0;e.pa en Node. emo eChild(e)},250)}},1)})();Gauge.Collec i on=[]; Gauge.Collec ion.ge = unc ion(b){i ("s ing"== ypeo b) o ( a l=0,q= his.leng h;l<q;l++){i (( his[l].con ig. ende To. agName? his[l].con ig. ende To:docu men .ge Elemen ById( his[l].con ig. ende To)).ge A ibu e("id")==b) e u n his[l]}else e u n"numbe "== ypeo b? his[b]:null}; unc ion domReady(b){window.addE en Lis ene ?window.addE en Lis ene ("DOMCon en Loaded",b,!1):window .a achE en ("onload",b)} domReady( unc ion(){ unc ion b(b){ o ( a e=b[0],d=1,g=b.leng h;d<g;d++)e+=b[d].subs (0,1). oUppe Case()+b[d].subs (1,b[d].leng h- 1); e u n e} o ( a l=documen .ge Elemen sByTagName("can as"),q=0, =l.leng h;q< ;q++)i ("can - gauge"==l[q].ge A ibu e("da a- ype")){ a k=l[q],e={},g,p=pa seIn (k.ge A ibu e("wid h"),10),w=pa seIn (k.ge A ibu e("heigh "),10 );e. ende To=k;p&&(e.wid h=p);w&&(e.heigh =w);p=0; o (w=k.a ibu es.leng h;p<w;p++)i (g=k. a ibu es.i em(p).nodeName,"da a- ype"!=g&&"da a-"== g.subs (0,5)){ a d=g.subs (5,g.leng h-5). oLowe Case().spli ("- ");i (g=k.ge A ibu e(g))swi ch(d[0]){case "colo s":d[1]&&(e.colo s||(e.colo s={}),"needle"==d[1]?(d=g.spli (/ s+/),e.colo s.needle=d[ 0]&&d[1]?{s a :d[0],end:d[1]}:g):(d.shi (),e.colo s[b(d)]=g));b eak;case "highligh s":e.highligh s||(e.highligh s=[]);g=g.ma ch(/(?:(?:-? d* .)?(-? d+){1,2} ){2}(?:(?:#|0x)?(?:[0-9A-F|a- ]){3,8}| gba? (.*? ))/g); o ( a d=0,J=g.leng h;d<J;d++){ a s=g[d]. eplace(/^ s+| s+$/g,"").spli (/ s+/),x={}; s[0]&&""!=s[0]&&(x. om=s[0]);s[1]&&""!=s[1]&&(x. o=s[1]);s[2]&&""!=s[2]&&(x.colo =s[2]);e. highligh s.push(x)}b eak;case "anima ion":d[1]&&(e.anima ion||(e.anima ion={})," n"==d[1]&&/^ s* unc ion s* (/. es (g)&&( g=e al("("+g+")")),e.anima ion[d[1]]=g);b eak;de aul :d=b(d);i ("on eady"==d)con inue;i ("m ajo Ticks"==d)g=g.spli (/ s+/);else i ("s okeTicks"==d||"glow"==d)g=" ue"==g?!0:!1;else DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 69 i (" alueFo ma "==d)i (g=g.spli ("."),2==g.leng h)g={"in ":pa seIn (g[0],10),dec:pa seIn (g [1],10)};else con inue; e[d]=g}}e=new Gauge(e);k.ge A ibu e("da a- alue")&&e.se RawValue(pa seFloa (k.ge A ibu e("da a- alue")));k.ge A ibu e("da a- on eady")&&(e.on eady= unc ion(){e al( his.con ig. ende To.ge A ibu e("da a- on eady"))});e.d aw()}});window.Gauge=Gauge; <!-- Gauge Code Ends --> </sc ip > <sc ip ype=" ex /ja asc ip "> a ol aje; a in ensidad; a po encia; a ecuencia; a po ; a eac ; unc ion upda e() { <!--es a uncion es la que me in e esa --> ecoge los da os del a duino --> a xh p; xh p = new XMLH pReques (); xh p.on eadys a echange = unc ion() { i (xh p. eadyS a e == 4 && xh p.s a us == 200) { a json = JSON.pa se(xh p. esponseTex ); ol aje = json. ol aje; in ensidad = json.in ensidad; po encia = json.po encia; ecuencia = json. ecuencia; po = json. po ; eac = json.eac ; } }; Memo ia 70 xh p.open("GET", "h p://192.168.1.50/ajax", ue); <!-- la ip po donde se mandan los da os y la pe icion de da os --> xh p.send(); } a id_in e al = se In e al('upda e()',5000); </sc ip > </head> <body> <heade > <h1><CENTER><IMG SRC="h ps://www.upc.edu/++ heme++homeupc/asse s/images/logoma k.png"></IMG></CENTER></h1> <H2><CENTER>A duino Moni o </H2></CENTER><b /> <H3><CENTER>Moni o ea da os ins alación o o ol aica</CENTER></H3> </heade > <b /> <main><CENTER> <p> VOLTAJE [V]</p> <p> INTENSIDAD [A]</p> <p> POTENCIA [W]</p><b /> <p><can as id="an_gauge_1" da a-majo - icks="0 40 80 120 160 200 240 280 320 360" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="340" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_1').se Value( ol aje);}, 200);"></can as></p> <p><can as id="an_gauge_2" da a-majo - icks="0 2 4 6 8 10 12 14 16 18 20" da a- ype="can - gauge" da a-min- alue="0" da a-max- alue="20" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_2').se Value(in ensidad);}, 200);" ></can as></p> <p><can as id="an_gauge_3" da a-majo - icks="0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="5000" da a- on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_3').se Value(po encia);}, 200);" ></can as></p> <p> FRECUENCIA [Hz]</p> <p> FACTOR DE POTENCIA </p> <p> ENERGIA ACTIVA [W.h]</p><b /> <p><can as id="an_gauge_4" da a-majo - icks="0 10 20 30 40 50 60 70 80 90 100" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="100" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_4').se Value( ecuencia);}, 200);" ></can as></p> DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 71 <p><can as id="an_gauge_5" da a-majo - icks="0 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 1" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="1" da a-on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_5').se Value( po );}, 200);" ></can as></p> <p><can as id="an_gauge_6" da a-majo - icks="0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000" da a- ype="can -gauge" da a-min- alue="0" da a-max- alue="10000" da a- on eady="se In e al( unc ion() { Gauge.Collec ion.ge ('an_gauge_6').se Value(eac );}, 200);" ></can as></p> <b /><b /><b /><b />< oo e > <b><b /><CENTER> Juan Ca los Ruiz - T abajo inal de G ado - Ing. Elec ónica indus ial y au omá ica </CENTER><b /></b> < oo e > </body> </h ml> Memo ia 72 6. P uebas Una ez implemen ada la ins alación y el so wa e se p ocede a ealiza las p uebas uncionales del p oyec o. Pa a ello se conec a á el analizado de ed en e la ins alación de ed y una ca ga du an e un pe iodo la go de iempo con la in ención de ecoge los da os gene ados po el consumo de la misma. Figu a 6.1. Disposi i o en uncionamien o (Fuen e: Juan Ca los Ruiz ). A su ez, se comp oba á que el his ó ico se gene a co ec amen e en la a je a SD de la placa ARDUINO E he ne Shield y que se en ían los da os en iempo eal co ec amen e a a és de la ed, consul ando la di ección IP que se ha con igu ado la comunicación. A con inuación se p esen an las p uebas ealizadas jun o con los esul ados ob enidos. Se ha conec ado el disposi i o en e las 19:48 y las 19:54 ho as de la a de, se han conec ado y desconec ados di e en es ca gas du an e es e pe iodo simulando así el uso no mal de una ins alación en la que los di e en es disposi i os conec ados a la ed an a iando en el iempo. El egis o g abado en la a je a SD es el siguien e: id; imes amp; _med(V);i_med(A);pac i a_med(W); ec_med(Hz); po _med;eac _med(Wh); 1;19:48;218.52;4.72;1029.18;50.00;0.65;5616.40; 2;19:50;218.30;4.72;1027.28;50.00;0.65;5655.12; 3;19:52;217.77;4.70;1021.50;50.00;0.65;5693.85; 4;19:54;218.29;4.72;1027.00;50.00;0.65;5732.41; DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 73 Tal como se obse a, se han g abado 4 egis os de da os du an e el pe iodo de 6 minu os ap oximadamen e. El p ime egis o g abado es el de cabece a, donde se indican los da os y sus unidades de medida g abados a con inuación. Du an e es e pe iodo se han consul ado los da os online a a és de la página web: Figu a 6.2. Web en uncionamien o (Fuen e: Juan Ca los Ruiz ). Una ez comp obado el co ec o uncionamien o de la ins alación, se expo an los da os a Excel pa a e alua los. Figu a 6.3. Da os expo ados en Excel (Fuen e: Juan Ca los Ruiz ). Memo ia 74 Tal como se obse a en la Figu a 6.3 los da os se expo an co ec amen e con el o ma o espe ado, pudiendo así es ablece se pa ones de compo amien o de la ins alación pa a posibili a pos e io men e aumen a la e iciencia de la misma. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 75 7. Análisis del impac o ambien al En es e apa ado se p e ende cuan i ica el impac o medioambien al de nues o p oyec o an o a ni el de consumo y de huella ecológica como de iesgos de su implemen ación. A pa e del consumo ene gé ico eléc ico se ha calculado el gas o ene gé ico de los componen es que se debe án implemen a en la ins alación o o ol aica. Según su documen o écnico el analizado de ed iene un consumo de 3VA. Calculando la ene gía que es o supone du an e odo un año uncionando las 24 ho as del día ob enemos que el consumo anual del disposi i o analizado de ed es 26.28 kWh. El consumo de la placa A duino MEGA con la shield e he ne es de ap oximadamen e 50mA, lo que a lo la go del año suponen 2.19 kWh. El consumo o al anual de la ins alación se á po lo an o de 28.47 kWh, o lo que es lo mismo 18.5 kg de CO2. Teniendo en cuen a que el disposi i o es a á bien aislado se le calcula una ida ú il de unos 10 años ap oximadamen e, con lo cual la huella ecológica du an e odo es e iempo se á de 185 kg de CO2. Los iesgos que pod ían de i a en un consumo más ele ado del espe ado no se án o os que los ambien ales. Un mal aislamien o de la placa en condiciones de llu ia o humedad pod ía hace que el consumo del p o o ipo se ele a a o incluso deja á de unciona , debiendo en es e úl imo caso sus i ui se po una nue a placa, ele ando cos es y ecu sos pa a su implemen ación. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 77 Conclusiones La ealización de es e p oyec o ha se ido pa a comp ende odas las ases del p oceso de p o o ipado de una aplicación demandada po un clien e o usua io. Teniendo que comp ende la uncionalidad de lo demandado pa a diseña su esolución de la mane a más e icien e compa ando las di e en es posibilidades. Las mayo es di icul ades que nos hemos encon ado du an e la ealización del mismo han sido sob e odo la necesidad de ob ene conocimien os en ámbi os y lenguajes de p og amación no abajados con an e io idad. Pese a que du an e el g ado se ha abajado en lenguaje C, se han enido que de ini y aco a las posibilidades de la pla a o ma A duino. Además se ha enido que hace hincapié en adqui i conocimien os básicos en HTML y Ja aSc ip pa a pode eliza la comunciación en e A duino y el en o no g á ico del p oyec o. T as inicia el p oyec o sob e la placa ARDUINO UNO se dedujo que la capacidad de memo ia de la placa seleccionada educía conside ablemen e el alcance del p oyec o. De al mane a que nos imos obligados a cambia la placa del p o o ipo po una ARDUINO MEGA 2560 con mucha mas capacidad de memo ia y que nos ha pe mi ido implemen a la uncionalidad comple a del p oyec o. Con las ac uales ca ac e ís icas del p oyec o, se consegui á mos a de o ma co ec a y comp ensible el abajo ealizado po la ins alación o o ol aica a la que se conec e y ecopila da os in e esan es pa a el análisis de la e iciencia de la misma. De ca a al u u o, exis en di e en es posibilidades pa a amplia el p esen e p oyec o que pod ian se in e esan es. Dado que las comunicaciones en e los di e en es disposi i os ya es a implemen ada, las mejo as end ian en cuan o al apa ado más g á ico, quizás do ando al p oyec o de una página web mejo ada y/o implan ando la misma den o de la web de la uni e sidad. También ampliando los da os ob enidos desde el analizado o mejo ando el a amien o y análisis sob e ellos. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 85 Bibliog a ía Aguado, O. (2018). P incipales di e encias en e Raspbe y Pi y A duino. [online] Conmas u u o. A ailable a : h p://www.conmas u u o.es/p incipales-di e encias-en e- aspbe y-pi-y-a duino- 2/ [Accessed 19 Feb. 2018]. Anon, (2018). [online] A ailable a : h p://www.lean ec.es/blog/24_Como-conec a -A duino-a- E he ne -y-hace -se .h ml [Accessed 19 Feb. 2018]. Ap endiendo A duino. (2018). Di e en es modelos de placas A duino. [online] A ailable a : h ps://ap endiendoa duino.wo dp ess.com/2015/03/23/di e en es-modelos-de-placas- a duino/ [Accessed 19 Feb. 2018]. Ap endiendo A duino. (2018). Memo ia Flash, SRAM y EEPROM. [online] A ailable a : h ps://ap endiendoa duino.wo dp ess.com/2017/06/21/memo ia- lash-s am-y-eep om-3/ [Accessed 19 Feb. 2018]. Ap endiendoa duino.wo dp ess.com. (2018). RS485 | Ap endiendo A duino. [online] A ailable a : h ps://ap endiendoa duino.wo dp ess.com/ca ego y/ s485/ [Accessed 19 Feb. 2018]. A duino.cc. (2018). A duino - Home. [online] A ailable a : h ps://www.a duino.cc/ [Accessed 19 Feb. 2018]. Dou el, F. (2018). Raspbe y Pi en e a A duino: ¿quién se adap a mejo a mi p oyec o make ?. [online] Xa aka.com. A ailable a : h ps://www.xa aka.com/make s/ aspbe y-pi- en e-a- a duino-quien-se-adap a-mejo -a-mi-p oyec o-make [Accessed 19 Feb. 2018]. Ingenie ía y Tecnología (A duino-P ocessing). (2018). Ingenie ía y Tecnología (A duino-P ocessing). [online] A ailable a : h p://jasonhd.wixsi e.com/jason/p oyec o-joas-1 [Accessed 19 Feb. 2018]. Naylampmecha onics.com. (2018). Comunicación RS485 con A duino. [online] A ailable a : h p://www.naylampmecha onics.com/blog/37_Comunicaci%C3%B3n-RS485-con- A duino.h ml [Accessed 19 Feb. 2018]. P ome ec.ne . (2018). E he ne SHIELD W5100 R3 | Tienda y Tu o iales A duino. [online] A ailable a : h ps://www.p ome ec.ne /p oduc o/e he ne -shield-w5100- 3/ [Accessed 19 Feb. 2018]. P ome ec.ne . (2018). MAX 485 TTL o RS485 | Tienda y Tu o iales A duino. [online] A ailable a : h ps://www.p ome ec.ne /p oduc o/max-485- l- o- s485/ [Accessed 19 Feb. 2018]. Memo ia 86 Rinconingenie il.es. (2018). Ci a un si io web - Ci e This Fo Me. [online] A ailable a : h ps://www. inconingenie il.es/ s485/ [Accessed 19 Feb. 2018]. WooComme ce, C. (2018). A duino E he ne (O iginal) » IBEROBOTICS. [online] IBEROBOTICS. A ailable a : h ps://www.ibe obo ics.com/p oduc o/a duino-e he ne - o iginal/?gclid=Cj0KCQjwsN OBRCWARIsAGITapaVDPzqmSE5 P- TZF JRSZ6LheKT0wRpZ1EX_pyWRlSgdbxE XbPCkaA iZEALw_wcB [Accessed 19 Feb. 2018]. WooComme ce, C. (2018). A duino UNO Re 3 (O iginal) » IBEROBOTICS. [online] IBEROBOTICS. A ailable a : h ps://www.ibe obo ics.com/p oduc o/a duino-uno- e 3-o iginal/ [Accessed 19 Feb. 2018]. YouTube. (2018). Conec a A duino al ele iso . [online] A ailable a : h ps://www.you ube.com/wa ch? =ny6 zcoz454 [Accessed 19 Feb. 2018]. E he ne SHIELD W5100 R3 | Tienda y Tu o iales A duino, 2018. P ome ec.ne [online], Ingenie ía y Tecnología (A duino-P ocessing), 2018. Ingenie ía y Tecnología (A duino- P ocessing)[online], MAX 485 TTL o RS485 | Tienda y Tu o iales A duino, 2018. P ome ec.ne [online], Memo ia Flash, SRAM y EEPROM, 2018. Ap endiendo A duino [online], RS485 | Ap endiendo A duino, 2018. Ap endiendoa duino.wo dp ess.com [online], WOOCOMMERCE, CREADO, 2018, A duino E he ne (O iginal) » IBEROBOTICS. IBEROBOTICS[online]. 2018. [Accessed 19 Feb ua y 2018]. A ailable om: h ps://www.ibe obo ics.com/p oduc o/a duino-e he ne - o iginal/?gclid=Cj0KCQjwsN OBRCWARIsAGITapaVDPzqmSE5 P- TZF JRSZ6LheKT0wRpZ1EX_pyWRlSgdbxE XbPCkaA iZEALw_wcB WOOCOMMERCE, CREADO, 2018, A duino UNO Re 3 (O iginal) » IBEROBOTICS. IBEROBOTICS [online]. 2018. [Accessed 19 Feb ua y 2018]. A ailable om: h ps://www.ibe obo ics.com/p oduc o/a duino-uno- e 3-o iginal/ A duino - Home, 2018. A duino.cc [online], Ci a un si io web - Ci e This Fo Me, 2018. Rinconingenie il.es [online], Comunicación RS485 con A duino, 2018. Naylampmecha onics.com [online], DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 87 E he ne SHIELD W5100 R3 | Tienda y Tu o iales A duino, 2018. P ome ec.ne [online], F i zing, 2018. F i zing.o g [online], Ingenie ía y Tecnología (A duino-P ocessing), 2018. Ingenie ía y Tecnología (A duino- P ocessing)[online], MAX 485 TTL o RS485 | Tienda y Tu o iales A duino, 2018. P ome ec.ne [online], Memo ia Flash, SRAM y EEPROM, 2018. Ap endiendo A duino [online], RS485 | Ap endiendo A duino, 2018. Ap endiendoa duino.wo dp ess.com [online], (C) 2018, W.A. SMITH, 2018, A duino SD Ca d Web Se e using E he ne Shield. S a ingelec onics.o g [online]. 2018. [Accessed 20 Feb ua y 2018]. A ailable om: h ps://s a ingelec onics.o g/ u o ials/a duino/e he ne -shield-web-se e - u o ial/SD-ca d- web-se e / ¿Qué es AJAX? | Digi al Lea ning, 2018. Digi allea ning.es [online], A duino - E he ne , 2018. A duino.cc [online], Display Analógico con Ja aSc ip | Tienda y Tu o iales A duino, 2018. P ome ec.ne [online], Luis Llamas, 2018. Luis Llamas [online], Manual HTML en español, 2018. U .es [online], MEDINA, PATRICIO, 2018, Ap o echa al máximo la memo ia de u A duino - MCI Capaci ación. MCI Capaci ación [online]. 2018. [Accessed 20 Feb ua y 2018]. A ailable om: h p://cu sos.mcielec onics.cl/como-ap o echa -al-maximo-la-memo ia-de- u-a duino/ RUIZ, ANTONIO, RUIZ, ANTONIO and PERFIL, VER, 2018, A duino en español. Manueldelgadoc espo.blogspo .com.es [online]. 2018. [Accessed 20 Feb ua y 2018]. A ailable om: h p://manueldelgadoc espo.blogspo .com.es SOY?, ¿QUIÉN, 2018, Con e i un núme o a cadena en A duino con p in , sp in y d os . P og ama ácil con A duino [online]. 2018. [Accessed 20 Feb ua y 2018]. A ailable om: h ps://p og ama acil.com/blog/a duino-blog/con e sion-de-nume os-a-cadenas-en-a duino/ Tu o ial HTML - Tabla de con enidosspa u o ial - HTML.ne , 2018. Es.h ml.ne [online], Memo ia 88 ARDUINO PROJECTS BOOK, 2017. , P ác icas con A duino 2, 2018. , EDUBÁSICA. DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 89 Anexo A: Ma e iales A1. Cuad o de ma e iales Ma e ial Can idad PVP (€) Cos e o al (€) ARDUINO MEGA 1 39 39 ETHERNET SHIELD 1 13 13 RS485 SHIELD 1 3 3 T ans o mado uni e sal 230V a 3-12V 1A 1 9.52 9.52 Caja RETEX se ie 102 125x75x50 1 7.37 7.37 O os componen es 1 4.77 4.77 TOTAL 76.66 Annexos 90 Anexo B: In o mación écnica A2. ARDUINO MEGA DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 91 A3. E he ne Shield W5100 Annexos 92 DESARROLLO DE UNA APLICACIÓN CON ARDUINO PARA LA MONITORIZACIÓN Y REGISTRO DE LOS DATOS DE PRODUCCIÓN ENERGÉTICA DE LA INSTALACIÓN SOLAR FOTOVOLTAICA DE LA EEBE. 93 A4. Analizado de ed CVM-SP-RS485-C Annexos 100