Jak odstranit rušení na 1-Wire sběrnici Dallas 18B20

testovac
Administrátor
Příspěvky: 9
Registrován: úte 18. říj 2022 18:18:18

Jak odstranit rušení na 1-Wire sběrnici Dallas 18B20

Příspěvek od testovac »

Pár poznámek z https://forum.mcontrollers.com/t/dallas ... du/2441/12 to kdyby to náhodou zmizelo:

V literatuře se udává až 300 metrů pro komunikaci sběrnicí one-wire od Dallasu. Skutečnost je bohužel trochu jiná. V každém případě nelze při hraničních parametrech používat parazitní napájení.

Zkoušel jsem na 100m cívce kabelu UTP. +5V a GND na jednom páru a DATA a GND na druhém páru. Jelo to v pohodě. Přímo na nohy DS18B20 jsem připájel pullup odpor 3K3 a 100nF na napájecí přívody.

Záleží také dost na tom, jak budeš konfigurovat síť. Pokud vše pověsíš na jeden kablík, není problém. Pokud topologii sítě vytvoříš do hvězdy, tak to taky není problém, ale pokud postavíš síť jako páteř s odbočkami, pak záleží na délce jednotlivých odboček. Nicméně, pokud použiješ pouze tři měřicí místa, tak by jsi neměl mít potíže. Maxim předepisuje externí pullup 4k7, ale je potřeba provést úpravu hodnoty rezistoru dle délek vodičů sítě. Pokud by jsi použil pouze parazitní napájení (tj. vodič GND a pracovní DQ), mohl by jsi se dostat do potíží s napájením větších vzdáleností, to znamená, že by se vnitřní napájecí kondík nestihl dostatečně nabíjet a napájet tak obvod pro převod a přenos dat. Je tedy lepší použít ještě třetí vodič a přivádět k obvodům kompletní napájení (GND, DQ, U). Pullup lze upravovat. Mikop Ti potvrdil, že to ve sto metrech vodiče to pracuje na rezistoru 3k3.

Dlouhé přívody k DS18B20 někdy způsobují naindukování vyššího napětí na signálovém vodiči než je napájní. Mám s tím dlouholeté zkušenosti. Takové zarušení pak způsobí, že na signálovém vodíči nedosahuje logická nula dostatečně nízké hodnoty a komunikace s DS18B20 se totálně zasekne a pomůže jen odpojit od napájení a znovu připojit.
Řešení je jednoduché. Naletuj mezi 3 vývody DS18B20 dvojitou sériovou LED v SMD (já tam dávám BAV99). Katodu první LED dáš na plus DS18B20, prostřední signálový vývod DS18B20 zapojíš na střed dipod a anodu druhé LED dáš na mínus DS18B20 a to je vše. Případné vyšší (nebo nožší než mínus) naindukované napětí ze signálového vodiče svede přes diodu do napájení a je klid. Jinak bez té úpravy to není spolehlivé a pokud budeš mít na sběrnici více DS18B20 na delších vodičích, je téměř jistota, že se ti to dřív nebo později sekne. Stalo se mi dokonce, že se mi to seklo na asi 1,5 m dlouhém přívodu.


Můžu vědět, kde jsi to měl zapojené? Myslím, že by to zajímalo i ostatní. Na 1,5m je to zaseknutí docela síla. Pokud jsem měl pocit ze zarušeného prostředí, použil jsem stíněný kabel (STP či SFTP - jeden pár data a GND a druhý pár plus a GND) a menší pullup odpor, cca 1K a 100nF na napajeni u čidla. Na vstupu MCU na datovém pinu jsem použil paralelně 5V1 zenerku. Ale vždy jedno čidlo na jednom vstupu MCU. A jak jsem tu psal výše, u mě dobrý.

Zapojeno to bylo u lednice v nerezový pixli, takže rušení od kompresoru tam asi nějaký bylo… Kabel jsem neměl stíněný, to je fakt, protože jsem v tomto případě na takto krátkém drátu nepředpokládal.
Ale stávalo se mi to poměrně často, když jsem používal více čidel na jednom vstupu. Kdysi jsem tam v těchto případech letoval kondíky myslím 100n na napájení, samozřejmě pullup na plus. Pomáhalo to taky, ale ne stoprocentně. Už tam ty koďany vůbec nedávám, letuju jen ty diody a 100% úspěch. Od té doby jsem již nikdy tento problém neřešil.

Jo, ještě mě napadlo, že ta Tvoje zenera tam může taky sehrávat podobnou roli, ale ne na vstupu MCU. V těchto případech, když jsem tento problém řešil, bylo jedno, jestli tam ten pullup mám nebo ne, jak jsem již psal kondík pomáhal ale ne na 100%.

Odpovědět

Zpět na “Integrované obvody - digitální”