• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
strano caso lo del ds18b20

Lo strano caso del DS18B20
#1
Apro un nuovo topic riguardo un problema già segnalato perché mi trovo di fronte ad una anomalia che mi sembra abbastanza singolare e da cui non riesco a venire a capo. Tre DS18B20 collegati in maniera canonica con positivo, negativo e dati con relativa resistenza. Due funzionano senza problemi. Il terzo, con cavo di una decina di metri, funziona per un po' poi si blocca. La cosa strana è che se stacco quest'ultimo per qualche ora, riprende a funzionare per un po'. Cosa può succedere? 
1) si accumula corrente statica? eppure ho cortocircuitato i capi
2)  si scalda? no, perchè il sensore è immerso in acqua e l'anomalia si risolve solo dopo diverse ore di pausa
3) anomalia del sensore? no, perché collegatone un altro in parallelo si comporta allo stesso identico modo.
Altre ipotesi non so formularne. Idee? Grazie
Risposta
#2
Il DS18B20 può essere alimentato anche dalla linea dati attraverso la resistenza di pull-up (quando non vi è comunicazione in atto); tale metodo viene definito "alimentazione parassita". La linea dati, internamente, è collegata tramite un diodo ad un condensatore (C parassita) che ha lo scopo di mantenere la carica nei momenti in cui la linea è low. Quando carico non vi è possibilità di scaricarlo con un corto circuito con il terminale di massa (negativo alimentazione) poichè il diodo interno si trova inversamente polarizzato impedendo la scarica. Il condensatore si scarichererà autonomamente nel tempo. Stessa configurazione è per il terminale del positivo, anch'esso accoppiato al condensatore tramite diodo che in caso di CC si trova inversamente polarizzato.
Visto che il problema si presenta su due sensori posti alla stessa distanza dal master, è possibile che l'anomalia sia dovuta alle capacita parassite del cavo che si comportano, condiderata la lunghezza del cavo (quindi la R/Z), come integratori deformando i fronti di salita/discesa degli impulsi elettrici che rappresentano i dati da trasferire. A lungo potrebbe portare il sensore in una condizione di idle da cui esce quando non più alimentato dal condensatore parassita (scollegato da una qualsiasi alimentazione).
Per verifica prova ad utilizzare quei sensori che vanno out con cavi molto più corti e vedi il comportamento; successivamente,se tutto ok, ripeti il test con la stessa lunghezza di cavo (una decina di metri) utilizzato per la connessione reale. Se il problema si presenta hai individuato la causa.
Risposta
#3
Bene. Risolto il "mistero" della saturazione del sensore. Sicuramente è un problema di lunghezza del cavo. Con lunghezza inferiore tutto ok. Sto facendo la prova di alimentare alternativamente i due sensori tramite apposito commutatore pilotato da due GPIO in modo da mantenerne uno "fresco". Soluzione macchinosa ma l'alternativa wifi per ora la escludo perché richiederebbe tempi di apprendimento/configurazione che ora non ho. Ora provo con alimentazione parassita. Il fatto è che ogni prova richiede molte ora perché l'anomalia si presenta solo a distanza di ore per cui è difficile risalire alla causa. In rete ho trovato i seguenti suggerimenti:
1) porre un condensatore elettrolitico in prossimità del sensore per far fronte ai picchi di assorbimento in fase di misura;
2) ridurre la resistenza di pullup
3) porre un condensatore ceramico tra massa i ingresso.
Tutti inutili. D'altra parte, 10 metri collegati con cavo lan non dovrebbero essere eccessivi ma tant'è.
Altri accorgimenti? Grazie ancora per la paziente/competente assistenza.
Risposta
#4
Purtroppo i 3 accorgimenti non potevano avere effetto proprio perchè il "condensatore parassita" è integrato nell'interno del sensore ed è normalmente sufficiente ad alimentarlo. Il problema, come hai potuto verificare, è riconducibile alla lunghezza del cavo di collegamento tra master e slave: le forma d'onda dei segnali sono alterate, sicuramente nei fronti e forse nell'ampiezza (parto dal presupposto che l'alimentazione sia corretta). Per provare utilizza tre conduttori liberi tra loro (esempio 0,75 mmq) per stabilire il collegamento, possibilmente non vicini tra loro (evitare al massimo capacità parassite di sistorsione del segnale).
Risposta
#5
(26/10/2019, 14:44)ippogrifo Ha scritto: Purtroppo  i 3 accorgimenti non potevano avere effetto proprio perchè il "condensatore parassita" è integrato nell'interno del sensore ed è normalmente sufficiente ad alimentarlo. Il problema, come hai potuto verificare, è riconducibile alla lunghezza del cavo di collegamento tra master e slave: le forma d'onda dei segnali sono alterate, sicuramente nei fronti e forse nell'ampiezza (parto dal presupposto che l'alimentazione sia corretta). Per provare utilizza tre conduttori liberi tra loro (esempio 0,75 mmq) per stabilire il collegamento, possibilmente non vicini tra loro (evitare al massimo capacità parassite di sistorsione del segnale).

Avevo letto del problema della capacità indotta dai cavi e avevo pensato di ovviarvi con un cavo lan cat 6 ma, evidentemente, neppure questo accorgimento è sufficiente. Ora proverò a stendere tre fili separati e vediamo che succede.
Risposta
#6
Ma il cavo LAN come lo usi?cioè, quali conduttori usi?

Inviato dal mio A0001 utilizzando Tapatalk
Risposta
#7
Ho usato una coppia per i poli positivo e negativo e uno singolo per i dati. Seguendo il tuo consiglio ho separato il positivo dal negativo. Per ora va bene. Vedremo. (credo vi siano leggere differenze tra una copia e l'altra ma, non sapendo quali siano, sono andato a caso).
Risposta
#8
Una qualunque interfaccia LAN (elettrica) è realizzata per lavorare su linea bilanciata a bassa impedenza (se ricordo bene circa 50 ohms) cosicchè da poter effettuare collegamenti sino a 100m (cioè il segnale elettrico "viaggia" su un doppino twistato che non ha alcun riferimento ad eventuali masse di sistema/circuito). La linea bilanciata e la bassa impedenza riducono l'effetto di alcuni fenomeni elettrici (tipo accoppiamenti indesiderati, ecc.). I relativi cavi LAN di collegamento, tra cui anche il CAT 6, sono quindi costruiti ed ottimizzati per lavorare con questa tipologia di linee. L'uscita dati del sensore è, invece, del tipo sbilanciato, cioè l'ampiezza e forma del segnale elettrico ha come riferimento la massa (in questo caso il negativo dell'alimentazione) del sistema/circuito.
Risposta
#9
(27/10/2019, 07:06)ippogrifo Ha scritto: Una qualunque interfaccia LAN (elettrica) è realizzata per lavorare su linea bilanciata  a bassa impedenza (se ricordo bene circa 50 ohms) cosicchè da poter effettuare collegamenti sino a 100m (cioè il segnale elettrico  "viaggia" su un doppino twistato che non ha  alcun riferimento ad eventuali masse di sistema/circuito). La linea bilanciata e la bassa impedenza riducono l'effetto di alcuni fenomeni elettrici (tipo accoppiamenti indesiderati, ecc.). I relativi cavi LAN di collegamento, tra cui anche il CAT 6, sono quindi costruiti ed ottimizzati per lavorare con questa tipologia di linee. L'uscita dati del sensore è, invece, del tipo sbilanciato, cioè l'ampiezza e forma del segnale elettrico ha come riferimento la massa (in questo caso il negativo dell'alimentazione) del sistema/circuito.

Molto interessante. Quindi tu ritieni preferibile utilizzare normali cavi elettrici anziché cavi lan? intanto, sto facendo altre prove seguendo i tuoi consigli e la stabilità è migliorata. Nel senso che intercorrono alcune ore prima che il sensore si saturi. Dopodiché, stacco il negativo per un po', lascio scaricare il condensatore e il ciclo ricomincia. Macchinoso ma, in qualche modo, funziona. Non è il massimo ma mi consente di gestire la periferica. Altri eventuali consigli saranno essenziali per arrivare ad una soluzione stabile e per imparare a districarmi in questo complicato garbuglio.
Risposta
#10
Non necessariamente un cavo di rete rappresenta la miglior soluzione per applicazioni diverse da quelle LAN/WAN. Il fatto che il problema si ripresenti dopo alcune ore indica che vi è ancora qualcosa che disturba il sensore.
Ogni quanto tempo il SW interroga ciclicamente i sensori? Hai possibilità di aumentare nel SW il tempo di pausa tra una interrogazione e la successiva (aumentando così la possibilità di risposta dai vari sensori)?
Se ti è possibile scollega il sensore diventato "dormiente" dalla sua posizione e ricollegalo al master con un cavo corto per vedere se si "risveglia" e riprende a comunicare correttamente.
Prova a collegare un condensatore elettolitico da 200 uF + uno ceramico da 10 nF in parallelo ai pin di ingresso alimentazione del sensore (+ e -)
Risposta
  


Vai al forum:


Navigazione: 6 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect