Cyfrowy_miernik_pojemnosci.pdf

(666 KB) Pobierz
Cyfrowy miernik pojemności - AVT-512
Cyfrowy miernik pojemności
P R O J E K T Y
Cyfrowy miernik
pojemności
AVT−512
Do typowych prac
w†elektronicznym laboratorium
wystarczaj¹ tanie multimetry,
zazwyczaj bez takich funkcji,
jak na przyk³ad pomiar
pojemnoúci. A†jeøeli musimy
zmierzyÊ pojemnoúÊ
kondensatora?
Rekomendacje : polecany
tym, ktÛrzy musz¹ wzbogaciÊ
swoje laboratorium o przyrz¹d
do pomiaru pojemnoúci.
Podstawowym przyrz¹dem po-
miarowym w†pracowni elektronika
jest woltomierz. Bardziej przydat-
ny jest jednak miernik uniwersal-
ny, za pomoc¹ ktÛrego moøna
zmierzyÊ napiÍcie, pr¹d i†rezys-
tancjÍ, gdyø pomiar tych wielkoú-
ci jest najczÍúciej wykonywany
podczas budowy i†naprawy urz¹-
dzeÒ. Rzadziej s¹ uøywane mier-
niki pojemnoúci czy indukcyjnoú-
ci, a†to dlatego, øe z†regu³y uøywa
siÍ gotowych elementÛw fabrycz-
nych, na ktÛrych znajduj¹ siÍ
oznaczenia okreúlaj¹ce wartoúÊ ich
indukcyjnoúci lub pojemnoúci.
Sprawa siÍ jednak komplikuje,
jeøeli elementy te wykonane s¹
w†technologii SMD, gdyø ma³e
wymiary utrudniaj¹ ich opis. Dla-
tego producenci czÍsto zamiast
pe³nych oznaczeÒ danego elemen-
tu stosuj¹ oznaczenia skrÛcone,
ktÛre umoøliwiaj¹ zidentyfikowa-
nie rodzaju elementÛw. Odczyt
wartoúci rezystancji nie sprawia
problemÛw, gdyø wartoúÊ ta jest
przedstawiona w†postaci cyfr war-
toúci oraz mnoønika (analogicznie
jak w†przypadku kodu paskowe-
go). W†przypadku kondensatorÛw
sprawa siÍ komplikuje, gdyø opis
posiadaj¹ tylko kondensatory tan-
talowe i†elektrolityczne, natomiast
kondensatory ceramiczne nie po-
siadaj¹ zazwyczaj øadnych ozna-
czeÒ. Dlatego ich wartoúÊ jest
znana jedynie wtedy, gdy znajdu-
j¹ siÍ w†opisanym pude³ku lub
taúmie. Po wlutowaniu identyfika-
cja takiego kondensatora nie jest
moøliwa, a†kondensatory pocho-
dz¹ce z†demontaøu s¹ praktycznie
bezuøyteczne. Problem identyfika-
cji kondensatorÛw SMD moøna
rozwi¹zaÊ przez zmierzenie ich
pojemnoúci za pomoc¹ miernika
pojemnoúci. BudowÍ takiego mier-
nika przedstawiono w†artykule.
Miernik zosta³ zbudowany
w†postaci sondy z†czujnikiem
szpilkowym, co umoøliwia ³atwe
do³¹czenie wejúÊ pomiarowych
miernika do kondensatorÛw SMD.
Przyrz¹d przeznaczony jest g³Ûw-
nie do pomiaru pojemnoúci kon-
densatorÛw†umieszczonych w†obu-
dowach SMD, jednak dziÍki za-
stosowaniu dodatkowego z³¹cza
moøliwy jest rÛwnieø pomiar po-
jemnoúci kondensatorÛw umiesz-
czonych w†obudowach do monta-
øu przewlekanego.
Zastosowane z³¹cze umoøliwia
do³¹czenie elementÛw o†rastrze 100
mil, 200 mil, 300 mil, 400 mil,
dlatego moøliwe jest takøe ³atwe
mierzenie pojemnoúci trymerÛw.
Miernik umoøliwia pomiar po-
jemnoúci w†zakresie 1†pF...10
F,
jednak dla pojemnoúci rÛwnej 10
µ
µ
F czas wykonywania pomiaru
wynosi 10 sekund, co w†praktyce
trwa zbyt d³ugo, dlatego naleøy
przyj¹Ê, øe†maksymalna mierzona
pojemnoúci wynosi oko³o 1†
F.
Czas wykonywania pomiaru jest
wprost proporcjonalny do pojem-
noúci i†wynosi oko³o 1†sekundy na
1†
µ
F mierzonej pojemnoúci. Wynik
pomiaru jest przedstawiany na
czterech wyúwietlaczach siedmio-
segmentowych: na trzech pozy-
cjach jest wyúwietlany wynik po-
Elektronika Praktyczna 5/2003
27
µ
32577952.036.png
Cyfrowy miernik pojemności
Rys. 1. Schemat elektryczny miernika pojemności kondensatorów
miaru, a†na czwartej jest podawa-
ny mnoønik (piko, nano, mikro).
PojemnoúÊ jest mierzona w†jednym
z†zakresÛw pomiarowych, a†na-
stÍpnie wynik jest odpowiednio
formatowany, aby mÛg³ byÊ wy-
úwietlony na trzech cyfrach wy-
úwietlacza. W† tab. 1 przedstawio-
no zakresy pomiarowe, format wy-
úwietlania i†rozdzielnoúÊ pomiaru
miernika. Wyúwietlanie wyniku na
trzech cyfrach nie pozwala na
prezentacje wyniku pomiaru z†bar-
dzo duø¹ rozdzielczoúci¹, lecz z†za-
³oøenia nie jest to przyrz¹d do
bardzo dok³adnych pomiarÛw, a†do
szacunkowego okreúlenia pojem-
noúci badanego kondensatora i†na
tej podstawie przypisanie mu war-
toúci z†szeregu.
x†14b, 64 bajty pamiÍci operacyj-
nej RAM oraz 128 bajtÛw nieulot-
nej pamiÍci typu EEPROM. Pro-
cesor moøe byÊ taktowany syg-
na³em generowanym przez we-
wnÍtrzny generator RC albo gene-
rator z zewnÍtrznymi elementami
RC lub zewnÍtrznym rezonatorem
kwarcowym. Pomiar pojemnoúci
jest oparty na pomiarze czasu,
wiÍc wymagana jest jak najwiÍk-
sza jego dok³adnoúÊ odmierzania.
Dlatego jako ürÛd³o sygna³u zega-
rowego zastosowano generator
z†rezonatorem kwarcowym. CzÍs-
totliwoúÊ zastosowanego rezonato-
ra jest maksymaln¹ dopuszczaln¹
dla tego procesora. Dla tej czÍs-
totliwoúci jeden cykl maszynowy
procesora wynosi 200 ns. Duøa
szybkoúÊ pracy procesora jest ko-
nieczna, gdyø najkrÛtszy odcinek
czasu, jaki procesor musi zmie-
rzyÊ, jest rÛwny 1†
sta³ych linii. Wejúcie zerowania
procesora zosta³o skonfigurowane
jako wejúcie cyfrowe, a†sygna³
zerowania po w³¹czeniu zasilania
jest generowany przez wewnÍt-
rzny obwÛd.
ChoÊ miernikim steruje mikro-
kontroler, to pomiaru pojemnoúci
dokonuje uk³ad US2. Uk³ad ten
jest nowsz¹ wersj¹ ciesz¹cego siÍ
nies³abn¹c¹ s³aw¹ uk³adu NE555.
Uk³ad ICM7555 wykonany jest
w†technologii CMOS, co znacznie
zmniejszy³o - w†stosunku do wer-
sji bipolarnej - pobierany przez
niego pr¹d. Uk³ad US2 pracuje
w†trybie monostabilnym, dlatego
po podaniu krÛtkiego impulsu na
wejúcie TR na wyjúciu OUT po-
jawia siÍ poziom wysoki. Czas
trwania tego poziomu jest úciúle
zaleøny od po³¹czonych szeregowo
Budowa i†dzia³anie
Schemat elektryczny miernika
pojemnoúci przedstawiono na rys.
1. Od strony funkcjonalnej urz¹-
dzenie moøna podzieliÊ na dwa
bloki: pomiaru pojemnoúci
i†wyúwietlania. Blok pomiaru po-
jemnoúci sk³ada siÍ mikrokontro-
lera typu PIC12F629. Zawiera on
w†swoim wnÍtrzu pamiÍÊ progra-
mu typu Flash o†pojemnoúci 1k
s, co przy
pracy procesora z rezonatorem
o†standardowej czÍstotliwoúci
4†MHz nie jest moøliwe.
Procesor posiada tylko szeúÊ
linii wejúcia/wyjúcia, z†czego dwie
zosta³y zajÍte przez rezonator
kwarcowy, dlatego konieczne jest
wykorzystanie wszystkich pozo-
Tab. 1. Zakresy pomiarowe miernika
pojemności
Zakres
Zakres Rozdziel-
Rozdziel-
Format
Przyk³ad
czoœæ wyœwietlania
wyœwietlania
µ
28
Elektronika Praktyczna 5/2003
µ
Zakres
Zakres
Rozdziel-
Rozdziel-
Format
Format
Przyk³ad
Przyk³ad
czoϾ
czoϾ
wyœwietlania
wyœwietlania
32577952.037.png 32577952.038.png 32577952.039.png 32577952.001.png 32577952.002.png 32577952.003.png 32577952.004.png 32577952.005.png 32577952.006.png 32577952.007.png 32577952.008.png 32577952.009.png 32577952.010.png 32577952.011.png 32577952.012.png 32577952.013.png 32577952.014.png 32577952.015.png 32577952.016.png 32577952.017.png 32577952.018.png 32577952.019.png 32577952.020.png 32577952.021.png 32577952.022.png 32577952.023.png 32577952.024.png 32577952.025.png
Cyfrowy miernik pojemności
rezystancji rezystora R3 i†potencjo-
metru PR1 oraz do³¹czonej pojem-
noúci Cx i†jest wyraøony wzorem:
t†= 1,05*(R3+PR1)*Cx. Poniewaø re-
zystancja jest sta³a, to czas trwania
impulsu wyjúciowego jest zaleøny
od do³¹czonej pojemnoúci (w ten
sposÛb okreúla siÍ jej wartoúÊ).
Do sterowania wyúwietlaczami
zastosowano specjalizowany uk³ad
typu SAA1064, ktÛry moøe stero-
waÊ dwoma lub czterema wyúwiet-
laczami. Przy wspÛ³pracy z†dwo-
ma wyúwietlaczami jeden wyúwiet-
lacz jest pod³¹czany do wyjúÊ
P1...P8, a†drugi do wyjúÊ P9...P16.
Wyúwietlacze musz¹ byÊ typu ze
wspÛln¹ anod¹ i†anody te s¹ do-
³¹czone do plusa napiÍcia zasila-
nia. Przy wspÛ³pracy z†czterema
wyúwietlaczami konieczne jest ich
sterowanie w†sposÛb†multiplekso-
wy. W†tym trybie w†danej chwili
úwiec¹ tylko dwa wyúwietlacze
za³¹czone przez jeden z†tranzysto-
rÛw, nastÍpnie te wyúwietlacze s¹
wygaszane i†nastÍpuje úwiecenie
drugiej pary wyúwietlaczy. Prze³¹-
czanie pomiÍdzy wyúwietlaczami
jest wykonywane tak szybko, øe
widoczne jest jednoczesne úwiece-
nie wszystkich wyúwietlaczy. Pra-
ca wewnÍtrznego uk³adu steruj¹ce-
go wyúwietlaniem danych na wy-
úwietlaczu jest wykonywana
w†oparciu o†wewnÍtrzny generator
wspÛ³pracuj¹cy z†zewnÍtrznym
kondensatorem C8 i†to od jego
wartoúci zaleøy czÍstotliwoúÊ pra-
cy wewnÍtrznego multipleksera,
a†tym samym czÍstotliwoúÊ prze-
³¹czania wyúwietlaczy. Dodatkowo
moøna regulowaÊ natÍøenie pr¹du
p³yn¹cego przez diody wyúwietla-
cza. Wyúwietlacze mog¹ byÊ zasi-
lane pr¹dem o†wartoúci 3†mA,
6†mA i†12 mA. WartoúÊ natÍøenia
pr¹du jest okreúlana poprzez wpis
do rejestru steruj¹cego uk³adu.
Najwaøniejsz¹ zalet¹ uk³adu
SAA1064 jest ³atwoúÊ jego stero-
wania przez uk³ad zewnÍtrzny,
gdyø interfejs komunikacyjny to
I 2 C i†do sterowania wymagane s¹
tylko dwa wyprowadzenia. Fakt
ten jest bardzo istotny w†przedsta-
wionym uk³adzie, gdyø zastosowa-
ny mikrokontroler ma ma³¹ liczbÍ
wyprowadzeÒ. Obs³uga wyúwiet-
lacza przez procesor ogranicza siÍ
tylko do wpisania danych, a†po-
zosta³y†czas procesor moøe po-
úwiÍciÊ na wykonywanie innych
zadaÒ. Podstawowy adres, pod
Rys. 2. Format danych wysyłanych do układu SAA1064
ktÛrym zg³asza siÍ uk³ad SAA1064
na magistrali I 2 C jest rÛwny
0†1†1†1†0†A1 A0 0†i†moøe byÊ zmie-
niony w†przypadku pracy kilku
takich samych uk³adÛw na jednej
magistrali. Istnieje moøliwoúÊ zmia-
ny dwÛch bitÛw adresu oznaczo-
nych jako: A0 i†A1. WartoúÊ tych
bitÛw jest okreúlana poprzez war-
toúÊ napiÍcia podanego na wejúcie
ADR. Wartoúci napiÍcia podanych
na to wejúcie i†odpowiadaj¹ce mu
wartoúci bitÛw A0 i†A1 s¹ przed-
stawione w† tab. 2.
Sterowanie uk³adem SAA1064
polega na wpisaniu do jego re-
jestru konfiguracyjnego wartoúci
okreúlaj¹cej wymagany tryb pracy,
a†nastÍpnie wpisanie wartoúci od-
powiedniej dla kaødego wyúwiet-
lacza. Format danych wysy³anych
do uk³adu SAA1064 przedstawio-
no na rys. 2 .
Transmisja jest inicjowana
przez podanie adresu uk³adu, na-
stÍpnie podawany jest adres we-
wnÍtrznego rejestru, do ktÛrego
maj¹ byÊ zapisane dane, a†w†dal-
szej kolejnoúci mog¹ byÊ zapisy-
wane dane do kolejnych rejest-
rÛw. Po wpisie danych do rejestru
zawartoúÊ licznika adresowego zo-
staje zwiÍkszona o†jeden i†moøna
podaÊ dane przeznaczone do ko-
lejnego rejestru, bez koniecznoúci
kaødorazowego podawania adresu
konkretnego rejestru.
Takie rozwi¹zanie umoøliwia
jednoczesny zapis danych do
wszystkich rejestrÛw lub tylko do
jednego wybranego.
Wartoúci rejestru adresu oraz
odpowiadaj¹ce mu rejestry s¹
przedstawione w† tab. 3 . Poniewaø
w†uk³adzie SAA1064 znajduje siÍ
tylko piÍÊ rejestrÛw, do ustalenia
konkretnego numeru brane s¹ tyl-
ko trzy bity: SA, SB, SC.
Rejestr kontrolny, znajduj¹cy
siÍ pod adresem ì0î, s³uøy do
ustalenia trybu pracy uk³adu
SAA1064 - znaczenie poszczegÛl-
nych bitÛw tego rejestru jest
przedstawione w† tab. 4 .
W†mierniku do rejestru kont-
rolnego wpisywana jest wartoúÊ
00100111, co oznacza, øe sterowa-
ne s¹ cztery wyúwietlacze w†try-
bie dynamicznym, a†pr¹d steruj¹-
cy poszczegÛlnymi segmentami
wynosi 6†mA. Taka wartoúÊ pr¹du
steruj¹cego jest wystarczaj¹ca,
gdyø zastosowane wyúwietlacze s¹
niewielkie, a†odczyt jest wykony-
wany z†ma³ej odleg³oúci.
Po ustawieniu trybu pracy
uk³adu SAA1064 moøna wpisaÊ
odpowiednie wartoúci do poszcze-
gÛlnych rejestrÛw cyfr. Wpisywa-
ne dane musz¹ byÊ wczeúniej
przekszta³cone na kod wyúwietla-
cza siedmiosegmentowego.
W†przedstawionym uk³adzie wy-
úwietlacze s¹ do³¹czone inaczej
niø jest to sugerowane przez
producenta: inne jest przyporz¹d-
kowanie poszczegÛlnych cyfr do
rejestrÛw uk³adu SAA1064. RÛø-
nica polega na tym, øe†dane z†re-
jestru cyfry 1†s¹ wyúwietlane na
wyúwietlaczu DP1, z†rejestru cyfry
3†na wyúwietlaczu DP2, z†rejestru
cyfry 2†na wyúwietlaczu DP3,
a†z†rejestru cyfry 4†na wyúwietla-
czu DP4. Nie wp³ywa to na pracÍ
uk³adu SAA1064, a†wymaga jedy-
nie innego sterowania przez pro-
cesor.
Procedury odpowiedzialne za
wysy³anie danych do uk³adu SA-
A1064 przedstawiono na list. 1.
Obs³uga uk³adu SAA1064 jest
wykonywana za pomoc¹ dwÛch
procedur. Procedura pierwsza s³uøy
do zapisu trybu pracy do rejestru
konfiguracyjnego. Przy wywo³aniu
Tab. 2. Zakres napięcia podanego
na wejście ADR i odpowiadająca mu
wartość adresu układu SAA1064
Adres
Napiêcie na wejœciu ADR
AA1 A0
AA0
Minimum Typowo
Typowo Maksimum
Maksimum
Tab. 3. Adresy poszczególnych
rejestrów
SC
SSB
SA
Adres
Rejestr
Elektronika Praktyczna 5/2003
29
Adres
AA1
A1
AA0
Minimum
Typowo
SSC
SB
SSA
32577952.026.png 32577952.027.png 32577952.028.png 32577952.029.png 32577952.030.png 32577952.031.png
Cyfrowy miernik pojemności
Tab. 4. Funkcje poszczególnych
bitów rejestru kontrolnego układu
SAA1064
! " # $ #% %&'()
(*(+, #% )+
! " # ' )+#% %&#%,,)
(*(+, #% )+
! -*(+, #%, &+&&(. $%,
! -*(+, #%, &+&&(/0#%,
! -*(+, #%, &+&&(. $%,
! -*(+, #%, &+&&(/0#%,
! 1,$2 ($%$3+, (*(+, #%,
% ,
! 4,( +, 0',) &)5
! 4,( +, 0',) &)5
! 4,( +, 0',) )5
+,6(
List. 1. Procedury służące do komunikacji procesora z układem SAA1064
//************************************************************************//
//Definicja stalych
#define SAA1064_adres_wr 0b01110000 //adres zapisu danych, jesli A0=0, A1=0
#define SAA1064_adres_re 0b01110001 //adres odczytu danych jesli A0=0, A1=0
#define digit2_3m 0b00010110 //2 wyswietlacze I=3mA
#define digit2_6m 0b00100110 //2 wyswietlacze I=6mA
#define digit2_12m 0b01000110 //2 wyswietlacze I=12mA
#define digit4_3m 0b00010111 //4 wyswietlacze I=3mA
#define digit4_6m 0b00100111 //4 wyswietlacze I=6mA
#define digit4_12m 0b01000111 //4 wyswietlacze I=12mA
//************************************************************************//
// Zapisuje konfiguracje do SAA1064 //
//************************************************************************//
SAA1064_write_control(int control)
{
I2C_start(); //start transmisji I2C
I2C_write(SAA1064_adres_wr); //zapis adresu układu SAA1064
I2C_write(0);
//podanie sub-adresu = 0, bo to zapis konfiguracji
I2C_stop();
//koniec transmisji I2C
}
//************************************************************************//
//************************************************************************//
// Zapisuje dane na wyswietlaczu o numerze podanym w numer //
//************************************************************************//
SAA1064_write_digit(int numer, int dig)
{
I2C_start(); //start transmisji I2C
I2C_write(SAA1064_adres_wr); //zapis adresu układu SAA1064
I2C_write(numer);
//zapis numery cyfry, której dotyczy wpis (1...4)
tej procedury naleøy podaÊ jako
parametr liczbÍ wyúwietlaczy oraz
ich pr¹d sterowania. Wartoúci
parametrÛw dla poszczegÛlnych try-
bÛw pracy s¹ zdefiniowane na
pocz¹tku listingu (polecenie wyko-
nywane w†mierniku ma postaÊ:
SAA1064_write_control(digit4_6m) .
Zapis danych do konkretnego wy-
úwietlacza wykonuje druga proce-
dura. Przy wywo³ywaniu tej pro-
cedury naleøy podaÊ numer wy-
úwietlacza oraz wartoúÊ, jaka ma
byÊ na nim wyúwietlona. Numer
wyúwietlacza musi zawieraÊ siÍ
w†przedziale 1...4, a†dana moøe byÊ
dowoln¹ wartoúci¹ jednobajtow¹.
Aby jednak na wyúwietlaczu by³y
wyúwietlane cyfry, podana dana
musi byÊ tak dobrana, aby powo-
dowa³a zapalenie odpowiednich
segmentÛw wyúwietlacza.
Do stabilizowania napiÍcia za-
silania ca³ego uk³adu miernika
zastosowano monolityczny stabili-
zator typu LM7805, a†kondensato-
ry C1...C4 dodatkowo filtruj¹ to
napiÍcie. Aby zabezpieczyÊ ca³y
uk³ad przed uszkodzeniem
I2C_write(dig);
//zapis wartości do rejestru podanego wczesniej
I2C_stop();
//koniec transmisji I2C
}
//************************************************************************//
w†przypadku b³Ídnie do³¹czonego
napiÍcia zasilania, zastosowano
diodÍ prostownicz¹ D1.
dania impulsu o†poziomie niskim
na wejúcie TRIGGER. Impuls ten
powoduje zmianÍ stanu przerzut-
nika, a†w†konsekwencji pojawie-
nia siÍ na wyjúciu OUTPUT po-
ziomu wysokiego oraz zablokowa-
nie tranzystora wyjúciowego. Za-
blokowanie tranzystora wyjúcio-
wego spowoduje, øe do³¹czona
pojemnoúÊ bÍdzie ³adowana przez
rezystor R3 i†potencjometr PR1.
Proces ten bÍdzie trwa³ do mo-
mentu osi¹gniÍcia na badanym
kondensatorze napiÍcie rÛwnego
2/3 napiÍcia zasilania. Kontrola
wartoúci tego napiÍcia jest prze-
prowadzana przez komparator A,
gdyø jego wejúcie TRH (THRES-
HOLD) jest po³¹czone z†biegunem
badanego kondensatora. Po osi¹g-
niÍciu wymaganej wartoúci napiÍ-
cia nastÍpuje zmiana stanu prze-
rzutnika i†proces ³adowania kon-
densatora zostaje zatrzymany,
a†wyjúcie OUT (OUTPUT) ponow-
nie przyjmie poziom niski. Po
odpowiednim skalibrowaniu war-
toúci rezystancji R3 i†PR1 czas
trwania generowanego impulsu
odpowiada 1†
Metoda pomiaru
pojemnoúci
Zastosowana metoda pomiaru
pojemnoúci polega na pomiarze
czasu trwania impulsu generowa-
nego przez przerzutnik monosta-
bilny ICM7555 o budowie wewnÍt-
rznej przedstawionej na rys. 3 .
Pomiar jest przeprowadzany
nastÍpuj¹co: w†stanie spoczynko-
wym na wyjúciu OUTPUT panuje
poziom niski wymuszony stanem
przerzutnika zbudowanego z†bra-
mek. Taki poziom powoduje rÛw-
nieø wysterowanie tranzystora
wyjúciowego, co wymusza na wyj-
úciu DIS (DISCHARGE) poziom
niski. Poniewaø do tego wypro-
wadzenia jest do³¹czany badany
kondensator, to zostaje on roz³a-
dowany. RozpoczÍcie cyklu po-
miarowego rozpoczyna siÍ od po-
s dla pojem-
noúci†1†pF. Taka zaleønoúÊ znacz-
nie u³atwia obliczanie wartoúci
pojemnoúÊ przez procesor.
Fragment programowej realiza-
cji procedury pomiaru czasu trwa-
nia impulsu generowanego przez
uk³ad ICM7555 jest przedstawiony
na list. 2 . Pomiar czasu jest
wykonywany za pomoc¹ wewnÍt-
rznego licznika Tmr1, ktÛry jest
skonfigurowany do zliczania im-
pulsÛw z†wewnÍtrznego oscylatora
zegarowego (f=fosc/4). Licznik ten
µ
Rys. 3. Budowa wewnętrzna układu ICM7555
30
Elektronika Praktyczna 5/2003
I2C_write(control);
//zapis wartości do rejestru konfiguracyjnego
32577952.032.png 32577952.033.png
Cyfrowy miernik pojemności
List. 2. Fragment procedury pomiaru i wyświetlania pojemności
//****************************************************************************************//
// Procedura pomiaru i wyświetlania pojemności
//
//****************************************************************************************//
get_c()
{int i;
bit_clear(t1con,0); //zatrzymaj licznik tmr1
tmr1l=0;
//wyzeruj rejestry licznika Tmr1
µ !7 !
!7 µ $
&!& µ $8& µ $!7$
µ $!7!
µ !
Jak widaÊ, pojemnoúÊ zastoso-
wanego licznika znacznie przewy-
øsza wymagan¹ wartoúÊ maksymal-
n¹. Pomiar rozpoczyna siÍ od
zatrzymania licznika Tmr1, nastÍp-
nie zerowane s¹ rejestry licznika
Tmr1 (tmr1l, tmr1h) oraz zmienna
c_high . NastÍpnie na wejúcie TR
(TRIGGER) uk³adu ICM7555 jest
podawany krÛtki impuls powodu-
j¹cy rozpoczÍcie ³adowania kon-
densatora, ktÛrego pojemnoúÊ mie-
rzymy. Jednoczeúnie wyjúcie OUT
zmieni swÛj poziom na wysoki,
a†w†procesorze zostanie w³¹czony
licznik Tmr1. RozpoczÍty w†ten
sposÛb cykl pomiarowy bÍdzie
trwa³ do momentu powrotu wyj-
úcia OUT uk³adu US2 do poziomu
niskiego. BÍdzie on spowodowany
osi¹gniÍciem na badanym konden-
satorze wymaganej wartoúci napiÍ-
cia. NastÍpnie zatrzymany zostanie
licznik Tmr1, a†zawartoúÊ jego
dwÛch rejestrÛw tmr1l i†tmr1h
zostanie przepisana do 16-bitowej
zmiennej c_low . Zmienna ta, wraz
ze zmienn¹ c_high , zostanie prze-
tworzona na zmienn¹ 32-bitow¹
c_var . W†zmiennej tej znajduje siÍ
ca³kowita liczba zliczonych impul-
sÛw podczas cyklu pomiarowego.
Zliczona liczba impulsÛw odpo-
wiada liczbie 200 ns odcinkÛw
czasu, dlatego aby przetworzyÊ tÍ
wartoúÊ na pojemnoúÊ, naleøy po-
dzieliÊ j¹ przez piÍÊ. Tak uzyska-
ny wynik naleøy jeszcze skorygo-
waÊ o†czas reakcji uk³adu ICM7555
na impuls wyzwalaj¹cy. Po wyko-
naniu wszystkich zabiegÛw obli-
czeniowych, w†zmiennej c_var
znajduje siÍ wartoúÊ odpowiadaj¹-
ca wartoúci zmierzonej pojemnoú-
ci. Ze wzglÍdu na trzycyfrow¹
rozdzielczoúÊ wyúwietlania pojem-
tmr1h=0;
c_high=0;
//wyzeruj pomocniczą komórkę licznika czasu
enable=0;
//wyzwolenie impulsu ICM7555
enable=1;
bit_set(t1con,0);
//włącz licznik tmr1
while(tin)
//dopóki na wejściu tin stan wysoki, to licz impulsy
if(tmr1i)
//jeśli przepełnienie tmr1, to zwiększ c_high
{
tmr1i=0;
c_high++;
}
}
bit_clear(t1con,0); //zatrzymaj tmr1
c_low=make16(tmr1h,tmr1l); //zapisz rejestry licznika Tmr1 to c_low
c_var=make32(c_high,c_low); //zapisz c_low i c_high do c_var, tworzy liczbę 32-bitową
c_var/=5;
//wynik trzeba podzielić/5, aby wartość odpowiadała us
if(c_var<18) c_var=0;
//należy odjąć 18, aby bez pojemności wynik był =0
else c_var-=18;
//jeśli bez pojemności wynik jest mniejszy od 18, to wpisz 0
if(c_var>999999)
//jeśli 1000000 lub więcej, to wynik w uF - max 9.99uF
c_var/=10000; //podziel 10000, aby były tylko trzy znaczące cyfry
//procedura wyświetlająca c_var w formie dziesiętnej na trzech cyfrach
//dodatkowo zostanie zapalona kropka na wyświetlaczu nr 1
//a na wyświetlaczu czwartym zostanie wyświetlony znak “u”
}
else if(c_var>99999)
//jeśli 100000 lub więcej, to zakres wynik w nF-max 999nF
{
c_var/=1000; //podziel, aby wynik był trzycyfrowy
//procedura wyświetlająca c_var w formie dziesiętnej na trzech cyfrach
//kropka nie zostanie zapalona na żadnym wyświetlaczu
//a na wyświetlaczu czwartym zostanie wyświetlony znak “n”
}
else if(c_var>9999)
//jeśli wynik 10000 lub więcej, to zakres nF - max 99,9nF
{
c_var/=100; //podziel, aby wynik był trzycyfrowy
//procedura wyświetlająca c_var w formie dziesiętnej na trzech cyfrach
//dodatkowo zostanie zapalona kropka na wyświetlaczu nr 2
//a na wyświetlaczu czwartym zostanie wyświetlony znak “n”
}
else if(c_var>999) //jeśli wynik 1000 lub więcej, to zakres nF- max 9,99nF
{
c_var/=10; //podziel, aby wynik był trzycyfrowy
//procedura wyświetlająca c_var w formie dziesiętnej na trzech cyfrach
//dodatkowo zostanie zapalona kropka na wyświetlaczu nr12
//a na wyświetlaczu czwartym zostanie wyświetlony znak “n”
}
else
//jeśli wynik mniejszy niż 1000, to zakres pF- max 999pF
{
//procedura wyświetlająca c_var w formie dziesiętnej na trzech cyfrach
//kropka nie zostanie zapalona na żadnym wyświetlaczu
//a na wyświetlaczu czwartym zostanie wyświetlony znak “P”
}
}
ma pojemnoúÊ rÛwn¹ 16bitÛw
i†umoøliwia zliczenie maksymal-
nie 65535 impulsÛw, co przy
czÍstotliwoúci taktowania proceso-
ra rÛwnej 20 MHz pozwala na
odmierzenie czasu rÛwnego
65535*200 ns = 13,107 ms. Po-
niewaø mierzony czas jest wprost
proporcjonalny do pojemnoúci, to
maksymalna wartoúÊ mierzonej
pojemnoúci wynosi³aby oko³o 13
nF. Aby zwiÍkszyÊ zakres pomia-
rowy, zosta³ wprowadzony dodat-
kowy licznik 16-bitowy c_high .
ZawartoúÊ tego licznika jest zwiÍk-
szana po kaødym przepe³nieniu
licznika Tmr1. W†ten sposÛb zo-
sta³ utworzony 32-bitowy licznik
zliczaj¹cy odcinki czasu rÛwne
200 ns o†pojemnoúci rÛwnej 2 32
(odpowiada to maksymalnej war-
toúci 4294967296). Dla maksymal-
nej wartoúci mierzonej pojemnoúci
przez miernik wymagana pojem-
noúÊ licznika jest rÛwna 50000000.
WartoúÊ ta wynika z†zaleønoúci:
Rys. 4. Rozmieszczenie elementów na płytce miernika pojemności
Elektronika Praktyczna 5/2003
31
{
//OUT=1
{
32577952.034.png 32577952.035.png
Zgłoś jeśli naruszono regulamin