Čí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ý
Článek pochází
z adresy http://panda.unas.cz ZPĚT |
Zdeněk
Novotný |