Již delší dobu jsme přemýšleli o tom, že stovky na našich kolejištích nasazených přestavníků Wexla, které jsme si vyvinuli v letech 200x, začneme postupně nahrazovat jejich novější generací. A tuto generaci bylo třeba vyvinout. V tomto článku se podíváme na to, jak jsme se s vývojem nových přestavníků hWexla popasovali.
Aktuální řešení – přestavník Wexla
Na našich klubovních kolejištích máme nasazeno přibližně 250 přestavníků pro řízení výhybek, ale také závor a v budoucnu snad i výkolejek. Používáme přestavníky Wexla, které jsme si sami vyvinuli okolo roku 2004. Přestavníky Wexla jsou založené na použití součástek ze starých 3.5″ disketových mechanik, ze kterých se použil motor, mechanické díly a optočidla. Přestavníky se ukázaly jako poměrně spolehlivé, byť nějaký servis samozřejmě vyžadují.
Přestavníky jsme si vyvinuli především kvůli minimalizaci nákladů na elektroniku kolejiště. Zrovna u přestavníků se vlastní vývoj určitě vyplatí, protože jsou jich v kolejišti nasazeny stovky. A pak samozřejmě proto, že nás vývoj elektroniky baví – 250 funkčních kusů je už přeci jenom výzva.
Přestavníky mají „GPIO rozhraní“ – umožňuji řízení jak z pultu pomocí tlačítek, tak ze stavědla kolejiště („z JOPky“), přičemž stavědlo (potažmo výpravčí jej ovládající) má nad ručními povely z pultu přednost. Přestavníky indikují obě koncové polohy, mají dvoupólové relé pro přepínání polarity srdcovky a případné odepínání jazyků dimenzované na maximální proud 3 A.
Rozhraní přestavníku tedy jsou:
- 2× logický vstup pro tlačítka z pultu (vstup pro polohu +, vstup pro polohu -),
- 2× logický vstup ze stavěla (vstup pro polohu +, vstup pro polohu -),
- 2× logický výstup indikace polohy (indikace polohy +, indikace polohy -),
- 6× kontakty relé,
- 1× logický vstup pro přepnutí přestavníku do „slave“ režimu (pro spojení přestavníků do dvojice).
Přestavník samotný se skládá ze dvou částí:
- z pevné části, což je jednoduchá deska plošných spojů (DPS), která je napevno namontovaná v kolejišti,
- z výměnné části, která je s pevnou částí spojena konektorem CAN25 a na niž je veškerá elektronika a mechanika přestavníku.
Postupem času začaly přestavníky Wexla zastarávat a jejich nedokonalosti se začaly projevovat ve větší míře. Zejména šlo o:
- malou sílu přestavníku (zejména pro přestavení angličanů);
- nedostatečnou ochranu řídicích vstupů a výstupů proti přepětí, podpětí a krátkodobým špičkám;
- náchylnost jednostranné DPS (bez prokovů) ke zničení při pájení;
- minimální možnost nastavení chodu přestavníku.
Díly na výrobu přestavníků Wexla se stávaly dražšími a dražšími a hlavně výběhovými. Nadešel tedy čas na vyvinutí nové generace klubovních přestavníků.
hWexla
Vývoj přestavníku hWexla začal v zimě 2021/2022. Cílem bylo odstranit neduhy přestavníku Wexla a získat dlouhodobě dostupný a udržitelný přestavník. Jedním z hlavních cílů také bylo zachovat co největší kompatibilitu s přestavníky Wexla – například, aby šlo přestavník Wexla rychle vyměnit za přestavník hWexla. Tento požadavek vyústil v zachování mechanického a elektrického rozhraní v podobě konektoru CAN25. Přestavníky hWexla tedy používají stejnou pevnou část jako přestavníky Wexla. Zato výměnná část je úplně nová.
Rozhodnutí držet zpětnou kompatibilitu mělo však i nevýhody – především přestavník hWexla prodražilo. Nešlo totiž paralelizovat – mít jednu elektroniku pro více přestavníků najednou. Kvůli vyšší ceně (řádově 400 Kč materiál) přestavníky hWexla asi nikdy nebudou masivně rozšířeny mimo náš klub. Kompatibilita nám však umožní se postupně zbavovat všech přestavníků Wexla, jak bude postupně docházet k jejich stárnutí, bez nutnosti zásahu do pevné části kolejiště. To je pro nás priorita.
Návrh nových přestavníků s sebou nesl mnoho výzev. Návrh jsem se rozhodl vzít „od nuly“, nad vším jsme se pořádně zamýšleli. Nyní popíši základní prvky návrhu přestavníku.
Pohon
První otázkou bylo, jaký zvolit pohon. Odpověď naštěstí byla poměrně přímočará – osvědčené 9g modelářské servo. Je spolehlivé, snadno dostupné, relativně levné a snad se bude vyrábět ještě dlouho.
Volba serva s sebou však nese problém – pohyb serva a v důsledku pak pohyb přestavné struny v přestavném pražci není není lineární, ale otočný.
Částečným řešením by mohlo být dát servo „naplacato“. To jsme však nechtěli dělat, protože jsme jako mechanickou základnu chtěli mít jednu jedinou desku plošných spojů pokud možno bez dalších mechanických prvků, na kterou se přímo přišroubuje servo.
Nakonec jsme se přiklonili k verzi, ve které je servo „na výšku“ s argumentem, že vertikální výchylka přestavné struny se projevuje jen při přestavování, není tak velká a umíme její pohyb navrhnout tak, aby v krajních polohách byla struna schovaná a vykoukla jen během přestavování. Navíc máme v záloze ještě jedno řešení, ve kterém pomocí páčky na pevné části přestavníku budeme moci vertikální pohyb struny kompenzovat.
Za pohonnou jednotku jsme tedy zvolili 9g „hloupé“ modelářské servo.
Koncová poloha
Z důvodu zajištění bezpečnosti provozu by měl mít přestavník hWexla indikaci koncové polohy podobně, jako ji má přestavník Wexla. Pro aktivaci výstupu indikujícího dosažení koncové polohy nestačí pouze dosáhnout koncové polohy, tento signál je sepnut pouze v momentě, kdy zároveň řádně funguje procesor, celý přestavník, prochází nejrůznější interní testy atd. Tak o sobě přestavník může dát vědět, že je s ním něco v nepořádku.
Poté jsme se zamýšleli nad otázkou: jakou informaci nám vlastně signál o dosažení koncové polohy dává?
Dokážeme vlastně zjistit, že je výhybka skutečně v koncové poloze? Ztěží. Neznám jediný přestavník, který by takovou indikaci měl. To by musel opravdu měřit mechanický kontakt mezi opornicí a jazykem, například protékajícím proudem. Bylo by hezké, kdyby přestavník hWexla něco takového uměl, ale tento nápad jsme zavrhli pro přílišnou komplikovanost jeho realizace. I když by byla taková indikace hezká a jediná skutečně správná, museli bychom nejspíš předělat výhybky na celém kolejišti.
I tak ale podle nás má smysl koncovou polohu indikovat. Proč? Budeme totiž kontrolovat, že se páčka serva skutečně hýbe. Sice stoprocentně nevíme, že skutečně došlo ke kontaktu jazyku a opornice, ale informace, že se samotné servo točí, je i tak hodnotná. Indikujeme tedy funkčnost serva.
V průběhu let jsme zkusili různé metody detekce koncové polohy. Především detekce optické a mechanické. Oba tyto způsoby mají nevýhodu v tom, že je při úpravě rozsahu chodu přestavníku třeba mechanicky změnit polohu čidel indikujících koncovou polohu. To většinou znamená vlézt se šroubovákem v ruce pod kolejiště a posouvat s čidly, což, věřte mi, vážně nechcete dělat. Pod kolejištěm na to totiž vůbec není místo. hWexla by však úpravu chodu umožnit měla. Navíc mechanické indikace koncové polohy mají nevýhodu v tom, že vyžadují, aby servo na mikrospínače v koncových polohách tlačilo, síla serva tak někdy nemusí stačit na dotáhnutí do koncové polohy. Navíc optické i mechanické řešení indikace koncové polohy vyžaduje snímače k přestavníku upnout, a my chceme mít mechaniku co nejjednodušší.
V přestavníku hWexla jsem se rozhodl vydat jinou cestou. Na nevyužitou část páčky přestavníku jsme umístili magnet a na DPS jsme umístili lineární senzor magnetického pole RR112-1G42. Koncová poloha je v procesoru uložena jako hodnota napětí ze senzoru. Indikační výstup se sepne právě tehdy, když si přestavník myslí, že je v dané poloze, a aktuální hodnota napětí ze senzoru se od uložené hodnoty liší nejvíce o 3 %.
Elektronika
Jak už jsem popsal, po mechanické stránce je základem přestavníku hWexla pro jednoduchost jedna jediná deska plošných spojů. Na jedné straně má deska konektor CAN25 pro připojení k pevné části přestavníku, jinak je na ni spousta elektroniky. Existuje jasný požadavek, aby byla DPS co nejmenší – aby přestavník pod kolejištěm zabíral co nejméně místa. Vnější rozměry přestavníku hWexla jsou dokonce o kousek menší, než vnější rozměry přestavníku Wexla, požadavek na malou velikost přestavníku byl tedy splněn.
Velkou otázkou návrhu bylo, jaký zvolit procesor. Ukázalo se, že v dnešní době je to celkem jedno – všechny procesory jsou buď nedostupné nebo drahé :). Nakonec jsme vybrali snad nejjednodušší procesor řady ATmega: ATmega8a (v TQFP32) a to především díky své relativně nízké ceně a díky tomu, že alespoň nějaké kusy jsou dostupné. A také samozřejmě díky zkušenostem autora s rodinou AVR. Výsledný firmware zabírá cca 80 % flash paměti procesoru, co považuji za hraniční.
Na čem jsme si při návrhu elektroniky dali záležet
Při návrhu elektroniky jsme si dali záležet na několika skutečnostech.
- Ochrana vstupů a výstupů.
Všechny vstupy a výstupy jsou chráněny proti přepětí a podpětí. Při přepětí dojde k uzemnění příslušného pinu a nakonec k zabrání vestavěné PTC pojistky. Ochranu zajišťují tyristory spínané zenerovými diodami. - Ochrana proti přepólování napájení, ochrana proti přepětí napájecího napájení.
Ochrana je opět řešena případným zkratováním vstupu při přepětí pomocí tyristoru přes PTC pojistku. - Pulzní vypínatelný měnič pro napájení serva, samostatný stabilizátor pro napájení procesoru.
Servo při přestavování může odebírat relativně vysoký proud, proto je stabilizace napájení řešená pulzním stepdownem, který oproti lineárnímu stabilizátoru minimalizuje tepelný výkon a spotřebu. Stabilizátor je vypínatelný – procesor po startu zapne napájení serva, jen když projdou všechny testy. Stabilizace napájení pro procesor je samostatná, aby odběr serva nezpůsobil pokles napájení na procesoru. Procesor monitoruje napájecí napětí serva, vyhodnocuje jeho korektnost a v případě poruchy tuto poruchu indikuje dále. Mezi měničem a servem je nevratná pojistka, která se přepálí v případě zkratu serva. - Stepdown pro servo řešený externí deskou.
Protože na poli stepdownů stále dochází k poměrně velkým posunům a my potřebujeme dlouhodobě udržitelný přestavník, rozhodli jsme se stabilizaci napětí pro servo řešit externí deskou. Aktuálně požíváme projekt RB0005 od našich kamarádů z Robotárny Brno. Pokud v budoucnu tato deska bude např. nedostupná, je možné ji snadno nahradit jinou deskou bez nutnosti zásahu do DPS hWexla. - Výstupy v režimu otevřených kolektorů s vysokou maximální proudovou zátěží.
Indikační výstupy jsou odděleny MOSFET tranzistory v režimu otevřených kolektorů, které umožňují maximálního proud až 500 mA, což je pro logický výstup naprosto dostatečné. Výstupy lze tedy spínat např. i relé. Výstupy jsou chráněny proti připojení externího vysokého napětí. - 3A miniaturní relé.
Zachovali jsme maximální proud 3A přes dvoupólové přepínatelné relé, které jsme však vybrali jako miniaturní.
Držíce se uvedených bodů jsme desku plošných spojů navrhli. Poprvé v historii klubu vznikla 4vrstvá deska, která má na sobě součástky poměrně hutně nasázeny. Deska je připravená pro automatické osazování součástek na jlcpcb.com.
Software
Při tvorbě softwaru vyvstala zajímavá otázka – když už děláme tak ultimátní přestavník, nechceme ho propojit se zbytkem kolejiště datově? Aby šlo například aktualizovat firmware přestavníku přímo z obslužného počítače bez nutnosti být fyzicky u přestavníku, aby šlo vyčítat diagnostiku apod.
I když tato možnost zněla lákavě, pro její realizaci by bylo třeba značně upravit rozhraní přestavníku a dále celou komunikaci až k počítači. Proto jsme se rozhodli vydat jinou cestou, kde programování i diagnostika jsou řešeny samostatně bez interakce se zbytkem kolejiště.
Programování procesoru bude probíhat přes standardní programovací konektor procesorů AVR. Takže až jednou budeme chtít vyměnit firmware v 250 přestavnících, budeme to dělat ručně s notebookem a programátorem pod kolejištěm. Bude to náročné – ano – ale on se ten firmware až tak často nemění.
Diagnostika je něco, s čím jsme si u přestavníku hWexla vyhráli. hWexla obsahuje rozhraní připojitelné k počítači skrze jednoduchý USB dongle (FT232). Procesor přestavníku skrze sériovou linku posílá textový řetězec, do kterého vypisuje hodnoty všech důležitých stavových proměnných přestavníku. Diagnostiku lze tak provést jednoduchým připojením počítače ke konektoru přestavníku a otevřením sériové linky v terminálu.
[11:40:11.300005] FW=1.1 [11:40:11.300719] Mode=mRun [11:40:11.300993] Turnout: [11:40:11.301473] .position=plus [11:40:11.316631] .angle=346 [11:40:11.317109] .angle_plus=346 [11:40:11.317510] .angle_minus=78 [11:40:11.332659] .sensor_plus=829 [11:40:11.333140] .sensor_minus=232 [11:40:11.333595] .moved_plus=25 [11:40:11.348833] .moved_minus=25 [11:40:11.349355] switch_move_per_tick=5 [11:40:11.364515] mag_value=832 [11:40:11.364927] servo_vcc_value=1023 [11:40:11.365105] fail_msg=
Ukázka hodnot posílaných do diagnostického terminálu přestavníku.
Nastavení přestavníku
Nastavení rozsahu chodu se realizuje stisknutím tlačítka na DPS přestavníku a pak použitím testovací krabičky, která byla vyvinuta již pro přestavník Wexla. Na krabičce jsou dvě tlačítka, kterými se jemně upravuje koncová poloha. Výhoda je, že krabička je připojena kabelem, takže při nastavování koncové polohy se lze dívat na výhybku ze shoda kolejiště a podle doléhání jazyku a opornice jemně ladit chod přestavníku. Není třeba žádné hýbání s koncovými čidly pod kolejištěm.
Nastavení rychlosti probíhá skrze diagnostický terminál s počítače. Předpokládá se, že rychlost se nebude skoro nikdy měnit.
Závěr
Přestavník kWexla postupně nasazujeme na naše klubovní kolejiště na místa, kde je třeba vysoká síla pro přestavení. Aktuálně máme nasazeny jednotky kusů v ověřovacím provozu. V brzké době máme v plánu na velkém klubovním kolejišti H0 rekonstruovat lokomotivní depo – depo vytvoříme úplně nové a vyměníme ho za depo stávající. Na celém depu se budou používat nové přestavníky hWexla.
Veškeré materiály pro výrobu přestavníku jsou k dispozici jako opensource a openhardware projekt na klubovním GitHubu. V případě zájmu jsme schopni přestavníky prodat jako hotové kusy nebo jako stavebnice.
Náklady na výrobu jednoho kusu jsou cca 400 Kč (duben 2022), rozvaha nákladů je k dispozici zde.