Potřeboval bych trochu "nakopnout" ohledně sběrnic. Je to sice trochu mimo mísu, ale mohlo by se to někomu hodit.
Stručně: Mám udělané moduly, které komunikují přes CAN sběrnici (ATmega8, řadič, budič). Mám je pod vypínači a používám je k ovládání světel (rolet, magnetické spínače, pohyb čidla..). Na modulech je vstup pro 1-wire čidla, které pak ovládají topení. Ale SW je z mého hlediska celkem robusní. Chtěl jsem původně postavit vše na 1-wire sběrnici, kde by se jednoduše posílala adresa modulu s teplotou, spínačem... Ale jsou tam pro mě dvě omezení: 1. 1-wire součástky s IO nejsou úplně dobře dostupné (+cena) 2. Latence na sběrnici jsou u spínačů dost velké (myslím tím více modulů se spínači, kdy je musí obsloužit master). Doba k sepnutí světla se tak prodlužuje. U teplotních čidel je to jedno.
To hlavní: Jakou sběrnici použít (i modifikaci), aby byla jednoduchá, dostupná pro amatéry, levná (cca 100Kč/modul), pokud možno robusní pro domácí automatizaci? A budu si vymýšlet - ideálně stejné vodiče pro napájení i signály (dvouvodičová).
Latence vznkají proto, že je tam polling masteru na hodně jednotek a malá přenosovka. Vypínač musí třeba 1.5s čekat, než se ho master zeptá, co je novýho. 99% trafficu je při tom o ničem. Jenom "Stalo se něco?" "Nic."
Tam jsou jenom dvě možnosti, CSMA/CD nebo extra lajna pro každý čidlo (ale tolik UARTů aby rval do středně velkýho FPGA, běžnej procák jich má max. 5.)
Co takhle Energy Bus? Ten by nevyhovoval?
- Dva dráty pro napájení a data
- (proudový) zdroj s LM317 dodává v klidu 24V/50mA
- Z tohohle zdroje se krmí zařízení na sběrnici. Pokud to nestačí, přihodí se další zdroje.
- Těch 24V je log.1. Kdokoliv na sběrnici může poslat 0 tím, že sepne tranzistor. V sérii s ním je zenerka, takže napětí spadne na 12V. Max.takhle zkratovaný proud je 100mA.
- Příjem pomocí hyterezního koparátoru (ale šlo by použít i odporový dělič a 4093)
- Krmeno z UARTu
- Standardní rychlost 2400Bd, pokud tam budu jenom tvoje výtvory, můžeš to trochu "nakopnout"
- Volně dostupná specifikace.
- XOR mezi RxD a TxD zavedený do interruptu dovolí detekci kolize na úrovni bitů.
Jestli je to za kilo nevím, ale extra drahý součástky tam nebyly. U pasivního zařízení je to operák, pár odporů a kondíků, dvě diody, stabilík na napájení, zenerka a jeden tranzistor.
Ohledně odolnosti - nemyslím, že indukovat (24-12V)*100mA = 1,2W rozdílu mezi jedničkou a nulou do kroucené dvojlinky je v domácím prostředí tak easu, aby to pětkrát denně padlo. Navíc používají CRC, kolize se detekuje na prvním bytu, kterým se vysílající představuje. Hardware se zdá být neprůstřelný, slabina může být SW...
Pod minulým dílem jsem dával odkazy na specifikaci.
HW vypadá jednoduše, protokol je složitější (ale je to multimaster). Ta bajtová arbitráž mi sice nesedí, ale asi to funguje (předělal bych to na bitovou). Snad budu mít čas to vyzkoušet. Mám dilema. Ty moje moduly jsou už celkem odladěné, tak se v nich nechci moc šťourat, ale koncepce už je stará 10 let. Nu, použil bych to někde jinde. Nenašel jsem ale nikde zdrojáky, ani jakou to má licenci. Taky se divím, že to nasadil jen Vaillant.
Taky jsem nepochopil napájení. Maximum je 100mA nebo tam těch zdrojů může být víc?
Není to multimaster, je to styl "kdo chce,vysílá".
Při návrhu šlo o jednoduchost, proto se řeší byty. Proto je tam v prvním bytu adresa vysílajícího a ne cíle a je to i důvod toho CRC.
Licence, no, co jsem pochopil, tak je to bastlířský německý projekt.
A napájení - mám třeba 20 pasivních modulů se spotřebou po 35mA. Takže potřebuju 700mA + něco na komunikaci a rezervu. 750/50=15 napájecích modulů a celkový příkon dimenzovaný na 18W. Modul napájení jde samozřejmě řešit i jinak...