Problema sonde DS18B20

Un saluto a tutti!

Ho un problema con le sonde one wire in oggetto. Praticamente è qualche mese che testo "a banco" il mio progetto di termostato centralizzato con arduino mega.

Rilevo le temperature da 4 sonde (una per stanza) e in base al setpoint attivo l'opportuno relè di zona. Le temperature, i setpoin e tutti gli altri dati li leggo e modifico con l'ausilio di uno schermo 20x4 e 6 pulsanti.

Oggi ho portato l'arduino in casa dove andrò ad installare il tutto, ho collegato le sonde in ogni stanza e acceso il tutto, ma il problema è che le temperature lette continuano ad andare e venire (da programma faccio una lettura ogni secondo).

Cerco di essere più speficifo per quanto riguarda le connessioni: ho 3 fili che partono dall'arduino e passano in ogni stanza, quindi le sonde sono collegate tutte in parallelo, la prima sonda ha una distanza dall'arduino di 2 metri, la seconda di 6 metri, la terza di 10 metri, la quarta di 15 metri (sono valori non misurati ma abbastanza veritieri).

La tensione che arriva all'ultima sonda (quella più distante) è sempre di 5V, non ho praticamente nessuna caduta di tensione e l'ingresso digitale ha una resistenza di pull-up da 10k.

Quando avevo provato il tutto a casa avevo fatto anche la prova di collegare 3 sonde direttamente all'arduino e 1 sonda l'avevo collegata con una prolunga di 15 metri per testare il funzionamento sulla "lunga distanza", non riscontrando nessun problema.

Spero di aver dato tutte le informazioni necessarie, mi affido a voi! :slight_smile:

Grazie!

Aggiungo una cosa, tutte le connessioni sono state fatte a regola d'arte con l'ausilio di puntalini crimpati con apposita pinza :slight_smile:

Sto continuando a fare prove, ho provato a collegare solo la sonda più distante, la temperatura non va e viene più, però ho variazioni abbastanza accentuate (anche di 0.5°C) tra un secondo e l'altro, che sono sicuramente impossibili.

Ho notato anche che posso collegare le alimentazioni di tutte le altre sonde e la temperatura mi resta "stabile" (le variazioni rimangono), però nel momento in cui collego anche solo un altro ritorno allora a quel punto tutte le temperature riniziando ad andare e venire, come se il segnale di ritorno fosse un po' "tirato", debole..

Hai dimenticato solo lo schema...

Purtroppo non lo ho dietro al momento, sono andato diciamo a colpo sicuro visto che sono 3 mesi che gira e non ha mai fatto una scherzo del genere..

Lo sketch è bello lungo, qualche mila riga, lo posto tutto oppure solo la parte riguardante la lettura delle temperate?

@ bubba21:

Hai già avuto modo di leggere QUESTO documento ? Magari ti può essere utile ... :roll_eyes:

Guglielmo

Guglielmo, grazie per il link.

Ho provato a dargli una letta anche se con molta fatica (il mio inglese scolastico non mi permette di capire molto bene tanti termini tecnici).

Mi sembra di aver capito andrebbe utilizzato un cavo di rete (io ho usato un normale filo da 1.5mm) e che dovrei forse utilizzare una resistenza da 150 Ohm su ogni ramo dove collego le sonde, come nell'immagine allegata. Ho capito bene?

Invece, sempre riferendomi all'immagine allegata, le varie terre a cosa si riferiscono?

148Fig05.gif

Ho trovato un attimo per leggermi fuori qualche topic vecchio che riportano problemi simili.

In un paio di occasioni è bastato sostituire la resistenza di pull-up con una da 1kohm; in altri ho letto del discorso che parlavo prima del cavo,che sarebbe meglio usare un cavo twistato.

Riguardo a queste due cose ho un paio di domande da farvi: io ho messo un'unica resistenza di pull-up tra 5V e pin di ingresso. Mi viene il dubbio che non debba metterne una direttamente su ogni sensore..

Se usassi un cavo ethernet come dovrei comportarmi con i collegamenti per sfruttare il discorso dell'intrecciamento? Per esempio +5V e dati su una coppia e GND su un altro filo?

Da quanto ho letto, la configurazione che tu riporti (quella con una resistenza da 150? in seria a ciascun sensore) serve a minimizzare l'effetto delle onde riflesse ed è cosa suggerita ...

Dice chiaramente che occorre utilizzare cavo UTP CAT 5 ... in esso troverai delle coppie di fili intrecciate ...
... usa una coppia per portare il +5 e il GND ed una seconda coppia per portare i dati (DQ) e, ancora, il GND.

Guglielmo

Perfetto grazie per il consiglio!

Ho già detto un cavo Cat 5e per fare la prova, è un attimo tirarlo nei tubi..

Invce per il discorso della resistenza di Pull up adesso la ho collegata direttamente sull'arduino, mi consigli di metterne direttamente una su ogni sonda?

bubba21:
Invce per il discorso della resistenza di Pull up adesso la ho collegata direttamente sull'arduino, mi consigli di metterne direttamente una su ogni sonda?

Direi che è meglio seguire il consiglio che danno su quell'application note ... :wink:

Guglielmo

Ok allora abbasso l resisenza di Pull up a 1k come è consigliato da molti e la lascio sull'arduino.

Le resistenze vanno collegate in serie al ritorno delle sonde? :relaxed:

Nello schema sono chiaramente collegate in serie al filo del pin dati (DQ) ... :roll_eyes:

Guglielmo

Ok grazie ancora.

Giusto per capire meglio, da cosa lo dovrei capire che la resistenza è collegata al Pin dei dati?

Beh ... sul ground non è collegata ... sull'alimentazione (+Vcc) neanche ... in tutto hai 3 pin ...
... non ti restano molte scelte ... :grin: :grin: :grin:

Guglielmo

P.S. : Nello schemino che proprio tu hai messo, vedi che il sensore da un lato va a massa, l'alimentazione Vcc è omessa (sta parlando dei dati) e l'altro lato è quello che trasporta i dati :wink:

Guglielmo, grazie per la spiegazione, in effetti non riuscivo a capire da schema se si riferisse al +5V o ai dati ma era sottointeso.

Allora appena ho tempo per andare a casa faccio queste tre cose, tolgo i fili e metto il cavo di rete cat 5e (collego +V e GND a una coppia e Segnale con GND ad un'altra), la resistenza di pull up la metto da 1kohm e aggiungo le 4 resistenze da 150ohm in serie al segnale di ogni sonda, poi vi faccio sapere! :slight_smile:

Dovrei mettermi al lavoro per fare una cosa simile e monitorare temperatura di ogni stanza, del pescaggio aria del clima e temperatura in uscita... un totale di circa una decina di sensori.

Anch'io avevo il dubbio se utilizzare una sola resistenza su tutto il circuito oppure se metterne una per ogni sensore.
Se indicherai il risultato delle tue prove mi farai un grossissimo favore.

Grazie in anticipo!

Occhio che state parlando di resistenze con scopi diversi ... non mischiate le due cose ...
... quelle da 150? in serie sui vari rami, indicate nell'application note servono solo per attenuare il fenomeno delle onde riflesse !!!

Guglielmo

Questa sera ho avuto un attimo per provare a sistemare il problema della lettura.

Prima cosa ho cambiato i fili con un cavo ethernet cat5e come consigliato e non è cambiato niente ..sinceramente non me l'aspettavo, pensavo che almeno facesse una lettura ogni tanto invece proprio zero..

Ho cambiato la resistenza di pull up da 10k con una da 1k e funziona tutto perfettamente.

Non ho avuto tempo di aggiungere anche le resistenze da 150 ohm in serie al segnale ma magari più avanti lo farò per una completa sicurezza di trasmissione dei dati.

Quindi ricapitolando:
Tiri i tuoi 3 cavi: DATA, Vcc e GND. Colleghi i vari sensori a questa dorsale, e solo lato arduino metti la R da 1K. Questa è la tua soluzione funzionante. Corretto o mi sono perso qualcosa?

Il tuo aiuto mi permette di evitare di effettuare un sacco di prove (con conseguente riduzione di tempo), per questo GRAZIE!

Mi ero documentato ed avevo appunto già letto parecchie info, alcune delle quali discordanti (ci sono un sacco di schemi sbagliati in giro per il web...).

bubba21:
Prima cosa ho cambiato i fili con un cavo ethernet cat5e come consigliato e non è cambiato niente ..sinceramente non me l'aspettavo, pensavo che almeno facesse una lettura ogni tanto invece proprio zero ......

Sembra a te che non è cambiato nulla, ma a livello di disturbi è cambiato molto ... solo che tu avevi anche un altro problema, una pull-up troppo elevata che, vedendo i risultati, non forniva corrente sufficiente a garantire il funzionamento :wink:

bubba21:
Non ho avuto tempo di aggiungere anche le resistenze da 150 ohm in serie al segnale ma magari più avanti lo farò per una completa sicurezza di trasmissione dei dati.

Come detto quelle servono per le onde riflesse ... male non dovrebbero fare, comincia con un sensore e, se la cosa va bene, prosegui ...

Guglielmo