Jedním z požadavků kladených na dále popisované hodiny bylo přímé zobrazování přesného času v UTC. Tento čas je nezávislý na změnách zimního a letního času či na časových pásmech a jsou podle něj koordinovány termíny radioamatérských závodů. Využití GPS modulu se v tomto případě samo nabízí, řada NMEA vět totiž obsahuje přímo časový údaj UTC.
Hardwarová koncepce
Zobrazovací část hodin se skládá z deseti sedmisegmentovek, které slouží k zobrazení přesného času (hodiny, minuty, sekundy) a aktuálního data (den, měsíc). Zobrazovače jsou rozděleny na dvě DPS a buzeny v multiplexním režimu.
Obr. 1: Blokové schéma hodin
Srdcem celého zařízení je mikrokontrolér Freescale MC9S08AW16CFG [1], který se stará o mutiplexní buzení displeje, aktualizaci času a komunikaci s GPS modulem. Jako GPS přijímač byl zvolen starší modul Leadtek GPS 9543LP [2] [3], je však možné využít téměř libovolný typ, podporující NMEA protokol.
Blokové schéma ukazuje obr. 1. Jako zobrazovač byl s drobnými úpravami použit výrobek [4] realizovaný v rámci bakalářské práce na ÚREL FEKT VUT v Brně. Také GPS modul je umístěn na samostatné desce, z které je k řídicí části připojeno pouze napájení a sériový komunikační kanál.
Schéma zapojení řídicí jednotky
Schéma zapojení řídicí části s mikroprocesorem je na obr. 2. K mikroprocesoru jsou připojeny posuvné registry s výkonovými budiči TPIC6C595D, napájecí obvody a konektory pro rozhraní UART (využívané GPS), BDM (programování procesoru), I2C (např. klávesnice postavená na senzorech MPR084) a IRQ (externí přerušení procesoru, např. přijímač DCF). Fotografie prototypu řídicí jednoty ze strany součástek je na obr. 3, strana spojů se součástkami SMD je na obr. 4.
Multiplexní zapojení displeje se využívá zejména pro omezení počtu propojovacích vodičů a výstupních signálů z budiče. Buzení jedné sedmisegmentovky je naznačeno na obr. 5, použité zobrazovače jsou zapojeny jako kombinace šesti a čtyř těchto bloků. Vzhledem k použití tranzistoru PNP ke spínání displeje se společnou anodou je nutné, aby napájecí napětí displeje bylo stejné jako úroveň H řídicí logiky, což je při vyšším požadovaném jasu velmi nevýhodné. Lepším řešením by bylo použití displeje se společnou katodou a spínání tranzistorem NPN, případně zapojení z obr. 5 doplnit dalším NPN tranzistorem pro převod napěťových úrovní. Detailní popis principu zobrazení v multiplexním režimu je popsán v části zabývající se softwarem mikroprocesoru.
Obr. 5: Zapojení jednoho stupně multiplexu displeje
Napájecí zdroj obsahuje tři různé větve. Pro napájení LED displejů byl vzhledem k jejich odběru zvolen spínaný stabilizátor, postavený kolem obvodu LM2575. Pro spolehlivou funkci vyžaduje jen minimum vnějších součástek a pomocí rezistoru lze v případě potřeby měnit jeho výstupní napětí. Pro mikroprocesor a registry je využito 5V napájení stabilizované standardním obvodem 78L05. GPS přijímač, který byl pro konstrukci k dispozici, byl ve verzi 3,3V, stabilizace jeho napájení je řešena obvodem LF33. Napájení GPS modulu není vhodné řadit za 5V stabilizátor, protože proudový odběr modulu může být relativně vysoký (cca 70 mA).
Popis softwarového řešení
Firmware mikroprocesoru byl vytvořen v prostředí Freescale CodeWarrior (obr. 6) s využitím systému Processor Expert. Tento systém umožňuje automatickou tvorbu základních nízkoúrovňových ovladačů hardwaru kontroléru, čímž šetří programátorovi značné množství práce.
Na obrazovce jsou patrné moduly (beans), použité ve firmwaru GPS hodin. Jedná se o sériové komunikační rozhraní, obsluhu časovače pro přepínání multiplexu displeje a dále o moduly implementující přístup na vstupně/výstupní porty mikroprocesoru. Všechny parametry zmíněných modulů se nastavují v přehledném uživatelském rozhraní, výsledné zdrojové soubory jsou generovány automaticky systémem Processor Expert. Firmware je kromě těchto souborů tvořen moduly GPS, Display a hlavním souborem.
Obr. 6: Pracovní plocha prostředí Freescale CodeWarrior
Soubor GPS.c obsahuje funkce pro komunikaci s GPS modulem. Použitá GPS 9543LP obsahuje čip SiRFstarII, má tedy definovány příkazy pro konfiguraci vět zasílaných periodicky (věta PSRF103). V inicializaci je aktivováno posílání pouze věty GPRMC s periodou 1 sekunda (příkaz $PSRF103,04,00,01,01*21).
Pro obsluhu přerušení při přijetí znaku ze sériového kanálu je vytvořena obsluha, která ukládá přijaté znaky do bufferu. Při detekci konce zprávy (znak * předcházející kontrolní součet) je provedena kontrola typu zprávy, akceptována je pouze věta GPRMC. Tato věta obsahuje podle [5] základní navigační údaje doplněné přesným aktuálním datem a časem, získaným z GPS satelitů. Platný čas je ve větě obsažen často i v případě, že signál není dostatečný pro určení polohy. Úplná GPRMC věta vypadá například takto:
$GPRMC,174807.000,A,4912.6315,N,01552.8277,E,0.09,0.00,260408,,*64 $GPRMC,162127.847,V,0000.0000,N,00000.0000,E,0.00,0.00,270508,,*16
Po přijetí GPRMC věty je provedeno její parsování a údaj o datu a čase je aktualizován v proměnných modulu displeje.
Soubor Display.c definuje funkce pro práci se sedmisegmentovými displeji v multiplexním režimu. Tento režim využívá setrvačnosti lidského oka - jednotlivé segmentovky svítí vždy jen po určitou dobu a střídají se mezi sebou. Při dostatečně vysoké obnovovací rychlosti není přepínání patrné a z pohledu pozorovatele se zdá, že všechny pozice displeje svítí nepřetržitě.
Klíčovou funkcí je obsluha přerušení od časovače, které je voláno s periodou 1 ms, tj. frekvence multiplexu je 1 kHz. V této funkci je do posuvných registrů TPIC6C595D poslána nová hodnota, tj. informace o segmentech, které mají být aktivní na následující pozici. Následně je překopírován stav posuvných registrů na budiče obvodu a aktivováno buzení další pozice. Vlivem multiplexního provozu svítí každá segmentovka pouze část periody, v tomto případě 1 ms následované 5 ms, kdy svítí jiné pozice. Proto je střední jas displeje výrazně nižší a při návrhu modulu zobrazovačů je s tímto faktem třeba počítat.
Pro buzení jednotlivých segmentů je využito rychlých výkonových posuvných registrů TPIC6C595D. Tyto registry je možné kaskádovat, mají signál pro přepsání stavu registrů na výstupy naráz a jejich výstupy jsou realizovány FET tranzistory s velkou proudovou zatížitelností. Každý obvod obsahuje osm registrů.
Funkce displeje doplňují procedury pro generování sedmisegmentových znaků ze zadaných dekadických hodnot. Hlavní program provede inicializaci displeje a GPS přijímače, která trvá několik sekund. Během této doby je na displeji zobrazen stav 00:00:00. Po aktivování komunikace s GPS modulem je stav displeje aktualizován s každou přijatou GPRMC větou.
Závěr
Popsaná konstrukce hodin byla úspěšně realizována a odladěna, prototyp bude využit v radioklubu OK2KOJ při VUT v Brně.
Protože si zjištění aktuálního času narozdíl od zaměření polohy vystačí v systému GPS s jedinou družicí, je spolehlivost načtení času poměrně vysoká, samozřejmě při použití odpovídající antény a jejím rozumném umístění. Zálohování reálného času v případě špatného signálu řeší GPS modul.
Obr. 7: Fotografie kompletního prototypu hodin
Zapojení by bylo možné doplnit taktéž o přijímač časového signálu DCF77 jako alternativu ke GPS modulu. V tom případě by již bylo nezbytné, aby mikroprocesor obsahoval vlastní hodiny reálného času, které by byly DCF signálem pouze synchronizovány - u GPS se s výhodou využívá periodického zasílání NMEA zpráv.
Literatura
[1] MC9S08AW16 Data Sheet, HCS08 Microcontrollers. Freescale semiconductor, 2006.[2] Leadtek GPS Module Technical Specification, GPS 9543LP. Leadtek, 2003.
[3] Kováč, M.: Komunikační rozhraní pro sledovací systém s GPS přijímačem. Diplomová práce, FEKT VUT v Brně, 2007.
[4] Šváb, J.: Elektronické hodiny řízené DCF signálem. Bakalářská práce, FEKT VUT v Brně, 2005.
[5] NMEA data [Online]. Dostupné na: http://www.gpsinformation.org/dale/nmea.htm#RMC
Download & Odkazy
- Domovská stránka autora - http://www.alpov.net/ - http://blog.alpov.net/