SVETELEKTRO

16. apríla 2021   Verzia pre tlač Verzia pre tlač

GPS Hodiny v2


Sakul

Již před několika lety jsem si postavil hodiny, které jako zdroj přesného času používaly GPS přijímač. Původně jsem sice chtěl použít DCF přijímač, ale v místě kde jsem hodiny potřeboval, byl signál špatný a tak jsem skončil právě u GPS přijímače. Díky tomu, že pro získání přesného času stačí GPS přijímači občas zachytit alespoň jeden satelit, není problém hodiny provozovat v domě, kde by jinak příjem alespoň 4 satelitů pro určení polohy byl problém.

 

 

 

Technické specifikace

Napájecí napětí: 9-15V AC/DC
Spotřeba: cca 100mA
Jištění pojistkou: F/200mA
Komunikace externí: RS232 (Canon9M)
Komunikační rychlost: 19200bps
Komunikace s GPS: UART 9600bps
Rozlišení displeje: 24:59:59 (HH:MM.SS)
Volba časového posuvu: Tlačítkem +1h/+2h
Záloha RTC: Kondenzátor 0,22F/5,5V

 

Schéma zapojení – Procesor

Schéma i celá konstrukce je rozdělena na dvě části a to desku procesoru a displeje. Na tomto obrázku je schéma procesoru.

Schéma zapojení – Displej

Na tomto obrázku je schéma displeje.

Deska spoje a osazovací plán – Procesor

 

 

Plošný spoj je vytvořen na oboustranné desce plošných spojů o rozměru 100x75mm. Protože PCB obsahuje prokovy bylo snahou je situovat na vývody součástek, které je možno pájet z obou stran desky. Nicméně některé takto nebylo možno navrhnout a tak je nutné spolu s vývodem dané součástky protáhnout slabý drátek a ten zapájet z obou stran desky. Tím se vytvoří vodivé spojení mezi vrchní a spodní částí desky. Tam kde to povaha vývodu součástky dovoluje zapájíme tuto součástku z obou stran desky. Taktéž je na PCB několik zcela samostatných prokovů, které je třeba propájet slabým drátkem.

Deska spoje a osazovací plán – Displej

 

Plošný spoj je vytvořen na oboustranné desce spojů s prokovenými otvory o velikosti 120x40mm.

GPS Přijímač

Výhodou GPS přijímače je jeho integrovaný RTC (Real-time clock) obvod. Což je obvod reálného času, který GPS modul neustále synchronizuje s přesným časem satelitů. Takže čas je dostupný i v momentě, kdy GPS přijímač nepřijímá data ze žádného satelitu. Navíc tento RTC je velice přesný na rozdíl od běžných obvodů reálného času, které se klidně rozcházejí o několik vteřin měsíčně.
Právě proto stačí těmto hodinám, aby se jednou za čas podařilo GPS přijímači synchronizovat čas a není tak nutné, aby byl signál ze satelitů nepřetržitý. Jedinou takovou drobnou vadou na kráse je, že GPS pracuje s časem v UTC (Coordinated Universal Time) formátu. Tento čas nerozlišuje časová pásma a je tedy nutné to zajistit přepočtem.
U první verze GPS hodin byl použit Bluetooth(BT) GPS modul. To mělo výhodu v tom, že hodiny a GPS přijímač nemuseli být na stejném místě a byly mezi sebou propojeny bezdrátově až na vzdálenost 10m. Takže přijímač se mohl umístit v místě dobrého příjmu satelitů. Na druhou stranu toto řešení zásadně konstrukci prodražuje. GPS přijímač podporující BT připojení je samozřejmě dražší a hodiny musejí být vybaveny BT modulem podporujícím MASTER režim. Též je tu problém s tím, že pokud hodiny ztratí spojení s přijímačem ať už vlivem rušení nebo z jiného důvodu, přijímač se většinou vypne a je nutno ho znovu ručně zapnout.
Proto jsem se rozhodl v této konstrukci použít GPS modul s rozhraním UART. Tyto moduly jsou podstatně levnější a eliminují se tak případné problémy s komunikací. Konkrétně jsem si vyhlédl modul od společnosti Quectel L80. Tento modul se dá pořídit za 200-300Kč, což je velice pěkná cena a navíc má již integrovanou anténu. K jeho zprovoznění tedy stačí napájecí napětí 3,3V a externí baterie nebo kondenzátor pro záložní napájení RTC modulu. S okolím pak komunikuje přes UART rozhraní.

Popis konstrukce

Jak už jsem zmínil základem hodin je GPS modul Quectel L80, nebo nějaký jiný podobných parametrů. Data z GPS následně zpracovává procesor ATMEGA328P. Čas je zobrazován na displeji složeném ze sedmisegmentových zobrazovačů. V případě potřeby zobrazování času na nějakém dalším displeji jsou hodiny vybaveny ještě výstupem RS232 pro připojení externího displeje. Protože GPS L80 nemá integrovánu baterii pro zálohu interního RTC, je použit vysokokapacitní kondenzátor C15 0,22F/5,5V, který v případě výpadku napětí zálohuje konfiguraci GPS a jejího RTC, což pomáhá po obnovení napájení rychlému vyhledání satelitů a synchronizaci času. Díky tomu jsou hodiny schopny do 3 sekund po zapnutí začít zobrazovat přesný čas.
Nyní si popíšeme zapojení hodin podrobněji. Jako u většiny mých konstrukcí používám na vstupu napájení usměrňovací můstek B1. Ten slouží hlavně k tomu, aby nezáleželo na polaritě vstupního napětí. Tím se předejde přepólování hodin a jejich zničení. Jako takový bonus je pak možnost použít pro napájení i střídavé napětí. Hodiny je tedy možno napájet napětím v rozsahu 9-15V AC/DC. Toto napájení se připojuje na svorky X1-1 a X1-2. Za můstkem následují kondenzátory C1 a C3, sloužící k vyhlazení napětí v případě napájení střídavým napětím. Napětí je následně stabilizováno pomocí IC2 7805 na 5V, kterým je napájen procesor a převodník MAX232. Pro IC2 je nutné osadit chladič, obzvláště pokud používáte napájecí napětí kolem 15V. Dále si můžete všimnout dalšího stabilizátoru napětí a to IC4 LM317. Toto je regulovatelný stabilizátor, avšak v této konstrukci je napětí nastaveno rezistory R10 a R11 pevně na 3,4V a používá se pro napájení GPS modulu, který má maximální povolené napětí 4V. Zároveň je i tímto napětím nabíjen záložní kondenzátor C15 a to přes diodu D1 a rezistor R9. Dioda by měla být nízko úbytková v tomto případě BAT42.
Řízení displeje se společnou ANODOU je řešeno multiplexně. Anody jsou spínány pomocí PNP tranzistorů Q2-Q7. Na konkrétním tipu tranzistorů až tak nezáleží a lze použít, co se válí doma v šuplíku. Jednotlivé segmenty jsou spínány přímo z procesoru přes omezovací rezistory R13-R19. Přes rezistor R20 jsou napájeny dvojtečky na displeji.
No a poslední věc, kterou bych chtěl ve schématu zmínit, jsou různé Jumper spojky a konektory. Začneme tedy u:
JP1– Tento jumper v současné době nemá význam, přičemž se do budoucna počítá, že se jeho propojením přivede +5V na konektor X2 (Cannon9M). To může sloužit jako napájení dalšího zařízení připojeného do X2.
JP3– Pomocí tohoto konektoru je možno připojit libovolný GPS modul. Obsahuje všechny potřebné piny k základní komunikaci a napájení včetně záložního napětí pro RTC.
Pin1 – GND, Pin2 – TX(z GPS), Pin3- +3,4V(3,3V) pro napájení GPS, Pin4 – RX(do GPS), Pin5 – Záložní napětí pro RTC (cca 3V).
JP5– Prozatím nemá funkci, nicméně případnou budoucí změnou programu je možno doplnit.
JP6– Slouží pro připojení externího tlačítka například v panelu krabičky
JP7– Toto je programovací konektor. Jsou na něj vyvedeny linky RX,TX a Reset z procesoru. Díky tomu, že celá konstrukce je založena na Arduinu a procesor obsahuje Bootloader je možno program nahrávat přímo přes UART pomocí USB/UART převodníku a programu Arduino IDE. Zde je však nutno upozornit na fakt, že v případě nahrávání programu přímo v aplikaci nesmí být připojen GPS modul, neboť ten je také připojen na UART procesoru a docházelo by k rušení přenosu.
Nyní ještě něco k displeji. Ten je zvlášť na samostatné desce spojů. Toto řešení je ideální z důvodu případné pozdější změny displeje třeba za větší zobrazovače nebo jinou barvu. Také se to takto lépe montuje do nějaké přístrojové krabičky. Já pro prototyp použil krabičku  KM60 s předním plexi červené barvy.
Na plošném spoji displeje si můžete také všimnout, že je tam použito 7 zobrazovačů, ale hodiny podporují pouze 6. Proto se Dis7 neosazuje. Téže se pro tuto konstrukci neosazují LED1, LED2, R1, R2 a JP3. Rezistoty R3 a R4 jsou v provedení SMD v pouzdru 1206. Tento modul displeje používám jako univerzální i pro jiné mé konstrukce, což značně ulehčuje návrh.

Osazení desek spojů

Osazení by nemělo činit velké potíže. Krom toho, že je možno GPS modul připojit do konektoru JP3, je možno pokud se použije doporučený modul L80 ho zapájet přímo na desku procesoru. V takovém případě je nutno věnovat pozornost správnému usazení modulu. Vývod č.1 na modulu L80 je označen šipkou a na desku patří blíže ke konektoru displeje. Pokud je takto modul osazen napevno v desce procesoru není možno použít JP7 k programování procesoru. Pokud osazujete desku procesoru, jež nemá prokovené otvory, je nutno tyto prokovy vytvořit tak, že zapájíte součástku z obou stran desky. Pokud daná součástka nejde z obou stran zapájet, je nutno spolu s vývodem součástky protáhnout slabý drátek, který připájíme z obou stran desky (pajecího bodu). Snažil jsem se všechny prokovy navrhnout tam, kde jsou součástky pájitelné z obou stran (rezistory, diody atd), nicméně někde to nebylo možné a na desce je i několik zcela samostatných prokovů, které je nutno propájet například pomocí slabého drátku.
Proto pokud máte jakýkoli problém s funkcí hodin, jako první proveďte kontrolu, zda máte propájeny všechny potřebné prokovy, případně zda nemáte na desce přerušené nebo naopak zkratované spoje.

Oživení

Před tím než hodiny připojíme na napájení, provedeme optickou kontrolu všech spojů. Pokud je vše v pořádku, můžeme přistoupit k prvnímu testu. Zatím nemáme osazený procesor v patici ani připojený GPS modul. Pokud takto připojíme hodiny na napájení, neměl by odběr proudu překročit 50mA (při nabíjení záložního kondenzátoru C15). Pokud je tedy odběr v limitu můžeme změřit 5V na procesoru a převodníku MAX232. Následně změříme napětí na JP3 na pinu3, kde by mělo být napětí 3,3-3,5V pro napájení GPS. Dále změříme napětí na pinu5, kde by mělo pomalu napětí stoupat až k hodnotě kolem 3V. Jde o nabíjení záložního kondenzátoru. Pokud je vše v pořádku můžeme ještě ověřit, zda drží napětí na záložním kondenzátoru při odpojení napětí. Při běžném provozu by měl kondenzátor uchovat napětí až několik dní.
Teprve nyní vložíme do patice naprogramovaný procesor, zatím stále bez připojeného modulu GPS. Po zapnutí by již měl na displeji naskočit údaj 02:00:00 a tento by měl svítit stále. Pokud pak stiskneme tlačítko na přepínání času S1, měl by se údaj změnit na 01:00:00.
V tuto chvíli již nic nebrání připojení GPS modulu. Jakmile pak hodiny zapneme, zobrazí se 02:00:00 a během několika vteřin musí naskočit nějaký čas a ten by již měl normálně běžet. Pokud se tak stane, hodiny již přijímají data z GPS modulu. Pravděpodobně bude čas špatný, ale to je v pořádku. Nyní musí GPS modul vyhledat satelity a synchronizovat čas. V závislosti na poloze (kvalitě signálu) to může trvat až hodinu (běžně však do 10minut). Poté by se čas měl změnit na správný. Při příštím zapnutí již bude čas k dispozici okamžitě a vyhledání satelitů proběhne také podstatně rychleji.

Ovládání hodin

Hodiny se v podstatě ovládají jediným tlačítkem S1 (TIME/DATE). Přičemž funkce datumu není v současné době podporována. Takže tlačítkem se pouze přepíná Letní/Zimní čas. Každým stiskem tlačítka dojde k přepnutí z Letního na Zimní a opačně. Defaultně při prvním spuštění hodin jsou přepnuty v Letním čase. Údaj o časovém posuvu se ukládá do EEPROM procesoru a nemění se vlivem výpadku napětí.

Připojení externího displeje

Jak už jsem zmínil k hodinám lze připojit i další externí displej pomocí konektoru X2. Nelze však použít jakýkoli displej, ale tento výstup je navržen pro můj displej původně určený jako doplněk hasičských stopek. Pro případné informace o externím displeji navštivte tuto konstrukci.

Použitelné GPS přijímače

Samozřejmě, že krom doporučeného modulu L80 lze použít jakoukoli jinou kompatibilní GPS. To je vše pravda pokud parametry takovéto GPS odpovídají L80. Hlavně pak jde o komunikační rychlost, protokol a frekvenci provádění výpočtu polohy. Modul L80 má defaultní komunikační rychlost 9600bps, protokol NMEA a frekvenci výpočtu polohy 1Hz. Pokud má Vaše GPS tyto vlastnosti, lze ji s největší pravděpodobností použít. Ale i kdyby měla jiné parametry, například jinou komunikační rychlost například 4800bps, není nic ztraceno. Je však nutné provést úpravu v programu, kde se nastavuje tato rychlost (řádek Serial.begin(9600);). Teoreticky by hodiny měli zvládnout zpracovat rychlost komunikace od 4800-19200bps.
Pokud Vaše GPS používá jiný protokol než NMEA nebude to fungovat! Stejně tak, pokud provádí výpočet polohy častěji jak jednou za sekundu (1Hz).

GPS přijímače s Bluetooth rozhraním

Zcela samostatnou kapitolou jsou pak GPS moduly podporující Bluetooth přenos. Hodiny jako takové sice nejsou přímo pro tuto možnost navrženy, ale lze je doplnit o BT modul, který se spáruje s Vaší BT GPS. Je to sice trochu složitější a samozřejmě dražší, ale zase můžete mít GPS modul na místě dobrého příjmu satelitů, většinou až do vzdálenosti 10-20m od hodin. Já používám BT moduly HC-05, které zvládají režim MASTER a dají se pořídit kolem 300Kč. Pozor na levnější variantu HC-06, která nepodporuje režim MASTER, ale pouze SLAVE!
S hodinami se tento BT modul propojí stejně jako samotná GPS, takže na konektor JP3. Nicméně před připojením do hodin je nutno tento modul naprogramovat a spárovat s Vaší GPS. Programování se provádí pomocí AT příkazů a postupy jak se to dělá se dají najít na internetu, případně v datasheetu tohoto modulu. Samozřejmě je možno použít i jiné BT moduly například OBS418i od connectBlue. Bohužel tyto moduly jsou poměrně drahé.

Možné problémy

Během testování jsem nenarazil na žádný závažný problém. Jediné co bych zmínil je možnost, že pokud jsou hodiny dlouho bez napájení a dojde k úplnému vybití záložního kondenzátoru a poté jsou hodiny opět připojeny na napájení nemusí se hned rozběhnout čas. Je to způsobeno tím, že GPS modul L80 nenastartuje dokud napětí záložního kondenzátoru nedosáhne cca 2V. Někdy se nerozeběhne ani po dosažení tohoto napětí a je nutné hodiny restartovat. Poté již vše funguje normálně. Z toho důvodu byla upravena hodnota rezistoru R9 z 1K na 100R.

Seznam součástek

(deska procesoru)
R1,R8            10K
R2-R7            3,9K
R9        100R
R12        1K
R10            220R
R11            390R
R13-R19        330R
R20            100R
C1            470uF/25V
C2            100uF/10V
C3,C4,C11,C13    100nF
C5,C6            22pF
C7-C10        1uF/63V
C12            10uF/10V
C14            4,7uF/10V
C15            0,22F/5,5V
D1            BAT42
B1            DB106 (B380C1000DIL)
Q1            Krystal 16MHz
Q2-Q7            BC448 (KC308)
IC1            ATmega328P-PU (naprogramovaný)
IC2            7805
IC3            MAX232N
IC4            LM317LZ (pouzdro TO92)
S1            Tlačítko TC-0104 (mikrotlačítko)
JP1,JP5,JP6        Jumper lišta 2piny
JP2            Dutinková lišta 6pinů
JP3            Jumper lišta 5pinů
JP4            Dutinková lišta 12pinů
JP7            Jumper lišta 3piny
X1            ARK500 dvojitá
X2            Cannon9M do PCB
KK1            Chladič (DO1A GME schop) (SK95-2M3)
Patice            DIL28
Držák pojistky    Do PCB
F1            F/200mA 20x5mm
GPS modul        Quectel L80

(deska displeje)
Dis1-Dis6        HD-H101 (SA56-11SRWA)
LED3-LED6        LED3mm/2mA červená
JP1            Jumper lišta 12pinů
JP2            Jumper lišta 6pinů
R3,R4            180R (SMD 1206)

 

DOKUMENTACE – Aktualizováno 1.11.2015

Závěrem si zde můžete stáhnout veškerou dokumentaci pro stavbu. Je zde i projekt pro Eagle.
GPS_Hodiny_v2-dokumentace – Včetně programu pro procesor
Diskusi pro tuto konstrukci najdete ZDE.

 

AKTUALIZACE

30.10.2015v1.1 Dnes jsem byl upozorněn, že neblikají dvojtečky na displeji. Původně jsem to chtěl dodělat, ale nějak jsem na to zapomněl (osobně mám radši, když pouze svítí). Takže si můžete stáhnout upravený program (součástí dokumentace), kde je možno pomocí interního Jumperu JP5 (který dosud neměl žádnou funkci) zapnout nebo vypnout blikání dvojteček:
JP5 Osazen – Dvojtečky trvale svítí jako u původního programu (včetně dvojteček na externím displeji)
JP5 Neosazen – Dvojtečky blikají v intervalu 500ms svítí / 500ms nesvítí (včetně dvojteček na externím displeji)

 

Článok prevzatý z webu: https://www.sakul.cz/gps-hodiny-v2-pe2-2015/n/.

Ako sa vám páčil tento článok?
  • Páči sa mi (9)
  • Súhlasím (0)
  • Zábavné (0)
  • Informatívne (0)
Sakul
Najnovšie články od Sakul (zobraziť všetky)

Pridaj komentár