Elektronika     Miernik częstotliwości - tester rezonatorów (ATmega48)        




Jest to prosty miernik częstotliwości do ok. 60 MHz z rozdzielczością 4Hz (pomiar 2x/s), który ma też
funkcję testowania rezonatorów kwarcowych/ceramicznych o częstotliwości 1-40 MHz. Wynik pomiaru
jest prezentowany na wyświetlaczu LCD 2x16 znaków w formacie "xxx.xxxxxx MHz" (nieznaczące zera
są usuwane). Jego czułość wejściowa jest wyższa, niż typowego częstościomierza z multimetru uni-
wersalnego. Może przydać się w warsztacie każdego elektronika i radioamatora.

1. Wstęp
2. Miernik częstotliwości
3. Tester rezonatorów
4. Uruchomienie
5. Zasada pomiaru

1. Wstęp

Mikrokontrolery PIC (np. 16F84, 16F628) przy taktowaniu niskim zegarem (np. 4 MHz) umożliwiają pomiar częstotli-
wości do 50 MHz (w praktyce ok. 60 MHz) bez użycia dodatkowych, zewnętrznych dzielników. Dzieje się tak dlatego,
że posiadają wbudowany i pracujący asynchronicznie 8-bitowy licznik/dzielnik (preskaler), którego maksymalna czę-
stotliwość zliczania jest ograniczona jedynie przez minimalny czas narastania/opadania zbocza sygnału wejściowego,
wynoszący 10ns. Co prawda wartość tego preskalera nie jest bezpośrednio dostępna w żadnym rejestrze, ale istnieje
pewna sztuczka programistyczna umożliwiająca jej odczyt (została opisana w nocie aplikacyjnej AN592 firmy Micro-
chip). Przepełnienia preskalera są zliczane przez 8-bitowy timer/licznik 0 (Timer0), co daje w sumie 16-bitową liczbę
impulsów sygnału wejściowego, którą można jeszcze rozszerzyć programowo (np. do 32-bitów) obsługując przerwa-
nie, występujące po przepełnieniu timera/licznika 0.
W przypadku mikrokontrolerów AVR sytuacja wygląda zupełnie inaczej. Mimo, że posiadają one różne timery/liczniki,
to wszystkie działają synchronicznie z zegarem taktującym CLK, a ich maksymalna częstotliwość zliczania symetry-
cznego sygnału wejściowego (wypełnienie 50%) wynosi poniżej CLK/2.5. W przypadku niesymetrycznego sygnału wej-
ściowego minimalny czas trwania jego niskiego/wysokiego stanu logicznego, musi być dłuższy od szerokości jednego
cyklu zegara taktującego timer/licznik. Przykład: jeśli timer/licznik pracuje z częstotliwością 8 MHz, to jego cykl zegaro-
wy wynosi 125ns. Czas trwania niskiego/wysokiego stanu logicznego w mierzonym sygnale wejściowym musi być
dłuższy od 125ns.
Dlatego, aby mierzyć wysokie częstotliwości wejściowe Fin konieczne jest dodanie zewnętrznego licznika/dzielnika.
Taką funkcję pełni układ U2 (74HC393), zawierający dwa 4-bitowe liczniki binarne połączone kaskadowo (podział 2-
256), które mogą pracować z typową maksymalną częstotliwością wejściową Fmax = 99 MHz (Vcc = 5.0V, Cload =
15pF). Zamiast niego można użyć następujących układów CMOS: 74AC393 z Fmax = 150 MHz (Vcc = 4.5-5.5V,
Cload = 50pF), 74VHC393 z Fmax = 170 MHz (Vcc = 4.5-5.5V, Cload = 15pF) lub TTL: 74F393 z Fmax = 130 MHz
(Vcc = 5.0V, Cload = 50pF), 74HCT393 z Fmax = 53 MHz (Vcc = 5.0V, Cload = 15pF), 74LS393 z Fmax = 25 MHz
(Vcc = 5.0V, Cload = 15pF). Rzeczywista częstotliwość Fmax, zależy od konkretnego egzemplarza (producenta) ukł-
adu i może być inna niż wymienione. Jeśli zastosuje się układ w wersji szybszej niż 74HC393, to teoretycznie można
mierzyć częstotliwość Fmax do ok. 134.217 MHz. Niestety w praktyce częstotliwość Fmax jest ograniczona przez
wzmacniacz wejściowy (front-end).
Sercem miernika jest popularny mikrokontroler ATmega48. Zamiast niego można użyć modeli ATmega88/168/328,
które mają identyczny rdzeń, różnią się jedynie większą ilością pamięci. Program sterujący napisałem w asemblerze
i jest on identyczny dla każdego z wymienionych mikrokontrolerów (zajmuje 366 bajtów pamięci FLASH).
Ciekawostką jest to, że odczyt licznika 74HC393 podłączonego do portu D instrukcją "in R25,PIND", w nieznany spo-
sób powoduje ustawienie flagi przepełnienia TOV1 licznika TC1 w rejestrze TIFR1. Ominięciem problemu jest odczy-
tywanie tego rejestru przed odczytem portu D. Na początku myślałem, że problem wynika z plątaniny kabli na płytce
stykowej i powstających zakłóceń, ale na modelowej płytce występuje to samo zjawisko. Używam mikrokontrolera
ATmega48-20PU (data produkcji "1025A", wersja "35573D" czyli "D").
Miernik może pracować w dwóch trybach wybieranych zworką J1 (MODE). Jeśli jest ona ustawiona w pozycji 1-2,
to mierzona jest częstotliwość Fin sygnału z wejścia CON3 (po przejściu przez wzmacniacz). Natomiast, jeśli zworka
jest ustawiona w pozycji 3-4, to mierzona jest częstotliwość Fres z oscylatora do testowania rezonatorów kwarco-
wych/ceramicznych.


2. Miernik częstotliwości

Rezystor R2 i dwie diody zabezpieczające D2-D3 (clamping diodes) o spadku napięcia Vdr = 0.6-1.05V przy prądzie
0-200mA, chronią przed za wysokim/niskim napięciem wejściowym Vin w stosunku do napięcia zasilania Vcc. Utrzy-
mują one wszystkie sygnały wejściowe w zakresie napięć od GND-Vdr do Vcc+Vdr. Katoda górnej diody zabezpiecza-
jącej jest połączona z plusem napięcia zasilania Vcc, a jej anoda do sygnału wejściowego Vin. Z kolei katoda dolnej
diody zabezpieczającej jest połączona z sygnałem wejściowym Vin, a jej anoda z masą zasilania (GND). Podanie na-
pięcia Vin o wartości wyższej niż Vcc+Vdr, spowoduje przepływ prądu przez górną diodę zabezpieczającą do plusa
zasilania, a w rezultacie zmniejszenie napięcia Vin do wartości Vcc+Vdr. Z kolei podanie napięcia Vin o wartości
niższej niż GND-Vdr, spowoduje przepływ prądu przez dolną diodę zabezpieczającą do masy zasilania, a w rezultacie
zmniejszenie napięcia Vin do wartości GND-Vdr.
Jedynym ograniczeniem jest maksymalny prąd wejściowy Iin płynący przez diody zabezpieczające (clamping current),
który wynosi 200mA. Większy prąd spowoduje uszkodzenie diody zabezpieczającej. Prąd ten jest ograniczany przez
rezystor R1 o wartości 100 omów (większa rezystancja znacznie zmniejsza czułość wzmacniacza). Podobne diody
zabezpieczające znajdują się na pinach mikrokontrolera U1 (Vdr = 0.5V, Iin = 1mA) oraz na wejściach CP/MR licznika
U2 (Vdr = 0.5V, Iin = 20mA).
Jeśli nie potrzebujemy takiego zabezpieczenia, to nie trzeba montować diod D2-D3, a zamiast rezystora R1 wlutować
zworkę. Kondensator C1 o dużej pojemności eliminuje składową stałą z sygnału wejściowego Fin oraz przepuszcza
niskie częstotliwości (poniżej 10Hz).
Wzmacniacz wejściowy jest zbudowany na tranzystorze T1 (BF199), który pracuje w konfiguracji ze wspólnym emite-
rem i kolektorowym sprzężeniem zwrotnym (zapewnia duże wzmocnienie i odwraca fazę sygnału). Dławik L1 poprawia
działanie wzmacniacza przy wysokich częstotliwościach Fin. Napięcie spoczynkowe Vce na kolektorze tranzystora T1,
zależy od jego wzmocnienia prądowego (hfe) oraz wartości rezystorów R3-R4 i musi wynosić ok. 2.4V (im wyższa jest
mierzona częstotliwość Fin, tym niższe staje się to napięcie). Można je zmierzyć przy całkowicie rozwartej zworce J1
(jest dostępne na jej pinie 1) i przy braku sygnału Fin (zwarte wejście CON3). Do ustawienia dokładnej wartości napię-
cia Vce służy wieloobrotowy potencjometr P2. Wzmacniacz podnosi napięcie wejściowe Vin 0.2-0.3V p-p (wartość
międzyszczytowa peak-to-peak) do poziomu ok. 3V p-p, które z kolektora T1 przez rezystor R5 trafia na wejście taktu-
jące CP licznika U2. Licznik 74HC393 jest wykonany w technologii CMOS i wartości napięć odpowiadające progom
wykrywanych przez niego stanów logicznych, są bezpośrednio zależne od jego napięcia zasilania Vcc. Według noty
katalogowej, maksymalne wejściowe napięcie niskiego stanu logicznego (VILmax) wynosi 0.5/1.35/1.8V, a minimalne
wejściowe napięcie wysokiego stanu logicznego (VIHmin) wynosi 1.5/3.15/4.2V - przy Vcc = 2.0/4.5/6.0V. Wartości te
odpowiadają ogólnym zależnościom, które dotyczą poziomu stanów logicznych układów CMOS: VILmax = 0.3*Vcc,
VIHmin = 0.7*Vcc. Układ 74HC393 prawidłowo wykryje niski stan logiczny VILmax = 1.425-1.575V w całym zakresie
napięcia zasilania Vcc = 4.75-5.25V. Natomiast przy wykrywaniu wysokiego stanu logicznego, należy pamiętać że po-
winien on mieć napięcie VIHmin = 3.325-3.675V. Dlatego bardzo ważne jest ustawienie odpowiedniej wartości napi-
ęcia spoczynkowego Vce na kolektorze T1, aby licznik U2 szybko i prawidłowo wykrywał zmiany stanów logicznych na
swoim wejściu taktującym CP. Korzystniejsze pod tym względem wydaje się (nie sprawdzałem tego w praktyce), uży-
cie szybkiego licznika w wersji TTL (trudno dostępny 74F393), który wykrywa niski stan logiczny przy VILmax = 0.8V,
a wysoki już przy VIHmin = 2.0V.
Mikrokontroler może zatrzymać zliczanie opadających zboczy sygnału Fin, ustawiając wysoki stan logiczny na pinie
PB2 (BL), który przez diodę D4 trafia na wejście CP licznika U2 i wymusza na nim taki sam stan. Jeśli wejście CON3
nie jest podłączone do żadnego źródła sygnału Fin, to na wyświetlaczu mogą pojawiać się dziwne/przypadkowe war-
tości częstotliwości. Jest to normalne zjawisko, które wynika z dużej czułości wzmacniacza wejściowego.
Podobny wzmacniacz wejściowy znajduje się w popularnym mierniku częstotliwości, opartym o mikrokontroler PIC16-
F84 lub PIC16F628. Według pomiarów wykonanych przez jego użytkowników, mierzy on częstotliwość Fmax do ok.
60 MHz. Wzmocniony sygnał Fin trafia na pin RA4/T0CKI mikrokontrolera PIC, który podobnie jak wejście CP licznika
U2 pracuje w standardzie CMOS.
Modelowy miernik poprawnie mierzył częstotliwość Fmax do 57.8 MHz z wejścia CON3. Przy wyższych częstotliwoś-
ciach wskazanie było coraz bardziej zaniżone (np. przy 59 MHz wynosiło 58.99 MHz, a przy 60 MHz 59.76 MHz). Syg-
nał testowy pochodził z analizatora antenowego NanoVNA-F V2 (nie znam jego amplitudy). Mierzyłem również sygnał
testowy do 50 MHz, pochodzący z różnych oscylatorów kwarcowych po przejściu przez 2 inwertery Schmitta 74HC14
(amplituda TTL 5V).
Teoretycznie sygnał cyfrowy Fin o odpowiednio dużej amplitudzie (np. 3.3 lub 5V) można podać z pominięciem wzma-
cniacza wejściowego, bezpośrednio na pin 2 lub 4 zworki J1 (musi być całkowicie rozwarta). Wtedy sygnał Fin przez
rezystor R5 trafia na wejście taktujące CP licznika U2.
Zamiast tranzystora BF199 (F199) można użyć BF959 (F959). Można też wykorzystać tranzystor 2SC3355 (C3355)
lub MPSH10, ale ma on odwrócone rozmieszczenie wyprowadzeń więc trzeba go wlutować w pozycji obróconej
o 180 stopni. Zamiast diod 1N4148 można użyć BAW62. Jeśli nie będziemy korzystać z pomiaru częstotliwości Fin,
to można nie montować elementów: R2, R3, R4, P2, L1, C9, D2, D3, T1 oraz CON3.


3. Tester rezonatorów

Do testowania rezonatorów kwarcowych/ceramicznych o częstotliwości 1-40 MHz, służy oscylator Colpitts'a zbudo-
wany na tranzystorze T2 (BF199). Wartości elementów zostały tak dobrane, aby wszystkie rodzaje rezonatorów wzbu-
dzały się na swojej częstotliwości podstawowej. Dodatkowy stopień separujący (bufor) na tranzystorze T3 (BC547),
który pracuje w konfiguracji ze wspólnym kolektorem jako wtórnik napięciowy, zwiększa stabilność samego oscylatora.
Sygnał wyjściowy Fres z emitera T3 przez rezystor R5 trafia na wejście taktujące CP licznika U2. Mikrokontroler może
zatrzymać zliczanie opadających zboczy sygnału Fres, ustawiając wysoki stan logiczny na pinie PB2 (BL), który przez
diodę D4 trafia na wejście CP licznika U2 i wymusza na nim taki sam stan.
Testowany rezonator wkłada się do precyzyjnych pinów złącza CON4, a jego częstotliwość oscylacji powinna pojawić
się na wyświetlaczu. Bez podłączonego rezonatora (puste złącze CON4) wyświetlacz powinien pokazywać zerową
wartość częstotliwości "0.000000 MHz". Jeśli po włożeniu rezonatora wartość na wyświetlaczu jest nadal zerowa lub
dziwna/przypadkowa, to oznacza że dany rezonator nie wzbudza się, bo jego częstotliwość podstawowa jest za niska/
wysoka lub jest uszkodzony. Wyświetlana częstotliwość oscylacji testowanych rezonatorów jest orientacyjna (dokład-
ność do 2 miejsc po kropce) i może służyć jedynie do określenia ich sprawności.
W modelowym mierniku sprawdziłem następujące rezonatory kwarcowe (metalowe obudowy): 1.8432 [zwykle 5.1746],
2, 2.097152 [zwykle 6.1722], 3.5625, 3.579545, 3.581, 3.6864, 4, 4.096, 4.194304, 4.332, 4.433619, 4.453125, 4.5,
5, 5.12, 6, 6.5, 6.63 [6.57], 6.9375, 7.15909, 7.86432, 8, 8.6436, 8.867238, 10, 10.24, 11, 12, 13.875, 14.31818, 14.7,
15, 16, 16.257, 16.934, 17.734475, 18, 18.432, 20, 20.25, 22, 22.5, 24, 24.576, 25, 26.601712, 27 [zwykle 9], 28.2,
28.8, 29.4989, 32 [10.67], 33.868, 36 [12], 38.8962 [12.96], 40 [13.33], 55.5 [18.5], ceramiczne (2-pinowe): 3, 4, 6, 8,
9, 12, 16.93, 18, 20.48, 25, 33.8 [33.95], 33.86 [10.02-12.17] oraz ceramiczne (3-pinowe, pin środkowy włożony do
pinu 3 złącza CON4, czyli niepodłączony): 4, 4.16 [12.71], 4.19, 5.74, 6, 6.5, 10, 10.52, 10.7, 16, 16.93 [krótko 8.45,
później spada], 20, 24.8.
W nawiasie kwadratowym podano inną niż spodziewana, wartość pomiaru częstotliwości z oscylatora. Rezonatory
1.8432 i 2.097152 MHz w modelowym oscylatorze zwykle generują potrojoną częstotliwość podstawową (f*3). Po
zbadaniu rezonatora 6.63 MHz analizatorem NanoVNA okazało się, że jego rzeczywista częstotliwość to 6.57 MHz.
Rezonatory 27, 32, 36, 38.8962, 40 i 55.5 MHz działają generując trzecią częstotliwość harmoniczną (f/3). Zdarzają
się również rezonatory 27 MHz generujące dokładnie taką częstotliwość. Najniższa zmierzona częstotliwość Fres
z oscylatora wynosiła 1.84 MHz, a najwyższa 33.86 MHz. Przetestowałem łącznie 466 egzemplarzy rezonatorów
kwarcowych/ceramicznych (większość o częstotliwości 14.31818 i 25 MHz). Na taką liczbę sztuk znalazłem tylko
1 uszkodzony rezonator kwarcowy.
Zamiast tranzystora BF199 (F199) można użyć BF959 (F959). Jeśli nie będziemy korzystać z testera rezonatorów,
to można nie montować elementów: R6, R7, R8, R9, C10, C11, T2, T3 oraz CON4.


4. Uruchomienie

Pierwszym krokiem jest ustawienie odpowiedniej wartości napięcia spoczynkowego Vce na kolektorze tranzystora
T1. W tym celu, należy zewrzeć do masy wejście CON3 (założyć zworkę), całkowicie rozewrzeć zworkę J1 i potencjo-
metrem P2 ustawić napięcie Vce o wartości ok. 2.4V (jest ono dostępne na pinie 1 zworki J1).
Następnie wkładamy mikrokontroler w podstawkę i programujemy go dołączonym wsadem przez złącze ISP (CON6).
Konieczne jest również ustawienie odpowiednich wartości fuse i lock bitów: FL (Fuse Low) = $F7, FH (Fuse High) =
$DF ($D9 dla ATmega328), FE (Fuse Extended) = $F9 ($FF dla ATmega48/328), LB (Lock Bits) = $FF. Dodatkowo
można ustawić wartość fuse bitu CKOUT=0 (Fuse Low = $B7), co spowoduje generowanie częstotliwości CLK taktu-
jącej mikrokontroler na pinie PB0 (CLKO). Dzięki temu miernik będzie mógł zmierzyć swoją własną częstotliwość ba-
zową, która powinna wynosić dokładnie 4.000000 MHz. Nie jest to rzeczywista wartość częstotliwości CLK taktującej
mikrokontroler, a jedynie liczba cykli zegarowych trwania pomiaru (1000000) pomnożona przez 4. Po zaprogramowa-
niu mikrokontrolera odłączamy programator, podłączamy wyświetlacz LCD do złącza CON5, włączamy zasilanie i po-
tencjometrem P1 ustawiamy odpowiedni kontrast wyświetlacza LCD tak, aby znaki były dobrze widoczne. Ponieważ
złącze ISP znajduje się pod wyświetlaczem, musi on być odłączany przy każdym programowaniu.
Miernik można zasilać napięciem stałym DC=7-12V przez złącze CON2 (DC-Jack, plus w środku wtyczki) lub CON1
(goldpin) z zasilacza lub z baterii/akumulatorów, ale nie z tych dwóch źródeł jednocześnie. Dioda D1 zabezpiecza
przed odwrotną polaryzacją napięcia zasilania (występuje na niej spadek 300mV przy prądzie do 100mA). Modelowy
miernik z niebieskim wyświetlaczem LCD z podświetleniem przy napięciu DC=9V, pobierał prąd ok. 46mA w stanie
spoczynku (bez wyświetlacza ok. 30mA).
Zmontowałem go na płytce jednostronnej o wymiarach 82x70mm (1 zworka), wykonanej metodą transferu chemiczne-
go. W rogach płytki znajdują się cztery otwory montażowe o średnicy 3mm, dzięki którym miernik można przykręcić
do obudowy lub zamontować w nich jakieś nóżki w przypadku jej braku. Dwa dodatkowe otwory 3mm na środku płytki
służą do przymocowania tulejek dystansowych (wysokość 11-12mm), do których można przykręcić wyświetlacz LCD.


5. Zasada pomiaru

Pomiar częstotliwości Fin sygnału wejściowego, odbywa się na zasadzie bezpośredniego zliczania (direct counting)
jego opadających zboczy w ciągu określonego czasu wynoszącego 0.25s. Jest to realizowane całkowicie sprzętowo
za pomocą liczników bez używania przerwań mikrokontrolera, które wprowadzałyby niedokładności w odmierzaniu
precyzyjnego i stałego czasu trwania każdego pomiaru. Do zliczania opadających zboczy sygnału wejściowego służy
25-bitowy licznik/dzielnik binarny, zbudowany z zewnętrznego szybkiego 8-bitowego licznika 74HC393, połączonego
kaskadowo z wewnętrznym 16-bitowym licznikiem TC1 (pin PD5/T1) mikrokontrolera. Flaga TOV1 (bit 0 w rejestrze
TIFR1) sygnalizuje przepełnienie licznika TC1 i dzięki temu stanowi jego 17-bit. Pin PB1 (MR) mikrokontrolera służy
do zerowania wyjść licznika 74HC393, a pin PB2 (BL) do jego zatrzymania (blokowanie zliczania opadających zbo-
czy) przez wymuszenie ciągłego, wysokiego stanu logicznego na jego wejściu taktującym (CP). Wyjścia licznika 74-
HC393 są podłączone do portu D mikrokontrolera, co umożliwia odczyt jego wartości po zakończeniu pomiaru.
W odczytanej wartości licznika 74HC393 trzeba zamienić miejscami bity 5 i 7 (pin PD7 jest podłączony do bitu 5,
a pin PD5/T1 do najstarszego bitu 7 licznika 74HC393). Z ostatniego wyjścia (najstarszy bit 7) licznika 74HC393,
częstotliwość Fin/256 trafia na wejście licznika TC1 (pin PD5/T1) mikrokontrolera, co stanowi połączenie kaskado-
we obu liczników.
Pojemność 25-bitowego licznika wynosi 33554431 ($01FFFFFF) i taką maksymalną częstotliwość Fin wyrażoną
w Hz, można mierzyć przy czasie pomiaru Tm = 1s z rozdzielczością 1Hz. Jeśli zmniejszymy czas pomiaru o połowę,
to liczba zliczonych opadających zboczy sygnału również zmniejszy się o połowę, a więc przy takiej samej pojemności
licznika, będzie można mierzyć 2x wyższą częstotliwość Fin. Niestety równocześnie 2x zmniejszy się rozdzielczość
pomiaru, bo wynik trzeba pomnożyć przez 2 aby otrzymać rzeczywistą wartość, odpowiadającą zmierzonej częstotli-
wości Fin. Przy czasie pomiaru Tm = 0.25s i 25-bitowym liczniku można mierzyć maksymalną częstotliwość Fin o wa-
rtości ok. 134.217 MHz (przy użyciu układu w wersji szybszej niż 74HC393) z rozdzielczością 4Hz. Pomiar wyższej
częstotliwości Fin spowoduje, że licznik TC1 przepełni się drugi raz i wynik nie będzie prawidłowy.
Wynika z tego, że maksymalna częstotliwość na wejściu licznika TC1 (pin PD5/T1) mikrokontrolera będzie wynosić
ok. 524 kHz (134.217 MHz / 256). Jest to istotne, gdyż maksymalna częstotliwość zliczania symetrycznego sygnału
wejściowego (wypełnienie 50%) przez licznik TC1 wynosi poniżej CLK/2.5. Przy CLK = 4 MHz licznik TC1 może pra-
widłowo zliczać sygnał o częstotliwości poniżej 1.6 MHz. Dzieje się tak dlatego, że licznik TC1 działa synchronicznie
z zegarem taktującym CLK mikrokontroler. Układ synchronizacji i detekcji zbocza sygnału na wejściu licznika TC1
(pin PD5/T1), wprowadza opóźnienie wynoszące 2.5-3.5 cykli zegarowych CLK mikrokontrolera (od podania zbocza
na wejście licznika do zmiany jego wartości). Dlatego po zatrzymaniu zliczania, należy czekać 4 cykle zegarowe na
aktualizację wartości licznika TC1 i jego flagi przepełnienia TOV1 przed ich odczytem.
Dokładność pomiaru częstotliwości Fin, zależy głównie od wartości i stabilności częstotliwości CLK = 4 MHz rezona-
tora kwarcowego X1, który jest źródłem sygnału zegarowego taktującego pracę mikrokontrolera i służącego do precy-
zyjnego odmierzania stałego czasu trwania każdego pomiaru Tm = 0.25s. Przy idealnej częstotliwości CLK = 4 MHz
w ciągu 1s mikrokontroler wykonuje 4000000 cykli zegarowych, każdy o czasie trwania 250ns (1/CLK). Aby uzyskać
czas pomiaru Tm = 0.25s program używa pętli opóźniającej, zajmującej dokładnie 1000000 cykli zegarowych (Tm =
1/CLK*1000000), od momentu po wykonaniu instrukcji włączającej licznik (BL=0, MR=0) do momentu po wykonaniu
instrukcji zatrzymującej licznik (BL=1, MR=0). W tym czasie opadające zbocza sygnału wejściowego Fin, są zliczane
całkowicie sprzętowo bez używania przerwań mikrokontrolera (np. po przepełnieniu licznika TC1), których wykonywa-
nie wydłużyłoby czasu pomiaru. Maksymalny błąd zliczania tą metodą wynosi +/- 1 opadające zbocze (4Hz), w zależ-
ności od fazy (stanu logicznego) sygnału wejściowego Fin w momencie włączenia licznika.
Jeśli wartość częstotliwości CLK jest wyższa/niższa od idealnej (4 MHz), to pojawia się dodatkowy błąd zliczania
Cerr związany ze skróceniem/wydłużeniem czasu pomiaru Tm. Błąd ten zwiększa się wraz ze wzrostem mierzonej
częstotliwości Fin i można go obliczyć za pomocą poniższego skryptu języka VBS (Visual Basic Script) systemu
Windows.
'Obliczanie błędu zliczania miernika częstotliwości

Fin = 100000000 'mierzona częstotliwość wejściowa [Hz]
CLK = 4000000 'idealna częstotliwość bazowa miernika [Hz]
Ferr = 1000 'odchyłka częstotliwości CLK [Hz]

Tm = 1/CLK*1000000 'idealny czas pomiaru [s]
Terr = 1/(CLK+Ferr)*1000000 'czas pomiaru z odchyłką [s]
Cerr = Fin*Tm - Fin*Terr 'błąd zliczania (+/- zboczy)

msgbox "Cerr = "&Cerr&" [edges]"&chr(10)&"Cerr = "&Cerr*4&" [Hz]",64,"Frequency meter counting error"
Przykład: przy CLK = 4 MHz i Fin = 100 MHz (Tm = 0.25s) wynik zliczania Cn = Fin*Tm = 25000000 zboczy, a więc
wskazanie miernika to Cn*4 = 100000000 (100 MHz). Jeśli CLK = 4.001 MHz (Tm = 0.24993751s), to wynik zliczania
Cn = 24993751, a wskazanie 99975004 (99.975 MHz). Jeśli CLK = 3.999 MHz (Tm = 0.25006251s), to wynik zlicza-
nia Cn = 25006251, a wskazanie 100025004 (100.025 MHz). Jak łatwo zauważyć, przy częstotliwości wejściowej Fin
= 100 MHz i zmianie częstotliwości CLK o 1 kHz, błąd pomiaru i wskazania miernika wynosi +/- 25 kHz. Oczywiście
powyższe obliczenia są teoretyczne, bo zakładają idealne i stałe wartości częstotliwości CLK i Fin.
Wartość częstotliwości CLK, zależy od konkretnego egzemplarza rezonatora i zmienia się wraz z temperaturą (stabil-
ność to zwykle 20-50ppm/C). Wskazania miernika można by korygować w pewnych granicach, montując zamiast jed-
nego ze stałych kondensatorów C7/C8 dołączonych do rezonatora, kondensator nastawny (trymer) o małej pojemno-
ści (33-47pF), którego wartość wpływa na częstotliwość oscylacji rezonatora. Można by również wprowadzić progra-
mową kalibrację wskazań miernika przez ustawianie i zapisywanie w pamięci EEPROM wartości, która jest dodawa-
na/odejmowana do/od wyniku pomiaru. Zrezygnowałem z obu tych rozwiązań, bo w praktyce nie potrzebowałem tak
dużej dokładności wskazań.

SPIS ELEMENTÓW:

Rezystory:
R1 - 10k
R2 - 100
R3 - 4.7k
R4, R5 - 220
R6 - 100k
R7 - 2.2k
R8, R9 - 470

Kondensatory:
C1 - 10u/16V
C2 - 100n/16V
C3-C5 - 100n
C6 - 10u/10V
C7, C8 - 22p
C9 - 100u/10V
C10 - 100p
C11 - 33p

Cewki:
L1 - 10uH (dławik)
Potencjometry:
P1 - 10k (stojący)
P2 - 20k (Helitrim)

Diody:
D1 - 1N5817
D2-D4 - 1N4148

Tranzystory:
T1, T2 - BF199
T3 - BC547

Rezonatory:
X1 - kwarcowy 4 MHz (niski)

Układy scalone:
U1 - ATmega48/88/168/328
U2 - 74HC393
U3 - LM1117-5.0
Przełączniki:
S1 - 2 pozycje, 1 sekcja (ON/OFF)

Złącza:
CON1, CON3, S1 - goldpin 2x1 (męskie)
CON2 - gniazdo zasilania DC-Jack
CON4 - precyzyjne SIP5 (żeńskie)
CON5 - goldpin 16x1 (żeńskie), wysokość 8-9mm nad PCB
CON6 - goldpin 3x2 (męskie)
J1 - goldpin 2x2 (męskie)

Inne:
U1 - podstawka DIP28 zwykła (wąska)
U2 - podstawka DIP14 zwykła (wąska)
CON5 - wyświetlacz LCD 2x16 znaków z przylutowaną listwą
              kołkową goldpin 16x1, o wysokości 9mm nad PCB.
2x tuleja dystansowa z gwintem wewnętrznym M2-M3,
     wysokość 11-12mm nad PCB.
4x śruba M2-M3, długość gwintu 4-6mm
J1 - zworka 2x1