Jindra Fučík

DCC centrála NanoY

Jedná se o nástupce centrály NanoX-S88 z produkce F.M.Cañada.

Vylepšil jsem si některé funkce, které mi nevyhovovaly a které se mi zdály nedotažené. Jsem si vědom toho, že celá řada úprav není pro mnoho lidí přínosná a že nárůst použitého hardware je poměrně velký. Ani jsem se nesnažil hardware zpracovat ve verzi pro "klasickou THT" montáž. Mám za to, že je tato technologie překonaná a ve své dílně se k ní nevracím. Tím jsem předpokládám také zmenšil počet potencionálních zájemců. Na druhou stranu zde vznikl určitý prostor pro vytvoření osazovacího plánu pro malosériové osazovače v Číně. Čekám na prvního dobrovolníka, který se k této úloze přihlásí.

DCC command station NanoY

It is follower of NanoX-S88 command station produced by F.M.Cañada.

I was improved few functions, that I considered as not suitable for me or looking not finished. I'm aware, that lot of changes are not useful for many of users and that increase of used hardware is relative big. I did not try to think about hardware for "classic THT" mount. I guess that technology is outdated and I'm not returning to it in may workroom. I guess I was reduced number of potential applicants. From the other hand it make some possibility to create assembly plan and utilize small series assembly factory in China. I'm waiting for first volunteer, who wil take this opportunity.


NanoY v.3
NanoY v.4

Specifikace:

  • Až 16(+1) současně jedoucích lokomotiv
  • Podpora jedné "analogové" lokomotivy využívající adresu 0(což nemusí podporovat všechny ovladače, například Roco ovladače tuto možnost nemají)
  • Až 1024 výhybek a návěstidel
  • Podpora XpressNet 3.6, částečná podpora RocoNet
  • Až 31 XpressNet ovladačů (Roco MultiMAUS, Lenz LH100, SimpleMaus, XWL, Xbus TCO, Xbus FBO, MiniMaus, počítačové rozhraní Gen LI 101 a mnoho dalších)
  • Vylepšená bezpečná programovací kolej
  • Čtení a zápis CV v plném rozsahu 1-1024
  • Vestavěný booster může dodávat až 3A proudu do hlavní trati (výchozí hodnota je 2A, v textu je návod na změnu), pracovní napětí lze plynule nastavit v rozsahu 8 až 16 V
  • Podpora 14, 28 a 128 rychlostních stupňů, podpora funkcí světel a F1-F28, včetně možnosti nastavení opakování pro každou lokomotivu samostatně
  • Podpora Double header (přítřež a postrk)
  • 128 256 vstupů zpětného hlášení využívající cenově efektivní rozhraní s88-N pro moduly s88-N
  • Podpora RailCom cut-out device
  • Podpora víceznakových návěstidel využívajících "DCC Extended accessory packet" podle vzoru JMRI

Hlavní změny

Především jsem přepracoval část zesilovače (boosteru), který vytváří DCC signál. Oddělil jsem zesilovač pro hlavní trať a pro programovací kolej. Pro hlavní trať stále využívám integrovaný můstek L6203 (do verze 3), který stále cenově vyhovuje. Pro programovací kolej využívám menší můstek L293E (do verze 3), který je levnější, ale dostačující. Od verze 4 jsem začal používat můstky DRV8876, které jsou mnohem modernější a také levnější. Pro sledování přetížení využívám vnější komparátory LM339D. Pro měření proudu tekoucího do kolejí využívám měřící rezistory (do verze 3). Od verze 4 vnitřní měření proudu na můstku DRV8876. Pro programovací kolej vždy 0,47 Ω, pro hlavní trať lze zvolit 0,1 Ω, 0,15 Ω, 0.27 Ω a výchozí 0,33 Ω. Pro programovací kolej je definováno přetížení již od 250 mA. Tato hodnota nebývá mezi amatéry příliš oblíbená z toho důvodu, že neumožňuje na programovací koleji jízdu lokomotivy. Je však vyžadována normou a je k tomu i jeden velmi dobrý důvod. Tuto nízkou hodnotu proudu obvykle snáší elektronické komponenty lépe, než třeba 2 A na hlavní koleji. Proto se jako dobrá praxe osvědčilo po osazení nového dekodéru do vozidla, nejprve vozidlo postavit na programovací kolej a vyzkoušet, jestli někde nedochází ke zkratu. Následně se pokusit přečíst nějaké CV, pro ověření, že je dekodér schopný komunikace, a teprve poté postavit vozidlo na hlavní trať, kde je možné s ním jezdit. Detekce proudu na programovací koleji je nyní vybavena pro rozlišení nárůstu proudu o 60 mA, což je hodnota vyžadovaná normou. Původní NanoX byla schopná měřit pouze absolutní hodnotu, což bylo omezující pro práci s dekodéry, které mají malou vlastní spotřebu. Vzhledem k rozdělení budičů není nutné nadále používat oddělovací relátko. Centrála má možnost sledování protékajícího proudu (v procentech) a informování ovladačů, nebo počítačového programu o své zátěži.

Použil jsem modernější procesor PIC16F18345 (lze použít i PIC16F344, ale v době vzniku nebyl dostupný v obchodech). Tento procesor je o něco modernější a má více prostředků, ačkoli jeho cena je menší než u původního procesoru. Vzhledem k tomu, že má procesor více paměti, je možné, aby si centrála pamatovala ke každé lokomotivě více informací a tím pádem je možné naplnit více funkcí specifikovaných ve specifikaci XpressNet 3.6. Zejména se jedná o práci s funkcemi F13 - F28, což docení majitelé zvukových lokomotiv.

V napájecí části jsem nahradil lineární stabilizátory za step down měniče. S touto úpravou je možné se setkat u některých klonů NanoX. Úprava především umožňuje efektivnější využití energie, při menším vzniku tepla. Centrála se proto mnohem méně hřeje.

Na desce plošných spojů je graficky vyvedený obrázek dětského vláčku, který mnohonásobně zlepšuje kvalitu elektronů při předávání informací od centrály k vozidlům.

V software centrály jsem odstranil nepříjemnou funkcionalitu známou u původní NanoX jako "Stretching Zeros", která negativně ovlivňovala fungování některých dekodérů. Na místo toho jsem zavedl standardní funkcionalitu prodlužování nul, která běžně dekodérům nevadí, ale umožňuje provoz jedné lokomotivy bez digitálního dekodéru (analogové lokomotivy) na adrese 0. Názory na tuto funkcionalitu se různí, každopádně je občas užitečná pro drobné vyzkoušení lokomotivy, pokud jí člověk nevyužívá, nijak se neprojevuje a neomezuje provoz. Je nutné poznamenat, že ne všechny ovladače podporují ovládání lokomotivy na adrese 0. Lokomotiva je ovládána vždy v režimu 14 rychlostních kroků. Pokud se ovladač pokouší používat větší počet kroků, centrála vždy provede přepočet a použije právě 14 rychlostních kroků.

Změna procesoru za model s více pamětí umožnila ukládání více informací o lokomotivách. Především se jedná o stavy funkcí F13 - F28, které využívají zejména zvukové lokomotivy. Centrála také umožňuje ukládat informace o tom, které funkce se mají v DCC opakovat a které nemají. To umožňuje efektivněji pracovat s množstvím dat, které se opakují v rámci DCC.

Specification:

  • Up to 16(+1) simultaneously running locomotives
  • Up to 1024 turnouts and signals
  • Support of XpressNet 3.6, partial support of RocoNet
  • Up to 31 XpressNet throttles (Roco MultiMAUS, Lenz LH100, SimpleMaus, XWL, Xbus TCO, Xbus FBO, MiniMaus, počítačové rozhraní Gen LI 101 and many others)
  • Enhanced safe programming track
  • Read and write CVs in full range 1-1024
  • Built in booster can supply up to 3A of current (default value is limited to 2A, in text is described how to change) 8 - 16 V
  • Support of 14, 28 and 128 speed steps, support of loght functions and F1-F28 including possibility to configure repeat of functions for each locomotive individually
  • Double header support
  • Up to 128 256 feedback inputs using cost effective interface s88-N for s88-N modules
  • Support of RailCom cut-out device
  • Support for multiaspect signals (DCC Signal Mast) in JMRI using NMRA 'DCC extended accessory packets

Main changes

Mainly I was changed part of booster, that provide DCC signal. I was separated booster for main track and booster for programming track. For main track I'm still using integrated bridge L6203 (up to version 3), that is still suitable. I'm using smaller bridge L293E for programming track, that is cheaper, but enough performing (up to version 3). Starting version 4 I start using DRV8876; they are more modern and cheaper. I'm using external comparators LM339D for overload detection. I'm using detecting resistors for measure current going to tracks (up to version 3). The resistor for programming track is always 0,47 Ω, resistor for main track can be chosen value of 0,1 Ω, 0,15 Ω, 0.27 Ω and default 0,33 Ω. Starting version 4 I'm using internal current detector on DRV8876. Programming track have overload defined as 250 mA. This value is not so favorite with amateurs, because does not allow locomotive to run on programming track. But it is requested by specification and here is at minimum one good reason for it. That low current is usually better accepted by electronic components than for example 2A on main track. Then it is understand as good practice, when user have added new decoder to car, put the car to programming track and see if no short is present. Then try to read some CV and check, once decoder is able to communicate. When decoder pases those two tests, it is safe to put car to main track. Current detection on programming track is equipped by comparator for detection of increase of 60 mA of current; that is value requested by specification. Original NanoX was able to measure absolute value only, that was limiting, when working with decoders that have small internal consumption. Thanks to splitting of drivers, separating relay is no longer needed. Command station is able to measure current consumption and inform throttles or computer program about its load.

I was used more modern processor PIC16F18345 (PIC16F18344 can be used as well, but it was not available on market in time I did the construction). This processor is little more modern and have more resources, although is is cheaper than old one. Because processor have more memory, it is possible for command station to store more information about each locomotive. Then it is possible to fulfill more functions specified in XpressNet 3.6. Especially regarding work with functions F13 to F28; that is helpful for sound locomotives owners.

I was replaced linear stabilizers by step down converters in powering part. Same change can be found with multiple NanoX clones. This change allow more effective usage of energy, with lower heat production. Command station is less heating.

On PCB is graphically rendered image of toy train. That dramatically increase quality of electrons that transferring information from command station to cars.

I was removed this not so nice functionality of command station called "Stretching Zeros", that negatively affect functions of some decoders. As a replacement of this I was introduced standard functionality for stretch zeros, that normal decoders have no problem with. This functionality allow run of one locomotive without digital decoder (analog locomotive) on address 0. I saw various opinions for this functionality, but I see it as useful to have time to time possibility to test some locomotive. In case you not use this functionality, it does not show themselves anywhere and does not limit any service. It is good to mention, that not all throttles support control locomotive on address 0. Locomotive is controlled using 14 speed steps. In case that throttle try to use different number of steps, command station always convert it to 14 speed steps.

Change of processor to model with more RAM allows to store more information about locomotives. First of all it is status of functions F13 to F28, used mainly by locomotives with sound. Command station allows to store information, what function groups are refreshed in DCC and what is not. It allow to work more effective with amount of data repeating in DCC.


NanoY v.3
NanoY v.4

Schema a DPS

Schéma zapojení verze 3 nebo verze 4 je možné si v klidu stáhnout. Nemá cenu jej nějak složitě popisovat, popis jednotlivých fragmentů je v textu této stránky, ostatní je jen základní zapojení použitých komponent. Dokonce i gerber soubory pro verzi 3 nebo verzi 4 desky plošných spojů je možné si stáhnout a desku si nechat vyrobit. Než se do této akce pustíte, zvažte, jestli vaše schopnosti stačí na osazení a zprovoznění celé desky. Dokonce jsem vytvořil BOM a CPL soubory pro verzi 3 a verzi 4, které lze použít při objednávce osazení u JLCpcb. Tady je však nutné poznamenat, že mi JLC nikdy desky nedodalo a dalo mi dost práce dostat zpět peníze. Deska počítá převážně se SMD součástkami a nedává smysl tento fakt měnit. Vzhledem k tomu, jak je populární odstraňovat jména autorů a vydávání designu za svůj "vylepšený", není k dispozici jiná forma DPS než hotový gerber. V návaznosti na tento fakt také není k dispozici program pro procesor (ani ve formátu HEX). Program je možné zdarma získat na základě individuálního posouzení. Minimálním předpokladem pro posouzení je zaslání fotek osazené centrály na kterých bude zřetelné zachování označení produktu, jmen a graficky vyvedeného dětského vláčku. Poděkujte Dvořákovi Milanovi, Ing., který se rozhodl, že je pro něj výhodnější centrálu prodávat.

Schema and DPS

it is possible download schematic for version 3 or version 4 for free from page. It is no necessary to spend time with describing. Description of interesting fragments is part of this page. Rest of is basic connections of used components. As well gerber files for version 3 or version 3 for PCB is available for download and send for manufacturing. On top of that you can download BOM and CPL files for version 3 a version 4 for JLCpcb assembly. Here I must warn you, that I newer received boards from manufacturing and I spent month with discussions to get my money back. Before you will done this, think, if you are skilled enough to solder all components and make the electronic running. Board use mainly SMD components and I see no reason to change it. Because nowadays is popular to remove authors names and present design as "own enhanced", it is not possible to download other form than gerber. Following this fact program for processor is not available (in any format, including HEX). It is possible to retrieve program (for free) after individual evaluation. Minimal requirement for evaluation is send of photos of assembled board with visible marking and toy train image on board. Software is not available anymoe. You can send thanks to Dvořák Milan, Ing. who decided, it is economically effective for him to sell command stations to others.

Schema
PCB top
PCB bottom
Schema
PCB top
PCB bottom

Proudové zatížení (do verze 3)

Proudové zatížení může být definované jako 2 A, 2,5 A a 3 A. Zatížení 3 A je na hranici měniče LN2596. Proud se snímá jako napětí na měřícím rezistoru (bočníku) R2. Tento rezistor ovlivňuje "tvrdost zdroje" (vnitřní odpor zdroje). Proto čím je menší, tím méně se mění napětí při různém zatížení. Bohužel také platí, že čím je menší, tím menší je přesnost snímání a tím je větší odchylka při vyhodnocování. Změřená hodnota se pak porovnává s napětím na děliči tvořeném R17 a R18. Následující tabulka ukazuje různé možné kombinace rezistorů pro různé hodnoty proudu.

Current load (up to version 3)

Current load can be defined as 2 A, 2.5 A and 3 A. Load of 3 A is at the boundary of LN2596 converter. Current is measured as voltage on measuring resistor R2. This resistor affect quality of power source (power source internal resistance). Then smallest value of resistance mean smallest change of output voltage with different load. From the other hand smallest resistance mean smallest accuracy of measurement and bigger measure deviation. Measured value is then compared with voltage on voltage divider consist of R17 and R18. Following table display various possible combinations of resistors for various current values.

 R2 = 0,1 ΩR2 = 0,15 ΩR2 = 0,27 ΩR2 = 0,33 Ω
2AIMAX [A]2.0814909441.9777341192.1162611732.005936267
IMIN [A]1.7825776941.7379214461.9630938361.921496465
USense Max [V]0.2081490940.2966601180.5713905170.661958968
USense Min [V]0.1782577690.2606882170.5300353360.634093834
R17 [kΩ]2218105.6
R18 [Ω]82010001200820
 2.5A IMAX [A]2.5154170722.5149071592.4793036672.574504603
IMIN [A]2.1533161072.2543293372.353650042.464899826
USense Max [V]0.2515417070.3772360740.669411990.849586519
USense Min [V]0.2153316110.3381494010.6354855110.813416943
R17 [kΩ]22156.85.6
R18 [Ω]1000110010001100
3AIMAX [A]2.9884318772.9869321722.8332795852.95530345
IMIN [A]2.5571087622.7525461052.7318657752.848175174
USense Max [V]0.2988431880.4480398260.7649854880.975250138
USense Min [V]0.2557108760.4128819160.7376037590.939897807
R17 [kΩ]22114.74.7
R18 [Ω]120010008201100

Tučně jsou vyznačené výchozí hodnoty.

Centrála pracuje s dvěma hodnotami proudu. V tabulce označené jako IMAX a IMIN. Jsou to hodnoty hysterezní křivky. Tedy pokud dojde k překročení (i krátkodobému) hodnoty IMAX, centrála začne registrovat zkrat. Pokud během velmi krátké doby dojde k poklesu zatížení pod IMIN, centrála usoudí, že se jednalo o šum a zkrat přestane registrovat. Zde je patrné, jaký je vliv vyhodnocovacího rezistoru R2. Pro malé hodnoty R2 je rozdíl IMAX a IMIN velký, centrála bude tedy o něco častěji vyhodnocovat zkrat, respektive bude hůře reagovat na krátkodobý šum.

Hodnotám proudu odpovídají podle Ohmova zákona příslušné hodnoty USense. Jak již zaznělo, centrála vyhodnocuje ve skutečnosti napětí a nikoli proud. To je běžná praxe pro ampérmetry. Podstatné je, že software centrály přepočítává zatížení tak, že hodnotu 0,65 V považuje za 100% zatížení. To v praxi znamená, že změřená hodnota odpovídá pravdě jen pro výchozí hodnoty zatížení 2A; R2 = 0,33 Ω a pro hodnoty zatížení 2,5A; R2 = 0,27 Ω. V ostatních případech je potřeba přepočítávat poměr vzhledem k poměru měřeného napětí k hodnotě 0,65 V. Ve stávající verzi software tato možnost není zohledněna.

Proudové zatížení (od verze 4)

Od verze 4 se využívá vnitřní detekce obvodu DRV8876. Ten má výstupu IPROPI (6) proud přímo úměrný zátěži. Proud je pomocí dvojice rezistorů R2 a R14 převeden na napětí a dále zpracováván pomocí komparátorů. Převod je udělán tak, aby vždy napětí pro maximální proud bylo 1 V. Převodní poměr pro IPROPI je 1:1000, takže lze počítat proud v ampérech a odpor v kilo-ohmech. Pro zatížení 2 A je tedy odpor 1 V / 2 A ~ 0,5 kΩ (dva rezistory 1 kΩ paralelně). Pro proud 2,5 A bude 1 V / 2,5 A ~ 0,4 kΩ (dva rezistory 200 Ω sériově). Pro zatížení 3A by byl odpor 1 V / 3 A ~ 0,333 kΩ, to je ale příliš na hranici maxima zdroje a obvodu DRV8876. Proto raději použijeme 0,34 kΩ (rezistor 240 Ω sériově s rezistorem 100 Ω), takže maximální proud bude 2,94 A. Nic jiného se v zařízení nemění.

Provoz lokomotivy bez digitálního dekodéru

Možnost provozu jedné lokomotivy bez digitálního dekodéru se považuje za jednu z výhod modulace, kterou DCC využívá. K naplnění této funkcionality se používá poměrně jednoduchý trik. Hodnota logické nuly je podle NMRA S-9.1 definována jako změna polarity v rozmezí 95 µs - 9900 µs. Je tedy možné vytvářet datové nuly s velkou antisymetrií, která pro běžný stejnosměrný motor vypadá jako PWM modulace.

Existuje celá řada názorů (převážně od lidí, kteří nemají možnost tuto funkcionalitu využívat), které tvrdí že vede ke zvýšenému opotřebení motoru v lokomotivě. Nebudu tyto názory příliš komentovat, je pochopitelně pravda, že na digitální kolejiště patří digitální lokomotiva.

Co ale podle mého názoru stojí za zmínku je fakt, že používání prodloužených nul spotřebovává čas pro odeslání každého DCC příkazu. Uveďme si jednoduchý příklad. Na následujícím obrázku máme datagram příkazu NOP. Pokud je tento datagram odeslaný se standardní délkou nuly, je výrazně kratší než v případě, kdy je nula prodloužená pro první rychlostní stupeň (ani se mi do obrázku nevešel třetí bajt příkazu). Nemluvě o délce například pro poslední (čtrnáctý) rychlostní stupeň (zelená část obrázku).

Centrála NanoY ve výchozím stavu používá optimální nejkratší možný čas pro odesílání datagramů. K prodlužování přistoupí až když od některého z ovladačů obdrží příkaz k jízdě lokomotivy na adrese 0.

Default values are marked by bold

Command station works with two values of current (marked as IMAX a IMIN in table). They are values of hysteresis curve. Then once current exceed (including short therm) value of IMAX, command station start register overload. Once in very short period of time load decrease under IMIN, command station decide it was a noise and will stop register overload. Here is visible, how big is effect of R2 value. For small values of R2 variance of IMAX and IMIN is big, command station will then register overload more often, respective will react a little worst for noise

Based on Ohm's law current through resistor is directly proportional to USense voltage. It is stated already, that command station not read current, but voltage. That is usual practice for amperemeters. It is crucial, that command station calculate load that 0.65 V is understand as 100% of load. It mean, that value is correct only for default values for load 2A; R2 = 0,33 Ω and for load 2,5A; R2 = 0,27 Ω. For rest of cases in is necessary to re-calculate value of load compare to measured voltage to 0.65V. Current version of software does not allow to configure different values.

Current load (starting version 4)

Starting version 4 command station use internal current detection of DRV8876. It have current on output IPROPI (6) linearly connected to load. Current is converted to voltage using resistors R2 and R14. Then it is processed using usual comparators. Conversion is don that way, that voltage for maximum current is equal to 1 V. Conversion ration for IPROPI is 1:1000 to output current. Then we can calculate current in Amps and resistors in kilo &Ohmhm;. For load 2 A is resistance 1 V / 2 A ~ 0.5 kΩ (two resistors 1 kΩ in parallel). Resistance for current 2.5 A will be 1 V / 2.5 A ~ 0.4 kΩ (two serial resistors 200 Ω). Resistance for load 3A should be 1 V / 3 A ~ 0.333 kΩ, but it is to close to limit values of power source and DRV8876. We will use 0.34 kΩ (resistor 240 Ω in series with 100 Ω), then maximum current will be 0.94 A.

Use of one locomotive without digital decoder

Possibility to use one locomotive without digital decoder is one of benefits of modulation used by DCC. To fulfil this functionality relative simple tricj is used. Value for logical zero is based on NMRA S-9.1 defined as change of polarity in time between 95 µs - 9900 µs. It is possible to create data vith logical value of zero with big electrical asymmetry, that look like usual PWM for DC motor.

It exist lot of various opinions (especially from people who can not use this functionality), that this modulation mean bigger worn out of motor in locomotive. I do not want to comment those opinions. It is for sure, that digital layout is designed for digital locomotives.

What is crucial from my opinion is the fact, that use of stretched zeroes consume time for DCC packets to send. Let us have simple example. We have command NOP on following image. Once the datagram is sent with standard length of zero, it is dramatically shorter than same datagram sent with zeroes stretched for first speed step (third byte of command did not fit to image). Imagine the difference for last (fourteen) speed step (green part of image).

NanoY command station use in default state optimal shortest possible time for sending datagrams. It start witch stretching only when any of throttle sent command for run of locomotive on address 0.

DCC wave

Opakování příkazů pro funkce

Již nějakou dobu se zmiňuji o čase potřebném pro odeslání jednoho datagramu. Možná by bylo dobré si říci, k čemu je vlastně důležité vědět, proč je takový čas významný.

Předpokládám, že poučení uživatelé vědí, že se datagramy v DCC neustále opakují a že když se na koleje postaví nové vozidlo, nejprve počká na své informace a pak se podle nich rozjede, rozsvítí, zahouká a podobně. To samé platí i pro případ, že vozidlo na nějakou dobu ztratí kontakt a ztratí informace ve své paměti. Pokud se na DCC zrovna v době kdy vozidlo získalo kontakt s kolejemi běží informace pro jiné vozidlo, čeká to naše delší dobu. To je hodně zřetelné například u osvětlených vagónů s malým počten náprav schopných sběru proudu.

Následující obrázek uvádí příklad, kdy centrála obsluhuje 3 vozidla a opakuje pro ně informace o rychlosti a následně o funkcích. Funkce se vysílají v datagramech po skupinách. Skupina 1 funkce F0-F4, skupina 2 funkce F5-F8, skupina 3 funkce F9-F12, skupina 4 funkce F13-F20 a skupina 5 funkce F21-F28. Pokud se tedy naše vozidlo s adresou 2 dostane na koleje v čase 5, nejprve považuje funkci F5 (osvětlení) za vypnutou a musí počkat až do doby než obdrží datagram s informacemi o skupině 2, tedy zhruba do času 57, pak teprve může rozsvítit světla.

Repeating of commands for functions

I'm talking about time necessary for sent a datagram. Maybe it is interested to describe, why it is good to know, where the time is significant for.

Assuming, that educated users knows, datagrams are periodically repeating in DCC and when new car is added to layout, it will wait for its information first and then start running or lighting or playnf sounds based of those information. The same is valid for cases, that car loses connection to track for some time and loses information stored in memory. In case, that car returns to track in time, when information for another car is transmitted in track, it has to wait longer time. It is heavily visible for example with lighting wagons with small amount of pickup wheels.

Following image display example, when command station service 3 cars and repeat for them information about speed and then about functions. Functions are transmitted in datagrams as groups. Group 1 mean functions F0-F4, group 2 functions F5-F8, group 3 functions F9-F12, group 4 functions F13-F20 and group 5 functions F21-F28. Once our car with address 2 will get contact for example in time 5, it understand function F5 (salon lights) as off and have to wait until receive datagram with functions group 2, then approximate to time 57, and then it can turn lights on.

DCC packets

Proti tomu stojí požadavek na opakování pokud možno všech funkcí pro zvukové dekodéry, aby nedocházelo k situaci, že zvuková lokomotiva po krátké ztrátě kontaktu přestane vydávat některý zvuk.

V rámci specifikace XpressNet 3.6 lze nastavit, které skupiny funkcí se v DCC opakují a které ne. Existuje na to paket označovaný jako "Funktionsrefresh-Modus setzen ab Zentralen". Jedná se o příkaz, který dovoluje nastavit, jestli se v DCC opakují funkce pro skupiny 2 až 5 (Skupina 1 se opakuje vždy). Pokud tedy máme vozidlo, o kterém víme, že nepoužívá funkce z některé skupiny, je praktické její opakování vypnout. Bohužel toto nastavení nepodporuje příliš mnoho ovladačů. Nicméně v rámci testovací aplikace spolupracující s rozhraním GenLI-101 jsem přidal možnost tyto funkce nastavovat. Jak již zaznělo, nastavení je platné pro každé vozidlo (adresu) a co je podstatné - pro vozidla s adresou 1-99 se ukládá do eeprom paměti centrály, takže je platné po vypnutí a novém zapnutí. Výchozí hodnota je taková, že se opakují funkce F0-F12. Pro funkce F13-F28 podporuje centrála možnost, že pokud se neopakují, odesílá je jednorázově při změně. To ale neplatí pro funkce F5-F12, ty pokud se neopakují, informace o nich se nikdy nedostanou do kolejiště. Je zde tedy trochu riziko, že si člověk vypne opakování, protože na dané adrese provozuje jen základní dekodér s jednoduchým svícením na F0 a později jej nahradí nějakým mohutnějším dekodérem a je trochu překvapen.

Pro nastavení a kontrolu opakování funkcí pomocí Testovací aplikace slouží druhá záložka "Loco". Na ní jsou k dispozici tlačítka [Get typ of F13-F28], které mimo jiné přečte, jak je nastavené opakování funkcí. Opakování je pak zobrazeno v poslední řádce zaškrtávátek jako g2, g3, g4 a g5 (skupina 2 - skupina 5). Pro uložení se používá tračítko [Set refresh] hned za zaškrtávátky. Pro tyto operace není bezpodmínečně nutné používat rozhraní GenLI-101, je možné použít i jiná rozhraní odvozená od Lenz LI100 nebo LI101.

We have requirement for repeat maximum of function groups for sound decoders against requirement to have minimum unused date in DCC. To not have situations, that sound locomotive will stop producing some sound effect after short lose of connection to track.

As part of specification XpressNet 3.6 is possible to configure, which function groups are repeated in DCC and which are not. It exist command marked as "Funktionsrefresh-Modus setzen ab Zentralen". It is command, that allow to specify, if functions groups 2 to 5 are repeated in DCC (functions fron group 1 are always repeated). Once we have car, that we exactly know it does not using functions from any of group, it is practical to disable repeating of this group. Unfortunately not so many throttles. Luckily I extend test application working with interface GenLI-101 to support configure of this functionality. As it was mentioned, setup is valid for cars (locomotive addresses) individually. What is crucial - for cars with address 1-99 is stored in eeprom memory of command station, then it is valid after switching off and on again. Default value is, that functions F0-F12 are repeated. For functions F13-F28 are supported functionality, that once they are not repeating in DCC, command station transmit them once when they are changed. That is not valid for functions F5-F12. They, once are not repeated, are never propagated to DCC. Here is small risk then, that user will switch off repeating of functions, because given address is used by basic decoder only with basic lights on F0 only, later on upgrade decoder to more advanced and forget the settings, then can be surprised a little.

Setting and checking of function repeat by test application is used second tab "Loco". Here are available buttons [Get typ of F13-F28], that will besides read as well how functions repeating is configured. Repeating is then displayed in last line of tickboxes marked as g2, g3, g4 and g5 (group 2 - group 5). To save value from tickboxes is used button [Set refresh] next to tickboxes. It is not strongly required to use GenLi-101 interface for this operations. It is possible to use any other devices derived from Lenz LI100 or LI101.

Zobrazení zatížení

Jak již zaznělo, centrála vyhodnocuje vlastní proudové zatížení. Zatížení je možné si kdykoli zobrazit za použití počítače, nebo vhodného ovladače (v extrémním případě také pomocí Fbus FBO, nebo testovací aplikace, ale existují i komfortnější). Jak známo, už centrála NanoX podporuje 128 vstupů zpětného hlášení s88-N; NanoY podporuje 256 vstupů. Zpětné hlášení je mapováno na adresy modulů 65 - 80 pro pravý konektor (každý 8 vstupů) a adresy 81 - 96 pro levý konektor. Centrála NanoY navíc vytváří virtuální modul na adrese 97, který vyjadřuje osmibitové číslo a toto číslo představuje zatížení v procentech (do verze 3 jsou procenta platná pouze pro některé kombinace rezistorů, viz kapitola proudové zatížení). Informace o zatížení jsou občas propagovány bez nutnosti aktivního dotazu.

Display of command station load

How it is stated already, command station evaluate own electrical load. Load can be displayed at any time using computer or any suitable throttle (in extreme case using Fbus FBO, or test application, but more comfortable exist). That is well known, that NanoX command station already support 128 inputs of feedback s88-N; the same is valid for NanoY. Feedback is mapped as module numbers 65-80 (8 inputs each). NanoY command station create virtual module with address 81, that represents eight bit number and this number mean load in percent (percent is valid only for some combinations of resistors, see chapter current load). Load information is propagated sometimes without needs for active pooling.

Další možnost, jak zobrazit zatížení a také pracovní napětí v kolejích přináší čtyřpinový konektor na centrále. Dva piny označené "Volt." slouží pro připojení voltmetru, který pak ukazuje aktuální napětí v kolejích. Pozor: napětí není vztaženo k zemnící svorce centrály, nelze použít voltmetr, který by byl připojený k zemnící svorce, naopak lze použít voltmetry, které se napájí z měřeného napětí (zpravidla dvoudrátové). Kladný pól je vlevo, blízko nápisu "Volt.". Dva piny označené "Load" slouží k měření zatížení centrály. Na těchto pinech je vyvedeno napětí z měřícíko rezistoru R2. Zpravidla se k němu připojují různé indikátory úrovně. Zde je nutné použít takový indikátor, který má nastavené maximum na hodnotu USense Max podle zvolených rezistorů v předchozí tabulce. Například v časopise Praktická elektronika - Amatérské radio 7/2020 vyšel celkem pěkný článek "Indikátor úrovně stereofonního signálu", který popisuje problematiku těchto indikátorů. Lze pochopitelně použít i jiný indikátor zalořený na obvodu LM3914.

Next possible option, how to display current load and working voltage in track is four pin header on command station. Two pins maked as "Volt." are used for connection of voltmeter to display actual track voltage. Note: voltage is not referring to common ground, then it is not possible to use voltmeter, that is connected to ground pin of command station. From the other hand it is possible to use voltmeters, that are powered from measured voltage (usually two wire connection). Positive pole is on left side, close to "Volt." label. Two pins marked as "Load" are used for measure command station current load. Those pins contain voltage from measuring resistor R2. It is usual to connect various level indicators. Used indicator must be configured to have maximum to value of USense Max, based on used resistors in previous table. For example indicators based on chip LM3914 are fine.

Další možnost je využití BoosterDisp, který je nutné upravit pro menší měřené napětí. Nové hodnoty rezistorů pro 2A verzi mohou být například jak v následující tabulce.

It is also possible to use BoosterDisp, it has to be configured for smaller voltage. New values of resistors for 2A version can look like as described in following table.

LED svítí při
LED lighting at
Odpovídající napětí
Corresponding voltage
R127 kΩLED1> 1,7 AULED1> 0,56 V
R2560 ΩLED2< 1,7 AULED2< 0,56 V
R3820 ΩLED3< 1,4 AULED3< 0.46 V
R41 kΩLED4< 1 AULED4< 0.33 V
R51 kΩLED5< 0,5 AULED5< 0,16 V

Nastavení

Je poměrně důležité si před prvním připojením nastavit výstupní napětí! Nejjednodušší varianta je připojit voltmetr ke svorkám "Volt." a pomocí trimru "Track Volt." nastavit požadované napětí. Rozsah napětí ve kterém centrála pracuje je poměrně velký, proto tento krok nepodceňujte.

Centrála uznává systém nastavení stejný jako původní NanoX (včetně původních Easter Eggs. Jen jsem vyměnil význam "stretching zeroes" za ovládání napájení progrmovací koleje. Nastavení se provádí z ovladače s použitím jednoduché techniky programování. Ovladač musí být nastaven na "Programování na hlavní trati" (PoM). Přechod do programovacího režimu se provede zápisem CV7=50 pro libovolnou lokomotivu (CV7 je pro lokomotivy pouze pro čtení, takže tento příkaz ignorují). LED na centrále začne blikat, tím signalizuje že je v režimu programování. Nyní lze změnit nastavení zápisem hodnoty, která vyjadřuje příslušnou funkci. NanoX vznikla jako náhrada za Roco LokMaus, později se spíše přiblížila Lenz LZV100, protože Roco zavádí různé "chyby", které neumožňují používat jejich produkty v kombinaci s jinými produkty a bez extra příplatků. V každém případě si lze zvolit, jak se hlásí směrem k ovladačům. Další nastavení slouží pro vypínání/zapínání signálu v programovací koleji v čase, kdy nedochází k programování, Zapnutí, nebo vypnutí čtení zpětného ohlasu S88. A zapnutí, nebo vypnutí vytváření "Cut out" pro RailCom komunikaci.

Následující tabulka ukazuje seznam možných nastavení. Nastavení označená * jsou výchozí.

Setup

It is crucial to setup track voltage before first use! Easiest method is to connect voltmeter to pins marked "Volt." and regulate voltage using "Track Volt." trimmer. Voltage range is big, do not skip this step then.

Command station use same system of configuration as original NanoX (including original Easter Eggs. I was only replaced meaning of "stretching zeroes" wit control of signal in programming track. Configuration can be done using throttle using simple method of programming. Throttle has to be configured to "Programming on Main" (PoM). Switch to configuration is started by write CV7=50 for any locomotive (CV7 is read only for locomotives, then locomotive ignore this command). LED start blinking, that mean, command station is in configuration mode. Now is possible to change configuration by write value for requested function. NanoX as developed as replacement Roco LokMaus, later on is more focusing to Lenz LZV100, because Roco starts introducing some "bugs", that limit compatibility with other vendors products without extra fees. Anyhow, it is possible to change how command station present itself to throttles. Next configuration enable/disable signal in programming track in time when normal operation is performed, enable/disable read of S88 feedback and enable/disable creating "cut out" time for RailCom communication.

Following table show variants of configuration. Configuration marked by * mean default.

CV7 = 50Zahájení nastavováníStart of configuration
CV7 = 76Roco Lokmaus (Xbus v3.0)Roco Lokmaus (Xbus v3.0)
CV7 = 77*Lenz LZV100 (Xbus v3.6)Lenz LZV100 (Xbus v3.6)
CV7 = 78Roco z21 (Xbus v3.6, číslování výhybek +4 jako Lenz)Roco z21 (Xbus v3.6, turnout numbers +4 as Lenz)
CV7 = 79Roco z21 (Xbus v3.6)Roco z21 (Xbus v3.6)
CV7 = 44Programovací kolej je odpojená v čase běžného provozuPrograming track is disconnected during normal opration
CV7 = 45*Programovací kolej sdílí jízdní data (pouze 250 mA)Programing track share main track data (max 250 mA)
CV7 = 60*S88 je zapnutoS88 is on
CV7 = 61S88 je vypnutoS88 is off
CV7 = 92*RailCom je vypnutýRailCom is off
CV7 = 93RailCom je zapnutýRailCom is on

Pokud chcete provozovat jako ovladač Roco MultiMAUS, nezapomeňte, že musíte centrálu přepnout do některého z Roco režimů. Roco úmyslně bojkotuje používání hardware ostatních výrobců.

Zpětný ohlas S88n

Od verze 3 jsou k dispozici dvě větve zpětného ohlasu S88n. Pracovně je označuji jako "Levá" a "Pravá". Levá má označení konektoru "J9" a je blíže ke konektoru XpressNet. Pravá má označení konektoru "J3" a je blíže k výstupu DCC signálu. Do každého konektoru lze připojit řadu až 128 vstupů. Tedy 16 kusů osmi-vstupových modulů, nebo 8 kusů šestnácti-vstupových modulů. Každá řada se vyhodnocuje samostatně, každá řada má své adresy. Pravá větev používá adresy 65-80, stejně jako původní NanoX. Nová - levá větev používá adresy 81-96. Adresy jsou neměnné, nezáleží na počtu modulů.

Co bych udělal jinak

Až když jsem měl centrálu hotovou, upozornil mne Bohouš na existenci budiče DRV8876. Tento budič se zdá mnohem modernější a byl by pravděpodobně vhodnější než stávající L6203. Rozhodně bych vážně zvažoval jeho použití. Pro někoho by mohlo být přínosné také použití budiče L298, který je díky Adruino Motor Shieldu poměrně zprofanovaný. Já ho nepovažuji za tak přínosný, je to poměrně zastaralý obvod.

Rozhodně by bylo zajímavé přidat ještě jednu větev s88-N. Z hlediska hardware by se nejednalo o příliš velký zásah, z hlediska software by byl zásah ještě menší. Použitý procesor má dostatek paměti pro obsluhu dalších vstupů, takže by se nejednalo o žádnou komplikaci. Přidání dalších 128 vstupů by mohlo být pro celou řadu uživatelů přínosné.

Za úvahu by také mohlo stát předělat s88-N rozhraní na používání 12V. Tím by se zvýšila odolnost proti rušení. V podstatě by stačilo nahradit stávající 74HC244 za budič typu TC4427 a nějaký vhodný dělič na vstupu. To je záležitost, která by mohla být prospěšná pro majitele rozsáhlejších kolejišť, kde existuje větší riziko elektrického rušení.

Once you would like to use Roco MultiMAUS as throttle, do not forget, that you must switch command station to one of Roco emulating modes. Roco purposely block use of other vendors hardware

Feedback S88n

Starting version 3 is available two lines for S88n feedback modules. I'm marking them as "Left" and "Right". Left one have socket marked as "J9" that one, that is closer to XpressNet socket. Right one have socket marked as "J3" and is close to DCC output. Each connector can serve line of 128 inputs. It mean 16 pieces of 8 input modules, or 8 pieces of 16 input modules. Each line is evaluated separately, each line have own address space. Right line use addresses 65-80, same as original NanoX. New - left line use addresses 81-96. Addresses are fixed, they are not depend on number of modules connected.

What would I do differently

When I have command station done, Bohouš informed me about nice driver DRV8876. This driver looks more modern and look more suitable than existing L5203. Nowadays I would seriously consider use of this driver. It can be beneficial for someone use of L298 driver, that is highly profaned by Adruino Motor Shield. I do not consider it as so much useful, it is relative obsoleted chip.

It will be interesting to add one more s88-N line. From hardware point of view it will not be so big change, from software point of view the change will be even smaller. Used processor have enough memory for handle more inputs, then it will not be any complication. Adding next 128 inputs can be handy and useful for many users.

It can be good for consideration to change s88-N interface to use 12V. It will increase resistance against noise. In theory it should be enough to change existing 74HC244 to driver like TC4427 and some suitable divider on input. This can be useful for owners of big layouts, that have bigger risk of electronic noise.