Tracking dell'impianto solare via web
Parole chiave: Arduino, Processing, Cosm.com
Il progetto ha la finalità di permettere il monitoring dell'impianto fotovoltaico da remoto tramite web; in particolare ci si è concentrati sul monitoraggio della tensione, parametro che ben esprime le condizioni di ricarica e carica della batteria, evidenziando inoltre l'eventuale presenza di carichi troppo esosi per la batteria. Il progetto prevede una parte pratica (creazione del circuito) e una più "teorica", con la programmazione della scheda Arduino.
Materiale utilizzato
- Scheda Arduino UNO (Sito Arduino)
- 4 resistenze da 1MOhm ciascuna
- L'ambiente di lavoro Processing (Sito Processing)
- 2 metri di cavo bipolare
Considerazioni sui materiali, software e IDE
- Arduino UNO (da Wikipedia): Arduino è un framework open source che permette la prototipazione rapida e l'apprendimento veloce dei principi fondamentali dell'elettronica e della programmazione. È composto da una piattaforma hardware per il physical computing sviluppata presso l'Interaction Design Institute.
Questa si basa su un circuito stampato che integra un microcontrollore con pin connessi alle porte I/O, un regolatore di tensione e quando necessario un'interfaccia USB che permette la comunicazione con il computer. A questo hardware viene affiancato un ambiente di sviluppo integrato (IDE) multipiattaforma (per Linux, Apple Macintosh e Windows). Questo software permette anche ai novizi di scrivere programmi con un linguaggio semplice e intuitivo derivato da C e C++ chiamato Wiring, liberamente scaricabile e modificabile.
- Processing: Processing is an open source programming language and environment for people who want to create images, animations, and interactions. E' stata fatta la scelta di utilizzare il linguaggio e l'ambiente di programmazione Processing, e non quelli appartenenti al mondo Arduino, poichè questo simil-linguaggio Java risulta essere molto più versatile per quanto riguarda le operazioni di connettività, come ad esempio l'upload via web. Utilizzando il codice di Arduino l'unica soluzione per connettersi alla rete è quella di acquistare lo Shield Ethernet e programmarlo con le librerie apposite.
- Le resistenze sono necessarie alla realizzazione del partitore di tensione, sono state scelte con un valore abbastanza elevato per avere una grande impedenza all'ingresso del circuito (come viene spiegato meglio in seguito).
- Cosm (direttamente dal sito): Cosm is a secure, scalable platform that connects devices and products with applications to provide real-time control and data storage. Using Cosm's open API, individuals and companies can create new devices, develop prototypes, and bring products to market in volume. Cosm offers a way to launch internet enabled products without having to build any backend infrastructure. As a LogMeIn company, our platform runs within LogMeIn datacenters, providing world-class security and reliability.
Schema del progetto
- Partitore di tensione: è necessario un partitore di tensione in quanto Arduino accetta tensioni massime pari a 5V, mentre la tensione misurabile della batteria varia ovviemente dai 0 ai 14-15V. Nello specifico si utilizzano quattro resistenze da 1Mohm, così che, essendo la funzione di trasferimento del partitore R2/(R1+R2), dando in ingresso (Vin) una tensione di 12V si ha in uscita (Vout) una tensione di soli 3V (circa), supportata da Arduino. Al fine di avere in ingresso la più alta impedenza possibile, si utilizzano resistenze dell'ordine del mega-ohm.
- Codice Arduino: il programma campiona il valore della tensione della batteria una volta ogni 10 secondi; ogni minuto invia i dati mediati al server di cosm.com, questo per avere un grafico il più omogeneo possibile. Il valore di alfa è stabilito in base alle misure specifiche del valore delle resistenze (che hanno un +-5% di precisione). Le librerie importate sono cc.arduino, necessaria per dialogare correttamente con il microcontrollore, e eeml, necessaria per il collegamento con internet. Da notare che Arduino non campiona direttamente il valore della tensione, ma lo riporta con un valore che varia da 0 a 1023: è quindi necessaria una conversione tra il valore "misura_di_tensione" e il valore "misura_effettiva".
Il codice processing lo potete trovare a questo indirizzo:
Repository Tracking_Solar_Module