• 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
a distanza grande gpio trasferimento segnali

[Problema] Trasferimento segnali GPIO a grande distanza
#1
Ho necessità di trasferire i livelli logici della GPIO di un raspberry PI3B+ via cavo ad una distanza superiore ai 100 mt.

La tensione di 3,3 Volt dei pin della GPIO mi sembra molto bassa per ottenere una precisa lettura del segnale dall'altra parte del cavo e ad una distanza così elevata.
Pensavo di innalzare la tensione dei pin a 12-24V utilizzando dei circuiti operazionali lineari in configurazione di amplificatore di tensione oppure di comparatore a finestra. Dall'altra parte del cavo con opportuni partitori resistivi riporterei la tensione ai livelli logici necessari per il controller in uso.

NOTA: non posso utilizzare
  • la porta ethernet, poiché il controller fa parte di una macchina già esistente ed è dotato solo di I/O di tipo TTL (di tipo parallelo simil GPIO) 
  • i circuiti relè poiché la frequenza di commutazione dei livelli logici nel programma è superiore ai 300Hz ed i relè non sono precisi, veloci e generano una marea di segnali sporchi anche se opportunamente filtrati. 
Non ho molto tempo per progettare, realizzare il circuito stampato, montarne i componenti e testarlo, per cui ho cercato in rete circuiti adatti all'uso pre-assemblati, ma non ho trovato nulla.


Vorrei sapere se c’è qualcuno che ha già affrontato un problema simile, come l’ha risolto, magari utilizzando componentistica pre-assemblata o qualcosa di simile e dove posso eventualmente trovarne i circuiti.Se proprio proprio non esiste nulla, rimetterò in moto la mia arrugginita Huh creatività elettronica.
Buona vita!
Giuseppe
Risposta
#2
(05/06/2018, 20:00)GiusTo Ha scritto: Ho necessità di trasferire i livelli logici della GPIO di un raspberry PI3B+ via cavo ad una distanza superiore ai 100 mt.

La tensione di 3,3 Volt dei pin della GPIO mi sembra molto bassa per ottenere una precisa lettura del segnale dall'altra parte del cavo e ad una distanza così elevata.

Pensavo di innalzare la tensione dei pin a 12-24V utilizzando dei circuiti operazionali lineari in configurazione di amplificatore di tensione oppure di comparatore a finestra.
Dall'altra parte del cavo con opportuni partitori resistivi riporterei la tensione ai livelli logici necessari per il controller in uso.

NOTA: non posso utilizzare
  • la porta ethernet, poiché il controller fa parte di una macchina già esistente ed è dotato solo di I/O di tipo TTL (di tipo parallelo simil GPIO) 
  • i circuiti relè poiché la frequenza di commutazione dei livelli logici nel programma è superiore ai 300Hz ed i relè non sono precisi, veloci e generano una marea di segnali sporchi anche se opportunamente filtrati. 
Non ho molto tempo per progettare, realizzare il circuito stampato, montarne i componenti e testarlo, per cui ho cercato in rete circuiti adatti all'uso pre-assemblati, ma non ho trovato nulla.


Vorrei sapere se c’è qualcuno che ha già affrontato un problema simile, come l’ha risolto, magari utilizzando componentistica pre-assemblata o qualcosa di simile e dove posso eventualmente trovarne i circuiti.
Se proprio proprio non esiste nulla, rimetterò in moto la mia arrugginita  Huh creatività elettronica.


Interfaccia RS-485 ?


Inviato dal mio iPhone utilizzando Tapatalk Pro
Alberto
Risposta
#3
Magari! il vecchio controller è corredato solo di pin d'ingresso TTL o C/MOS (da verificare, ma ciò non è un problema)

Ho già fatto il programma, sulle specifiche che un mio amico mi aveva dato, ma non mi aveva accennato alla lunghezza del cavo.

Vorrei risolvere il problema nel modo più semplice possibile anche perché "sono sotto attacco di un forte momento di pigrizia costruttiva e sperimentazione", forse dovuto al primo caldo stagionale.

Ti ringrazio per l'interessamento
Buona vita!
Giuseppe
Risposta
#4
Se hai un cavo disponibile ( e quindi invio segnali in parallelo) potresti molto facilmente trasferire il livello dei GPIO per mezzo di fotoaccoppiatori; assicurati solo che la parte transistor del fotoaccoppiatore abbia una tensione di breakdown superiore a quella che potresti utilizzare (12, 24 48 VDC, ecc). Nel caso di tensioni superiori inverse che potrebbero danneggiare la parte transistor poni in serie un diodo del tipo 1N4007. Il fotoaccopiatore garantirà il disaccoppiamento galvanico.
Risposta
#5
Secondo me dovresti ragionare digitalmente e non in analogico.
Diodi e fibra ottica che porta il segnale (e fotodiodo dall'altra parte) o una coppia di RaspberryPi che si inviano le informazioni sul Gpio. Sai che è possibile comandare in Python i gpio in remoto direttamente ?
Risposta
#6
(06/06/2018, 14:31)ippogrifo Ha scritto: Se  hai un cavo disponibile ( e quindi invio segnali in parallelo) potresti molto facilmente trasferire il livello dei GPIO per mezzo di fotoaccoppiatori;  assicurati solo che la parte transistor del fotoaccoppiatore abbia una tensione di breakdown superiore a quella che potresti utilizzare (12, 24 48 VDC, ecc). Nel caso di tensioni superiori inverse che potrebbero danneggiare la parte transistor poni in serie un diodo del tipo 1N4007. Il fotoaccopiatore garantirà il disaccoppiamento galvanico.


Mi ero dimenticato totalmente dell'esistenza dei foto-accoppiatori. Ho passato un paio d'ore in cantina a riesumare una vecchia pubblicazione degli anni '90 sull'argomento.  
Anche se il mio non è propriamente un problema di disaccoppiamento galvanico, ma di lunghezza della tratta, questa sera darò un'occhiatina, potrebbe essere un'ottima soluzione e prenderei ... "due piccioni con una fava".
Grazie.
Ti terrò informato.
Buona vita!
Giuseppe
Risposta
#7
(06/06/2018, 14:38)Zzed Ha scritto: Secondo me dovresti ragionare digitalmente e non in analogico.
Diodi e fibra ottica che porta il segnale (e fotodiodo dall'altra parte) o una coppia di RaspberryPi che si inviano le informazioni sul Gpio. Sai che è possibile comandare in Python i gpio in remoto direttamente ?


Un passo alla volta! 
Ho ripreso a programmare da alcuni mesi dopo 10 anni in cui il computer mi è servito solo fare alcuni programmi dBase  ( gestione amministrativa, studi sulla crittografia multidimensionale, analisi dei dati) insomma piccole cosette con grosse quantità di dati.
Pyton? Lo sto studiando a tempo perso da alcuni mesi e da quel poco che ho capito è il più potente ed elastico dei linguaggi che ho studiato ed utilizzato dal lontano 1978 ad oggi.  Purtroppo non l'ho ancora assimilato bene e non ho le conoscenze per utilizzarlo al meglio.

Comunque la tua idea è molto interessante e nei prossimi giorni approfondirò l'argomento 
Grazie
Buona vita!
Giuseppe
Risposta
#8
Ciao, io sto utilizzando dei trasmettitori radio come questi e funzionano egregiamente
Risposta
  


Vai al forum:


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