![]() |
|
Čítač do 1,3GHz
[Mikuláš Kišš]
Hoci sa v
poslednom čase s čítačmi riadenými mikroprocesormi akoby roztrhlo vrece
dovoľujem si Vám poslať do súťaže ďalší príspevok. Je to skôr ako návod na
stavbu vlastného zariadenia ako konštrukcia. Hlavné výhody tohto čítača oproti
doteraz publikovaným sú : jednoduchá konštrukcia a jednoduchý plošný spoj
vzhľadom na množstvo funkcií ktoré poskytuje, softwarová kalibrácia a voľne
šíriteľný zdrojový kód. Ak sa užívateľ rozhodne iba pre plne funkčný čítač na
signály úrovne TTL, tak jedinou potrebnou súčiastkou je jeden rezistor!
Čítač
poskytuje tieto funkcie : meranie frekvencie do 30 MHz na vstupe A, meranie
frekvencie do 1300 MHz na vstupe B, meranie dĺžky trvania logickej jednotky a
nuly ,meranie periódy a prosté počítanie impulzov na vstupe C a softwarovú
kalibráciu na vstupe A alebo B. Funkcie sú zobrazované na klasickom
alfanumerickom displeji 16x1 riadok.
Parametre čítača
: Vstup A Frekvenčný rozsah : Citlivosť : Vstupný odpor : Rozlíšenie : Vstup B Frekvenčný rozsah : Citlivosť : Vstupný odpor : Rozlíšenie : Vstup C Rozsah : Citlivosť : Rozlíšenie : |
5 Hz až 30 MHz < 100 mV (typ. 30 mV) 1 M +/- 1 Hz 20 MHz až 1300 MHz < 100 mV (typ. 10 mV) 50 +/- 100 Hz 0 až 999 s TTL 1 s |
![]() |
Ještě před textem je tu náhled schématu kde je vidět, jak je zapojení vlastně
jednoduché. Nějaké vstupní obvody, za kterými se signál přivádí hned na
procesor, který řídí sám celý proces.
Celé schéma je možné ve formátu PDF
stáhnout zde SCHÉMA.
Obsluha
prístroja
Po zapnutí čítača sa na displeji
objaví nápis CITAC DO 30 MHz. Podržaním tlačidla voľba sa na displeji objavujú
nápisy CITAC DO 1,3 GHz, MERANIE PERIODY, TRVANIE LOG.1, TRVANIE LOG.0, PROSTY
CITAC a KALIBRACIA, ktoré popisujú aktuálnu zvolenú funkciu. Stlačením tlačidla
ENTER si jednu funkciu zvolíme a môžeme merať. Po skončení merania sa do hlavnej
ponuky dostaneme stlačením tlačidla MENU.
Kalibráciu čítača vykonáme
prepnutím čítača do režimu KALIBRACIA. Na displeji sa objaví nápis f= 0,000 kHz.
Priložení sondy na pin 15 (OSC2 / CLKOUT ) mikroradiča by sa na displeji malo
objaviť f= 3,999999 MHz. Ak nie, podržaním tlačidiel VOĽBA alebo ENTER možno
údaj na displeji upraviť tak, aby sa čo najviac približoval želanej hodnote 4
MHz. Kalibrácia sa ukončí stlačením tlačidla MENU čím sa prepneme do hlavnej
ponuky. Po skončení kalibrácie čítač meria s presnosťou daného kryštálu. Ak sa
užívateľ dostane k frekvenčnému normálu, o ktorom predpokladá, že má väčšiu
presnosť ako jeho kryštál môže si čítač nakalibrovať opäť bez toho aby ho
rozoberal a nastavoval kapacitným trimrom vo vnútri zariadenia. Kalibrácia sa
týka iba ponuky CITAC DO 30 MHz a CITAC DO 1,3 GHz. V ostatných ponukách čítač
meria s presnosťou daného kryštálu.
V ponukách MERANIE PERIODY, TRVANIE LOG.1
a TRVANIE LOG.0 sa zobrazuje dĺžka trvania danej udalosti v ms alebo v
sekundách. Pri pomalých dejoch sa na displeji môže objaviť až 9 miestny údaj (T=
123,456789 s). Platný je samozrejme iba prvých 5 až 6 miest pretože žiaden z
bežne predávaných kryštálov nemá väčšiu stabilitu.
Prostý čítač je jednoduché
počítadlo impulzov, ktorého vstupom je vstup C. Pri meraní je možné ho
kedykoľvek vynulovať stlačením tlačidla VOĽBA. Maximálny počet impulzov, ktoré
je schopný čítač zachytiť je 16 777 216. Pri väčšom počte dôjde k pretečeniu
pričom toto pretečenie nie je nijak signalizované. Maximálna frekvencia
prichádzajúcich impulzov, ktoré je schopný čítač zobrazovať v reálnom čase je
okolo 20 kHz. Pri väčšej frekvencii sa údaj na displeji nemení hoci dochádza k
počítaniu impulzov. Počet načítaných impulzov sa zobrazí až po odpojení zdroja
pulzov. Takto je čítač schopný počítať impulzy až s frekvenciou 200 kHz.
Pozn. Tlačítka pri prepínaní funkcií je potrebné podržať tlačítka trochu
dlhšie ako je zvyčajné. Je to kvôli tomu, že pri zvolení režimu kalibrácie a
stlačení tlačidla ENTER sa síce zapne režim kalibrácie, ale ak by bolo čakanie
na potvrdenie tlačítka krátke, tak by prístroj dlhšie podržanie vyhodnotil ako
nové stlačenie tlačidla ENTER a zmenil by kalibračnú hodnotu smerom dolu. Takto
je čiastočne zabezpečené, že aj dlhšie nechcené stlačenie tlačidla ENTER v
režime kalibrácie nespôsobí zmenu kalibračnej hodnoty.
Popis zapojenia
Vstupná časť čítača bola prevzatá z [1]. Odtiaľ pochádzajú aj
údaje o citlivosti jednotlivých vstupov. Podrobný popis vstupných zosilňovačov
sa taktiež nachádza v pôvodnom prameni takže tu ho iba zhrniem.
Najjednoduchším vstupom je vstup C. Je to vstup na meranie pomalých dejov a
preto
musí preniesť aj jednosmernú zložku. Rezistor R13 zabezpečuje vysokú
vstupnú impedanciu vstupu. Diódy D3 a D4 zabraňujú prepätiu a podpätiu na
vstupe, ktoré by mohlo zničiť vstup procesora. Rezistor R12 určuje maximálny
prúd diódami pri podpätí alebo prepätí.
Vstup A slúži na meranie signálu s
frekvenciou do 30 MHz. Kondenzátorom C1 sa oddelí jednosmerná zložka. Diódovým
obmedzovačom sa signál upraví na potrebnú úroveň na spracovanie. Tranzistor Q3
spolu s odporom R11 zabezpečujú vysokú vstupnú impedanciu. Z tranzistora Q3 je
signál cez kondenzátory C2 (určuje dolnú hraničnú frekvenciu) a C3 vedený do
vstupu Z1 analógového prepínača U2. Prepínač U2 by mal byť typu HC(T), aby bol
schopný spracovať aj signály s frekvenciou do 30 MHz. Logickou úrovňou na vstupe
C analógového prepínača volíme či budeme spracovávať signál s frekvenciou do 30
MHz zo vstupu A alebo signál z preddeličky SAB6456 (U3) zo vstupu B. Zapojenie
preddeličky je štandardné a bolo už mnoho krát popísané. Diódy D5 a D6 chránia
vstup preddeličky pred napätím väčším ako +/- 0,6 V. V tomto zapojení
preddelička delí vstupný signál číslom 64. Tranzistor Q2 slúži na odpojenie
napájania od preddeličky v režimoch kedy sa preddelička nepoužíva, pretože
spotreba preddeličky sa výrazne podieľa na spotrebe celého čítača (je úmerná
spotrebe celého čítača v ostatných režimoch). Pri písaní tohto článku som
objavil preddeličky firmy MOTOROLA, ktoré majú takisto deliaci pomer 64 :1, ale
ktorých spotreba je výrazne nižšia ako u obvodu SAB 6456. Pri ich použití by
bolo možné vynechať tranzistor Q2 spolu s odporom R9. Výstup z analógového
prepínača U2 je širokopásmovým zosilňovačom tvoreným tranzistorom Q1 zosilnený
približne na úroveň TTL, ktorú už spracúvame. U väčšiny ostatných procesorov by
bola v tomto bode pripojená externá 8 bitová preddelička, ktorej výstup by bol
spracovávaný portom mikroprocesora.
U procesorov PIC je to však inak. Oproti
ostatným procesorom, u ktorých je maximálna vstupná frekvencia silne závislá od
frekvencie oscilátora, procesory PIC majú vstupnú 8-bitovú preddeličku, ktorá je
schopná spracovávať vstupné signály až do frekvencie 50 MHz ! Nevýhodou tejto
preddeličky je, že sa nedá priamo čítať ako register procesora. Jej čítanie
prebieha tak, že počas merania (1 sekunda počas ktorej počítame počet
príchodzích impulzov) sú piny RA3 a RA4 (vstup preddeličky) nakonfigurované ako
vstupy. Po skončení merania je pin RA3 prekonfigurovaný na výstup. To spôsobí
zastavenie príchodu impulzov na vstup RA4. Na vstupe RA4 bude logická úroveň
určovaná teraz už výstupom RA3. Postupným prepínaním výstupu RA3 z logickej
úrovne H na logickú úroveň L a späť dosiahneme inkrementáciu preddeličky. Ak
budeme sledovať pretečenie preddeličky a zároveň počítať počet impulzov o koľko
sme inkrementovali preddeličku do okamihu pretečenia, tak obsah preddeličky
zistíme zo vzťahu 256 - N, kde N je počet impulzov o ktoré sme inkrementovali
preddeličku. Takto zistený obsah preddeličky nám spolu s troma vnútornými
registrami určuje načítanú frekvenciu. Tento postup je možné nájsť aj v prameni
[2]. Pre zisťovanie frekvencie týmto spôsobom je rezistor R3 nevyhnutný.
Tu
by som tu rád upozornil, že hoci je pre správnu funkciu čítača rezistor R3
nevyhnutný je to jediná súčiastka, ktorá je potrebná na funkciu celého čítača ak
má spracúvať signály úrovne TTL do 50 MHz! Ťažko sa dá prestaviť, že sa dá
zostrojiť jednoduchší 50 MHz-ový čítač. Tento čítač je veľmi vhodný aj na
vstavania do starších generátorov frekvencie, pretože celý mikroprocesor s
rezistorom sa dá umiestniť na plošný spoji priamo pod displej. Potom stačí iba
nájsť výstup frekvencie úrovne TTL a umiestniť displej na predný panel.
Displej, ktorý je ovládaný mikroprocesorom je bežný alfanumerický displej
16x1, ktorý však musí byť adresovaný akoby mal 2 riadky po 8 znakoch. Vyhovujú
typy MC 1601, TM161 alebo LM16155.
Pozn. Po skonštruovaní funkčného vzorku
boli údaje o citlivosti a frekvenčnom rozsahu vstupu A overované osciloskopom.
Citlivosť zodpovedá pôvodnému prameňu. Bola meraná síce iba v pár bodoch, ale
vždy bola lepšia ako udávaných 100 mV (ja som nameral okolo 40mV). Frekvenčný
rozsah čítača je o trochu menší ako bolo udávané. Je to spôsobené tým, že v
pôvodnom prameni bol ešte za tranzistor Q1 zaradený invertor, ktorý tvaroval
vstupný signál na pravouhlý. Čítačom spracúvaný signál bol teda až vytvarovaný
signál z invertora. Keďže však daný procesor má na vstupe RA4, ktorý je vstupom
preddeličky, zaradený schmitov klopný obvod, ja som tento invertor vynechal a
ušetril jedno púzdro integrovaného obvodu. Tým pádom sa na vstup procesora
nedostáva vždy obdĺžnikový signál, ale signál ktorý sa často svojím tvarom
podobá na sínus. Schmitov obvod v procesore si s takýto signál nie vždy poradí.
Preto aj u stabilných signálov nad 8-10 MHz, ktoré nemajú obdĺžnikový tvar,
posledných pár rádov na displeji preblikáva. Na displeji je potom platných iba
prvých 4 až 5 číslic, ktoré nepreblikávajú. Vzhľadom k presnosti kryštálu je
však zbytočné snažiť sa o väčšiu presnosť.
Preblikávanie je iba otázkou
tvaru vstupného signálu na pine RA4. Kto si žiada, aby údaj na displeji bol
stabilný, musí zabezpečiť naozaj pravouhlý vstupný signál, alebo prerobiť plošný
spoj a za tranzistor Q1 zaradiť invertor, ktorý vytvaruje jeho výstup na
obdĺžnikový tvar.
Popis
programu
Celý program je napísaný v asembleri
a jeho zdrojový kód je voľne šíriteľný. Tu by som rád opísal postupy pri
programovaní jeho funkcií. Pre začiatočníkov to môže slúžiť ako návod na stavbu
a programovanie vlastného čítača a pre zarytých programátorov 8051 ako dôkaz, že
MICROCHIP je aspoň tak dobrý ako ATMEL.
Čítač je ovládaný tromi tlačidlami.
Kvôli nedostatku výstupných pinov, ale aj kvôli jednoduchosti riešenia je
tlačidlo MENU riešené ako tlačidlo RESET. Je to kvôli tomu, že po pripojení
napájania sa na displeji musí zjaviť ponuka funkcií. Táto ponuka sa však musí
zjaviť, kedykoľvek v priebehu programu po stlačení tlačidla MENU. Ak je teda
tlačidlo MENU a RESET to isté, tak stlačenie tlačidla MENU spôsobí tú istú
situáciu ako pripojenie napájania lebo je to reset mikroradiča. Tlačidlo MENU je
riešené ako napäťový delič. V rozopnutom stave je na pine MCLR približne 4,5 V
čo zabezpečuje správnu funkciu mikroradiča. Pri stlačení tlačidla klesne napätie
na 0 V, čo spôsobí reset mikroradiča. Správna funkcia sa obnoví až po pustení
tlačidla MENU. Preto čítač reaguje na pustenie tlačidla MENU a nie na jeho
stlačenie.
Po resete alebo zapnutí program začne návestím START. Po
nakonfigurovaní portov, inicializácii displeja a vynulovaní niekoľkých registrov
vytvoríme menu, ktoré predstaví všetky funkcie čítača. Vypisovanie písmen na
displej je tvorené podobným spôsobom ako čítanie údajov z tabuľky. Všetky nápisy
sú umiestnené na začiatku programu a preto pre českých užívateľov nemôže byť
problémom vytvoriť si vlastnú jazykovú verziu. Treba iba rešpektovať, že nápis
nemôže mať viac ako 16 znakov. Jediné úskalie ktoré na nich číha je nápis MIN.
(MAX) KALIBRACIA, ktorý sa objaví pri pokuse skalibrovať veľmi nepresný kryštál.
Oznamuje, že ďalšie spresnenie nie je možné a jediným riešením je výmena
kryštálu. Tento nápis je umiestnený v strede programu na riadku 1145.
Po
zvolení si funkcie čítača program nastaví príslušný príznak a skočí na príslušné
návestie. Ak zvolíme funkciu CITAC DO 30 MHz alebo CITAC DO 1300 MHz neskočíme
priamo do podprogramu CITAC, ale do stredu programu. Je to z toho dôvodu, že ak
by sme po potvrdení voľby CITAC... skočili priamo na návestie CITAC, okamžite by
sa začalo meranie a reakcia na stlačenie klávesu ENTER by sa prejavila až prvom
meraní frekvencie, teda až po jednej sekunde. Takto sa na displeji zobrazí nápis
f= 0,000 kHz a až potom začne meranie.
Sekvencia na meranie frekvencie začína
návestím CITAC a v podstate sa skladá z troch podprogramov: INCFMSB, PREDDEL a
B32_BCD. Frekvenciu meriame ako počet impulzov, ktoré čítač načítal za jednu
sekundu. Počet načítaných impulzov sa ukladá do štyroch registrov FLSB, RTCC,
FMSB a FMMSB v poradí od najmenej významného bytu po najvýznamnejší.
Podprogram INCFMSB predstavuje samotné meranie. Pred spustením tohto
podprogramu je preddelička nakonfigurovaná tak, aby bola zaradená pred časovač
RTCC, aby počítala do 256 a aby zdrojom impulzov pre ňu bol pin RA4. V tomto
podprograme sa kontroluje príznak pretečenia od RTCC. Tento príznak sa nastaví
vždy keď dôjde k pretečenie RTCC, pričom ak nie je nastavené v registry INTCON
inak tak nevyvolá prerušenie (nastavené je tak aby nevyvolával). V podprograme
sa kontroluje príznak pretečenia RTCC. Ak k nemu došlo inkrementuje sa vyšší
byte FMSB poprípade až najvyšší byte FMMSB. Pri pretečení a inkrementácii
vyšších bytov však program vykoná nejaké príkazy naviac ako keby k inkrementácii
nedošlo. Preto je v programe zaradená kompenzačná slučka, kde sa sleduje či
došlo alebo nedošlo k inkrementácii. Ak k nej nedošlo vykoná sa pár prázdnych
inštrukcií NOP. Tým je zabezpečené, že kontrola príznaku a prípadná následná
inkrementácia vyšších bytov bude trvať rovnako dlho či už k pretečeniu RTCC
došlo alebo nie. Takto je získaná slučka, ktorá trvá 12 mikrosekúnd. Táto slučka
je potom opakovane spúšťaná niekoľko krát za sebou tak, aby trvanie podprogramu
INCFMSB bolo 999 985 mikrosekúnd. Po skončení podprogramu nasleduje 30 prázdnych
inštrukcií NOP, pomocou ktorých môžeme presne doladiť dobu merania impulzov.
Podľa hodnoty kalibračného registra program skočí niekam do stredu medzi tieto
inštrukcie a bude pokračovať dokonca. Ak je napríklad v kalibračnom registry
hodnota 27 (dekadicky) program skočí na 27-mu inštrukciu a vykoná posledné 3
inštrukcie NOP. Keďže pri danom 4MHz-ovom kryštále trvá vykonanie každej
inštrukcie 1 mikrosekundu predĺži sa takto dobu počítania vstupných impulzov o 3
mikrosekundy, teda na 999 988 mikrosekúnd. Týmto spôsobom môžeme predĺžiť dobu
počítania impulzov až o 30 mikrosekúnd. Takto môžeme meniť dobu merania od 999
985 (nevykoná sa žiadna inštrukcia NOP) do 1 000 015 (vykoná sa všetkých 30
inštrukcií NOP) mikrosekúnd.
Hoci bežne predávané kryštály majú pri teplote
25 C udávanú presnosť +/- 30 ppm a toto je kalibrácia v rozsahu +/- 15 ppm
myslím že pre väčšinu kryštálov by táto tolerancia mala stačiť. Pretože hodnotu
kalibračného registra môžeme softvérovo meniť a zapisovať do vnútornej pamäte
EEPROM v režime kalibrácie môžeme hovoriť o softvérovej kalibrácii.
Po
inštrukciách NOP dôjde k prepnutiu pinu RA3 na výstup čo zabráni príchodu
ďalších impulzov. Ako už bolo opísané postupným prepínaním pinu RA3 z logickej
hodnoty 0 na logickú hodnotu 1 a späť môžeme získať počet impulzov uložených v
preddeličke čo predstavuje najmenej významný byte načítanej frekvencie. Hodnotu
z preddeličky získame zavolaním podprogramu PREDDEL. Po jeho skončení máme
načítanú frekvenciu uloženú ako 32 bitové číslo v registroch FLSB, RTCC, FMSB a
FMMSB.
Podprogram B32_BCD premieňa 32 bitové číslo z registrov FLSB, RTCC,
FMSB a FMMSB na zhustený dekadický tvar. Výsledok je uložený v registroch
CISLA01, CISLA23, CISLA45, CISLA67, CISLA89. Napríklad označenie registra
CISLA01 znamená, že v tomto registry je uložený 0-tý rád (nižší polbyte) a prvý
rád (vyšší polbyte) dekadického čísla, ktoré vzniklo premenou 32 bitového čísla
na dekadické.
Po získaní 10 miestneho vyjadrenia frekvencie je frekvencia
zobrazená. Nasleduje pomerne neprehľadná, ale jednoduchá časť programu, kde sa
kontroluje či je frekvencia v kHz alebo MHz, kde dať desatinnú čiarku a ako
potlačiť nevýznamné nuly. Ak nie sme v režime kalibrácie, tak po skončení
zobrazenia program opäť skočí na návestie CITAC a začne merať odznova. V režime
kalibrácie sa za zobrazením frekvencie ešte kontroluje stlačenie tlačítok ENTER
alebo VOĽBA a podľa nich sa inkrementuje alebo dekrementuje kalibračný register
KALREG. Prekročenie kalibrácie je softvérovo ošetrené nápismi MAX. KALIBRACIA
alebo MIN. KALIBRACIA .
Sekvencia CITAC slúži na meria frekvencie aj do
30 MHz aj do 1300 MHz. V oboch režimoch sú počítané impulzy, ktoré prišli počas
jednej sekundy. V režime merania frekvencie do 1300 MHz je však vstupná
frekvencia 64 krát menšia, lebo do cesty má zaradenú preddeličku 64-mi SAB 6456.
Táto skutočnosť je zohľadnená v podprograme B32_BCD. Ak podprogram zistí, že
meria v režime do 1300MHz tak predpokladá, že načítal nie 32 bitové číslo, ale
32+6 bitové číslo (26=64). Takto získa 10 miestne číslo, ktorého posledné 2 rády
(CISLA01) sú vplyvom preddeličky 64-mi nepresné. Tieto rády teda nie sú
zobrazované.
Sekvencia na meranie periódy začína návestím STOPKY. Pri meraní
času opäť využívame registre FLSB, RTCC, FMSB a FMMSB. Tentoraz však tieto
registre využívame na meranie počtu uplynutých mikrosekúnd medzi dvoma
udalosťami. Pri meraní času sa využíva aj prerušenie. Opíšem iba meranie trvania
log.1, lebo ostatné merania (meranie periódy a meranie trvania log. 0) sa líšia
iba iným nastavením prerušovacích udalostí.
Pri meraní trvania logickej 1 sa
preddelička opäť nastaví tak, aby počítala do 256, aby bola zaradená pred RTCC
tentoraz však nie je zdrojom impulzov pre preddeličku pin RA4 ale vnútorná
frekvencia mikroradiča fOSC/4. Pretože mikroradič pracuje na frekvencii 4 MHz,
fOSC/4 je 1MHz. Perióda signálu s frekvenciou 1 MHz je jedna mikrosekunda. Ak
teda necháme tento signál pripojený na počítadlo impulzov (preddelička =>
RTCC => FMSB => FMMSB ) definovanú dobu, po jej skončení bude počet
impulzov počítadle predstavovať počet mikrosekúnd počas ktorých bol signál
pripojený k počítadlu. Ak teda v našom prípade (meriame dobu trvania log 1)
pripojíme frekvenciu fOSC/4 na počítadlo v okamihu keď zaznamenáme príchod
nábežnej hrany a odpojíme v okamihu keď zaznamenáme spádovú hranu v počítadle
impulzov bude mať čas trvania logickej 1 vyjadrený v mikrosekundách. Pripájanie
a odpájanie frekvencie sa vykonáva nasledovne.
Po nakonfigurovaní preddeličky
je ako zdroj impulzov pre preddeličku nastavený pin RA4, ktorý je však neaktívny
lebo ho blokuje pin RA3. Pri meraní trvania logickej 1 nastavíme register OPTION
tak, aby k prerušeniu došlo nábežnou hranou a čakáme v slučke na príznak MERIAM,
ktorý indikuje že došlo k prerušeniu a je generovaný v podprograme prerušenia.
Po zaznamenaní prerušenia zmeníme zdroj impulzov pre preddeličku na fOSC/4
nastavíme aby prerušenie tentoraz vyvolala spádová hrana a vynulujeme príznak
MERIAM. Potom budeme opäť čakať na nastavenie príznaku MERIAM a zároveň budeme
kontrolovať či nedošlo k pretečeniu RTCC (ak áno inkrementujeme FMSB poprípade
FMMSB). Opätovné nastavenie príznaku MERIAM bude znamenať, že došlo k prerušeniu
príchodom spádovej hrany. V tomto okamihu je odpojená frekvencie fOSC/4 od
preddeličky meranie je zastavené a v registroch FLSB, RTCC, FMSB a FMMSB je čas,
ktorý uplynul medzi dvoma prerušeniami (hodnotu FLSB zistíme podprogramom
PREDDEL prečítaním obsahu preddeličky podobne ako programe CITAC ). V našom
prípade je to čas medzi nábežnou a spádovou hranou, teda doba trvania logickej
1. Meranie periódy alebo doby trvania logickej 0 sa líši iba určením, ktorá
hrana zapne počítanie mikrosekúnd a ktorá ho skončí.
Načítaný čas v trvania
udalosti v mikrosekundách je opäť v binárnej forme. Na dekadickú formu ho
premeníme pomocou podprogramu B32_BCD a zobrazíme ho zavolaním podprogramu
ZOBRAZ. Pretečenie počítadla mikrosekúnd je indikované nápisom MIMO ROZSAH.
Sekvencia na počítanie počtu impulzov začína návestím PROSTYCITAC. Celý
prostý čítač je veľmi jednoduchý. Príchod každého impulzu je indikovaný ako
prerušenie. Pri vyvolaní prerušenia sa inkrementuje počítadlo impulzov POM1. Ak
pretečie inkrementuje sa počítadlo POM2 a ak aj to pretečie inkrementuje sa
počítadlo POM3. Takto získame 24 bitové počítadlo. Celá inkrementácia sa
uskutočňuje v prerušení. Program PROSTYCITAC je v podstate iba nekonečná slučka
v ktorej sa na začiatku načítajú hodnoty registrov POM1, POM2 a POM3. Binárna
hodnota sa na dekadickú premení podprogramom B32_BCD a zobrazí. Načítavanie
registrov POM1,POM2 a POM3 a následné zobrazenie sa vykonáva až do stlačenia
tlačidla MENU. Takto je možné získať jednoduchý a rýchly prostý čítač pri
pomerne malej námahe.
Oživenie a
mechanická konštrukcia
Celá konštrukcia je
navrhnutá do bežne predávanej plastovej škatuľky rozmerov 110x90x28. V plošnom
spoji sú vyznačené miesta, kde treba vyvŕtať otvory na diery a je tam aj
navrhnuté miesto na vloženie 9V batérie. Čítač je postavený na jednostrannej
doske plošných spojov. V zapojení nie je žiadna drátová prepojka ani žiaden
nastavovací prvok okrem potenciometra na nastavenie kontrastu displeja.
Spájkovanie by malo byť jednoduché, lebo rozloženie súčiastok je pomerne riedke.
Treba si dať pozor na polaritu diód D3 a D4, lebo pri opačnej polarite budú
skratovať zdroj. Displej je s doskou spojený plochým desaťžilovým káblom. Ak by
užívateľ chcel dať na displej kolíky, kvôli lepšej odnímateľnosti predného
panelu, tak to musí byť typ, ktorý je ohnutý do pravého uhla, lebo pri použití
priamych kolíkov by sa pod displej nedala vložiť 9V baterka. Kto sa rozhodne pre
vloženie čítača do kovovej škatuľky, ktorá je na to predsa len vhodnejšia, môže
si upraviť tvar plošného spoja. Schéma aj plošný spoj sú k dispozícii a sú
robené v programe PROTEL98 (je na dvojcédečku od SPIDLA DATA PROCESING) .
Záver
V režime CITAC DO 1300 MHz chod na baterku neodporúčam,
pretože čítač má v tomto režime vysokú spotrebu. V ostatných režimoch je
spotreba prijateľná (13 mA). Napriek tomu je na zadný kryt škatuľky umiestnený
3,5 mm jack kvôli možnosti napájať čítač z adaptéra. K programu už nie je možné
prakticky nič dodať, lebo z 1024 bytov ostalo voľných iba 6 a procesor PIC 16F84
je jediný procesor, ktorý má na čipe aj pamäť EEPROM (rad PIC 16F87X má síce
väčšiu pamäť programu a aj pamäť EEPROM na čipe, ale je to novinka a neviem ako
je to s jeho dostupnosťou na trhu). Pamäť EEPROM je však nevyhnutná iba kvôli
možnosti kalibrácie. Kto je ochotný vzdať sa tejto funkcie, môže si kúpiť
procesor s väčšou pamäťou a vložiť si program do neho plus pridať ďalšie
funkcie. Program je písaný tak, že by nemal byť problém skompilovať ho pre
hocijaký iný procesor od firmy MICROCHIP. Využitie programu pre komerčné účely
bez súhlasu autora nie je dovolené. Ak si niekto program pozmení a využije ho vo
vlastnej konštrukcii, prosím ho aby tiež zverejnil aj zdrojový kód. S
pripomienkami k programu sa môžete obracať na autora na adrese :
Zdrojový kód programu má meno cit1g3.asm. Skompilovaný súbor vo
formáte INHX8 má meno cit1g3.hex. Naprogramovaný procesor nemôžem zasielať z
pretože neštudujem v mieste svojho bydliska. Dnes je však už mnoho firiem, ktoré
prípadným záujemcom po dodaní súboru cit1g3.hex procesor
naprogramujú.
[1] A Radio 3/99
[2] CD MICROCHIP 1997 ,
AN592
Obrázek
plošného spoje a osazení
jsou zde.
Ještě jednou schéma (vše
v PDF)
A zde je možné stáhnout uvedený program.
Mikuláš Kišš
Ďurčanského 1
NITRA
94901
Slovensko
tel. 00421 087 7335078
Poznámka:
Jak je vidět v úvodu na fotografii, já jsem si
uvedený čítač taky postavil a jsem s ním plně (!) spokojen. Nabízí všechny
potřebné funkce a vzhledem k „automatické“ kalibraci je velice
přesný.
Jen pro příklad: Na budíku jsem změřil periodu vteřinové ručičky
přesně 1,000256s. To znamená, že budík má za týden odchylku asi 1 minutu což
jsem si po týdnu samozřejmě zkontroloval a skutečně se zpozdil asi o jednu
minutu.
Podle uvedené fotografie je také vidět, že jsem ho stále nedal do
krabičky, proto jsem vše umístil na upravený plošný a doplnil gumovými
nožičkami. Zdeněk Novotný
| |
<<
předchozí
článek |
následující článek >> |
Komentáře k tomuto článku:
- - - zatím žádný komentář - - -
Článek pochází z adresy http://pandatron.net |
Zdeněk
Novotný |