24
E l e k t r o n i k a d l a W s z y s t k i c h
Chciałbym zaproponować Czytelnikom Elek−
troniki dla Wszystkich budowę jednego z naj−
bardziej użytecznych przyrządów laboratoryj−
nych: miernika częstotliwości. Nie ma chyba
wśród Was nikogo, kto chciałby podać w wąt−
pliwość celowość konstruowania takiego
urządzenia. Przez określenie "miernik często−
tliwości" rozumiemy przecież nie tylko przy−
rząd badający częstotliwość jakiegoś przebie−
gu, ale także urządzenie mierzące inne warto−
ści, takie jak liczby zarejestrowanych impul−
sów czy też czas trwania pojedynczego im−
pulsu. Schemat elektryczny miernika często−
tliwości o zakresie pomiarowym 1Hz ...
100MHz został pokazany poniżej na rysun−
kach 1 i 2. Jak łatwo zauważyć, układ jest
stosunkowo prosty i zawiera nie więcej niż ...
36 układów scalonych. Jest to konstrukcja
z zamierzchłej epoki: sprzed ponad ośmiu lat.
Wspomniany miernik wykonany był w set−
kach egzemplarzy, był także tematem niejed−
nej pracy dyplomowej. Po co zatem wspomi−
nam tego dinozaura? Po to, aby w dobitny
sposób ukazać Wam, jakie możliwości kryje
w sobie technika mikroprocesorowa. Na ry−
sunku 3 został pokazany schemat miernika,
z którego budową zapoznamy się za chwilę.
Został on zbudowany z wykorzystaniem
w zasadzie tylko jednego układu scalonego,
o którym warto wspominać: mikroprocesora
RISC najnowszej generacji typu AT90S2313.
Miernik wykonany z wykorzystaniem tylko
tego układu dysponowałby zakresem pomia−
rowym do ... 5MHz! W większości przypad−
ków hobbyści uznaliby taki zakres za zupeł−
nie wystarczający, ale postanowiłem jednak
skonstruować urządzenie w niczym nie ustę−
pujące swojemu poprzednikowi i dodałem do
układu banalnie prosty preskaler, zrealizowa−
ny na dwóch tanich układach TTL. Preskaler
ten rozszerza zakres pomiarowy miernika
właśnie do "magicznych" 100MHz.
A zatem widzimy już pierwszą i chyba
najważniejszą korzyść z zastosowania do bu−
dowy miernika nowoczesnego mikroproceso−
ra. Zamieniliśmy 36 układów scalonych na
trzy, no powiedzmy na pięć, jeżeli doliczymy
jeszcze stabilizator napięcia (zbędny, jeżeli do
zasilania miernika wykorzystamy zewnętrzny
zasilacz stabilizowany +5VDC) i trzynóżko−
wy układzik resetu. Nie jest to jednak jedyna
korzyść, jaką wyciągnęliśmy z zamiany sterty
archaicznych TTL−i na nowoczesny procesor.
Nie będę Wam pokazywał rysunków płytek
obwodów drukowanych do protoplasty na−
szego miernika mikroprocesorowego, a to
z prostego powodu: ich rysunki zajęłyby ze
dwie strony naszego pisma! Popatrzcie teraz
na rysunek przedstawiający płytkę obwodu
drukowanego miernika mikroprocesorowego.
Płytka swobodnie mieści się na dłoni, wyko−
nana jest na tanim laminacie jednostronnym.
Nie znęcajmy się nad pokonanym i tym ra−
zem także nie porównujmy kosztów wykona−
nia PCB do obydwóch urządzeń!
Napisałem, że zakres pomiarowy obydwu
przyrządów jest jednakowy. Jest to prawda,
ale nie cała prawda. W pamięci procesora na−
szego nowego miernika zawarty jest program,
realizujący także inne funkcje, nie tylko pro−
sty pomiar częstotliwości. W miernikach star−
szego typu zakresy pomiarowe trzeba było
przełączać najczęściej ręcznie. W nowym
układzie procesor sam ocenia, na jakim
z dwóch zakresów ma pracować, a wybór sy−
gnalizuje odpowiednim napisem na wyświe−
tlaczu LCD. Nowy przyrząd może służyć tak−
że jako licznik zdarzeń o imponującym zakre−
sie: do 2 147 483 646 impulsów!
W "dziadku" naszego miernika do obrazo−
wania wyników pomiaru zastosowane były
wyświetlacze siedmiosegmentowe LED.
W nowej konstrukcji zdecydowałem się na
użycie taniego wyświetlacza alfanumerycz−
nego LCD. Korzyści płynące z tej decyzji
także są ogromne. Nie będę nawet rozwodził
się nad nieporównywalnie mniejszym zuży−
ciu energii i o tym, że nasz przyrząd może
być zasilany nawet z ba−
terii. Najistotniejszą zale−
tą wyświetlacza LCD za−
stosowanego w każdym
przyrządzie pomiarowym
jest to, że można na nim
ukazywać nie tylko cyfry,
ale i dowolne inne znaki.
Na szesnastopozycyjnym
polu odczytowym zmie−
ści się nie tylko wynik
pomiaru, ale i stosowny
komentarz, informujący
np. czy odczyt dokony−
wany jest w hercach czy
kilohercach.
Zanim przejdziemy do
szczegółowego opisu pro−
ponowanego
układu,
★★
★★
★★
Rys. 2
Rys. 1
µµ
µµ
P
P
P
P
−
−
3
3
3
3
0
0
0
0
0
0
0
0
3
3
3
3
M
M
M
M
ii
ii
k
k
k
k
rr
rr
o
o
o
o
p
p
p
p
rr
rr
o
o
o
o
c
c
c
c
e
e
e
e
ss
ss
o
o
o
o
rr
rr
o
o
o
o
w
w
w
w
yy
yy
m
m
m
m
ii
ii
e
e
e
e
rr
rr
n
n
n
n
ii
ii
k
k
k
k
c
c
c
c
zz
zz
ę
ę
ę
ę
ss
ss
tt
tt
o
o
o
o
tt
tt
ll
ll
ii
ii
w
w
w
w
o
o
o
o
śś
śś
c
c
c
c
ii
ii
1
1
1
1
0
0
0
0
0
0
0
0
M
M
M
M
H
H
H
H
zz
zz
chciałbym wspomnieć jeszcze o jednej, bar−
dzo ważnej sprawie. Układ miernika często−
tliwości jest z jednej strony gotowym, wyma−
gającym jedynie nieskomplikowanego mon−
tażu urządzeniem. Można go zbudować
w ciągu krótkiego czasu, włożyć w podstaw−
kę zakupiony procesor z zaszytym w nim pro−
gramem i spokojnie przystąpić do eksploata−
cji własnoręcznie wykonanego miernika. Mo−
żemy jednak spojrzeć na proponowaną kon−
strukcję z innej strony i potraktować ją jako
tworzywo, glinę, z której dopiero ulepimy po−
trzebne nam urządzenie. Wiemy już sporo
o programowaniu procesorów '51, a jak mo−
żecie sie przekonać, programowanie układów
AVR z poziomu pakietu BASCOM AVR
praktycznie nie różni się od programowania
"pięćdziesiątek jedynek". Jeszcze kilka
wskazówek dla tych Czytelników, którzy ze−
chcieliby wykonać opisany w tym artykule
przyrząd. Macie następujace możliwości:
1. Zakupić płytkę obwodu drukowanego
i zaprogramowany procesor. Jest to metoda
najprostsza, ale także najkosztowniejsza.
2. Zakupić tylko płytkę i zaprogramować
procesor programem, którego kod źródłowy
zostanie opublikowany w Inernecie.
3. Zaprogramować procesor samodzielnie
napisanym programem lub przerobionym
programem "fabrycznym".
W pierwszym przypadku nie napotkamy
na najmniejsze trudności podczas pracy i po
najdalej kilku godzinach staniemy się posia−
daczami niezłej klasy miernika częstotliwo−
ści. Natomiast podczas samodzielnego pro−
gramowania procesora napotkamy na pewien,
dość trudny do przezwyciężenia problem.
Wersja DEMO pakietu BASCOM AVR po−
siada ograniczenie kodu wynikowego do 1kB
i program napisany, co całkowicie uniemożli−
wia zaprogramowania procesora napisanym
przeze mnie programem. Prowadzę wpraw−
dzie w tej chwili roz−
mowy z firmą MCS
Electronics w sprawie
udostępnienia Czytel−
nikom EP i EdW roz−
szerzonej wersji De−
mo
pakietu
BA−
SCOM AVR, której
możliwości
będą
podobne do możliwo−
ści BASCOM−a SE−
fEP. Nie mogę jednak
w tej chwili obiecać
Wam niczego kon−
kretnego i zanim nie
ukaże się nowa wersja
BASCOM−a
AVR,
macie do dyspozycji
następujace sposoby
rozwiązania problemu
długiego kodu wyni−
kowego:
1.
Rozwiązanie
optymalne: zakupie−
nie pełnej wersji BASCOM−a AVR, która nie
posiada żadnych ograniczeń i umożliwia pro−
gramowanie nawet procesorów AT MEGA
z 128kB pamięci programu.
Rozwiązanie "rozpaczliwe": spróbować
przerobić program tak, aby zajął nie więcej
niż 1024B pamięci EEPROM procesora.
Można np. spróbować zrezygnować z układu
automatyki lub uprościć niektóre procedury.
Kod źródłowy napisanego przeze mnie
programu zostanie podany do wiadomości pu−
blicznej i pomimo że wcale nie uważam się za
bardzo dobrego programistę, może stanowić
bazę do stworzenia Waszych własnych progra−
mów. Nic za tym nie stoi na przeszkodzie, aby
w dowolny sposób modernizować układ mier−
nika, dostosowując go do swoich potrzeb. Ma−
cie tu ogromne pole do popisu: dysponując
hardware możecie do niego dorabiać praktycz−
nie dowolny software, a granicą takich poczy−
nań może być tylko Wasza wyobraźnia. Reasu−
mując: program obsługujący nasz miernik bę−
dziecie mogli dowolnie zmieniać, modyfiko−
wać lub napisać własny posłu−
gując się wyłącznie darmo−
wym oprogramowaniem i ba−
nalnie prostym i tanim sprzę−
tem. Równie dobrze możecie
także po prostu włożyć zapro−
gramowany "fabrycznie" pro−
cesor w podstawkę i po prostu
korzystać z wykonanego przy−
rządu.
Opis układu
Schemat elektryczny miernika częstotliwo−
ści, długości impulsu i licznika zdarzeń został
pokazany na rysunku 3. Sercem układu jest
zaprogramowany procesor typu AT90S2313,
nowoczesny chip o architekturze RISC, o bar−
dzo dużej szybkości pracy. Z pewnością już
zauważyliście, że układ ten jest "pinowym"
odpowiednikiem dobrze Wam znanego proce−
sora AT89C2051. Co więc spowodowało, że
do budowy miernika zastosowałem ten wła−
śnie układ, a nie '2051? Powodem tej decyzji
jest znacznie większa szybkość pracy proce−
sorów AVR. Wprawdzie maksymalna często−
tliwość rezonatora kwarcowego, jaki możemy
dołączyć do AVR−a wynosi tylko 10MHz
(czyli trzykrotnie mniej niż do '51), ale
w procesorach AVR częstotliwość wewnętrz−
nego oscylatora nie jest, tak jak w '51 dzielo−
na przez 12. Tak więc procesor z kwarcem 10
MHz pracuje co najmniej czterokrotnie szyb−
ciej niż „pięćdziesiątka jedynka“ z kwarcem
30MHz! Calowo napisałam "co najmniej" po−
nieważ w rzeczywistości szybkość pracy
AVR−a jest znacznie większa, ponieważ
większość instrukcji wykonywanych jest
w nim w jednym cyklu maszynowym.
Nie będziemy tu wnikać w szczegóły bu−
dowy procesora '2313. Podam Wam tylko je−
go najważniejsze dane techniczne:
Badany przebieg podawany jest na wej−
ście CON1. Ze względu na zastosowanie
tranzystora wejściowego T1, amplituda tego
przebiegu może mieścić się w standarcie
TTL i może być od niego zarówno mniejsza,
jak i większa. Impulsy prostokątne podawane
na wejście miernika kierowane są do dwóch
25
E l e k t r o n i k a d l a W s z y s t k i c h
Napięcie zasilania (wersja 4)
2,7 ... 6VDC
N
Na
ap
piię
ęc
ciie
e zza
as
siilla
an
niia
a ((w
we
errs
sjja
a 1
10
0))
4
4 ...... 6
6V
VD
DC
C
Częstotliwość zegara systemowego (wersja 4)
0 ... 4MHz
C
Czzę
ęs
stto
ottlliiw
wo
oś
ść
ć zze
eg
ga
arra
a s
sy
ys
stte
em
mo
ow
we
eg
go
o ((w
we
errs
sjja
a 1
10
0))
0
0 ...... 1
10
0M
MH
Hzz
Pobór prądu przy 4 MHz
2,8mA
2kB pamięci EEPROM programu
128B pamięci danych
128B nieulotnej pamięci danych EEPROM
Jeden 8 bitowy timer z preskalerem
Jeden 16 bitowy timer z preskalerem
Programowany Watchdog z preskalerem
Wbudowany interfejs SPI do programowania układu w uruchamianym systemie
Rys. 3
punktów układu: do przełącznika zbudowa−
nego "po bożemu" na szybkich bramkach
NAND TTLS − IC3 i na wejście wstępnego
dzielnika częstotliwości − preskalera zbudo−
wanego także tradycyjnymi metodami:
z dwóch szybkich przerzutników D typu 74.
Przełącznik zbudowany na bramkach NAND
sterowany jest z wyjścia PD.6 procesora. Je−
żeli na tym wyjściu utrzymuje się stan niski,
to do wejścia PD5(T1) procesora dociera
przebieg pobierany bezpośrednio z wejścia
CON1. Przy stanie wysokim na wyjściu ste−
rującym pracą przełącznika częstotliwość
wejściowa przed skierowaniem jej na wejście
PD5(T0) procesora ulega podziałowi w pre−
skalerze.
Zastanówmy się teraz, jaki sens ma stoso−
wanie przełącznika i alternatywne dzielnie
badanej częstotliwości. Timery − liczniki pro−
cesora '2313 pracującego z oscylatorem
o częstotliwości 10MHz są w stanie zliczać
przebiegi zewnętrzne o maksymalnej często−
tliwości 5MHz. Wynika to z następującego
uwarunkowania:
Przy pracy w trybie timera inkrementacja
licznika następuje w każdym kolejnym cyklu
maszynowym, a zatem maksymalna częstotli−
wość zliczania jest równa częstotliwości zega−
rowej mikrokontrolera. W przypadku wyko−
rzystywania układu w trybie licznika, jego za−
wartość jest zwiększana w odpowiedzi na opa−
dające zbocze sygnału wejściowego. Detekcja
zbocza odbywa się jednak synchronicznie
z cyklem pracy mikroprocesora − przez testo−
wanie stanu w odpowiedniej linii wejściowej
w każdym kolejnym cyklu maszynowym. Je−
śli testowanie wykazuje stan wysoki linii
w jednym cyklu maszynowym oraz stan niski
linii w następnym cyklu maszynowym, zawar−
tość licznika jest zwiększana. Tak więc, aby
zagwarantować wykrycie wszystkich impul−
sów, każdy (zarówno niski, jak i wysoki) stan
testowanej linii wejściowej musi trwać co naj−
mniej jeden pełny cykl maszynowy. Skutkiem
tego maksymalna częstotliwość pracy układu
w trybie licznika jest ograniczona do 1/2 czę−
stotliwości zegarowej mikrokontrolera. Warto
tu zwrócić uwagę na fakt, że w przypadku pro−
cesorów '51 ograniczenie to wynosiłoby 1/24
częstotliwości oscylatora mikroprocesora!
Tak więc sens stosowania preskalera jest już
chyba oczywisty: przebiegi o częstotliwości
nieco mniejszej od 5MHz będziemy mierzyć
podając je bezpośrednio na wejście timera pro−
cesora, a przebiegi większe będą ulegać podzia−
łowi przez 16. Dlaczego jednak wybrałem wła−
śnie taki stopień podziału i jak działa preskaler?
Założyłem, że maksymalna częstotliwość mie−
rzona przez nasz przyrząd powinna wynosić
100MHz. Ten wybór nie był przypadkowy, po−
nieważ jest to maksymalna częstotliwość, jaką
możemy wprowadzić na tanie i łatwo dostępne
układy serii TTL−S, bez stosowania stosunko−
wo kosztownych i trudniejszych do zdobycia
preskalerów wykonanych w technologii.
Częstotliwość podawana na wejście pre−
skalera jest wstępnie dzielona przez 4 za po−
mocą dwóch połączonych szeregowo prze−
rzutników typu D, pracujących w układzie
dwójek liczących. Dalszy podział następuje
w liczniku binarnym typu 74LS393 − IC5A.
Ponieważ przebieg pobierany jest w z wyj−
ścia QC tego licznika, częstotliwość wejścio−
wa zostanie ostatecznie podzielona przez 32.
A wiec, zakładając, że na wejście miernika
podana zostanie częstotliwość maksymalna −
100MHz, to na wejście timera procesora
dotrze jedynie 3 125 000Hz, czyli wartość
akceptowana "z zapasem" przez timer.
Zanim przejdziemy do pobieżnej analizy
programu sterującego pracą miernika, wspo−
mnijmy jeszcze o dwóch elementach widocz−
nych na schemacie. Mam tu przede wszyst−
kim na myśli podejrzaną kombinację dołą−
czoną do wejść oscylatora procesora.
Widzimy tam dwa elementy: rezonator kwar−
cowy Q1 i generator oznaczony jako Q1'.
Sprawa jest bardzo prosta: generator Q1' jest
elementem opcjonalnym, mogącym zastąpić
rezonator Q1 w przypadku, kiedy zależeć
nam będzie na szczególnie dokładnych wska−
zaniach naszego przyrządu. Stabilność czę−
stotliwości wytwarzanej przez generator jest
zawsze o rząd wielkości lepsza od generowa−
nej przez wewnętrzny oscylator procesora
stabilizowany typowym kwarcem zewnętrz−
nym. Niestety, cena generatora jest także
o rząd wielkości większa od ceny rezonatora
i dlatego przewidziałem w układzie dwa roz−
wiązania, różniące się nie tylko jakością po−
miarów, ale i ceną wykonania przyrządu.
Ostatnim elementem wartym wzmianki jest
układ IC2 − DS1813. Jest to układ standardowo
stosowany w systemach mikroprocesorowych,
którego zadaniem jest wykonanie resetu sprzę−
towego procesora w przypadku spadku napię−
cia zasilającego poniżej 4,75VDC.
Zajmijmy się teraz fragmentami progra−
mu sterującego pracą miernika. Podawanie
całego listingu nie miałoby sensu, ponieważ
i tak zostanie on opublikowany i w każdej
chwili jest do ściągnięcia ze strony
www.edw.com.pl. Ponadto, każdy z Was
może poprosić o przesłanie mu kodu źródło−
wego tego programu
26
E l e k t r o n i k a d l a W s z y s t k i c h
Wykaz elementów
K
Koonnddeennssaattoorryy
C
C11,, C
C22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..3333ppFF
C
C33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000
µµ
FF//1100
C
C44,, C
C55 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000nnFF
C
C66 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..222200
µµ
FF//1166
R
Reezzyyssttoorryy
P
PR
R11 .. .. .. ..ppootteennccjjoom
meettrr m
moonnttaażżoow
wyy m
miinniiaattuurroow
wyy 11kk
Ω
Ω
R
R11,, R
R44,, R
R55,, R
R66,, R
R77 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..11kk
Ω
Ω
R
R22,, R
R33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..1100kk
Ω
Ω
P
Póółłpprrzzeew
wooddnniikkii
IIC
C11 .. .. .. .. .. .. .. ..zzaapprrooggrraam
moow
waannyy pprroocceessoorr A
ATT9900S
S22331133
IIC
C22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..D
DS
S11881133
IIC
C33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..7744S
S0000
IIC
C44 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..7744S
S7744
IIC
C55 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..77880055
IIC
C66 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..7744LLS
S339933
TT11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..B
BFF119999
P
Poozzoossttaałłee
D
DP
P11 .. .. .. .. .. .. ..w
wyyśśw
wiieettllaacczz aallffaannuum
meerryycczznnyy LLC
CD
D 1166**11
C
CO
ON
N11 .. .. .. .. .. .. .. .. .. .. .. .. ..zzłłąącczzee B
BN
NC
C lluuttoow
waannee w
w ppłłyyttkkęę
C
CO
ON
N22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..A
AR
RK
K22 ((33,,55m
mm
m))
Q
Q11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..rreezzoonnaattoorr kkw
waarrccoow
wyy 1100M
MH
Hzz
S
S11 ...... S
S44 .. .. .. .. .. .. .. .. .. .. .. ..pprrzzyycciisskk m
miiccrroossw
wiittcchh 1155 m
mm
m
R
Rzząądd 1166 ggoollddppiinnóów
w
K
Koom
mpplleett ppooddzzeessppoołłóów
w zz ppłłyyttkkąą jjeesstt
ddoossttęęppnnyy w
w ssiieeccii hhaannddlloow
weejj A
AV
VTT
jjaakkoo kkiitt sszzkkoollnnyy
µµ
P
P−33000033
Rys. 4 Schemat montażowy
(zbigniew.raabe@edw.com.pl). Skupimy się
wiec zatem na podprogramie realizującym
funkcję pomiaru częstotliwości. Studenci
BASCOM College i jego sympatycy prosze−
ni są o szczególnie wnikliwe przeanalizowa−
nie fragmentów listingów. Sądzę, że wnioski
mogą ich zachęcić do dalszego poznawania
BASCOM−a i nauki języka MCS BASIC.
Po wykonaniu czynności zawartych w li−
stingu 1 program przechodzi do pętli,
w której oczekuje na upłyniecie czasu bram−
kowania, czyli 1 sekundy. Każde przepełnie−
nie timera0 powoduje skok do procedur po−
kazanych na listingu 2.
Sądzę, że ten fragment listingu pozwoli
Czytelnikom zapoznać się z grubsza z meto−
dami programowania mierników częstotli−
wości i zachęci ich do dokonywania prze−
róbek programu, a także napisania własnego
oprogramowania.
Wyjaśnienia wymaga jeszcze rola przyci−
sków S1...S4. Podczas dokonywania pomia−
rów częstotliwości miernik pracuje całkowi−
cie automatycznie, sam dobierając sobie po−
trzebny zakres pomiarowy. Jeżeli jednak ze−
chcemy wykorzystać nasz przyrząd jako licz−
nik zdarzeń, to za pomocą przycisku S1 mo−
żemy przełączyć układ w ten tryb pracy (po−
nowne naciśniecie S1 spowoduje przejście
układu ponownie w tryb pracy jako miernika
częstotliwości). W trybie pracy licznika zda−
rzeń wykorzystywane są trzy pozostałe przy−
ciski. Naciśnięcie przycisku S2 powoduje
rozpoczęcie zliczania podawanych na wej−
ście układu impulsów, S3 − zatrzymanie zli−
czania, a S4 wyzerowanie licznika.
Montaż i uruchomienie
Na rysunku 4 została pokazana mozaika ście−
żek płytki obwodu drukowanego układu
miernika oraz rozmieszczenie na niej ele−
mentów. Na rysunku widoczna jest także dru−
ga płytka, na której jednak nie będziemy
umieszczać jakichkolwiek elementów elek−
tronicznych. Płytka ta może służyć jako
względnie efektowna i estetyczna płyta czo−
łowa, wykonana z laminatu i w prosty sposób
łączona z płytką układu elektronicznego
i wyświetlaczem.
Montaż układu przeprowadzamy w typo−
wy sposób, rozpoczynając od elementów
o najmniejszych gabarytach: kilku zworek,
a następnie od rezystorów R4 ... R7, które
muszą być wlutowane w płytkę jako pierw−
sze, a w każdym razie przed przylutowaniem
przycisków S1 ... S4, które podobnie jak wy−
świetlacz LCD i złącze BNC muszą być za−
mocowane OD STRONY DRUKU. Musi−
my także podjąć decyzję, czy zastosujemy
w układzie typowy kwarc 10MHz, czy też
znacznie bardziej dokładny, ale też znacznie
droższy generator. Jeżeli zdecydujemy się na
to drugie rozwiązanie, to kondensatory C1
i C2 nie będą potrzebne. W miejscu przezna−
czonym na wyświetlacz wlutowujemy
w płytkę OD STRONY DRUKU rząd gold−
pinów, do którego po bardzo starannym
sprawdzeniu poprawności montażu przyluto−
wujemy wyświetlacz.
Ostatnią czynnością, jaką będziemy mu−
sieli wykonać będzie zamocowanie płyty
czołowej. Do tego celu będą nam potrzebne
cztery śrubki M3 i garstka nakrętek. Kolej−
ność postępowania jest następująca:
1. Pomiędzy wyświetlacz, a przylutowa−
ną do niego płytkę elektroniki miernika wsu−
wamy tulejki dystansowe o odpowiedniej
długości i skręcamy całość za pomocą śru−
bek tak, aby ich łebki wystawały ok. 5 mm
ponad powierzchnię płytki wyświetlacza.
Do każdej śrubki dajemy w związku z tym
dwie nakrętki.
2. Tak zmontowaną konstrukcję układamy
na płycie czołowej i starannie wyrównujemy.
Następnie lutujemy łebki śrubek do dużych
punktów lutowniczych wykonanych na spo−
dniej stronie płyty czołowej.
3. Jak zauważyliście, płyta czołowa jest
nieco większa od płytki miernika. Pozwoli to
na łatwe dobudowanie tylnej części i boków
obudowy, które możemy wykonać z kawał−
ków laminatu lub tworzywa sztucznego.
Po zmontowaniu układu i włożeniu ukła−
dów scalonych w podstawki włączamy zasila−
nie miernika. Urządzenie może być zasilane
napięciem stałym o wartości 9 ... 16VDC, nie−
koniecznie stabilizowanym. Po włączeniu za−
silania i upływie ok. 1 sekundy na wyświetla−
czu powinien ukazać się napis "F[kHz]= 0",
co świadczy o poprawnym działaniu układu.
Możemy teraz podłączyć do miernika
źródło przebiegu prostokątnego o częstotli−
wości mieszczącej się w zakresie miernika
i dokonać pierwszego pomiaru.
Zbigniew Raabe
e−mail: zbigniew.raabe@edw.com.pl
27
E l e k t r o n i k a d l a W s z y s t k i c h
L
Liis
sttiin
ng
g 2
2
Int_0:
Incr Count
'zwiększ zmienną pomocniczą COUNT o 1
If Count = 4883 Then
'jeżeli zmienna COUNT przyjęła wartość 4833, czyli upłynęła 1 sekunda, to 'wykonaj wszystkie
poniższe czynności:
Stop Timer1 'zatrzymaj timer0
Stop Timer0 'zatrzymaj timer1
Maincounter = Ccount * 65536
'wynik pomiaru (MAINCOUNTER) równy jest ilość 'przepełnień timera1 *
pojemność timera1
Maincounter = Maincounter + Timer1
'wynik pomiaru równy jest poprzednio obliczonej 'wartości + wynik ostatniego
zliczania timera1
'Dodatkowy komentarz: 'Podczas pomiaru większych częstotliwości pojemność timera1 najczęściej okaże się 'niewystarczająca i timer
ten będzie rozpoczynał zliczanie od początku, zgłaszając przy każdym 'przepełnieniu przerwanie, powodujące zwiększenie zmiennej
CCOUNT o 1. A zatem, po zakończeniu 'pomiaru ilość impulsów wejściowych będzie równa ilości przepełnień timera1 pomnożonej o
jego 'pojemność. Ponieważ timer1 jest licznikiem szesnastobitowym, jego pojemność wynosi 65536. W 'memencie upłynięcia czasu
bramkowania, w timerze1 może pozostać "resztka" wyniku zliczanie 'impul−
sów wejściowych, którą oczywiście należy dodać do uprzednio obliczonej wartości.
If Maincounter = 0 Then
'jeżeli żadna częstotliwość nie została zmierzona, to:
set Portd.6
'włącz preskaler
End If
'koniec warunku
If Portd.6 = 1 Then
'jeżeli na wyjściu PORTD.6 jest stan wysoki (włączony 'preskaler), to:
Maincounter = Maincounter / 31 'podziel wynik pomiaru przez 31
'Dodatkowy komentarz: 'Przy zastosowaniu preskalera mierzona wartość jest wstępnie dzielona przez 16. Z kolei, podczas 'pomiarów
wartości częstotliwości większych od kilku MHz wyświetlanie wyniku z dokładnością 'większą niż 1kHz nie ma najmniejszego sensu.
Dlatego też wynik pomiaru z preskalerem jest 'mnożony przez 16, a następnie dzielony przez 1000.
End If
'koniec warunku
Ccount = 0
'wyzerowanie zmiennej pomocniczej
Timer0 = 0
'wyzerowanie zmiennej pomocniczej
Cls
'wyczyść ekran wyświetlacza
If Portd.6 = 0 Then
'jeżeli preskaler jest wyłączony, to:
Lcd "F [Hz]=" 'wyświetl komunikat F[Hz]=
Else
'w przeciwnym wypadku:
Lcd "F[kHz]="
'wyświetl komunikat F[kHz]=
End If
'koniec warunku
Locate 2 , 1
'umieść kursor na dziewiątej pozycji wyświetlacza
'Dodatkowy komentarz: 'W naszym programie wyświetlacz 16*1 jest traktowany jako 8*2. Jest to wynikiem niekompatybilności 'niek−
tórych wyświetlaczy ze standardem i kłopotów z sterowaniem nimi z poziomu MCS BASIC. W 'najbliższym cza
się problemy te zostaną usunięte przez MCS Electronics
Lcd " "
'zastąp spacjami poprzedni wynik pomiaru
Locate 2 , 1
'umieść kursor na dziewiątej pozycji wyświetlacza
Lcd Maincounter ;
'wyświetl wynik pomiaru
Locate 2 , 8
'umieść kursor na szesnastej pozycji wyświetlacza
Lcd "*"
'wyświetl znak *
Waitms 200
'zaczekaj 200 msek
Locate 2 , 8
'umieść kursor na szesnastej pozycji wyświetlacza
Lcd " "
'usuń znak *, sygnalizujący poprawną pracę miernika
Count = 0
'zerowanie zmiennych
Maincounter = 0
Timer1 = 0
Start Timer0
'ponowne uruchomienie timerów
Start Timer1
End If
'koniec globalnego uwarunkowania
Return
L
Liis
sttiin
ng
g 1
1
sub frequency
‘podprogram pomiaru częstotliwości
Config Timer0 = Timer , Prescale = 8 ‘konfiguracja timera0, odpowiadającego za odmierzanie ‘czasu bramkowania.
‘Dodatkowy komentarz:
‘Timer0 = Counter − Timer0 będzie pracował jako timer
‘Prescale = 8 − na wejście timera podawana będzie częstotliwość zegara systemowego podzielona ‘przez 8
Config Timer1 = Counter , Edge = Falling ‘konfiguracja timera1, zliczającego ‘impulsy wejściowe
‘Dodatkowy komentarz:
‘Config Timer1 = Counter − Timer1 będzie pracował jako licznik zliczający zewnętrzne impulsy
‘Edge = Falling − detekcja impulsu wejściowego będzie rozpoczynać się od opadającego zbocza
Count = 0
‘wyzerowanie zmiennej pomocniczej COUNT
Ccount = 0
‘wyzerowanie zmiennej pomocniczej COUNT
Set portd.6
‘przy pierwszym pomiarze włączamy preskaler
Cls
‘czyszczenie ekranu wyświetlacza
Cursor Off
‘usuniecie kursora z ekranu
Enable Timer0‘zezwolenie na obsługę przerwania timera0
Enable Timer1‘zezwolenie na obsługę przerwania timera0
Enable Interrupts
‘zezwolenie na obsługę przerwań
On Timer0 int_0
‘w przypadku wystąpienia przerwania timera0 skok do podprogramu INT_0
On Timer1 Int_1
‘w przypadku wystąpienia przerwania timera1 skok do podprogramu INT_1
Timer1 = 0
‘wyzerowanie timera0
Start Timer0
‘uruchomienie timera0
Start Timer1
‘uruchomienie timera1
Do
‘początek pętli programu oczekiwania na wynik pomiaru
Loop