ZPĚT

PANDA ELEKTRONIK

Znak projektu "Panda ELEKTRONIK"


Čí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

kissmiki@centrum.sk 


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ý
nov_zden@seznam.cz