Obávám se, že autor by si měl znovu přečíst datasheet DS18B20, protože možná parazitní režim nepochopil. Nejdříve se dozvídáme, jak mu parazitní napájení příliš nefunguje a teprve v závěru článku se objevuje klíčový obrázek, tedy tranzistor, který je pro funkci čidel v parazitním režimu nutný.
Napájení přes pull-up po datovém drátu stačí pro běžné operace, ale pro měření teploty a zápis do eeprom je potřeba mnohem více energie (až 1.5 mA pro čidlo), proto se používá "strong pullup", což je buď externí tranzistor z obrázku nebo zpravidla stačí PIN atmegy přepnout do tvrdé jedničky. S atiny85 napájené z 5V mi to funguje krásně (paradoxně mám v parazitním režimu na větší vzdálenost menší chybovost než s 3mi dráty).
Taky je potřeba si uvědomit, že spotřeba čidel meřících teplotu zároveň se sčítá, takže nějakých 15 čidel už může překračovat povolený proud na PINu AVR, takže je buď už opravdu nutný ten tranzistor nebo se smíříme s tím, že všechna nebudou čidlla meřit současně, ale budeme konverzi teploty spoušťet postupně na každém zvlášť.
"Kruhová topologie"?!
Nevím, zda je to přesný termín, ale třeba linie by mi přišla srozumitelná.
Větvení se opravdu příliš nedoporučuje kvůli vícenásobným odrazům, ale tak tragicky bych to neviděl, záleží na celkové délce vedení a počtu čidel. Při jednotkách metrů je to úplně jedno, když chce někdo 100m nebo víc, odbočky bych neriskoval.
Jinak s ATtiny85 + Rp=2K2 (a vlastní firmware) připojeným do USB mi zkušebně fungovalo 15 parazitně napájených DS18B20 čidel na konci 100m klubíčka dvojlinky. Problémy s napájením nebyly, občas se vyskytla chyba CRC, stačilo přenos zopakovat.
Základem je ale prostě při posledním bitu příkazu Convert nastavit komunikační PIN do výstupu na 1 (+5V). Když to někdo neudělá nebo to přepne pozdě, tak mu parazitní napájení fungovat nebude.
Chtěl bych se zeptat, co konkrétně je myšleno tou topologií do hvězdy/kruhově. Uvedu příklad - pokud ke každému čidlu povedu 4žilový kabel (např. 2x2 sykfy) z centrálního místa, kde:
1 žíla bude zem
1 žíla bude napájecí
2 žíly budou datové (tam a zpět).
Kabely tedy natahám hvězdicově, ale zapojení datových žil udělám do kruhu. Je taková varianta zapojení vhodná nebo naopak není?
Díky
David Z.
V tom případě bude problém jenom s rušením. Zkroucením signálu se sebou samotným se toho zbavit nedá.
Kdyby byl jeden pár zem + data a druhý napájení + data a u čidla ještě kondík na zkratování bordelu mezi Vcc a Gnd (stačí malá keramika), tak není důvod, aby to nefungovalo...
Podle mě je to rozumná varianta, protože signál nemá žádnou odbočku/rozbočku. Mohlo by to fungovat dobře. Pochopil jste mou nevhodně použitou terminologii s kruhem správně a ještě to šikovně vyřešil s hvězdicovitou kabeláží.
Kdybyste to stihl během nejbližších 4 dnů otestovat, byl bych vděčný za zprávu a snad bych to stihl zařadit do příštího dílu pro ostatní čtenáře.
To s kapacitou sběrnice mi došlo až po odeslání, dobrá připomínka.
Že je to tak uvnitř jsem koukal, z textu v diskuzi jsem to pochopil tak, že interní kapacita nemusí stačit a proto se tam rve napájení natvrdo aby se nabila.
Ono popravdě nějak nechápu ten poslední odstavec komentáře na který jsem reagoval - jak může víc čidel měřit teplotu současně? Neznamená to, že budou chtít ve stejnou chvíli vysílat data a víc čidel najednou bude tahat vodič do nuly? Nebo je tím myšleno, že čidlo měří např. 1 sekundu, takže se sekundu bude posílat sekvence dat všem čidlům, všechny postupně spustí měření a postupně budou odpovídat? (potom bych tu tvrdou logickou jedničku i chápal)