Vai al contenuto
PLC Forum


Registratore Dati su SD, sw Arduino x misura efficienza


Messaggi consigliati

Inserito:

Mi occupo di fotovoltaico e sono interessato a misurare produzione e consumi. Voglio pure memorizzarli, con un data_logger.

Facile registrare dati con Arduino ?

Certo che si, ma l'efficienza del sistema dipende dall'hardware utilizzato (shield + memoria SD) e dal software utilizzato.

Quando Arduino è impegnato a catturare dati (es.: Pelelope) deve poter registrare i dati nel minor tempo possibile per non perdere impulsi.

Questo software, messo a punto con un Arduino UNO e una shield Amazon (modello WINOMO), mi mostra quanto tempo occorre (pochi millesimi di secondo) per registrare una serie di dati (data e ora + 4 numeri) e consente di fare verifiche puntuali circa l'efficienza della shield utilizzata, della memoria SD e di quant'altro (indicativamente: FAT, marca e dimensione della SD, dimensione del file, ecc.).

 


Inserita:

Il file "consumi.txt" registrato sulla memoria SD assume questa forma, su una sola colonna. Ma sono possibili variazioni sul tema.

 

ora: 12-55 / giorno: 24-5-16   
3000
3001
3002
3003

ora: 12-55 / giorno: 24-5-16   
3004
3005
3006
3007

ora: 12-55 / giorno: 24-5-16   
3008
3009
3010
3011

Inserita:

La batteria dell'orologio (CRT) dovrebbe consentire una durata di anni, come accade nei computer domestici. Per modificare l'orario di default e per aggiornarlo, quando si cambia la batteria, serve un piccolo programmino (sketch) Arduino.

Il mio, disponibile su internet, ma aggiornato con la visualizzazione su display seriale, è stato denominato "CRT_modifica_orario.ino". Lo posso postare nella sezione UP/Download.

Inserita:

Ho riscontrato una perfetta registrazione dei dati sulle memorie SD testate, ma con differenze molto importanti nella velocità. Funziona solo con memorie con 9 contatti. Non funziona con quelle dotate di soli 8 contatti.

Inserita:

Scusa Luigi, otresti spiegare a cosa si riferiscono i dati che riporti in esempio. Io vedo un numero progressivo ed ogni 4 compare anche ora minuto e data.

Se non fai comparire i secondi la resgistrazione darebbe adito a confusione.

Si potrebbe anche aggiornare solo ora e minuti, ma allora sarebbe meglio comparisse il nuovo orario solo quando cambia il minuto.

Inserita:

Lo sketch di esempio, che ho postato, registra data/ora e 4 numeri progressivi di 4 cifre, in tempi rapidi. Si può aggiungere anche i secondi. Non l'ho messo per il solo motivo che non ci stava nei 16 caratteri del display.

Si può utilizzare questo software, aggiornando il prelievo dei dati da dove serve, per effettuare la registrazione. Ad esempio registrare - ogni 5 minuti - i dati di produzione di un impianto fotovoltaico e quella dei consumi domestici (funziona così nei migliori software professionali delle centraline di monitoraggio).

Nel mio caso lo scopo dello sketch Arduino è solo quello di verificare il tempo impiegato per fare - correttamente - la registrazione, o meglio una serie di registrazioni. Il dato evidenziato sul display, al termine di ciascuna registrazione, mi indica i millisecondi impiegati. In molti casi è inferiore a 10, in altri il doppio. E' tempo "perso" da Arduino che, come sappiamo, non riesce a fare più di una cosa alla volta. Perciò è importante verificare l'hardware che si utilizza.

In sostanza questo è uno strumento di misura, ma la base del software può servire per sviluppare tante applicazioni, senza doversi "inventare" tutto ex novo. Anche lo sketch di aggiornamento dell'orario è molto utile e con qualche ritocco si può migliorare per facilitare l'inserimento dei dati.

Inserita:

Registratore dai su ardruino = Logger ?

Inserita:

Registrazione dati su SD con Arduino, cioè data logger. Proprio così. E' assai utile in tante applicazioni ed è facile trovare l'hardware necessario. Peraltro a buon mercato, come la gran parte dell'hardware che è stato studiato per Arduino.

L'obiezione ricorrente è che è altrettanto facile (e decisamente più "moderno") archiviare dati su una data server, via Internet, con il vantaggio di fruire dei dati tramite smartphone, da parte di più utenti, ma i vantaggi del sistema tradizionale possono superare le obiezioni, valutando caso per caso.

.

Inserita:

Integrare la registrazione dati in un programma Arduino esistente è molto facile. Occorrono poche righe di codice.

Come quello che ho utilizzato per registrare la produzione fotovoltaica, ogni 5 minuti:

    if (millis() > vecchio_orario + 300000)     // sono passati 5 minuti:
    {
      vecchio_orario = millis();
      file = SD.open("produzione.txt", FILE_WRITE); //File in scrittura:
      if (file) //Se il file è stato aperto correttamente:
      {
        file.println(""); //spazio/riga:
         file.print("ora: "); //Descrizione:
         file.print(ora, HEX); //Scrivo l'ora:  
         file.print("-");
         file.print(minuti, HEX); //Scrivo i minuti:  
         file.print(" / giorno: ");  // Descrizione: 
         file.print(giorno_mese, HEX); //Scrivo il giorno:  
         file.print("-");
         file.print(mese, HEX); //Scrivo il mese:
         file.print("-");
         file.print(anno, HEX); //Scrivo l'anno:      
         file.println("   ");
         file.println(val1);   //Scrivo numero produzione:  
         file.close(); //Chiusura file:  
       }

    }

Inserita:

E' un metodo molto rozzo, quello del polling.

Meglio sarebbe legare l'evento all'interrupt di un timer, si risparmierebbero inutili iterazioni.

Inserita:

I file di testo (.txt) prodotti con il registratore dati hanno caratteristiche davvero interessanti:

1) occupano pochissimi byte e in una SD di qualche giga ci stanno anni e anni di registrazioni;

2) si possono leggere con Excel (cliccare "apri con -> Excel") che lo carica nella colonna "A

3) con Excel si fanno ricerche rapidissime e grafici molto esplicativi. Come questo, relativo alla produzione degli ultimi 2 giorni del mio FV. Da notare il giorno 26 maggio con qualche velatura del cielo di contro al 27 maggio con cielo limpidissimo e un grafico molto "pulito".

Produzione_FV2.jpg

Inserita:

Interrupt o polling ? Bella domanda. Va valutato caso per caso. Nel mio ho sfruttato il loop velocissimo di Penelope, già oggetto di discussioni precedenti. La verifica ad ogni passaggio ha comportato un rallentamento della esecuzione del codice, ma senza conseguenze negative, come certificato dal grafico prodotto (peccato abbia una risoluzione scarsa, meno di 20k, ma posso postare l'intero foglio Excel).

 

 

 

Inserita:
Quote

Interrupt o polling ? Bella domanda

 

Non tanto, e mai quando si tratta di eventi a tempo. In questo caso sempre e solo interrutpt.

E' anche una questione di metodologia.

Il polling è accettabile per eventi asincroni molto lenti rispetto al tempo di ciclo del main.

Inserita:

per fare le temporizzazioni usa il WTimer , sono timer software di ritardo all'eccitazione e alla diseccitazione .

Naaaaaaa non capirete mai , continuate e sforzarvi di fare cose quando c'e' gia tutto pronto .

Atteggiamento del progettista.programmatore di basso profilo :D

:thumbdown::thumbdown::thumbdown:

 

Inserita:

Certo che con questo atteggiamento così propositivo fai passare anche la sola curiosità  a noi comuni mortali, umili, con capacità cognitive limitate e scarsa fantasia, cioè di basso profilo, nel  solo cercar di capire cosa siano sti wtimers....probabilmente una rivoluzione copericana in ambito informatico....

Chi come me ha difficoltà nello scrivere la parola excell correttamente sa che Il privilegio di raggiungere le vette  luminose del sapere è precluso a molti......a proposito.....cos'è excell? :superlol:

Inserita:

C'è una discussione in questo forum dove Walter illustra, passo passo, la sua tesi di laurea basta su Arduino2 ed alcune schede di periferia per realizzare un sistema domotico controllabile da smarphone. La libreria WTimer, parte integrante del processo, se non ricordo male è stata caricata nella sezione Upload del forum.

Strano che tu, Stefano, non ricordi; hai anche partecipato da subito alla discussione.

Inserita:
Quote

Chi come me ha difficoltà nello scrivere la parola excell correttamente ....

Dott' , non rovinarTi il We ... :whistling:(fine settimana) , ho trovato io come si scrive , forse cosi :

 

 

7e3ac416c7faf6ad0445f5240ba1a039.jpg

 Vecchiotto , ma non credo che abbiano cambiato il nome ....

 

Quote

Strano che tu, Stefano, non ricordi; hai anche partecipato da subito alla discussione

Ricorda , ricorda , ma la lettura delle sole parole spesso inganna .....

Inserita:

Il bello di Arduino è la semplicità dell'hardware.

Il data logger è collocato su un Arduino UNO con pochi componenti di contorno, come il display seriale 2x16.

Ovviamente Arduino sta "lavorando". Da notare le informazioni sul display relative a produzione (2.019) e consumi (284) espressi in watt.

 

Inserita:

Sì, lo ricordo....era una nota fra l'ironico e il sarcastico.

Caspita dovrei leggere tutta quel malloppo per imparare ad usare excell? Continuo col mio abaco! :P

Inserita:
Quote

Caspita dovrei leggere tutta quel malloppo per imparare ad usare excell?

NOO !Le due piccole in basso no , sono la licenza .:roflmao:

Inserita:

Stefano sono sicuro che stai "posando" un poco.

Excel è auto insegnante, pensa che riescono ad usarlo persino i ragionieri ed i geometri.:superlol:

Inserita:

caro Luigi ..... quando le cose si fanno serie si passa oltre.

Arduino ok , SD card e librerie ok e tutto il resto .

Esistono computer completi di ethernet , usb, hdmi ....al sol costo di 17 euro .

Certo , c'e' da lavorare , ma credo ne valga la pena .

Supportano varie distro di linux per cui servizi e programmi , gratis.

Server web, file system, databases , connettività 

Con arduino rischi di rimanere inchiodato al palo perchè se vuoi fare la differenza devi offrire servizi , per esempio voglio visionare il tuo logger da remoto tramite in mio android phone ....e tante altre cose . Arduino è semplice e da semplice fornisce servizi semplici che ormai non trovano più spazio .

Sei ancora li a scrvere un timer col software quando avresti tutto gia pronto , costo del tempo , della manutenzione etc etc .

 

Tra l'altro , sempre caro Luigi , oltre al WTimer ho anche spiegato per filo e per segno come utilizzare la SD card con arduino , cioe praticamente qualsiasi forma di struttura dati la scrivo e la leggo su SD card tramite puntatori . Sei indietro .....

Inserita:

non ha senso scrivere e debuggare linee di codice quando con 4 righe fati tutto ed hai tutto sotto controllo .

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...