Jindra Fučík

Rychlé hodiny - Fast clock

Pro svoje digitální vláčkové experimenty jsem začal potřebovat rozhraní pro Fast Clock.
Obecně se zrychlené hodiny používají v železničním modelářství proto, aby bylo možné jezdit podle grafikonu a přitom nebylo nutné dlouho postávat ve stanicích a také aby se mírně zamaskoval fakt, že stanice jsou od sebe vzdálené zhruba 200 metrů pro měřítka H0 a 500 metrů pro měřítka N.
Již v minulosti jsem provedl úpravu levných ikea hodin na potřebu rychlých hodin. Vznikla tím docela hezká pomůcka pro mladého teroristu, která plně dostačuje pro domácí a klubové ježdění, je velice jednoduchá a levná na pořízení.

Fast clock

For my experiments with digital railway modelling I decided I need Fast Clock interface.
In general in model rail road fast clock is used to allow users to use real looking time tables and must not wait long time in every stop. Also to little mask, that distance between stations is 200m for H0 scale and 500m for N scale.
I modified ikea cheap clock for fact clock functionality in the past. Then I have tools for young terrorist. That device is enought for club and home rail road. It is cheap and simple.
Nyní jsem se však rozhodl vyzkoušet si několik experimentů s fungováním Fast Clock rozhraní na úrovni XpressNet a na DCC. Pro tyto experimenty je vhodné použít hodiny s možností digitálního zobrazení. Postavil jsem si proto takovouto platformu, na které jsem schopen vytvářet různé varianty rozhraní. Jak XpressNet, tak DCC.
Použil jsem de-facto úplně základní zapojení, které používají všichni začínající elektro kutilové. Hodiny složené z osmi segmentových zobrazovačů a několika přídavných LED.
Trochu zajímavé je připojení ovládacích tlačítek a přepínačů, které jsou připojené na "řádkový multiplex". Takže v rámci rozsvícení další segmentovky rovnou dojde k přečtení stavu tlačítek a přepínačů.
Oproti běžným hodinám je navíc připojeno rozhraní RS485, které se používá právě pro XpressNet a je vyveden pin INT pro procesor, kam lze pomocí jednoho rezistoru připojit DCC signál. Zařízení jsem rozdělil na dvě desky plošných spojů, které jsou pomocí oboustranných kolíků spojeny do pravého úhle. Desku se zobrazovači jsem musel udělat jako oboustrannou, není však nutné aby byla vyrobena s prokovenými otvory, lze ji propojovat ručně. Desku s řídící elektronikou jsem pak vytvořil jako jednostrannou jen s několika málo propojkami.
Now I decided to done some experiments with functionality of Fast Clock on XpressNet and DCC level. For those experiments it is useful to have clock with digital display. Then I cleated this simple platform, where I can create variety of interfaces including XpressNet and also DCC.
I was used de-facto basic schematic for clock used by all electro beginners. Clock consist of eight seven-segment displays and few additional LEDs.
Little interesting can be connection of control buttons and switches. They are connected to "row multiplex", then they are readed directly as a part of next segment display.
As addition to usual clock is included interface RS485 used for XpressNet; Also pin INT of processor is connected to pinhead, can be used for reading of DCC signal by adding one simple resistor. I split device into two PCB boards, connected by pinheads to 90° angle. I must create board with displays as a double-side, but it is no necessary to have metallic holes, it can be interconnected in hands by using wires. Board for controlling electronic is created as single side only with few connection wires.

sch + pcb .zip
Protože zvolený procesor PIC16F628A nemá dostatek vývodů, použil jsem pro jednotlivé řádky (jedna řádka = jedna segmentovka) sériový registr s paralelním výstupem 74.595. Pro přepínání jednotlivých řádků jsem pak zvolil jednoduchý demultiplexer 74.238. Pro buzení zobrazovačů jsem použil tranzistorová pole ULN2803A a UDN2981A, tím jsem si mohl dovolit použít pro segmentovky jiné pracovní napětí než pro provozní logiku, také je možné používat pro segmenty celkem velké proudové zatížení, takže je možné hodiny osadit velkými zobrazovači a zobrazovači složenými z většího množství LED diod. Napětí pro segmentovky je stabilizováno pomocí obvodu LN317 s proměnnou složkou, takže si každý může nastavit jas podle potřeby. Poslední podstatná přednost je použití samostatného obvodu reálného času PCF8563T, tím je umožněno aby hodiny neztratili informaci o čase ani při odpojení napájení. S kondenzátorem 0,1F vydrží bez napájení minimálně týden. (to by myslím mělo být poučení pro výrobce mikrovlnek a sporáků s hodinami, které se vynulují při každém zákmitu napájení) Obvod PCF8563T se u nás prodává pouze v SMD provedení, proto je na desce připájen na spodní straně, spolu s filtračním kondenzátorem. Because used processor PIC16F628A have not enough pins, I used for separate rows (one row = one display number) serial register with parallel output 74.595. For switching between rows I used simple demultiplexer 74.238. Fur amplification of signal for displays I used transistor arrays ULN2803A and UDN2981A. It allows me to use other voltage level for displays then for control logic; it is also possible to use bigger current for segments, then it is possible to use big size displays or create displays from bigger amount of leds. Voltage for segments are stabilized by LN317 with variable part handled by potentiometer. Then anybody can set up brightness by own needs. Last used benefit is usage of separate real time clock controller PCF8563T. Then it is possible, that clock information is not lost also during disconnection of power. With used capacitor 0.1F it can be without power at minimum one week. (it can be hint for microwaves, cookers and ovens with clock, that lost information about time every single power incident) In my closest shop with electronic parts they have chip PCF8563T only in SMD version, then it should be soldered to bottom side of PCB (with filtering capacitor).
Ovládací program je velice jednoduchý. V paměti procesoru je vyhrazeno 8 bajtů, které reprezentují segmentovky a 3 bajty, které reprezentují tlačítka. Na procesoru je pak nastavené přerušení každou 1ms, které zobrazí informace na další segmentovce a přečte hodnotu tlačítek a přepínačů. Zároveň pak posouvá vnitřní nepřesné hodiny s rychlostí 4Hz. Tyto hodiny se používají k čtení a zobrazování hodin reálného času, stejně jako k posouvání hodin zrychleného času.

Z toho vyplývá, že hodiny zrychleného času vychází z násobku čísla 4*60=240 kroků za minutu. Je tedy zřejmé, že zejména ve větších rychlostech nejsou přesné a v několika případech jsou pro dvě rychlosti použitá stejné násobky.
Controlling software is pretty easy. In processor memory is dedicated block of 8 bytes representing displays and š bytes representing buttons. Here is also configured interrupt every 1ms, used for display of information on next display and read of buttons or switches. It also incrementing internal non-accurate clock with speed of 4Hz. This clock is used for reading and displaying real time clock, also for incrementing of fast clock.

It means, that fast clock is based on count 4*60=240 steps per minute, then it is visible, that especially in bigger speeds they are not acurate and also in few cases here is used same multipliers for two speed steps.

Pro tento projekt je také dobré si připravit a promyslet mechanickou konstrukci. Pro mojí verzi jsem osadil zobrazovače do patic. Hlavní důvod je ten, že tím se srovnala výška segmentovek, tlačítek a přepínače.
Jelikož neexistují patice přímo určené pro segmentovky, používám běžné levné patice DIL20, které žiletkovou pilkou rozříznu na polovinu a připájím. V tomto konkrétním případě jsem patice připájel obráceně, protože segmentovky mají jakési "nožičky", které se jinak nevejdou do patice.

Další část mechanické konstrukce je propojení obou desek plošných spojů. Já jsem použil pravoúhlou verzi konektorové lišty. Lze použít i přímé lišty, pak budou desky zarovnané za sebou a bude menší hloubka celé konstrukce.
Při osazování lišty je vhodné nejprve lištu zapájet do desky s elektronikou a následně z ní "stáhnout" černý plast, který jí drží pohromadě. Je to proto, že do desky zobrazovačů se musí pájet z obou stran, proto je dobré mít přístupnou i zadní stranu. Následující fotografie ukazují jednu správně a druhou nevhodně osazenou lištu.

Poslední záležitost, která stojí za pozornost je hodnota rezistoru R2. Ve schématu je použitá stejná hodnota jako u ostatních rezistorů pro ostatní segmenty. V praxi se však ukázalo, že LED dioda má jinou svítivost než segmentovky. Proto jsem při použití extra bright diody použil hodnotu až kolem 1K ohm. Hodnotu jsem zvolil experimentálně, podle pohledu.
For this project is good to prepare machanical construction. I was used sockets for displays in my version. Main reason is, that it align displays with push buttons and with switch to same level.
Because I have no socket for segment displays, I'm using standard DIL20 sockets. I'm cutting them using razor saw and soldering it. In this case I'm soldering it in reverse direction, because displays have some "overhangs" that not fit requested size.

Second part of mechanical construction is interconnect of both boards. I was used angle version of pin header. It is possible to use also long version; in this case boards will be in rows and will need less depth of case.
During soldering of pinhead is good method first solder into cpu board and then "remove" black plastic delimiter. It is bacause into bisplay board is necessary to solder it from both sides, then it is good to have access to back side. Following photos showing one good soldered and one more complicated pinhead.

Last thing you need to think about is value of R2 resistor. In schematic is used same value as other resistors for segments. In reality brightness of LED is different then brightness of display; then I little increase value of this resistor to value around 1K ohm for extra bright LED. Value is stated experimental only by feeling.




Download: Software.