Buonasera a tutti,
da alcuni giorni sono alle prese con un problema che non riesco a risolvere/capire.
Circa 2 anni fa ho costruito una rete di sensori DS18B20 di circa 80m di lunghezza (distanza cavo massima dal micro al sensore più lontano) con collegati 7 sensori (a sonda). I sensori sono con trasmissione Onewire e li alimento utilizzando una linea a 9v che poi riduco prima di entrare nella sonda a 5v attraverso un regolatore. Sulla stessa schedina che utilizzo per ridurre il voltaggio ho portato anche GND e il cavo dati della OneWire in modo da poter collegare le sonde attraverso morsetti alla linea di trasmissione. Il programma registrava le temperature senza problemi e le mostrava su un LCD. Fin qui nessun problema, solo il sensore più lontano a volte (specialmente di inverno con temperature molto rigide) non comunicava i dati. Circa 2 mesi fa ho ricompilato il programma in quanto avevo inserito delle modifiche su dei calcoli delle temperature (il sistema serve a conteggiare delle ore freddo ovvero ore in cui la temperatura dei vari punti rimane tra 2 temperature impostate) e variato alcuni messaggi a schermo.
Dopo la ricompilazione i sensori non vengono più letti.
Tra la prima compilazione e quella che ha causato problemi sono state aggiornate le librerie DallasTemperature e OneWire e anche la IDE (1.8.5 in quanto ho cambiato versione del SO).
Nei giorni scorsi ho fatto i seguenti controlli:
- misurato il voltaggio sulla linea dati 5.04v e sulla linea di alimentazione 9.03v. Controllato i cavi, la resistenza massima misurata è circa di 3 Ohm su tutto il percorso.
- provato con l'alimentazione parassita (così mi legge i sensori ma a volte perdo le informazioni in quanto la linea viene tirata solo da un potenziometro)
- sostituito i regolatori che mi danno i 5v per mantenere alta la linea e i 9v per la linea di alimentazione, inoltre anche il potenziometro 10k l'ho sostituito con una resistenza da 2.2k.
- fatto una prova con un sensore solo e funziona solo se tengo staccato il cavo della linea di trasmissione dal sensore in avanti. Appena ricollego il cavo non mi viene riconosciuto più nemmeno il sensore "vicino".
- Ipotizzando anche che forse avevo commesso qualche errore nel programma ho caricato uno degli esempi della DallasTemperature per leggere più sensori e non funziona nemmeno questo se collego i sensori alla linea "lunga" ma solo se li collego vicini al micro (come con lo sketch che avevo scritto io). Stessa cosa provando ad utilizzare l'esempio della OneWire per la lettura dei DS18B20 (con 2 sensori collegati vicino funziona ma appena collego il cavo anche senza altri sensori non legge più nulla)
Il cavo utilizzato è un multipolare da 0.75mmq a 10 fili dei quali utilizzo solo 3 per questa applicazione mentre gli altri mi servono a comandare delle elettrovalvole a 24vca, non ci sono comunque collegamenti tra i vari cavi.
Sulla schedina di alimentazione ho aggiunto un condensatore elettolitico da 150uF sui 9v che sono gli stessi che alimentano Arduino tramite Vin.
La scheda utilizzata è un Mega 2650.
Le prossime prove che vorrei fare è seguire quanto consigliato dalle Guidelines Maxim
ovvero inserire resistenze da 150Ohm tra il cavo di ciascun sensore e la linea principale nel punto di innesto, questo dovrebbe permettere una riduzione del rimbalzo.
Chiedo consigli su come risolvere il problema e possibilmente capire perchè con le librerie aggiornate non funziona più un sistema che prima funzionava.
Grazie