I2C na vacsiu vzdialenost

Uživatelský avatar
dzooky
Příspěvky: 124
Registrován: 03 úno 2018, 01:09
Reputation: 0
Bydliště: Fintice
Kontaktovat uživatele:

I2C na vacsiu vzdialenost

Příspěvek od dzooky » 07 bře 2018, 21:49

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.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od petan » 08 bře 2018, 07:30

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

afilip
Příspěvky: 116
Registrován: 26 črc 2017, 16:34
Reputation: 0
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od afilip » 08 bře 2018, 20:45

mě to chodí spolehlivě na 3m UTP kabelu.

HaVecko
Příspěvky: 14
Registrován: 11 bře 2018, 10:25
Reputation: 0

Re: I2C na vacsiu vzdialenost

Příspěvek od HaVecko » 11 bře 2018, 11:17


zajicjarda
Příspěvky: 39
Registrován: 31 srp 2017, 22:29
Reputation: 0

Re: I2C na vacsiu vzdialenost

Příspěvek od zajicjarda » 11 bře 2018, 13:50

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.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od jankop » 11 bře 2018, 14:31

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.

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Reputation: 0
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od petan » 11 bře 2018, 14:40

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.

ArduXPP
Příspěvky: 361
Registrován: 14 pro 2017, 19:31
Reputation: 0
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od ArduXPP » 11 bře 2018, 15:21

Zde je problém popsán v Angličtině .. :) http://dsscircuits.com/articles/effects ... -resistors

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: I2C na vacsiu vzdialenost

Příspěvek od pavel1tu » 11 bře 2018, 16:09

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
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: I2C na vacsiu vzdialenost

Příspěvek od gilhad » 12 bře 2018, 17:28

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í

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 12 hostů