massima lunghezza one wire bus

Ho collegato ben 8 sensori di temperatura DS18B20 ad Arduino uno mediante un onewire bus con un cavetto schermato a due poli: uno per l'alimentazione, uno per i dati e lo schermo come GND. Tutto funziona benissimo. Quando sono andato a collegare uno solo dei sensori con lo stesso tipo di cavo ma lungo 30 m., nulla ha piu' funzionato!! Avendo testato piu' volte il cavo e non avendo trovato nessun errore di collegamento, mi viene il dubbio che il bus non puo' essere piu' lungo di un tot. Non sono pero' riuscito a trovare questa indicazione nei vari datasheet.
Qualcuno ha avuto esperienze analoghe?

grazie

scusa ma non mi torna, l'1-wire dovrebbe fornire sia alimentazione che segnale sullo stesso cavo, no? btw Guidelines for Reliable Long Line 1-Wire Networks | Analog Devices

no, one wire può funzionare in due modi, con tre fili in modalità normale e con 2 fili in modalità parasite Power.
Il punto è che 30 metri sono tanti, ma non per il bus, ma per l'alimentazione.
Prova ad alimentare il sensore direttamente ai suoi pin e metti comunque la massa in comune con quella del cavo.
Se funziona vuol dire che c'è troppa cdt sul cavo e quindi o ne aumenti la sezione o non lo usi anche per l'alimentazione.
Curiosità, che cavo è?
Spero non sia un doppino twistato...

Controlla il CRC dei dati sempre nel codice, specialmente su lunghe distanze per non avere false letture.
Lato hw che resistenza di pull-up utilizzi?

hai provato a dare un'occhio qui?

io ho cominciato a leggerlo ma oggi è troppppo male e mi spento dopo 30 righe... comunque da una ricerca che ho fatto i giorni scorsi sembrava che i 30 metri fossero raggiungibili ma fosse diremo la distanza "inizio qualche rogna".

Dunque, non ho usato la passive power proprio per evitare problemi con molti sensori. Quindi l'alimentazione viene data a tutti i sensori prelevandola dai 5 V di Arduino. La stranezza e' che per 8 sensori su cavi corti, funziona tutto, quando invece metto solo uno di questi sul cavo da 30, non funziona piu' niente anche se l'assorbimento dovrebbe essere lo stesso di prima, a parte la resistenza del cavo che pero' dovrebbe agire solo su un sensore colegato alla sua estremita'. La resistenza di pull up e' da 4.7 K come di solito e' indicato. Tutti i cavi sono doppini schermati, quelli usati per gli stereo. Lo schermo e' usato come massa per tutti i sensori e per Arduino. Tra l'altro il cavo schermato e' stata una mia precauzione, infatti nessun datasheet ne parla.
Adesso mi leggero' la guidelines suggerita.
Per ora grazie, domani faro' altre prove e vi faccio sapere come e' andata.

Il problema potrebbe essere la resistenza di pull-up, prova ad abbassare il valore fino ad arrivare ad 1k
Per comunicare il termometro deve riuscire a portare al livello logico basso la linea che altrimenti deve essere al livello logico alto

Ciao

PS: Per chi vuole usare la modalità parassità sappia non è così facile da utilizzare, bisogna aggiungere dei mosfet e ci sono diverse precauzioni da prendere.

attenzione che non in tutte le circostanze è meglio utilizzare un cavo schermato.
Uno di quei casi è il tuo.
Io ho utilizzato dei dht11 a una dozzina di metri con del cavo a 4 poli telefonico senza alcun problema.

il cavo non fa solo da resistenza ma anche da capacità e da induttanza. La 1-wire mi pare sia sensibile all'induttanza, quindi più che un problema di schermatura potrebbe essere la sezione del cavo. Cmq dalla note che ho postato (e anche qsecofr) parlano di un centinaio di metri...

lesto:
Cmq dalla note che ho postato (e anche qsecofr) parlano di un centinaio di metri...

ahhh si scusa: che m0na... mi pareva parlassi di altro invece ho postato proprio lo stesso collegamento: chiedo venia :blush:

lesto:
La 1-wire mi pare sia sensibile all'induttanza...

e tantissimo alla capacità!

Ho deciso che era giunto il momento di tirare fuori l'oscilloscopio e vedere i segnali che passano sul bus con e senza il cavo da 30 metri.
Le videate in modalità persistenza sono in attach: la 0004 è quella senza cavo da 30 m, la 0005 con il cavo. E' evidente l'attenuazione, da 5 a 3 V, e la distorsione del segnale (rampa di salita lenta). Questo però si vede solo per alcuni segnali, mentre altri rimangono invariati. Avendo preso il segnale vicino al piedino di ardduino, penso che il segnale non attenuato sia quello di andata e quello distorto quello di ritorno.
Mi viene quindi il dubbio che il cavo schermato non vada bene perchè ha una capacità o induttanza elevata. Le caratteristiche del cavo sono:
2 x 0,15 + schermo, il tutto di diametro 4 mm. Se ho fatto bene i conti la durata di un singolo impulso e' 50 microsec, quindi una frequenza di 20 kHz. Essendo un cavo usato per applicazioni audio, potrebbe incominciare a distorcere a queste frequenze.

Ma che ca**o se avevi l'oscilloscopio l'hai tirato fuori solo ora? ]:smiley:
Hai provato a cambiare le pull-up e verificare con l'oscilloscopio se la situazione migliora come ti avevo detto?
Il cavo schermata ha una capacità maggiore, se puoi usane uno non schermato

Ciao

niki77:

lesto:
La 1-wire mi pare sia sensibile all'induttanza...

e tantissimo alla capacità!

si scusa, ho scritto di fretta e nella stanchezza, intendevo capacità -.-"

@FLZ47... avevi ragione!! Ho messo una resistenza di pull-up da 1 K anzichè da 4.7 K e tutto sembra funzionare. La distorsione c'e' ancora ma meno di prima e comunque i sensori rispondono. Rimane il dubbio che forse un doppino telefonico funziona meglio di un cavo schermato! provero' in seguito.

:slight_smile:

Dalle immagini che hai postato si nota benissimo che i fronti di salita del segnale si arrotondano molto sul cavo da 30mt , indice di una capacità eccessiva del conduttore.
Prova un doppino non schermato (e non intrecciato mi raccomando!!) e vedrai che cambia la musica :wink:
Anche aver cambiato la R ha dato una bella mano, quella che avevi prima da 4,7k era eccessiva.

Prova un doppino non schermato (e non intrecciato mi raccomando!!) e vedrai che cambia la musica
Anche aver cambiato la R ha dato una bella mano, quella che avevi prima da 4,7k era eccessiva.

Scusa l'ignoranza, Perchè non deve essere intrecciato?

parlo per ignoranza, ma crdo abbia a che fare con i campi magnetici che si creano che diano troppo "rumore"

Le Guidelines della Maxim dicono:

"Network Description
The scope of this document is limited to 1-Wire networks that use Category 5, twisted-pair copper wire and have 5V bus power supplied by the master. (Most 1-Wire slaves will operate at lower bus voltages, but large networks often have too much loss to perform well under low-voltage conditions.)"

Quindi il doppino deve essere intrecciato!?!