Je dost zajímavé, že na ovládání lokomotiv přes Loconet je poměrně dost věcí, např. Minibox, Daisy, Intelibox, EasyDCC,RKDCC, Pikosmeti a jiné podobné zařízení. Ale jen málo z nich podporuje ovládání příslušenství přes sběrnici Loconet. Většinou je to překladem do DCC protokolu, který má však jednu obrovskou nevýhodu, že je pouze jednosměrný. Nevzpomínám klony Lenzu(RS485) a například Zimo(CAN) , protože ty mají jinou sběrnici a nejdou přímo použít na Loconet.Jsou však mezi námi modeláři, kteří investovali korunky do Rail-Co, neboli Train-controlleru a na ten u nás pomalu neexistuje železo, které by ho podporovalo. Já osobně nemám Train rád, protože nemá naše návěstidla, ale „prý“ se to dá dodělat. Nevím jak, ale pokud má někdo schopnosti, může je využít a ty návěstidla vymyslet a dodělat.
Začnu trocha teorií, kde na ovládání příslušenství přes Loconet jsou vlastně potřeba tři druhy paketů. Nebudu popisovat Loconet, existuje dost podrobný manuál, pochopitelně anglicky a tam je skoro všechno popsáno. Já jen budu popisovat pakety „B0“ a „B1“. Ten třetí paket je „B2“, ale ten je skoro stejný jako „B1“ a platí pro něj stejná pravidla. Zvláštností těchto paketů je tzv. párové řízení, kde bity A0 a A1 určují čtyři páry výstupů a bit „DIR“ v paketu B0 určuje směr (rovno, odbočka) a bit „ON“ určuje stav „1/0“ , teda zapnuté/vypnuté, toho výstupu, podle DIR. Je teda jasné, že všechny příkazy na vyhybky musí být párové a musí zapnout odbočku a vypnout rovný směr a zase naopak. Dost dlouho mi trvalo než jsem tohle pochopil, ale na moji omluvu lze napsat, že to šlo udělat a navrhnout jednodušeji.
Začneme paketem „B1“ , který je určen na snímání polohy nebo obsazení koleje pohybem nebo stáním vlaku. Rail-Co podporuje párovou logiku a přiděluje přímo adresu od 1 do 256, kde každá adresa má 16 linek, neboli pinů. Teda adresový prostor je 4096 přímo adresovatelných čidel obsazení. Vlastně 4095, protože adresa „0“ je broadcast, teda platí pro všechna příslušenství. Taky tady to šlo udělat jednodušeji a přidělovat rovnou 2 bajtovou adresu, bylo by to přehlednější. Ale zase na druhou stranu je hned vidět, ku kterému fyzickému zařízení, ten který pin (bit) patří. Většinou jsou accessory dělané po 16 vývodech a tak je možné fyzicky přidělovat (shlukovat) piny, do jedné hromady, na modulu nebo kolejišti. Já jsem si vyrobil problém v tom, že můj detektor obsazení je pouze 8-vstupový a tak se musí adresa dělit na dvě skupiny pinů 1-8 a 9-16 v rámci jedné adresy.
Na obrázku je schéma vstupního obvodu, který jsem použil na detekci obsazení. Pochopitelně jsem vynechal skoro všechno, co s tímto obvodem nesouvisí. Mohu napsat, že jsem navrhnul asi 10 plošných spojů a asi 25 různých návrhů řešení tohoto obvodu. Největší problém mi dělala citlivost, kdy jsem požadoval rozsah 3 řádů od 1mA do několika A, včetně zkratu. Je skoro neuvěřitelné, že jsem začal s toroidem s 2x15 závity a skončil s 2x1,5 závitem a ještě jsem to musel vf zablokovat kondenzátorem 2n2 a zatlumit odporem 33 Ohmů. Nebudu popisovat jiné řešení, které jsem vyzkoušel, například usměrnění anebo přímo přivedení signálu na procesor. To byl krok vedle a nevedl k úspěchu.
Obvod je jednoduchý a nepotřebuje vysvětlení. Snad jen to, že komparátor je zapojen s uzemněným invertujícím vstupem a pracuje jako detektor kladného napětí. Těchto vstupních obvodů je osm, na pinech P1.0 až P1.7 . Jsou teda použity 2 LM339N, které mají zabudované po 4 kusech komparátoru v sebe. To jsou „low power“ obvody, teda nepotřebují moc energie. Stejně však celý obvod papká okolo 16mA, což je dost. A to jsem snížil napájení na 3.6 Voltu, jinak to bralo skoro 30mA , což bylo nepřijatelné.
Celkové schéma, vypadá to příšerně co.
Ten kdo je zvyknutý na moje super jednoduché věci, je asi zklamán. Ale zdání klame, je tam jenom to, co tam musí být. Takže od začátku.
Dvě zásuvky RJ12, to jsem začal osazovat schválně, protože jinak bych musel dávat samostatné odbočky a tam by byly zásuvky čtyři. Takhle budu řetězit a navlékat příslušenství na sběrnici jako korálky pěkně za sebou.
Vstupně/výstupní obvody Loconetu jsou pomalu normalizované a málokdy na nich cokoliv měním. Skoro klíčová součástka RN1 , teda NET-ový odpor 4k7 mi dal zabrat a je doporučen i v datasheetu, je tam sice 5k1, ale to je v normě. Tahle součástka je klíčová pro obvod LM339, jinak výstup nepracuje korektně a vymýšlí si hazardy.
Diody D3,D4 snižují napájení na 3,6V za stabilizátorem 7805.
Adresování je pomocí pinů p3.2 až p3.7(p3.6 nelze zapojit), kdy lze navolit 32 adres po 8 vstupů, teda 256 volitelných adres. Do uP jsem natvrdo napálil adresu 512 a tak využitelný prostor adresace je od 512 do 767 adres pro celkem 32 modulů po 8 pinů. To by mělo stačit i na hodně velké kolejiště. Je dost důležité dávat toroidy ku sobě kolmo, aby vyzařované lektromagnetické pole nenasával vedlejší toroid a neindikoval nesmysly.
Krystal je 22,1184MHz, kdy pro Loconet vychází 16457 Baudu, což je v normě do 1,5 %.Loconetu.
Procesor je AT89C(S)2051. Tady malá poznámka, všichni píšou, že procesor X51 je mrtev a že se neoplatí do něj dávat čas a peníze a je to vlastně ztráta času s ním pracovat. I když jsem se už naučil s AVR Atmely pracovat, stále mi nesedly a nic mne nenutí s nimi pracovat. Nejsou až natolik dobré. A obrovské knihovny na X51, to je jejich velká výhoda. To budou AVR dlouho dohánět.
Nákres plošných spojů a rozložení součástek přikládám.
Programové vybavení:
Taky tady jsem se vyřádil a napsal snad 6 programů úplně od začátku, kde jsem řešil různě, jak detekovat obsazení. Snad tady má 2051 nevýhodu, že nemá instrukci na porovnávání bitu. Teda nelze přímo srovnávat starý stav s novým. On vlastně není problém detekovat obsazení, je ale velký problém indikovat neobsazení. Signál DCC je totiž nespojitý a trvá 58 nebo 116uS v jedné fázi, a zase stejný čas je v opačné fázi. Proto při rozlišení obsazení a neobsazení se musí sledovat delší časový úsek a následně vyhodnotit. A právě to byl velký oříšek pro Popelku. Ne a ne ho rozlousknout. Neustálé sledování a nasčítávání hodnot bylo neefektivní a velmi, velmi nepřesné. Musel jsem totiž rozhodovat, kolik hazardu je ještě v normě a kolik ne. To byl úžasný krok vedle a stál mne mnoho času. Prostě a jasně, vstupní obvody musí být tak udělané a navrhnuté , že pokud není detekováno obsazení, nesmí projít žádný impuls. V momentě, kdy jsem si tohle uvědomil, jsem vlastně vyřešil celý obvod a dokončení bylo otázkou několika hodin. Začal jsem snižovat počty závitů na toroidu a zatlumovat výstup pomocí paralelního odporu a kapacity. Tak, jak je to navrhnuté, to umí spolehlivě indikovat proud 1mA a snese to zkrat 4A. Je určitý hazard při proudu od 400 do 800uA, kdy je vstup nestabilní a náhodně střídavě, v rytmu čtení, přepíná obsazeno/ neobsazeno. Ale tento stav je dost výjimečný, protože odpor 20k až 33k Ohmů by se neměl na kolejišti vyskytovat. Šuntované vagony by měly začínat na 15k Ohmech.
Program se vešel do asi 700 bajtu a použil jsem v něm lehce nestandardní řešení problému. Vlastně se stále dokola opakuje testování všech 8 pinů a výsledek se při neshodě s posledním, posílá do Loconetu. A právě na testování jsem použil ne dost košer metodu, kdy instrukce „jnb P.x ,$ „ by normálně způsobila zatuhnutí programu a jeho nefunkčnost do doby obsazení koleje. Já jsem ale nahodil časovač, kde po době 1560uS, (pokud Vám ten čas něco připomíná, tak to není náhoda) který způsobí přerušení a v něm změním návratovou adresu v zásobníku na o tři větší a tak přeskočím dotyčnou instrukci a tím jsem zároveň zjistil , že nepřišla žádná hrana a tak je dotyčný úsek prázdný. Doba na testování (1560uS) je dost dlouhá, abych si byl naprosto jistý, že v daném úseku nic není.
Tentokrát jsem vymyslel opravdu kus železa o rozměrech 10 x 12cm se spoustou součástek, který není až tak jednoduchý, ale myslím si, že jsem tomu vychytal všechny mouchy a v zásadě to nepotřebuje žádné nastavování, pokud se dodrží předpis k výrobě toroidu.
Znova opakuji 2 x 1,5 závitu naprosto stačí a pokud dáte víc, nebude to fungovat.
A ještě na konec poznámka o objímkách na integráče, laciná klasika je naprosto nevhodná a opravdu doporučuji objímky precizní. Kvalita laciných objímek je neuvěřitelná a většinou jdou velkým obloukem do odpadového koše. Měl jsem obrovské zásoby starých objímek, které jsem povypájel ze starých desek a tahle zásoba mi došla a já si koupil nové.
Prozatím postaveno a oživeno 5 kusů desek detekce.
ja jsem si broadcast paket do svych ovladacu zabudoval, jinak neni standardem. ale nekdy se to hodi, treba na odzkouseni vsech navestidel najednou. na vysvetleni, broadcast paket je paket s adresou "0" a reaguji mi na nej vsechny moje periferie. jinak se taky da pouzit resetovaci paket. ahojz