edw 2003 04 s18

background image

18

Elektronika dla Wszystkich

Do czego to służy?

Prezentowane urządzenie jest mikroproceso-
rowym zegarem z budzikiem, mającym jed-
nak cechę wyróżniającą go spośród licznych
rozwiązań – możliwość dokonywania dwu-
punktowego pomiaru temperatury przy po-
mocy czujników firmy Dallas DS1624 i, jak
się zaraz okaże, możliwość prezentacji wyni-
ków w dowolnym zestawieniu.

Jak to działa?

Na początku opisu należy się Czytelnikom
krótkie wyjaśnienie dlaczego wybrałem aku-
rat czujniki DS1624, a nie np. DS1920. Jak
wiadomo, te ostatnie sterowane są przez jed-
noprzewodową magistralę 1-Wire, natomiast
te zastosowane w projekcie komunikują się
z procesorem za pomocą magistrali I

2

C. Wy-

bór padł na układy 1624 z dwóch powodów:
- chęć opisania budowy termometru opartego
na innych układach niż te, często stosowane
przez autorów AVT,
- pokazanie ciekawego sposobu przetwarza-
nia danych pobranych z tego typu
czujników.

Schemat elektryczny zegara poka-

zany jest na rysunku 1. Od razu ude-
rza wyjątkowa prostota układowa. Ro-
lę portu I

2

C spełniają dwa najmłodsze

bity portu P1. Są to wejścia wewnętrz-
nego komparatora, dlatego też ko-
niecznym było podciągnięcie ich do
plusa zasilania poprzez rezystory. Do
magistrali dołączone są kolejno dwa
czujniki DS1624. W odróżnieniu od
układów 1-Wire, które to posiadają
swój unikatowy numer seryjny, układy
dołączane do magistrali I

2

C wybierane

są przez podanie adresu ustalonego
(w pewnym zakresie) przez użytkow-
nika, poprzez odpowiednie spolaryzo-
wanie wejść A0-A2. Tego typu rozwią-
zanie ogranicza użycie na jednej magi-
strali więcej niż ośmiu takich elemen-
tów. W opisywanym układzie czujnik,
umownie nazwany wewnętrznym,

ma adres bazowy 144, czujnik zewnętrzny
146. Jeśliby ustawić w obu czujnikach ten sam
adres, na pewno wystąpiłby konflikt, a wyni-
ki byłyby błędne, bądź ich odczytanie stało-
by się niemożliwe. Obwód rezonansowy pro-
cesora wykonany jest w standardowy i spraw-
dzony sposób. Z doświadczenia także wiado-
mo, że do poprawnego restartu procesora po
włączeniu napięcia zasilania wystarczy jedy-
nie kondensator 1µF włączony między plus
zasilania, a końcówkę RST. Linie P1.7 do
P1.2 służą komunikacji procesora z wyświe-
tlaczem LCD o organizacji 1*16. Dodatkowe
połączenia z wyświetlaczem to zasilanie i re-
gulacja kontrastu potencjometrem PR1. Przy-
ciski typu uswitch dołączone do wejść P3.2
P3.3 i P3.4 służą dokonywaniu nastaw. Buzzer
B1 generujący sygnał budzika sterowany jest
z końcówki P3.5. Zasilacz dla całego układu
oparty jest na stabilizatorze 7805 z diodą za-
bezpieczającą przed błędnym podłączeniem
napięcia zasilania, które powinno mieścić się
w przedziale 9-15V.

Generalnie program zbudowany jest tak,

że w zależności od aktualnego sposobu wy-
świetlania zbiera dane z czujników, liczy
czas, wyświetla wyniki i analizuje stan przy-
cisków (źródło w postaci pliku *.bas dostęp-
ne jest na internetowej stronie EdW). Sposób
programowej generacji podstawy czasu dla
zegarka przedstawiony jest na listingu 1. Wy-
korzystany procesor to AT89C4051 posiada-
jący w swym wnętrzu 4kB pamięci FLASH.
Taka pojemność okazała się potrzebna ze
względu na wykorzystanie dość skompliko-
wanych procedur przeliczeniowych.

Timer 1 pracuje z cyklicznym przepełnia-

niem wywołującym podprogram obsługi
przerwania, który po każdym piętnastym
przepełnieniu T1 zwiększa aktualny czas, do
wyświetlenia, o sekundę. Magiczna, ładowa-
na wartość 4150, zapewniająca „wzorcowe”
odmierzanie części sekundy, została już
wcześniej opisana przez Zbigniewa Raabe
w kilku numerach EdW.

++

++

Z

Z

e

e

g

g

a

a

r

r

-

-

b

b

u

u

d

d

z

z

i

i

k

k

z

z

d

d

w

w

u

u

p

p

u

u

n

n

k

k

t

t

o

o

w

w

y

y

m

m

t

t

e

e

r

r

m

m

o

o

m

m

e

e

t

t

r

r

e

e

m

m

D

D

S

S

1

1

6

6

2

2

4

4

Rys. 1

list 1

Config Timer0 = Timer ,
Gate = Internal , Mode = 1

Enable Timer0
On Timer0 Timer_0
Enable Interrupts
Counter0 = 4150
Start Timer0

Timer_0:
Counter0 = 4150
Start Timer0
Incr Czesc_sekundy
If Czesc_sekundy > 14 Then
Czesc_sekundy = 0
Incr Sekundy
If Sekundy > 59 Then
Sekundy = 0
Incr Minuty
If Minuty > 59 Then
Minuty = 0
Incr Godziny
If Godziny > 23 Then
Godziny = 0
End If
End If
End If
End If

Return

background image

19

Elektronika dla Wszystkich

W podobnie prosty sposób odbywa się

pobieranie danych z czujników temperatury,
a ciekawostką jest to, że ramka danych jest
niestandardowa, bo 13 bitowa. Ponadto
temperatura kodowana jest w systemie licz-
bowym uzupełnień do dwóch, tzw U2. Obli-
czeniu poddaje się więc rzeczywistą 13 bi-
tową liczbę spośród danej 16 bitowej, obli-
cza się właściwą temperaturę (korzystając
ze współczynnika przetwarzania) i zaokrą-
gla wynik po przecinku. Listing 2 prezentu-
je cały ten proces. Zmienna Temp_1 prze-
chowuje początkowo wartość pełnych stop-
ni Celsjusza, Temp_2 zaś wartość po prze-
cinku. Na podstawie wartości zwróconej
podczas odczytu czujnika do Temp_1 wnio-
skuje się o znaku
(+/-). Jeśli liczba
w Temp_1 wyka-
zuje, że badana
temperatura jest
ujemna następuje
przeliczenie całej
temperatury. Zao-
krąglanie wykony-
wane jest w osob-
nym podprogramie
ze względu na
swoją „pamięcio-
żerność” przy ob-
słudze dwóch
czujników jedno-
cześnie.

Wszelkich nastaw dokonuje się z poziomu

trzyprzyciskowej klawiatury. Możliwe jest:
sprawdzenie nastawy budzika i jego aktywa-
cję/dezaktywację, dokonanie nastaw budzika
i zegara z rozdzielczością minuty, zmiana czuj-
nika, którego pomiar jest prezentowany, wybór
między wyświetlaniem zegara i wybranej tem-
peratury i dwiema temperaturami bez zegarka.

Procedura odczytu danych z czujników

DS1624 jest „standardowa” jak na układy
I

2

C i przedstawiona jest na listingu 3.

Na początku, jeszcze przed pobieraniem

informacji o temperaturze, należy zainicjo-
wać działanie wewnętrznego przetwornika
pomiarowego. Robi się to wydając komendę
Start Convert T (EEh). Jak widać dotyczy
to obu czujników. Dopiero po takiej inicjali-
zacji można korzystać z podprogramu

Odczyt_tempera-
tury, który zwraca
odpowiednie da-
ne do zmiennych
T e m p _ 1
i Temp_2. To,
z którego termo-
metru aktualnie
odczytywana jest
wartość mierzo-
na, zależy od
wartości zmien-
nej Termometr
i

odpowiednio

Termometr_2.

S t e r o w a n i e

odbywa się za po-
mocą 3-przyci-
skowej klawiatury. Każdy z przycisków jest
wielofunkcyjny, w zależności od tego jaką
funkcję aktualnie ustawia się. I tak:

Podczas normalnej pracy:
S1 – krótkie przyciśnięcie powoduje wyświe-
tlenie nastawy budzika i jego stanu (aktyw-
ny/nieaktywny); dłuższe wciśnięcie powodu-
je zmianę stanu budzika na przeciwny,
S2 – wciśnięcie powoduje wejście do podme-
nu nastaw budzika i zegara,
S3 – wciśnięcie powoduje wejście do podme-
nu wyboru sposobu prezentacji pomiarów.

Po wejściu do podmenu nastaw

budzika i zegara:
S1 – wciśnięcie powoduje wejście w tryb
ustawiania budzika (S1 i S2 powodują inkre-
mentację o jeden odpowiednio: godzin i mi-
nut; S3 kończy operację nastawiania),
S3 – wciśnięcie powoduje wejście w tryb
ustawiania zegara (S1 i S2 powodują inkre-
mentację o jeden odpowiednio: godzin i mi-
nut; S3 kończy operację nastawiania).

Po wejściu do podmenu wyboru

sposobu prezentacji pomiarów:
S1 – wciśnięcie powoduje wejście do podme-
nu wyboru czujnika, którego pomiary pre-
zentowane będą wraz z zegarem (S1 – czuj-
nik wewnętrzny, S3 – czujnik zewnętrzny),
S2 – wciśnięcie powoduje przejście w tryb
wyświetlania obu temperatur jednocześnie,
bez wyświetlania zegarka (z lewej strony
temperatura wewnętrzna, z prawej zaś ze-
wnętrzna).

Przy trybie wyświetlania jednej tempera-

tury organizacja wyświetlacza jest następują-
ca: GG:MM:SS_+/-TT.T

0

C. W przypadku

trybu prezentacji obu temperatur wygląda to
następująco: +/-TT.T

0

C__+/-TT.T

0

C (przy

czym +/- stanowi jedno pole i w przypadku
temperatur dodatnich pozostaje puste). Od-
świeżanie pozycji zawierających informacje
o

temperaturze realizowane jest co

4s (w przypadku obu pomiarów – naprze-
miennie co 2s).

W przypadku gdy zadziała budzik na wy-

świetlaczu pojawia się szlaczek, a z buzzera
rozlega się przerywany dźwięk. Wciśnięcie

któregokolwiek przycisku wyłącza budzik
i układ przechodzi do normalnej pracy.

Układ można zmontować na płytce uni-

wersalnej. Od razu działa poprawnie,
a krzaczki pojawiające się na pozycjach 14,
15 i 16, przez pierwsze 4s po włączeniu zasi-
lania, są naturalnym objawem. Zakres po-
miarowy termometrów DS1624 mieści się
w przedziale: [-55 do +125]

0

C. Po włączeniu

urządzenie przechodzi do odczytu tempera-
tury z układu o adresie bazowym 144.

Projekt ten dedykuję pamięci Zbigniewa Raabe.

Grzegorz Kaczmarek

flepauty@poczta.onet.pl

Rys. 2 Wyprowadzenia AT89C4051

list 2

Sub Przeliczenie
If Temp_1 >= 0 And
Temp_1 < 126 Then
Minus = 0
Temp_2 = Temp_2 / 8
Call Przelicz_single
Exit Sub
Else
Minus = 1
Temp_1 = 255 - Temp_1
Temp_2 = 255 - Temp_2
Temp_2 = Temp_2 + 1
Temp_2 = Temp_2 / 8
Call Przelicz_single
Exit Sub
End If
End Sub

Sub Przelicz_single
Temp = Temp_2 * 0.3125

list 3

I2cstart
I2cwbyte 144
I2cwbyte &HEE
'rozpoczęcie konwersji
I2cstop
Waitms 10
I2cstart
I2cwbyte 146
I2cwbyte &HEE
I2cstop

Sub Odczyt_temperatury
I2cstart
I2cwbyte Termometr
I2cwbyte &HAA
I2cstart
I2cwbyte Termometr_2
I2crbyte Temp_1 , Ack
I2crbyte Temp_2 , Nack
I2cstop
End Sub

Wykaz elementów:

Rezystory
R1,R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1,1kΩ
PR1 . . . . . . . . . . . . . . . . . . . . . . . .10kΩ miniaturowy
Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100µF/25V
C2 . . . . . . . . . . . . . . . . . . . . . . . . .100nF ceramiczny
C3,C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
C5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1µF MKT
Półprzewodniki
D1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1N4148
IC1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .AT89C4051
IC2,IC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DS1624
IC3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7805
Inne
B1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .piezo 5V
S1-S3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .µswitch
Q1 . . . . . . . . . . . . . . . . . . . . . . . . .kwarc 11,059MHz
Wyświetlacz


Wyszukiwarka

Podobne podstrony:
edw 2003 01 s18
edw 2003 06 s18
edw 2003 04 s24
edw 2003 09 s18
edw 2003 04 s10
edw 2003 10 s18
edw 2003 04 s61
edw 2003 12 s18
edw 2003 05 s18
edw 2003 04 s30
edw 2003 04 s52
edw 2003 04 s37
edw 2003 01 s18
edw 2003 04 s58
edw 2003 04 s13

więcej podobnych podstron