Risultati da 1 a 6 di 6
  1. #1
    Burrasca
    Data Registrazione
    18/09/19
    Località
    Catania
    Messaggi
    5,061
    Menzionato
    151 Post(s)

    Predefinito Datalogger con Arduino e una catena di DS18B20

    Siccome con la storia dei confonti di schermi solari avete messo una pulce anche a me mi son messo a scrivere uno sketch per Arduino di base per stampare sulla seriale le misure di temperatura di una catena di DS18B20 in modo da poter fare questi controlli facilmente o anche per poter vedere quali possono essere le differenti temperature dovute a differenti posizioni del sensore.

    I DS18B20 sono dei sensori digitali della Dallas, oggi una divisione della Maxim Integrated, non sono il meglio, probabilmente hanno un tempo di equilibrio lungo ma hanno 2 vantaggi: ogni sensore ha un suo numero di serie per cui puoi tenere traccia del suo comportamento nel tempo ed è possibile far partire la misura contemporaneamente per tutti i sensori della catena per poi leggerli. Il minimo tempo di campionamento è di 750ms, se si vogliono tempi inferiori bisogna sacrificare il numero di bit della misura di temperatura, il cui massimo è 12.

    Nella prima versione i valori differivano anche di un grado ma, ho scoperto poi, era perché non tutti i sensori erano settati alla risoluzione di 12 bit.
    Ancora non sono passato alla scatola isolata ma qui all'aria sul tavolo. Ma avendo il numero di serie di ognuno è possibile calibrarli tutti e tenere traccia facilmente delle calibrazioni.

    Attualmente questo sketch rileva tutti i sensori presenti nella catena (fino ad un massimo di 10), la cui linea dati è collegata al pin 2, quindi per tutti seleziona la risoluzione massima e la salva sulla EEPROM del sensore, poii stampa sulla seriale i numeri di serie, separati dalla virgola, e le temperature, prese nello stesso ordine.
    Le misure di temperatura sono prese contemporaneamente da tutti i sensori, mentre la successiva lettura è fatta sequenzialmente.
    Il difetto di questo programma è che bisogna collegare i sensori uno alla volta per sapere il numero di serie di ognuno ma si tratta di un inizio.

    Per registrare i dati ci vuole un programma terminale seriale che abbia la possibilità di farlo. Io ho usato RealTermi

    Per il capture con RealTerm
    Lanciare RealTermo
    Scegliere la scheda Capture
    In File scegliere il nome del file, mettere la spunta in Display e quindi premere Start: Overwrite
    Andare alla scheda Port
    In Baud selezionare 115200, in Port selezionare la porta dove è collegato Arduino e premere su change
    Per fermare la cattura andare sulla scheda Capture e premere Stop Capture

    Lo sviluppo futuro è quello di andare a batteria e di registrare sulla SD. Ho anche intenzione di aggiungere una funzione che rilevi i nuovi sensori alla pressione di un tasto. In questo modo è possibile sapere facilmente a quale sensore corrisponde il numero di serie rilevato.
    Però se vado a batteria serve uno schermo oppure un qualcosa che permetta di capire che il sensore è stato rilevato e che ha una precisa posizione nelle colonne.

    Per adesso l’idea è questa. Collego il primo sensore e premo il tasto. Arduino lo rileva e gli assegna il primo indice, già previsto nell’array dei numeri di serie. Quindi collego il secondo sensore, Arduino rileva i due sensori ma il primo è già presente nell’array, lo ignora e registra il secondo assegnandogli l’indice successivo. E così via. Se c’è la SD registro l’array sulla SD altrimenti mi posso inventare qualcosa per registrare i dati sulla EEPROM interna.

    Ci sarebbe anche la possibilità di portare tutto su una MCU ESP8266 e quindi trasmettere i dati via WiFi.

    In allegato trovate lo sketch, liberissimi di modificarlo come vi pare.
    L’estensione è bz2 perché il forum non accetta allegati zip, si dovrebbe aprire con 7zip e WinRar ma probabilmente anche con WinZip.
    DS18B20_Multiple_chain3.ino.bz2

  2. #2
    myMeteoNetwork Team L'avatar di capriccio
    Data Registrazione
    07/12/16
    Località
    Montemarciano (AN)
    Età
    60
    Messaggi
    7,046
    Menzionato
    154 Post(s)

    Predefinito Re: Datalogger con Arduino e una catena di DS18B20

    Citazione Originariamente Scritto da zoomx Visualizza Messaggio
    Siccome con la storia dei confonti di schermi solari avete messo una pulce anche a me mi son messo a scrivere uno sketch per Arduino di base per stampare sulla seriale le misure di temperatura di una catena di DS18B20 in modo da poter fare questi controlli facilmente o anche per poter vedere quali possono essere le differenti temperature dovute a differenti posizioni del sensore.

    I DS18B20 sono dei sensori digitali della Dallas, oggi una divisione della Maxim Integrated, non sono il meglio, probabilmente hanno un tempo di equilibrio lungo ma hanno 2 vantaggi: ogni sensore ha un suo numero di serie per cui puoi tenere traccia del suo comportamento nel tempo ed è possibile far partire la misura contemporaneamente per tutti i sensori della catena per poi leggerli. Il minimo tempo di campionamento è di 750ms, se si vogliono tempi inferiori bisogna sacrificare il numero di bit della misura di temperatura, il cui massimo è 12.

    Nella prima versione i valori differivano anche di un grado ma, ho scoperto poi, era perché non tutti i sensori erano settati alla risoluzione di 12 bit.
    Ancora non sono passato alla scatola isolata ma qui all'aria sul tavolo. Ma avendo il numero di serie di ognuno è possibile calibrarli tutti e tenere traccia facilmente delle calibrazioni.

    Attualmente questo sketch rileva tutti i sensori presenti nella catena (fino ad un massimo di 10), la cui linea dati è collegata al pin 2, quindi per tutti seleziona la risoluzione massima e la salva sulla EEPROM del sensore, poii stampa sulla seriale i numeri di serie, separati dalla virgola, e le temperature, prese nello stesso ordine.
    Le misure di temperatura sono prese contemporaneamente da tutti i sensori, mentre la successiva lettura è fatta sequenzialmente.
    Il difetto di questo programma è che bisogna collegare i sensori uno alla volta per sapere il numero di serie di ognuno ma si tratta di un inizio.

    Per registrare i dati ci vuole un programma terminale seriale che abbia la possibilità di farlo. Io ho usato RealTermi

    Per il capture con RealTerm
    Lanciare RealTermo
    Scegliere la scheda Capture
    In File scegliere il nome del file, mettere la spunta in Display e quindi premere Start: Overwrite
    Andare alla scheda Port
    In Baud selezionare 115200, in Port selezionare la porta dove è collegato Arduino e premere su change
    Per fermare la cattura andare sulla scheda Capture e premere Stop Capture

    Lo sviluppo futuro è quello di andare a batteria e di registrare sulla SD. Ho anche intenzione di aggiungere una funzione che rilevi i nuovi sensori alla pressione di un tasto. In questo modo è possibile sapere facilmente a quale sensore corrisponde il numero di serie rilevato.
    Però se vado a batteria serve uno schermo oppure un qualcosa che permetta di capire che il sensore è stato rilevato e che ha una precisa posizione nelle colonne.

    Per adesso l’idea è questa. Collego il primo sensore e premo il tasto. Arduino lo rileva e gli assegna il primo indice, già previsto nell’array dei numeri di serie. Quindi collego il secondo sensore, Arduino rileva i due sensori ma il primo è già presente nell’array, lo ignora e registra il secondo assegnandogli l’indice successivo. E così via. Se c’è la SD registro l’array sulla SD altrimenti mi posso inventare qualcosa per registrare i dati sulla EEPROM interna.

    Ci sarebbe anche la possibilità di portare tutto su una MCU ESP8266 e quindi trasmettere i dati via WiFi.

    In allegato trovate lo sketch, liberissimi di modificarlo come vi pare.
    L’estensione è bz2 perché il forum non accetta allegati zip, si dovrebbe aprire con 7zip e WinRar ma probabilmente anche con WinZip.
    DS18B20_Multiple_chain3.ino.bz2
    Grazie, sono un innamorato dei ds18b20, penso di averne ancora una decina, il lavoro più grande con questi sensori, ricordo, era cercare di accoppiarli quando dovevo fare dei confronti, cioè trovarne 2 con precisione identica (non accuratezza, ovviamente) e li contrassegnavo a coppie, lavoro immenso ma di grande soddisfazione
    sensore rapidissimo, una costante di tempo da brivido, robustissimo, non minuscolo quando incapsulato ma di dimensioni accettabili
    ne ho ancora uno in funzione in davis 7714 connesso ad un display con cavo da 30mt, lo uso come monitor per valutare la tendenza

    purtroppo la mia età, e la mia scarsa conoscenza nel settore informatico, mi precludono comprendere il tuo lavoro, ma sono felice che vi sia ancora interesse dietro questo sensore a costo vicino allo zero ma dalle ottime caratteristiche

    Mauro
    MeteoNetwork
    Validazione stazioni amatoriali

    mauro.serenello@meteonetwork.it
    mauro.serenello@protonmail.com



  3. #3
    Burrasca
    Data Registrazione
    18/09/19
    Località
    Catania
    Messaggi
    5,061
    Menzionato
    151 Post(s)

    Predefinito Re: Datalogger con Arduino e una catena di DS18B20

    Ho quasi una collezione di sensori ma questi sono credo gli unici che possano essere montati in catene numerose e collegati ad un solo filo più i due di alimentazione. Volendo si può usare l'alimentazione via linea dati usando 2 soli fili in totale. Visto il costo è possibile costruirsi catene per misure di gradienti di temperatura o per ottenere il dato in parecchi punti.

    Volendo con questo programmino così com'è si potrebbero localizzare i sensori semplicemente tenendoli in mano ad uno ad uno e vedendo sul plotter dell'IDE di Arduino qual'è quello che si sta scaldando.

    Non credevo che la costante di tempo fosse buona, visto il contenitore plastico.

  4. #4
    myMeteoNetwork Team L'avatar di capriccio
    Data Registrazione
    07/12/16
    Località
    Montemarciano (AN)
    Età
    60
    Messaggi
    7,046
    Menzionato
    154 Post(s)

    Predefinito Re: Datalogger con Arduino e una catena di DS18B20

    Citazione Originariamente Scritto da zoomx Visualizza Messaggio
    Ho quasi una collezione di sensori ma questi sono credo gli unici che possano essere montati in catene numerose e collegati ad un solo filo più i due di alimentazione. Volendo si può usare l'alimentazione via linea dati usando 2 soli fili in totale. Visto il costo è possibile costruirsi catene per misure di gradienti di temperatura o per ottenere il dato in parecchi punti.

    Volendo con questo programmino così com'è si potrebbero localizzare i sensori semplicemente tenendoli in mano ad uno ad uno e vedendo sul plotter dell'IDE di Arduino qual'è quello che si sta scaldando.

    Non credevo che la costante di tempo fosse buona, visto il contenitore plastico.
    verissimo, sulla carta il contenitore del b20 non dovrebbe corrispondere a una buona reattività, cosa che invece ho sempre apprezzato in questo sensore, rapido e reattivo, forse sono stato fortunato

    Mauro
    MeteoNetwork
    Validazione stazioni amatoriali

    mauro.serenello@meteonetwork.it
    mauro.serenello@protonmail.com



  5. #5
    Burrasca
    Data Registrazione
    18/09/19
    Località
    Catania
    Messaggi
    5,061
    Menzionato
    151 Post(s)

    Predefinito Re: Datalogger con Arduino e una catena di DS18B20

    Anche io ho notato che appena accendo l'aria condizionata e inizia ad arrivare il flusso freddo il sensore reagisce rapidamente.

    Intanto il progetto va avanti, oggi ho provato il codice per memorizzare i seriali dei sensori nella EEPROM.
    Questo perché mi son posto il problema di semplificare l'identificazione della posizione dei sensori ma di non complicare il programma datalogger.
    Per adesso l'idea è di avere un programma per la sola identificazione e uno per il datalogger. Il primo scriverà i dati sulla EEPROM che saranno letti dal secondo. Non è una soluzione ottimale, se vogliamo aggiungere un sensore in campo dobbiamo scambiare i programmi ma evita di dover aggiungere dell'hardware di comando sul datalogger. Attualmente in programma ci sarà solo un pulsante per l'avvio e il blocco della registrazione dei dati con del codice che copierò da altri progetti che ho realizzato.

    Ci sarebbe da aggiungere un orologio.
    Quello più comune su Arduino è il DS1307, lo si trova anche su shield datalogger. Ha il terribile difetto che, se non realizzato bene, con un cristallo decente e opportuni condensatori, è molto impreciso, perde parecchi secondi al giorno e la variazione è dipendente dalla temperatura.
    C'è il DS3231, un po' più costoso ma nettamente meglio poiché il cristallo è integrato, ne viene misurata la temperatura e risulta molto più preciso. L'unica seccatura è che va regolato e bisogna mettere codice ed interfaccia hardware per farlo. E bisogna ricordarsi di cambiare la batteria di backup ogni tanto.
    Poi ci sarebbe il GPS, ne ho comperato uno per meno di 3 euro e sembra funzioni. Prendo l'ora da li e non mi preoccupo di altro. Ma così al chiuso non funziona. E il GPS consuma.
    Al chiuso sarebbe forse meglio usare l'ESP8266, mi collego al WiFi casalingo e prendo l'orario dai server NTP, risolvo in 4 righe di codice 4. Posso registrare sulla flash invece che sulla SD (ma l'opzione SD c'è sempre) e magari accrocchiare qualcosa (di solito un server Web) per scaricare via LAN il file.
    Ma potrebbe anche non servire orologio se interessano solo le differenze fra le temperature rilevate.

  6. #6
    myMeteoNetwork Team L'avatar di capriccio
    Data Registrazione
    07/12/16
    Località
    Montemarciano (AN)
    Età
    60
    Messaggi
    7,046
    Menzionato
    154 Post(s)

    Predefinito Re: Datalogger con Arduino e una catena di DS18B20

    Citazione Originariamente Scritto da zoomx Visualizza Messaggio
    Anche io ho notato che appena accendo l'aria condizionata e inizia ad arrivare il flusso freddo il sensore reagisce rapidamente.

    Intanto il progetto va avanti, oggi ho provato il codice per memorizzare i seriali dei sensori nella EEPROM.
    Questo perché mi son posto il problema di semplificare l'identificazione della posizione dei sensori ma di non complicare il programma datalogger.
    Per adesso l'idea è di avere un programma per la sola identificazione e uno per il datalogger. Il primo scriverà i dati sulla EEPROM che saranno letti dal secondo. Non è una soluzione ottimale, se vogliamo aggiungere un sensore in campo dobbiamo scambiare i programmi ma evita di dover aggiungere dell'hardware di comando sul datalogger. Attualmente in programma ci sarà solo un pulsante per l'avvio e il blocco della registrazione dei dati con del codice che copierò da altri progetti che ho realizzato.

    Ci sarebbe da aggiungere un orologio.
    Quello più comune su Arduino è il DS1307, lo si trova anche su shield datalogger. Ha il terribile difetto che, se non realizzato bene, con un cristallo decente e opportuni condensatori, è molto impreciso, perde parecchi secondi al giorno e la variazione è dipendente dalla temperatura.
    C'è il DS3231, un po' più costoso ma nettamente meglio poiché il cristallo è integrato, ne viene misurata la temperatura e risulta molto più preciso. L'unica seccatura è che va regolato e bisogna mettere codice ed interfaccia hardware per farlo. E bisogna ricordarsi di cambiare la batteria di backup ogni tanto.
    Poi ci sarebbe il GPS, ne ho comperato uno per meno di 3 euro e sembra funzioni. Prendo l'ora da li e non mi preoccupo di altro. Ma così al chiuso non funziona. E il GPS consuma.
    Al chiuso sarebbe forse meglio usare l'ESP8266, mi collego al WiFi casalingo e prendo l'orario dai server NTP, risolvo in 4 righe di codice 4. Posso registrare sulla flash invece che sulla SD (ma l'opzione SD c'è sempre) e magari accrocchiare qualcosa (di solito un server Web) per scaricare via LAN il file.
    Ma potrebbe anche non servire orologio se interessano solo le differenze fra le temperature rilevate.
    Ti faccio i miei complimenti e ammetto di essere totalmente un ignorante in merito
    è affascinante il modo in cui gestisci l'argomento, segno di estrema padronanza, non ci arriverò mai e per me è tardi per imparare, già devo imparare la metrologia e sono al 0,1%

    quando è pronto me lo monti e me lo vendi, unica soluzione per me

    Mauro
    MeteoNetwork
    Validazione stazioni amatoriali

    mauro.serenello@meteonetwork.it
    mauro.serenello@protonmail.com



Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •