Le lunghezze del suono folle come 10,25 e 100m sono perfettamente possibili, e uso spesso il metodo (con UART non I2C, ma il metodo è valido) quando ho bisogno di mettere insieme le cose rapidamente. Non è esattamente il modo migliore, però.
La chiave è conoscere la soglia della tensione di ingresso. Assicurarsi che la caduta di tensione nel cavo di massa sia ben al di sotto di questa, altrimenti un trasmettitore con un potenziale di terra elevato non sarà in grado di abbassare la tensione abbastanza in basso. Mancanza di tolleranza per offset di messa a terra L'IMHO è il motivo principale per utilizzare i transceiver RS485 o can (I2C su CAN è menzionato in alcune note di applicazione).
Idealmente, tutti i dispositivi avranno la propria verruca a muro e la batteria e nessuna alimentazione verrà inviata attraverso il filo di terra tra i dispositivi.
Ma prendiamo ad esempio CAT5. CAT5 non può essere superiore a 52pf / m o non è CAT5.
100 m di cavo 52pf hanno una capacità di 5200pf o 5,2nf.
5,2n volte 20kohms (pullup) fornisce una costante di tempo di circa 104 microsecondi. Ciò limita la velocità a circa 10 kHz o giù di lì.
Usando i pullup da 2,2kohm, probabilmente potresti arrivare a 100kHz.
Ho sentito che i dispositivi dovrebbero avere una resistenza su SDL e SCK, a causa del grande carico capacitivo che stanno guidando, di qualcosa come 180 o 200 ohm.
Ma onestamente, I2C non è affatto la strada da percorrere per lunghe distanze. I ricetrasmettitori CAN o RS485 utilizzati con UART normale sono una soluzione robusta con un'ottima protezione dai guasti, resistenza ESD, velocità, distanza, ecc., Al costo di circa un dollaro un chip o giù di lì, gli offset a terra non contano tanto quanto te libero di trasportare energia insieme ai dati.
L'unico aspetto negativo è che un ricetrasmettitore di lattine può raggiungere 70ma di trasmissione e 1 o 2ma solo in ascolto, quindi I2C o UART TTL diretto potrebbero essere utili in situazioni di bassissima potenza, ma considera quanto tempo impieghi effettivamente a inviare.