PROSTY STEROWNIK ZEGARA DWORCOWEGO/KOLEJOWEGO

SIMPLE RAILWAY CLOCK DRIVER

TEKST PO POLSKU


Każdy, kto wszedł w posiadanie starego zegara dworcowego (w dzisiejszych czasach ze względu na modę na „retro” jest to dość popularny element dekoracji wnętrz) spotkał się z pewnością z problemem uruchomienia go. Nie jest to zwykły zegarek na baterie, zatem z tyłu obudowy nie zastaniemy nic poza prostym mechanizmem i dwoma zaciskami do przewodów, po podłączeniu do których zasilania w zasadzie na ogół nic się nie dzieje. Po zapytaniu Google jak to uruchomić z pewnością natrafiliście na informację, iż taki zegar aby chodzić potrzebuje… drugiego zegara zwanego „matką”. Z tego tekstu dowiesz się jak uruchomić swój zegar bez wydawania góry pieniędzy na zegar sterujący lub specjalizowany sterownik.

ENGLISH


Everyone who just bought or even get old railway clock (these days such „vintage” equipment is very often wanted by people who like to put it into the loft or are just railway enthusiasts) faced a problem that on the backplate there is no quartz mechanism but something strange with coils and 2-wire connector. After some crawling at Internet you probably know – you need a second clock called „mother clock”. Here’s how to solve the problem – bring second life to your clock without spending a lot of money.

Jak to działa?

Zegary dworcowe co do zasady pracują zwykle w sieci. Każdy zegar widoczny w hali peronowej dworca jest tzw. wtórnym i są one sterowane z jednego zegara centralnego (matki), który umożliwia ustawianie czasu w jednym miejscu. Jest to przydatne szczególnie przy zmianach czasu z pory letniej na zimową i odwrotnie.

Zegar wtórny to de facto silnik krokowy, skonstruowany tak, aby przy podaniu napięcia wykonać przesunięcie o krok (minutę) do przodu (nie ma znaczenia czy mówimy tu o zegarach wskazówkowych czy klapkowych). Wykonanie kolejnego ruchu ze względu na prostą konstrukcję mechaniczną wymaga jednak odwrócenia polaryzacji (zamiany) napięcia zasilającego. W Polsce i krajach ościennych standardowo stosuje się napięcie stałe 24V, w praktyce cewki reagują jednak od 18-19V.

W przypadku zegarów z tarczą (wskazówkowych) pewnym rozwiązaniem jest zamiana mechaniki zegara na mechanizm kwarcowy (mnie udało się w ten sposób przerobić już 2-3 zegary), jednak gdy chodzi o zegar klapkowy nie ma innej opcji, jak posiadanie zegara sterującego lub jakiegokolwiek układu wysyłającego co minutę impuls i zamieniającego biegunowość następnego.

How it works?

Basically, every wall clock at railway station is a secondary one. It means it was designed to work in the network, together with other secondary clocks. All are driven from one master clock called „mother”. It allows i.e. set all up and simple time change from summer to winter time and vice versa.

Secondary clocks are in fact simple stepper motors, that should need to move by one minute forward (doesn’t matter here if we’re talking about clock with dial or flipping one) after receiving a pulse of electric energy from master (in Poland and neighbor countries usually 24V DC is used). So connecting it to battery or other source of electric power gives you one move and stop. But, what it makes it more complicated, next move require reverse polarity. So you need to swap somehow polarity with every pulse.

Usually if you have clock with dial it can be always converted to quartz mechanism (I did it with 2-3 of them), but if you want to keep it original or own a flipping one, there’s no other option – you need to have master clock or any kind of driver.

Uniwersalny sterownik tak prosty jak tylko się da

Szukając sterownika z pewnością natrafiłeś w internecie na wiele projektów – od tanich po rozwiązania profesjonalne za konkretne sumy pieniędzy. Większość z nich to typowe układy zegarów, czasem z synchronizacją po NTP (internet)/GPS (satelitarną) lub DCF77 (radiową). W tym przypadku tego nie potrzebujemy, gdyż wymagane jest jedynie coś, co wyśle na zegar co minutę impuls, a przy wysyłaniu następnego odwróci polaryzację. Uruchomienie sprowadza się jedynie do właściwego nastawienia czasu i niczego więcej. Jedyne o czym trzeba pamiętać, to że mechanizmy tych zegarów chodzą wyłącznie do przodu. Czyli jeśli jest 11:00, a zegar wskazuje 12:00, to aby go ustawić trzeba wysłać 60*11 lub 60*23 impulsów w zależności od typu zegara (12 lub 24h).

Mój sterownik jest reultatem wielu przemyśleń – ma być prosty, uniwersalny i niedrogi. Ostatnie oznacza nie tylko koszt budowy, lecz również poboru energii podczas pracy. Stąd też 3 wersje możliwe do zbudowania – w zależności od potrzeb możesz wybrać między wersją z modułem RTC (zegara czasu rzeczywistego), bądź liczącą czas na podstawie częstotliwości sieci zasilającej (50Hz). Płytka drukowana jest nieduża – można ją śmiało zamontować z tyłu tarczy, bądź w obudowie zegara klapkowego. Może być również złożona przez osobę, która posiada podstawową wiedzę z zakresu elektroniki – w zasadzie wszystko co potrzeba to mieć lutownicę i przylutować poprawnie elementy.

    1. Co potrafi ten sterownik?
  1. Tchnąć życie w Twój zegar!
  2. Pozwala ustawić czas w krokach +1min/1godz.
  3. Pozwala zatrzymać ruch zegara na godzinę jednym kliknięciem (przydatne w trakcie zmiany czasu z letniego na zimowy)
  4. Przycisk START/STOP wznawia/zatrzymuje pracę zegara
  5. Steruje pracą podświetlenia na podstawie zewnętrznego czujnika światła (wyłącza podświetlenie w dzień, itp.)
  6. Powoduje dużą satysfakcję gdy wszystko zacznie działać jak należy 🙂

Universal driver as simple as can

Probably you have seen many projects at the Internet – from cheap to expensive professional solutions. Many of them are typical clocks, sometime with synchronization of time via NTP (internet)/GPS (satellite) or DCF77 (radio). We don’t need that. All you need is something that send a pulse every minute, and can allow you to do initial setup of time. Please remember – you can set it only by going forward. Old clocks do not have ability to go back in time 🙂

My driver is result of few thoughts – it need to be simple, universal, and cost efficient. Last one mean it should be cheap but also not consuming a lot of energy. You can also choose between version that uses RTC module or pulse is synchronized via network frequency (50Hz). PCB is not to big – it allows you to mount it on the backplate or inside chassis of flipping clock. What makes it also simple, it can be assembled with person who do not have a lot of skills with electronics – all you need to know is how to use soldering iron and multimeter.

    1. What it can do?
  1. Driving an old railway clock as expected!
  2. Setting time by +1min/1hr steps
  3. Freezing time for 1hr by one click (good in case of change from Summer to Winter time)
  4. Stopping clock for desired period using START/STOP button
  5. Controlling automatically attached backlight (switch it off during day, etc)
  6. Put smile on your face when everything go well 🙂

Jeden sterownik, kilka wersji

Którą mam wybrać?
+ REGULAR FIT – najpopularniejsza. Pasuje każdemu.

+ ENERGY EFFICIENT – dla tych którzy lubią zaoszczędzić kilka watów rocznie. Wymagana jest wiedza jak przylutować mikroprocesor w obudowie TQFP32 i zaprogramować go w układzie przez złącze ISP 6 pin.

+ NERD (BUILD COST EFFICIENT) / POWERED by AC – jeśli posiadasz transformator lub inne źródło prądu zmiennego dostarczające ~24V i chcesz synchronizować zegar na podstawie częstotliwości sieci (50Hz). Ostatecznie wybierz to rozwiązanie jeśli jesteś Januszem liczącym każdy cebulion w portfelu, bo trzeźwo licząc jest to oszczędność na poziomie pojedynczych złotówek.

Dla osób nie posiadających zdolności manualnych i nie obeznanych mocno z elektroniką rekomenduję wybranie wersji REGULAR FIT. Dla każdej wersji lista komponentów nieznacznie się różni (szczegóły poniżej), dobrą wiadomością jest to, iż płytka jest jedna dla wszystkich wersji (w zależności od wersji nie wszystkie komponenty są wymagane).

One driver, many faces

Which one to choose?
+ REGULAR FIT – if you get stressed and don’t know what to choose from below
+ ENERGY EFFICIENT – for people who count every penny or want to be „green”. If you know ATMEGA micro processors family, have STK500/JTAG or similar programming dongle, so – you’re well skilled with electronics
+ NERD (BUILD COST EFFICIENT) / POWERED by AC – if you do not have DC source of power and want to build clock synced by AC network frequency.

Depend of what version you’ve chosen (I strongly recommend to start with REGULAR FIT if you’re not familiar with DIY or do not have electronics skills) part list is slightly different. Good news is that PCB is one for all, but some components not need to be mounted.

Ozn./      Parametry/            Część/                 Obudowa/         Wersja sterownika/
Part       Value                 Device                 Package          Clock driver version 
                                                                     (REGULAR/COST EFF/NERD)

B1         DBDB107G              Mostek prostowniczy                    
                                 Full bridge rectifier  DB                        R,C,N       
C1         2200uF / 35V          Kondensator elektr.    E7,5-18                   R,C,N
C2         100uF / 16V           Kondensator elektr.    E2,5-7                    R,C,N
C3         18p                   Kond. ceramiczny       C1206                     R,C,N
C4         18p                   Kond. ceramiczny       C1206                     R,C,N
C5         100n                  Kondensator            C025-030X050              R,C,N
C6         100n                  Kondensator            C050-035X075              R,C,N
CLOCK                            JUMPER-2PTH            1X02                      R,C,N
EXT_LIGHT                        JUMPER-2PTH            1X02                      R,C,N
F1         0,3A                  BEZPIECZNIK / FUSE     GSH15                     R,C,N
IC1        L293D                 Układ scalony          DIL16                     R,C,N
IC2        NANO                  ARDUINO NANO           NANO                      R,N
IC3        MEGA8-AI              ATMEGA8-AI             TQFP32-08                 C
IC4        7805T                 Układ scalony          TO220H                    R,C,N
ISP1       AVRISP-6              Złącze 2x3pin          AVRISP                    C
J1                               J2X2MM                 04C                    
KEYBOARD                         Złącze 2X5             2X05                      R
KEYBOARD1                        Złącze 2X5             2X05                      R,C,N
LED1                             Dioda LED              LED3MM                    R
LIGHT_SENS BPX81/                Fototranzystor         BPX81                     R,C,N
           FR65 30-50K           Fotorezystor           FR65                      R,C,N
OK1        PC817                 TRANSOPTOR/
                                 OPTOPCOUPLER           DIL04                     N
POWER_IN   M023.5MM              M023.5MM               SCREWTERMINAL-3.5MM-2     R,C,N
Q1         8MHz                  REZONATOR KWARCOWY/
                                 XTAL/S                 QS                        C
R1         510R                  Rezystor               0204/7                    R,C,N
R2         510R                  Rezystor               0204/7                    R,C,N
R3         510R                  Rezystor               0204/7                    R,C,N
R4         33k                   Rezystor               0207/10                   N             
R5         1k                    Rezystor               0207/10                   R,C,N
R6         1k                    Rezystor               0207/10                   R
R7         47 / 100K             Pot. montażowy         TRIM_EU-CA6V              R,C,N
R8         10k                   Rezystor               0207/10                   N
RTC                              MODUŁ RTC DS3231   
                                 RTC DS3231 MODULE                                R,C
S1         START / STOP / CANCEL Przycisk               TACTILE-PTH-LED-12MM-EZ   R,C,N
S2         WAIT 1HR              Przycisk               TACTILE-PTH-LED-12MM-EZ   R,C,N
S3         +1HR                  Przycisk               TACTILE-PTH-LED-12MM-EZ   R,C,N
S4         +1MIN                 Przycisk               TACTILE-PTH-LED-12MM-EZ   R,C,N
POWER SUPPLY – jakikolwiek zasilacz dający napięcie stałe 24V/0.5A.
Osobiście używam zasilacza do Ubiquiti – PoE Gigabit 24V 0,5A i sprawuje się dobrze – główną zaletą jest niski pobór energii w stanie „czuwania”. Jedynym minusem jest konieczność dorobienia kabla wyposażonego we wtyk RJ45 aby „wyciągnąć” zasilanie z gniazda PoE.
POWER SUPPLY – any kind of power supply giving you 24VDC/0.5A.
I’m using Ubiquiti PoE Gigabit 24V 0,5A PSU and it works well with low consumption of power when idle. For those who want to use it – you need to make dongle to get 24V from RJ45 PoE socket.

Jak zamówić płytkę drukowaną?

Płytkę drukowaną można wykonać samemu (wersja opisana „TERMOTRANSFER”) lub też zamówić w firmie wykonującej płytki prototypowe (wersja „GERBER”). Odpowiednie pliki są dostępne pod linkami poniżej. Konstrukcja jest dość prosta – płytka jest dwustronna, jednowarstwowa z soldermaską w dowolnym kolorze (ja wybrałem biały). Ze swej strony polecam zamówienie płytki w jlcpcb.com, za 2 dolary otrzymujemy 5 sztuk. Jedyny minus, to czas oczekiwania na dostawę z Chin w przypadku wybrania opcji z darmową przesyłką – u mnie zajęło to ok. 2-3 tygodni. Po otrzymaniu płytkę z klawiaturą trzeba odciąć, można też w trakcie zamawiania poprosić o rozcięcie (może się to wiązać z dodatkowymi kosztami).

How to order PCB?

You can do it by yourself (THERMOTRANSFER version) or order PCB via internet (GERBER version) from many places. Please download proper version from links below. PCB is simple – double sided (top+bottom), one layer only with soldermask. I recommend order PCB from jlcpcb.com – for $2 you’ll get 5 pieces with any soldermask color you prefer (I’ve chosen white). Only one drawback is delivery time if you choose cheapest option. In my case it took 2-3 weeks to deliver it from China to Poland. After delivery you need to cut out keyboard module from main PCB (you can also ask manufacturer to do it for you, but usually it is an extra cost).

DOWNLOAD PCB (TERMOTRANSFER)DOWNLOAD PCB (GERBER)

Montaż płytki

Montaż rozpoczynamy od sprawdzenia czy posiadamy wszystkie elementy konieczne do złożenia danej wersji. Elementy lutujemy do płytki wg zasady – od najmniejszych do największych. Przy lutowaniu kondensatorów zwracamy uwagę na polaryzację. Pod Arduino oraz IC1 dajemy podstawki (pod OK1 też można). Stabilizator 7805 dobrze jest przymocować do płytki stosując pastę termoprzewodzącą. W zasadzie nie powinien się grzać – dodatkowy radiator nie jest wymagany. Przed włożeniem układu L293D (IC1) oraz modułów RTC i Arduino (względnie montażem IC3) warto wstępnie uruchomić płytkę i sprawdzić napięcia zasilające układy. W tym celu podłączamy zasilanie do zacisków POWER (biegunowość nie ma znaczenia) i sprawdzamy miernikiem uniwersalnym napięcia (zakres DC):

-IC4 (7805) między VIN (lewa nóżka patrząc od góry) a GND (środkowa nóżka) powinno być napięcie zasilania. MIędzy GND a VOut (prawa nóżka) powinno być +5V.
-IC1: Między pinami 4 lub 5 (GND) a pinem 8 powinno być napięcie zasilania.
-IC1: Między pinem pin 12 lub 13 (GND) a pinem 16 powinno być +5V.
-RTC: Między pinem 1 (GND) a pinem 2 (VCC) powinno być +5V.
-Arduino: Między pinami 4, 29 (GND) a pinem 27 (+5V) powinno być +5V.

Jeśli wszytsko się zgadza, można odłączyć napięcie zasilania, poczekać z minutę aby kondensatory w obwodzie stabilizacji napięcia się rozładowały i można zamontować moduł RTC oraz układy scalone.

Assembly

Before soldering please verify you have all components required to do particular version. You need to start soldering from smallest parts to big ones. Watch for polarity when soldering capacitors. For Arduino module and IC1 it’s good to solder additional sockets. When mounting 7805 voltage stabilizer, please add some thermal grease between PCB and IC. It should not gets so hot during normal operation, so additional radiator is not required. Before placing IC1, Arduino, RTC (or IC3 depending of version) module please supply power to POWER socket (polarity doesn’t matter) and check DC voltages:
-IC4 (7805): should be supply voltage between VIN (left leg looking from top) and GND (middle leg) and +5V between middle leg and VOut (right leg).
-IC1: Between pin 4 or 5 (GND) and pin 8 should be power supply voltage.
-IC1: Between pin 12 or 13 (GND) and pin 16 should be +5V.
-RTC: Should be +5V between pin 1 (GND) and pin 2 (VCC).
-Arduino: Between pins 4, 29 (GND) and pin 27 (+5V) should be +5V.

If everything is as above you can disconnect power, wait minute for capacitance discharge and put other IC’s and modules.

Schemat sterownika (kliknij aby powiększyć) / Schematic (click to enlarge)
Zakładam, iż wersję ENERGY EFFICIENT z procesorem Atmega wybierają osoby posiadające narzędzia i wiedzę w programowaniu tego typu układów stąd też opiszę jedynie poniżej jak zaprogramować moduł Arduino.

Programujemy moduł Arduino

Nowy moduł Arduino Nano jest zazwyczaj zaprogramowany przykładowym kodem „blink”, który powoduje mruganie diodą LED po podłączeniu kabla USB. Aby moduł działał w sterowniku zegara należy go zaprogramować, lecz wcześniej należy ściągnąć i zainstalować najnowszą wersję oprogramowania Arduino IDE ze strony https://www.arduino.cc/en/main/software.

Po zainstalowaniu Arduino, jeśli planujemy zbudować sterownik oparty o moduł zegara czasu rzeczywistego DS3231 (wersja REGULAR FIT lub ENERGY EFFICIENT), trzeba wgrać bibliotekę DS3231 Real-Time-Clock, którą można pobrać ze strony autora – https://github.com/jarzebski/Arduino-DS3231.

Ostatnią rzeczą, którą należy pobrać z Internetu jest kod sterownika dostępny poniżej:

Zakładam, iż wersję ENERGY EFFICIENT z procesorem Atmega wybierają osoby posiadające narzędzia i wiedzę w programowaniu tego typu układów stąd też opiszę jedynie poniżej jak zaprogramować moduł Arduino.

Programming Arduino Nano

Arduino Nano usually come pre-programmed with „Blink” program (it blinks an onboard LED after applying the power). To make driver living, you need to program Arduino using Arduino IDE software available here:
https://www.arduino.cc/en/main/software.

After download, if you plan to build an RTC based driver (REGULAR FIT or
ENERGY EFFICIENT version) you need to download DS3231 Real-Time-Clock library. You can download it from author’s website: https://github.com/jarzebski/Arduino-DS3231.

Last thing you need is to download the Flipping Clock driver code from one of the links below.

Download

REGULAR ENERGY EFFICIENTNERD
Code version: 2024-03-02

JAK ZAPROGRAOWAĆ ARDUINO? SZCZEGÓŁY NA TYM FILMIE
HOW IT WORKS AND HOW TO PROGRAM ARDUINO – DETAILS ON THIS MOVIE

Uruchomienie

Jeśli wykonano wszystkie kroki zgodnie z powyższymi instrukcjami sterownik powinien zacząć działać od razu po zaprogramowaniu procesora lub Arduino i nie wymaga żadnych dodatkowych działań. Na ogół najczęstsze błędy i  problemy wynikają z instalacji nieprawidłowej biblioteki DS323`1 (niezgodnie z opisem powyżej). W przypadku problemów zachęcam do samodzielnego poszukiwania rozwiązań m.in. przy pomocy wyszukiwarki Google (autor sterownika ze względu na permanentny brak czasu nie wspiera dłużej tego typu zapytań).

Krótkie wytłumaczenie jak działają przyciski:

  • +1 – przesuwa zegar o minutę do przodu
  • +1HR – przesuwa zegar o godzinę do przodu (zmiana czasu na letni)
  • -1HR – zatrzymuje zegar na godzinę (zmiana czasu na zimowy)
  • HLD – zatrzymuje działanie zegara do momentu ponownego wciśnięcia przycisku.

Dla tych, którzy zamiast słów wolą ruchomy obraz – POKAZ NA ŻYWO jak to działa 🙂

First run

If you followed carefully with all steps previously described, driver should start working right after microprocessor/Arduino programming and do not require any additional steps. Most common problems related to programming leigh on installation of wrong DS3231 library or having different one already installed. In case of problems please use Google to find a reason and proper solution (author will not support such cases any longer).

How to use a keyboard:

  • +1 – move 1 step forward (add a minute)
  • +1HR – move clock 1 hour forward (summer time change)
  • -1HR – stops clock for 1 hour (winter time change)
  • HLD – stops clock until next press.

WATCH LIVE DEMO

Zastrzeżenia prawne

PROJEKT STANOWI WŁASNOŚĆ INTELEKTUALNĄ – AUTOR ZEZWALA NA JEGO WYKORZYSTANIE WYŁĄCZNIE W CELACH NIEKOMERCYJNYCH. W PRZECIWNYM WYPADKU – MÓJ PRAWNIK ZAPUKA PO TANTIEMY.

Disclaimer

ALL RIGHTS RESERVED. YOU CAN USE THIS PROJECT FOR NON-COMMERCIAL PURPOSES ONLY. OTHERWISE – MY LAWYER SEND YOU A BILL.

NAJCZĘŚCIEJ ZADAWANE PYTANIA

  • Czy sprzedajesz gotowe sterowniki lub zaprogramowane moduły Arduino?
    Aktualnie nie. Budowa takiego sterownika jest dość prosta i tutaj znajdziesz wszelkie informacje jak to zrobić samemu. Zaprogramowanie modułu nie wymaga wiedzy programistycznej i zajmuje góra 5 minut. Jeśli nie posiadasz zdolności manualnych lub lutownicy poproś znajomego, który z pewnością zrobi to np. za kratę piwa lub inną walutę 🙂

  • Czy masz jakieś płytki na sprzedaż?
    Nie – nie ma to sensu. W sytuacji gdy możesz zamówić je z Chin za 2$ więcej wyniesie przesyłka Pocztą Polską w kraju.

  • W Arduino wyskakuje mi błąd […]
    Proszę sprawdzić czy wszystkie kroki związane z instalacją Arduino wykonano zgodnie z opisem, w szczególności czy jest zainstalowana wskazana w opisie biblioteka NeiroNx RTCLib i nie ma innej posiadającej plik DS3231.h (najczęstsze problemy są związane z tym że wybrano niewłaściwą bibliotekę bądź nie zainstalowano jej w ogóle). W przypadku dalszych problemów odsyłam do wpisania komunikatu błędu z Arduino w Google i sprawdzenia dostępnych rozwiązań.

  • Do czego potrzebny jest stabilizator 7805, jeśli moduł Arduino ma własny?
    – Są dwa powody. Po pierwsze, stabilizator w Arduino nie wytrzyma podania napięcia wejściowego 24-30V. Po drugie – służy on na potrzeby własne Arduino i przy dodatkowym obciążeniu będzie się grzał.

Q&A

  • Do you sell (pre)assembled kits/programmed Arduino’s/etc?
    Currently no. But I’m sharing result of my project here – you can ask your colleague who have enough skills to do it for you for a beer or other kind of currency 🙂

  • Do you have PCB’s for sale?
    Nope. It doesn’t make sense, when you can order it from China for $2.

  • I have error […] in Arduino during compiling
    Kindly please check all steps related to Arduino installation and installation of NeiroNx RTCLib library. Most common problems are related in case of library is missing or other version is choosen or you have other library with DS3231.h structure installed. In such cases kindly please look at Google for possible solutions (author does not support your programming environment).

  • Why 7805 is needed when there is 5V power stabilizer in Arduino?
    – Reasons are two. First, Arduino stabilizer cannot handle up to 30V input power, second it can serve mostly Arduino needs only. Otherwise it gets very hot.
Share