Pred vami je šahovska ura z mikrokontrolerjem 89C2051 in LCD-prikazovalnikom. Nastala je na pobudo nekaterih prijateljev šahistov, ki so opazili samogradnjo ure z dvema alarmoma. Prednosti takšne LCD-ure so: odmera časa v sekundah je zelo točna, po končani igri je možen pregled števila potez, ura teče tiho, brez motečega tiktakanja, najdaljši čas nastavitve je lahko celo 99 ur, ura se napaja akumulatorsko itd.
Delovanje vezja
Vezje ure sestoji iz napajalnika – NiCd-akumulatorja, mikrokontrolerja 89C2051, LCD-prikazovalnika velikosti 1 x 16 znakov, tipk in stikal. Ura ima lasten vir energije iz NiCd-akumulatorja napetosti 6 V in 0,6 Ah, kar pri porabi 10 mA zadostuje za približno 60 ur delovanja brez polnjenja. Akumulator se polni z zunanjim adapterjem napetosti 9 do 12 V z enosmernim ali izmeničnim tokom 100 mA, ki se priključi preko vtikača na vezje.
Na diodnem mostičku BR se napetost pravilno usmeri. To je malce neobičajen način, vendar tako lahko uporabimo kakršenkoli adapter (adapter od telefona, igrač, kalkulatorja …), ne da bi morali pravilno priključiti pozitivni in negativni pol. To namesto nas opravi diodni mostiček BR, zato ni potrebno rezati vtikača in obračati polaritete. To napetost peljemo na gladilni kondenzator C1, upor R1, tranzistor T1 in zener diodo ZD1. Ti elementi tvorijo stabiliziran usmernik napetosti 8,5 V. Nato napetost vodimo preko diode D2 na upor R3 in na akumulator, ki se polni. T1 je močnostni tranzistor NPN, ki ga je potrebno hladiti z nekaj kvadratnimi centimetri aluminijastega hladilnika. Na njem se troši odvečna energija. Zener dioda ZD1 vzdržuje konstantno napetost baze T1, ki jo dobiva preko upora R1. Ta napetost je približno 9,1 V. Na emitorju T1 dobimo potem napetost 8,5V, ker vemo, da je pri silicijevih tranzistorjih padec napetosti približno 0,6 do 0,7 V (Ube napetost med bazo in emitorjem).
To napetost peljemo skozi diodo D2 in upor R3 na akumulator, ki se polni. R3 omejuje tok polnjenja na približno 60 mA oziroma na desetino vrednosti kapacitete akumulatorja, ki se polni od 12 do 14 ur. LED-dioda D1 signalizira polnjenje akumulatorja. Upor R2 omejuje tok skozi LED-diodo na 13 mA. Dioda D2 preprečuje, da bi LED-dioda še gorela, ko prenehamo polniti akumulator, ker bi ga s tem praznila. Stikalo J3 vklopi šahovsko uro, ki lahko deluje tudi med polnjenjem oziroma deluje tudi brez akumulatorja, če je priklopljena na zunanji vir napetosti. Iz stikala vodimo napetost na napetostni regulator IC1. Da dobimo na izhodu napetost 3,25 V, vežemo med maso vezja in maso stabilizatorja silicijevo diodo, na kateri dobimo padec napetosti 0,65 V. Kondenzatorji C2, C3, C4 omogočajo stabilizatorju mirnejše delovanje in zmanjšanje šuma, kar procesorju dobro dene. Zener dioda ZD2 je še zadnji filter in poreže morebitne zadnje »špice« v napajanju.
Kot vidimo na shemi vezja, je uporabljen še en stabilizirani usmernik z germanijevim tranzistorjem AC187, ki ima padec napetosti le 0,3 V. Ta stabilizator daje napetost 5,3 V za napajanje LCD-prikazovalnika. Celo vezje bi se lahko napajalo s to napetostjo, vendar bi bila poraba bistveno večja, kar pa pri akumulatorskem napajanju ni zanemarljivo. Kot smo že omenili, se mikrokontroler napaja z napetostjo 3,25 V na nožici Vcc, na katero je vezan blokirni kondenzator C7. Kondenzator C6 pri vklopu vzdržuje reset stanje na mikrokontrolerju toliko časa, dokler se ne nabije preko reset nožice. Za takt skrbi interni oscilator v mikrokontrolerju, ki za delovanje potrebuje le še kristal frekvence 3 MHz in dva keramična kondenzatorja. Za upravljanje ure potrebujemo le tri tipke, ki so vezane na vrata mikrokontrolerja P3.0, P3.2, P3.3. Za vzdrževanje visokega stanja na teh vratih uporabimo zunanje pull-up upore R6, R7 in R8. S pritiskom na tipko se kratko sklene stikalo, ki je povezano na maso. S tem se nizek nivo signala prenese na vrata mikrokontrolerja, ki ga program prebere.
LCD-prikazovalnik uporablja za lastno upravljanje Hitachijev krmilnik HD44780, ki skrbi za pravilno delovanje modula. Za prenos podatkov med mikrokontrolerjem 89C2051 in LCD-modulom uporabljamo 8-bitni način prenosa med vrati P1 in podatkovnim vodilom D0 – D7 na LCD-modulu. Podatki se prenašajo v podatkovni in instrukcijski register LCD-modula. Za upravljanje le-tega potrebujemo še tri signale, in sicer signal Enable – E, Register Select – RS in Read/Write – RW, ki jih generira mikrokontroler 89C2051. Kratek E-signal poskrbi za vpis podatka v LCD-modul pri prehodu iz visokega v nizko stanje. RS-signal določi, v kateri register se podatek vpiše. Če je RS = 1, se vpiše podatek v podatkovni register oziroma v instrukcijskega, če je RS = 0. RW-signal določa, ali podatek v LCD-modul vpisujemo ali beremo. Če je RW = 1, podatek v LCD-modul vpisujemo, če pa je RW = 0, podatek iz LCD-modula beremo. Za izvajanje notranjih operacij v LCD-modulu potrebujemo določen čas, ki ga signalizira zastavica zasedenosti – BF (Busy Flag). Medtem ko LCD-modul ne more sprejemati novih podatkov, je BF = 1. Ta zastavica se bere na podatkovnem vodilu linija D7. S trimer potenciometrom R9 nastavimo kontrast na LCD-modulu oziroma ga vrtimo toliko časa, da se prikažejo znaki.
Sestavljanje vezja
Vezje je narejeno na enostranskem tiskanem vezju. Na TIV najprej prispajkamo C7, nato podnožje DIP20 za mikrokontroler, pod katerim je že C7. Sledijo ležeči elementi (ne pozabimo na kratkospojnik) in stoječi elementi. Akumulator, stikalo, tipke, vtikač, LED-dioda in LCD-prikazovalnik se priklopijo na vezje z žicami ali ploščatim (flat) kablom. Na vezje, kjer naj bi bile žice, lahko prispajkamo vrstne sponke ali konektorje, žice pa je možno prispajkati neposredno na TIV. Seveda je bolje, če uporabimo konektorje. Preden vstavimo mikrokontroler v podnožje in LCD-prikazovalnik na konektor, je dobro narediti naslednje: na TIV priključimo vir napetosti in preverimo napetosti na posameznih sponkah (glej rubriko – »Delovanje vezja«). LED-dioda mora svetiti. Če je vse v redu, izključimo napetost, vstavimo mikrokontroler s programom v podnožje DIP20 in LCD-prikazovalnik na konektor. Nato ponovno priključimo napetost na vezje, LED-dioda sveti, vključimo stikalo J3 in na prikazovalniku se mora izpisati tekst »CHESS TIMER«. Nato čez nekaj minut izklopimo zunanji napajalnik, ura pa mora še vedno delovati, saj se napaja iz akumulatorja. LED-dioda mora ugasniti. Če smo dobili tak rezultat, potem ura deluje pravilno. Sedaj si lahko ogledamo še upravljanje ure.
Upravljanje ure
Tipka J5 je namenjena prehajanju med posameznimi meniji. Tipki J6 in J7 pa sta namenjeni nastavitvi ure in predajanju igre nasprotnemu igralcu. Poglejmo postopek nastavitve časov:
- Uro vključimo s stikalom J3 – izpiše se tekst »CHESS TIMER«.
- Pritisnemo tipko za izbiro menuje J5 – izpiše se tekst »000000 ST 000000«. Levo in desno se izpiše 6 ničel (ure – minute – sekunde).
- Pritisnemo tipko J6 ali J7, s katero nastavimo minute oziroma ure na želeno vrednost. Če smo nastavili čas na 5 minut, se izpiše tekst »000500 ST 000500«.
- S ponovnim pritiskom na tipko J5 potrdimo nastavljene vrednosti – izpiše se »000500 RD 000500«, kar pomeni, da je ura pripravljena za zač· etek igre.
- S pritiskom na tipko J6 ali J7 začnemo/predamo igro nasprotnemu igralcu in obratno. Pri tem se izpiše besedilo » 0500 gm_ 0459« kjer črtica signalizira, kateremu od igralcev teče čas. Pri časih, ki so manjši od ene ure, je mesto na prikazovalniku, kjer se izpisujejo ure prazno.
- Če hočemo igro ustaviti za nekaj časa, pritisnemo tipko J5, na prikazovalniku se izpiše na primer besedilo » 0325 PS_ 0258«, če pa želimo igro nadaljevati, pritisnemo J6 ali J7.
- S pritiskom na tipko J5 igro končamo in čas se ustavi. S ponovnim pritiskom na tipko J5 se izpiše število potez posameznega igralca.
- Če se čas enemu od igralcev izteče, se ura ustavi. S pritiskom na tipko J5 se na prikazovalniku izpiše na primer besedilo »MOV=027 MOV=028«, ki pove število potez posameznega igralca.
- S ponovnim pritiskom tipke J5 se vrnemo v nastavitveni menu s prejšnimi nastavitvami.
- Če hočemo na hitro preiti na nove nastavitve, uro ugasnemo in znova prižgemo, s čimer smo uro resetirali, nato pa nastavimo nove vrednosti.
Na fotografiji vidimo izgled ure. Na vrhu sta tipki J6 in J7. Spredaj na poševni steni je LCD-prikazovalnik. Na zadnji strani je tipka J5, na spodnji strani (dno) je stikalo J3 za vklop napajanja. Na desno stran prideta kontrolna LED-dioda in vtikač za polnjenje akumulatorja. Podobo ure lahko seveda ustvari vsak po svoje. Sam sem uro vgradil v leseno ohišje, ki sem ga prej temeljito pobrusil in nato prelakiral. Tako sem odstranil vse robove in zareze. V ohišje je seveda vgrajen tudi NiCd-akumulator, ki razen polnjenja in pravilnega praznjenja ne potrebuje kakšne posebne nege in vzdrževanja.
Tipki J6 in J7 morata biti obvezno dovolj robustni in z vzmetjo, saj lahko kakšen malce živčen šahist pošteno udari po uri. V seznamu materiala za uro ni konektorjev ali vrstnih sponk. Izbiro, na kakšen način bo kdo povezoval TIV z zunanjimi elementi, prepuščam vsakemu posamezniku. Uro se lahko uporabi tudi v druge namene.
Prosta vrata P3.1 na mikrokontrolerju lahko ustvarjajo tudi razne zvoke, krmilijo releje itd. Potrebna je le manjša predelava programa, ki se zapeče v mikrokontroler 89C2051.
Virtualna trgovina, nakup brošure in informacije!
Šahovska ura
Avtor: Maček Pavel
Ljubljana, julij 2003