Stránka 1 z 2

I2C na vacsiu vzdialenost

Napsal: 07 bře 2018, 21:49
od dzooky
Mate nikto skusenost s I2C na vacsiu vzdialenost
Aktualne skusam na niekolko metrov a master zamrzne resp nepokracuje alebo sa nenastartuje
Ak klienta prepojim cca 10-20cm kablikmi vsetko OK.

Re: I2C na vacsiu vzdialenost

Napsal: 08 bře 2018, 07:30
od petan
Tak hlavně I2C není dělaná na přenos na větší vzdálenosti.
Pomoci by mohl nějaký I2C repeater. Nebo data vést po RS485

Re: I2C na vacsiu vzdialenost

Napsal: 08 bře 2018, 20:45
od afilip
mě to chodí spolehlivě na 3m UTP kabelu.

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 11:17
od HaVecko

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 13:50
od zajicjarda
Vjednom z příspěvků vyše je napsáno že I2C není určenbo k přenosu na větší vzdálenost. Podle toho co jsem četl v knížkách a na internetu s tim moc nesouhlasim.
Zde je psáno o použití na 10 m a možná i více.( https://www.itnetwork.cz/hardware-pc/ar ... c-sbernice)

Je zde psáno "Teorie také tvrdí, že na SDA a SCL by jste měli odporem připojit VCC...." Zde je místo položit mou otázku.

Vytvářim projekt kde jedna část je pod vodou a měří teplotu atd. Druhá část je nad vodou a ta bude zobrazovat hodnoty. První část se skládá z čidel a Attiny 85(84), druhá část z Atmega 328, LCD display, tlačítka a napájení. Propojit bych to chtěl přes I2C. Jakou hodnotou odporu by měly být spojeny SDA a SCL s VCC? Co se programu týče většinou jsem se všude dočetl jak pripojit "něco hloupého" k arduinu, co vše řídí. Potřebuji poradit třeba odkazem na článek (nejlépe česky), kde bych se dočetl, jak první zařízení po spracování svého úkolu odešle výsledky druhému to je zobrazí, případně po stisku tlačítek odešle dotaz na dajší informace.
Prví část se musí dostat na místo určení spracovat udaje, což může trvat různě dlouho, takže druhá část se tak nemůže ptát na udaje hned jak bude chtít sama.

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 14:31
od jankop
zajicjarda píše:
11 bře 2018, 13:50
V jednom z příspěvků vyše je napsáno že I2C není určeno k přenosu na větší vzdálenost. Podle toho co jsem četl v knížkách a na internetu s tim moc nesouhlasim.
Já si myslím, že až si komunikaci na větší vzdálenosti s I2C vyzkoušíš, tak s tím zase budeš souhlasit.

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 14:40
od petan
Já jsem nepsal, že to nejde, ale že na to není tato sběrnice stavěná. Záleží samozřejmě na typu vodičů (jejich kapacitě), okolnímu rušení atd. Sběrnice pak je pomalejší a může být náchylná na výpadky. Je to něco jako RS232 (HW vrstva je dost podobná), ta má běžně maximální délku okolo 5 m (ale i delší kabel může fungovat, avšak se zpomalením a bez záruky). Oproti tomu RS485 (HW to je něco úplně jiného) funguje i na vzdálenosti přes kilometr v průmyslovém prostředí (většinou taky stíněná) v pohodě.
I2C řekněme do těch 5 m stíněným kabelem v pohodě. Ale jinak bych to moc nepoužíval. Nehledě na rušení, které je připojeno bez oddělovače přímo na procesor. Osobně bych používal vzdálenost řekněme v desítkách centimetrů.

Rezistory mezi VCC a SDA a SCL mívají obvykle hodnoty 10k.4k7 by bylo taky v pořádku. Jde o to udržet na obou datových vodičích kladné napětí, pokud je sběrnice v klidu.

Sám jsem komunikaci mezi dvěma Arduiny nezkoušel. Ale můžeš mrknout do tohohle článku: https://www.arduino.cc/en/Tutorial/MasterWriter Snad ti ukáže správnou cestu.

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 15:21
od ArduXPP
Zde je problém popsán v Angličtině .. :) http://dsscircuits.com/articles/effects ... -resistors

Re: I2C na vacsiu vzdialenost

Napsal: 11 bře 2018, 16:09
od pavel1tu
I2C už z principu jak funguje prostě nemůže fungovat na větší vzdálenost (do 1m, spíše desítky cm), delší kabek, větší kapacita = horší náběžné hrany a hlavně sestupné hrany.
Já zkoušel nějaké jakoby "repeatry" na I2C, ale byly to spíše rozbočovače a opustil jsem to. Kde už musí být něco na I2C někde dál, mám tam další arduino a data do centrálky po 485 nebo vzduchem na 433MHz.

I2C pokud použiješ přenos 100 Kbps, je to teoreticky možné i na několik (2-3) metrů. Ale jen jsem o tom četl - nikdo to nepoužívá.

Pěkné povídání o komunikaci, vzdálenostech a na co se nejvíce používají je ZDE

Re: I2C na vacsiu vzdialenost

Napsal: 12 bře 2018, 17:28
od gilhad
pavel1tu: Tak to jsem v háji, že já hlupák si to nepřečetl dřív, to bych věděl, že I2C nemůže z principu fungovat nad 1 metr a tak bych s ním spokojeně neovládal robotka (s motory, co dělají rušení) normálním nestíněným drátem délky 2.12m a nepovažoval za normální, že mi to bezchybně funguje ... (aneb nikdy neříkejte, že něco není možné, protože se takřka určitě najde blbec, co to neví a udělá to)

Ale je pravda, že původně bylo vyvinuto pro komunikaci čipů v rámci jedné desky a na vzdálenost pod jednu stopu (asi 30 cm), bez konektorů (na kterých jsou taky ztráty a útlum). Na druhou stranu je pravda, že v praxi se používá na kde co, třeba na pomunikaci s projektorem na druhé straně přednáškového sálu. A na třetí stranu je pravda, že funkce na větší vzdálenost zaručena není a co funguje jednomu v jedněch podmínkách, to nemusí fungovat druhému v jiných podmínkách).

(ostatně citace z tvého odkazu: Bus length: typical: inside the equipment, <1m, maximum: few meters)


dzooky: poradil bych tam dát klasický konvertor I2C - I2C pro různá napětí na každou stranu (dají se sehnat za pár euro či korun) přičemž bych napětí klidně měl na obou stranách stejné, ale tu prostřední část bych připojil na silnější zdroj proudu, než jsou piny arduina (klidně na zdroj +5V na arduinu, nikoli však VIN) a použít menší pull-up rezistory - ten konvertor (běžně dvojice tranzistorů , třeba takovýto http://www.hobbytronics.co.uk/mosfet-vo ... -converter ) - ty tranzistory utáhnou větší proud k zemi, takže ty pull-up můžeš dát menší a mít strmější hrany i při vyšší kapacitě vedení