massima lunghezza cavi per lettura pulsanti

buongiorno,
dovrei leggere gli impulsi inviati da un contatore reed posto a circa 40/50mt dal mio arduino; è un problema una distanza così grande? C'è il rischio di raccogliere interferenze per strada per cui magari potrei leggere dei falsi positivi?

Grazie

Beh 50metri non sono pochi, a prima vista direi che dipende dal tipo di cavo che vuoi/puoi usare (schermato e coassiale direi), dalla sua resistenza (la più bassa possibile, per calcolare la caduta di tensione e quindi i valori che leggerai dal pin su Arduino), e dalla frequenza massima che prevedi per gli impulsi (es. parliamo non più di 1 al secondo? 10 al secondo? 1 al minuto?) e la loro durata minima (es. il reed resta chiuso per quanto tempo? 1 minuto? Ore? o un decimo di secondo?) perché questo influisce pesantemente sul segnale ricevuto. Ad esempio impulsi da un decimo di secondo o meno, e con frequenza relativamente alta la vedo difficile con un cavo così lungo.

Direi quindi che dovresti darci qualche specifica più precisa per poterti dare indicazioni (che poi devi comunque verificare tu in "laboratorio" facendo qualche prova reale).

Il reed serve a leggere il consumo d'acqua su un contatore d'acqua. Ho un impulso ogni 0.25lt (potrei prenderlo anche ogni litro, ma preferisco un pò di precisione in più) Il contatore ha una portata di 2500 litri/ora (e massima pari al doppio). Quindi in termini nominali riceverei 10000 impulsi l'ora, ovvero 3 al secondo (max 6 al secondo a portata massima, ma poco probabile).

Le caratteristiche elettriche del reed sono:
Max potenza commutabile: 10VA
Max corrente commutabile: 0,5A
Max potenza sopportabile: 1A
Max tensione commutabile: 150 VDC/VAC

Operate time: 0.3ms (max)
Bounce time: 0.3ms (max)
Release time: 0.05ms (max)
Resonant frequency: 11.000 +/- 2000 Hz
Maximum operating frequency: 500 Hz

Ho poi anche dei grafici di queste metriche, però non so come allegarle.

Se poi gli impulsi li leggessi da un raspberry anzichè un arduino cambierebbe qualcosa?

Penso che una cosa importante da sapere è per quanto tempo il reed rimane eccitato quando legge il segnale alla sua massima velocità.
Con questo dato, non dovrebbe essere difficile, via software, discriminare il segnale utile da un eventuale disturbo.

Saverio.

Viste le condizioni al contorno, al posto tuo andrei sperimentalmente: prendi una matassa di 50 metri di un buon cavo coassiale da 50ohm, collega un alimentatore da 5V (per ora) ed il reed (con una resistenza di pulldown) e vedi dal capo opposto che tipo di segnale ottieni (se hai un oscilloscopio meglio, altrimenti manda con Serial.print() il valore letto e usa l'ouput grafico del serial monitor dell'IDE).

Sicuramente avrai segnali che non arrivano ai 5V, e non saranno squadrati, per cui devi per prima cosa vedere se l'ampiezza e la durata del segnale sono sufficienti per risolvere i singoli impulsi.
Se non fosse verificato, allora temo che dovrai fare qualcosa lato sensore/reed per amplificare e quadrare il segnale.
Se invece questo è verificato allora puoi determinare il valore da considerare come "target" ed il cui superamento indica un impulso. Eventuali interferenze dovrebbero essere ininfluenti, se il cavo è buono con una buona schermatura e dando per scontato che non passi comunque vicino a sorgenti di disturbi elettromagnetici.

Per migliorare il tutto quindi potresti quindi farti un circuitino di interfaccia con un opamp per amplificare e discretizzare il segnale portandolo ad uno standard TTL, che metterai su un pin digitale sul quale attiverai un interrupt su RAISE (ammettendo di avere normalmente LOW e HIGH solo quando è presente l'impulso).

Almeno questo è quello che farei io, non so se tutto sia corretto ma insomma... :wink:

Ma più semplicemente prevdere un fotoaccoppiatore e lavorare, lato reed con tensioni più alte (tipo i 12V che si usano con le filature degli antifurti) ?

Magari mettendo anche una resistenza ed un condensatore in parallelo, verso GND, sull'ingresso dell'opto così da minimizzare anche i disturbi ?

Guglielmo

1 Like

blacktek:
leggere gli impulsi inviati da un contatore reed posto a circa 40/50mt dal mio arduino; è un problema una distanza così grande?

Un banale vecchio current loop su semplice doppino telefonico twistato tira chilometri a diverse migliaia di bit al secondo, vogliamo che non funzioni a meno di 10 impulsi al secondo su 50 metri?

C'è il rischio di raccogliere interferenze per strada

Sempre, a seconda di dove si passa.Ma se:

  • La linea è tenuta a bassa impedenza
  • Si usano tensioni elevate (dai 12V in su)
  • Magari si alimenta tramite generatore di corrente costante
    ...come detto si fanno chilometri (ok, personalmente mi sono limitato a mezzo chilometro).

Quello che ancora manca da sapere è:

  • Lo stato normale del reed (aperto o chiuso)
  • La durata del singolo impulso

Poi Raspy o Ardu non cambia nulla, tanto la corrente che passa nel reed va letta tramite optoisolatore.

ciao,
scusate l'assenza, sono stato preso dal lavoro.

Direi che il suggerimento migliore è fare una prova usando una matassa da 50mt e vedere come si comporta in quella condizione. Ora ordino il materiale e vi farò sapere.

Grazie! :slight_smile:

cavi lunghi potrebbero comportarsi da antenna, un cavo multipolare con schermatura (quello che ha il foglio simile all alluminio che avvolge i cavi interni) dotrebbe risolvere :slight_smile: ,

come ultima spiaggia se abiti a 100 metri da radio vaticana :o
puoi sempre fare una conversione di impedenza da alta a bassa

Ciao,
questa mattina ho fatto una prova per simulare un pò la trasmissione dei segnali su cavi lunghi.
Ho preso una matassa di circa 60/70mt di cavo schermato d'allarme (2x0.22) e l'ho collegata da un capo a un pin di uscita e dall'altro a un pin di entrata del raspberry (con arduino sarà uguale penso)

Ho poi inviato 500 impulsi al secondo facendo questo ciclo:

stato => high
pausa di 0.1ms
stato => low
pausa di 1.9ms

Sono riuscito a trasmettere correttamente i 500 impulsi (in realtà 1000 cambi di stato low/high) senza mai perdere neanche un tik. Può essere una prova affidabile per simulare il comportamento del reed? quest'ultimo essendo appunto un reed e non un contatto meccanico forse non dovrebbe neanche avere problemi di bounce, giusto?

Sapete poi dirmi come si leggono questi valori?

Operate time: 0.3ms (max)
Bounce time: 0.3ms (max)
Release time: 0.05ms (max)

il bounce è il tempo di salita, l'operate la durata dell'impulso e il release il tempo di discesa? Se mi sono messo con pause di 0.1ms mi pare di essermi messo in una situazione anche più restrittiva di quella reale; vero?

grazie per l'aiuto.

Claudio_FF:
Un banale vecchio current loop su semplice doppino telefonico twistato tira chilometri a diverse migliaia di bit al secondo, vogliamo che non funzioni a meno di 10 impulsi al secondo su 50 metri?

scusa l'ignoranza, ma "current loop" vuol dire praticamente un filo interrotto (dal reed), giusto? un cavo porta il +12, l'altro se il reed è chiuso riporta indietro gli stessi +12?

il cavo a due fili viene "chiuso" dal reed che si comporta circa come un relé ad ogni impulso, quindi se invii 12V ti ritornano 12V meno le cadute di tensione e/o schifezze raccolte per strada.

current loop cosa voglia però dire non lo so

cinquevolt:
scusa l'ignoranza, ma "current loop" vuol dire praticamente ...

blacktek:
current loop cosa voglia però dire non lo so

Ma ... fare un piccolo sforzo e cercare su Google propri no ? :o

Studiate QUI va ... :wink: ... e magari leggete anche QUI :slight_smile:

Guglielmo

Si, secondo me la fate un po' troppo difficile: fotoaccoppiatori, current loop, ecc..
Un ingresso tenuto alto da una resistenza di pull-up da 10k, ma anche da 4k7, e poi il contalitri che cortocircuita a negativo: già così fai centinaia di metri anche a 5 volt.
Se poi ci metti il classico condensatore da 0,1 sei sicuro che non leggi schifezze !!!

Poi hai già comunque fatto le tue prove. Vai tranquillo, non sono quelli i circuiti che sono difficili per arduino.

steve-cr:
Si, secondo me la fate un po' troppo difficile: fotoaccoppiatori, current loop, ecc..

... sono d'accordo con te per il current-loop, NON son d'accordo per i fotoaccoppiatori.

Proteggere la porta di ingresso di Arduino è sempre buona cosa ... e con una filatura così lunga è meglio farlo. Costano poco, occupano ancora meno e rendono sicuro il circuito.

Guglielmo