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