Ciao ragazzi,
ho collegato un magnetometro HMC5843 con il mio arduino 2009. Ora se utilizzo un cavo corto(dell'ordine di 20 cm) funziona tutto benissimo. Se però utilizzo cavi più lunghi(dell'ordine di 2 m) leggo sempre 0 dal sensore. Ho usato sia cavi normali che schermati del tipo usato per gli allarmi di sicurezza ma nulla. Ho la necessità di arrivare almeno a 1,2 m. Qualcuno ha idea se e come si possa fare?
jesky:
Ciao ragazzi,
ho collegato un magnetometro HMC5843 con il mio arduino 2009. Ora se utilizzo un cavo corto(dell'ordine di 20 cm) funziona tutto benissimo. Se però utilizzo cavi più lunghi(dell'ordine di 2 m) leggo sempre 0 dal sensore.
La I2C non ha un limite di distanza, ha un limite di capacità massima lungo la linea, tale limite è 400 pf se la corrente sulle pull up è di 3 mA, con un cavo comune più lungo di un metro è facile arrivare a tale limite.
Il bus I2C è stato pensato per lavorare localmente sullo stesso pcb, o al massimo su più pcb impilati o collegati con cavi di pochi cm.
Però tocca anche vedere come hai collegato il tutto, tanto per cominciare il sensore lavora 3.3V e di conseguenza anche i livelli sulla I2C devono essere a 3.3V, il che vuol dire che devi collegare delle pull up esterne (non usare assolutamente le pull up interne) da 1.5k su SDA e SCL con il 3.3V che alimenta il sensore, in questo modo dovresti guadagnare molto sulla distanza massima, per il collegamento usa un cavo a bassa capacità parassita, il che esclude cavi comuni, e potrebbe essere necessario l'uso di un convertitore di livelli logici per la I2C.
non ho ancora utilizzato I2C ma lo farò tra pochi giorni provando a leggere un RTC.
io proverò ad utilizzare cavo non schermato, un cavo per connessione LAN senza schermo, evitando di utilizzare per i due segnali la stessa coppia;
la seconda prova la farò con una piattina TV.
vi farò sapere i limiti raggiunti (... senza perdere le informazioni)
Ho inserito le resistenze su un cavo schermato così come suggerito da astrobeed e funziona con ben più di 2 metri di lunghezza!
Grazie per le info e in bocca al lupo Ardalex: facci sapere che lunghezze raggiungi senza schermatura.
si possono montare buffer bidirezionali?
jesky:
...funziona con ben più di 2 metri di lunghezza!
Molto Bene!
che cavo schermato hai usato?
lo schermo lo hai messo a massa dai due lati o da uno solo?
salve sarebbe possibile arrivare eventualmente a 3 - 4 metri? (naturalmente se l'avete testato)
Dovresti usare un bus extender (come l'NXP 82B715 ad esempio), per stare tranquillo.
jackwatt:
salve sarebbe possibile arrivare eventualmente a 3 - 4 metri? (naturalmente se l'avete testato)
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili