Viděl jsem analogový tester Loconetu a celkem jsem ho obdivoval. Jen mi tam chybí kvantifikace, teda jak moc je to dobré nebo špatné. Proto jsem se rozhodnul navrhnout zařízení s mikropočítačem, které dokáže dosledovat, spočítat a nějak zobrazit naměřené údaje a vyhodnotit, jak moc je to špatné. Přitom se svezlo ještě pár věcí navíc.
U tohoto projektu jsem poprvé narazil na pravý multitasking u RISC procesoru, kdy jsem chtěl v reálném čase řešit několik věcí, čistě jen přes přerušení. Ale Atmel RISC procesory tohle nemají rády a moc se mi to nedařilo. Kámen úrazu je v tom, že když běží jedno přerušení, tak jsou zablokována všechna ostatní. Tohle mají Atmelácké CISC procesory mnohem lépe vyřešeno prioritami přerušení a možnostmi zanořeného přerušení. Takže jsem musel změnit přístup a udělat to sekvenční. Proste jednotlivé úlohy se budou řešit postupně v čase a stejně tak vyhodnocovat. V zásadě je to úplně jedno, protože pokud je tam chyba, tak je zcela určitě cyklická a ukáže se časem. Ten čas je ovšem velmi rychlý a měření probíhají v milisekundách, takže to vypadá kontinuálně. Původně jsem chtěl, aby každý paket DCC a každý paket Loconetu byl vyhodnocený, ale z výše uvedeného principu se to nedalo udělat.
Absolutní prioritou bylo měření náběžných hran Loconetu, které jsou vlivem zdroje proudu 15mA mnohem náchylnější na strmost hran. Princip měření spočívá v dvou rozhodujících bodech, přes které musí narůstající napětí projít. Zvolil jsem vstup, který reaguje na překročení napětí 1,5V na pinu PD2. Následně změřím čas na dosažení druhé úrovně, realizované komparátorem na pinech PB0 a PB1. Na pinu PB0 je nastaveno napětí 4.5V a tak překlopeni příznaku {ACSR.ACO} nastane projetím přes 4.5V na pinu PB1. Rychlost je teda přímo úměrná hodnotě napočítané v Timer1. Měření je poměrně kritické, protože když procesor běží na 20MHz a strojový cyklus je 50nS, tak počet napočítaných impulsu je při rychlosti 3V/uS = 20. Proto smyčka která to vykonává, musela být vytvořená v kombinaci ASM a Bascom Basic.
Zmeraj: Enable Ovf1 'povoleni preruseni Stop Timer1 'stop časovač 1 Timer1 = 0 'vynulovani časovače 1 cbi Gpior0,0 'nulovani příznaku přetečeni sbis acsr,aco 'test na neprepnuty komparátor Return 'komparátor nahozen, návrat sbic pind,2 'musí byt 0 Return 'Loconet je v ‚1‘ , návrat Xx: sbis pind,2 'cekame na hranu hore rjmp xx start Timer1 'spusteni citace 1 Xxx: sbic Acsr,aco 'cekame na preteceni komparatoru rjmp xxx Timing = Timer1 'uschovani hodnoty Timer1 sbic gpior0,0 'test na preteceni TCNT1 Return 'nesviti nic, pretečeni citace oznamuje velky problem Select Case Timing Case 0 To 120 Portb = &B0111_1000 'velmi kvalitni hrana, lepsi nez 0,5V/uS, sviti green Case 121 To 170 Portb = &B0111_0100 'hrana lepsi nez 0,35V/us až 0,5V/uS, sviti 1. red Case 170 To 300 Portb = &B0110_1100 'hrana horsi nez 0,35V/us do 0,2V/uS, sviti 2. red Case 301 To 600 Portb = &B0101_1100 'hrana 0,2V/us do 0,1V/us ,sviti 3. red Case 601 To 1200 Portb = &B0011_1100 '0,1V/uS do 0,05V/uS , sviti 4. red Case Else Portb = &B0000_0100 'horší než 0,05V/uS , sviti všechny red End Select Tam: Waitms 5 'viditelnost údaje na led diodach Portb = &B0111_1100 'zhasnuti ledek Disable Ovf1 Return
Původně byl problém s zaseknutím v nekonečné smyčce, ale to jsem ošetřil přes test PIND.2, který mne vyhodí, pokud není v „0“. Pokud je v „0“ , tak je velmi vysoký předpoklad, ze bude následovat přechod na „1“ a ten se ihned přeměří.
Teď bych měl asi začít úplně od začátku a ukázat schéma mého testeru.
Schéma je na první pohled dost nesrozumitelné, ale to se jen zdá. Z principu se dá rozdělit na dvě části, analog a procesorová část. Analog se skládá z testování DCC a zároveň jako zdroj napájení pro digitální část a úprava signálu pro procesor. Analog je okolo vstupní zásuvky RJ12, kde jsou dvojice LED diod, které ukazují stav a chyby DCC. Pin číslo 1 a 6 zásuvky RJ12 je zapojen do země na pinech 2 a 5 přes kapacitu, která zajišťuje ukazování střídavé složky DCC. Dále je tam omezovací odpor a Zener diody, které zabezpečují, aby to svítilo, jen když je tam nad 6V. Diody LED10 a 11, odpor R16 a Zener diody D7,8 zabezpečují, aby led diody svítily při napětí vyšším než 13V. Tohle je dost víceúčelové a ukazuje to možné chyby rozvodu DCC. Protože nejsou spojeny země na pinech 2 a 5 , tak je možné testovat průchodnost přes tyto piny.
Měl jsem obavy, či posunutí země o 0.75V nebude dělat problémy při zpracování digitálu, ale to bylo zbytečné, dokonce mam dojem, ze to zvýšilo šumovou ochranu. Loconet vstup je jednoduchý, přes vstup RxD kontroluje procesor sběrnici a v případě chybného paketu (EXOR) blikne modrá dioda LED5. Kontrola se děje sekvenčně a procesor si vybírá náhodně pakety, které otestuje. Pokud klesne rychlost posílání paketů pod 50 za vteřinu, tak vlastně kontroluje všechny.
DCC je kontrolované na pinu ICP, který zachytává stav Timer1 do záchytného registru a program ho následně vyčte a zpracuje do bitů, bajtů, paketů. Potom zkontroluje cheksum a v případě nesprávnosti, blikne modrá LED13.
Modrá LED12 je perlička, ta blikne při používání 5bajtovych paketů DCC, kdy teda oznamuje, že DCC centrála neběží na plný výkon a není možné jí řídit více, než asi 60 lokomotiv v reálném čase.
Teď to nejdůležitější, měření hran Loconetu. Na to slouží LED diody 6,7,8,9,14, které ukazují, jak Loconet pracuje a jeho pracovní podmínky. Minimální rychlost hran Loconetu je 0,35V/uS při náběžné hraně a 0,75V/uS při sestupné hraně. Podle mých zkušeností je kritická hrana nahoru, kdy zdroj proudu 15mA musí nabít kapacitu vedeni, přes odporovou složku. Indukčnost zanedbávám, při tohle kmitočtu je nedůležitá. Nepočítám s tím, že by se projevila sériová nebo paralelní rezonance LC a nebo odrazy na vedení (λ/4), na chování Loconetu. Mám pět diod, mezi které musím rozdělit indikaci stavu, Loconet hran. Tady jsem to opravdu mockrát předělával a rozhodoval se, jaké hodnoty jsou pro nás zajímavé. Nakonec jsem došel k názoru, že indikovat dobrý stav je somarina a je pro nás mnohem důležitější indikace nefunkčnosti a jak moc je to pokažené. Proto všechno do hodnoty rychlosti 0,5V/uS považuji za dobré a svítí zelená dioda. Teda pokud přeběhne 6V rychleji než za 12 uS, to je rychlost 0,5V/uS, tak to považuji za vyhovující a funkční. Na to musí Timer1 napočítat 120 impulsu vnitřního oscilátoru. Potom je rozsah od 0,35V/uS do 0,5V/uS, tohle už považuji za hraniční stav a další rozšiřování layoutu za velmi problematické. Další děleni je po 0.1V a ukazuje to, jak moc to je špatné a co je potřebné a možné udělat.
Dalo to dost laborování a testoval jsem spoustu kapacit od 2.2nF do 1uF. Hranice použitelnosti je při kapacitě 120nF, ale ta je hodně závislá na odporové složce. Každý Ohm je znát a velmi snižuje obslužnost vedení. Příkladem je odpor 6.8Ω a kapacita 33nF, kdy už dochází k časům pod 0,3V/uS. Takže největší problém dělají přechodové odpory a až potom kapacita vedení. Z toho vyplývá, že by se asi vyplatilo vyrobit tester přechodových odporů kabelů a tvrdě vyřazovat kabely s vyššími hodnotami. Velký problém je, že se to přičítává a vlastně ten špatný kabel může být jen jeden a pokud je na začátku vedení, tak je to fatální. Při realizaci měřiče kabelů by bylo asi důležité měřit piny 1,2,5,6 při proudech okolo 100mA a piny 3,4 při proudu 15mA.
Nejvíc mne překvapilo, jak je Loconet závislý na odporové složce vedení. Sběrnice exne při sériovém odporu mezi 80-100Ω, bez ohledu na kapacitu. Čím nižší je odporová složka, tak tím víc je Loconet odolný proti paralelní kapacitě. Naprosto ideální jsou odpory do 2Ω, tehdy ani kapacita 100nF není kritická. Ale vzrůst odporu nad 5Ω a současná kapacita 33nF je už na hranicí povoleného. Proto tento tester až tak nesplnil moje očekávání, protože neměří to naprosto klíčové a to je reálný odpor sběrnice Loconet. Změří sice hranu Loconetu velmi přesně, ale nevíme, zda je to přílišnou kapacitou nebo zvětšeným odporem vedení.
Další věc, která mne překvapila jsou zdroje proudu. Poznám dva typy a to se stabilizátorem a s dvojici PNP tranzistorů. Vždycky jsem si myslel, ze ty se stabilizátorem jsou lepší, ale musím přiznat chybu a uznat, že ty dvojtranzistorové jsou lepší. Zdroj proudu se stabilizátorem je velmi pomalý a přepnutí z nečinnosti do činnosti mu trvá až 3uS a to je pro nás opravdu hodně. Dvojtranzistorové zdroje proudu jsou rychlé, ale mají jinou nevýhodu a to, že zesilovací parametr ‚h21e‘ musí byt v rozmezí 60 až 250. Jinak tam vznikají neskutečné zákmity a nestability. Třeba Minibox má zdroj proudu s 78L05 a je to kurnik poznat. Ještě štěstí, že to je jen pro 8 ovladačů, jinak by měl velké problémy. Takže všechny centrály Loconetu, které používají 78Lxx , nejsou moc vhodné pro rozlehlý layout.
Nakonec trošku kritiky,
Chtěli jsme testovat mimo ježdění na setkání v Žilině, v čase, kdy by to ničemu a nikomu nemohlo vadit. Nebylo nám to dovoleno odzkoušet z důvodu obavy, že jim tam něco pokazíme a že z principu nedovolují zapojovat amatérské věci do layoutu. V Žilině mne to zarazilo tím více, že vyloučení amatérských věcí je podraz a to v tom, ze třeba rozčtvorky na LoconetBoxy, je můj amatérský návrh a osazovali je amatéři z toho samého klubu. Navíc všechny Fredy a Fredi jsou taky amatérské návrhy a osazovali je amatéři, takže zákaz neprofi zařízení je jen myšlenkový kotrmelec z neznalosti problematiky. Proto si nepřeji, aby se moje zařízení používaly nebo půjčovaly tomuto klubu. Je jasné, že časem budou mít problémy, protože věci stárnou, ale pokud se nepodíleli na vývoji, tak nemají nárok na výsledky.
Všetkým prajem pekný a príjemný deň.
Zdeno, len pár faktov k tvojmu prínosnému odbornému článku o tvojej činnosti.
K problematike ktorú tam riešiš sa nebudem vyjadrovať, lebo v danej veci som v porovnaní s tebou podľa tvojich slov len "užívatel a nie modelár".
Problém nie je v tom, že je to amatérsky projekt, ale v tvojom osobnom prístupe a jednaní.
Náš klub organizoval stretnutie, ktoré je každoročné a včas bol zverejnený termín aj podmienky účasti.
Neevidujem ani ja a ani nik z klubu žiadnu požiadavku z tvojej strany na testy tvojich produktov.
Ako si už v minulosti o nás napísal, že sme len "užívatelia" kúpených vecí, tak teraz dosť dobre nechápem, prečo verejne plačeš, že sme ti nedovolili počas medzinárodného jubilejného stretnutia robiť pokusy na našich "kúpených veciach".
Máme v klube Peťa a Mariana, ktorý sú v DCC a elektronike dosť znalý a tiež používame veľa amatérsky robených elektronických vecí. Keby si odkonzultoval problematiku s kolegami včas, mohlo to dopadnúť inak.
Ty o tom čo robíš píšeš po rôznych fórach, kde tvrdíš, že to na "Hôrkach" otestuješ.... a máš zamálo za niekým z nás slušne dopredu prísť a dohodnúť sa! Potom sa nečuduj, že sme ťa stopli. Je v tom nemálo financií, ktoré nám do klubu nepadli z neba.
Neviem, ktorý iný klub by ti toleroval testy počas stretnutia, keby si o nich šíril takú "pozitívnu kritiku" ako neustále píšeš kade tade o našom klube!
jano v.
vis, je to o necem jinem, nedovolil bych si donest vec, ktera nebyla aspon 100x odzkousena doma. Ale tento tester je urcen pro velke layouty a bez problemu jsem ho otestoval pod dohledem M. Cernohorskeho v Komorni Lhotce v dobe, kdy se nic nedelo. Ukazalo se, ze maji rozvody Loconetu v naprostem poradku a tim padem se nic vic otestovat nedalo a tim to skoncilo.
---
To ale plati vsude, pokud je to v poradku, tak se nic nedeje, ale kdyz to zacne zlobit, potom je kazda rada dobra.
---
Ostatni komentovat nebudu, nestojite mi za to.