[ Pobierz całość w formacie PDF ]
P R O J E K T Y C Z Y T E L N I K Ó W
Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze
odpowiedzialności za prawidłowe działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż
sprawdzamy poprawność konstrukcji.
Prosimy o nadsyłanie własnych projektów z modelami (do zwrotu). Do artykułu należy dołączyć podpisane
oświadczenie,
że artykuł jest własnym opracowaniem autora i nie był dotychczas nigdzie publikowany
. Honorarium za publikację
w tym dziale wynosi 250,− zł (brutto) za 1 stronę w EP. Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie
prawo do dokonywania skrótów.
Programowany zegar
ze zdalnym sterowaniem
Projekt
118
Na powstanie tego
projektu z³oøy³o siÍ kilka
czynnikÛw: chÍÊ nauki
programowania
mikrokontrolerÛw w†jÍzyku
C, wygoda, jak¹ daje
moøliwoúÊ powierzenia
wykonywania okreúlonych
czynnoúci przez urz¹dzenie
elektroniczne oraz
ograniczenie prac
mechanicznych przy
wykonywaniu obudowy do
niezbÍdnego minimum.
WybÛr wydaje siÍ oczywisty
- zegarek, ale aby by³o
ciekawiej z†moøliwoúci¹
sterowania rÛønymi
urz¹dzeniami. Wizja kabli
ci¹gn¹cych siÍ za obudow¹
oraz ømudnego wycinania
otworÛw pod przyciski
sk³oni³a mnie do
zastosowania
w†komunikacji z†zegarem
podczerwieni oraz kodu
RC5.
Tak powsta³ projekt zega-
ra wyposaøonego w†odbiornik
podczerwieni oraz diodÍ
IRED, ktÛry steruje kilkoma
urz¹dzeniami a†jedynym
przewodem wychodz¹cym
z†obudowy jest przewÛd zasi-
lania!
WybÛr jÍzyka C†stwarza
problem, gdyø profesjonalne
oprogramowanie jest drogie,
i†z†tego powodu niedostÍpne
dla amatora, natomiast dar-
mowe kompilatory nie daj¹
odpowiedniego wsparcia przy
debugowaniu i†wykrywaniu
b³ÍdÛw†podczas pisania pro-
gramu. Dlatego mÛj wybÛr
pad³ na pakiet Ride firmy
Raisonance, ktÛrego darmowa
wersja umoøliwia napisanie
programu o†d³ugoúci kodu
wynikowego do 4†kB. Umoø-
liwia to pe³ne wykorzystanie
pamiÍci ma³ych mikrokontro-
lerÛw serii AT89CXX51. Do
wyúwietlania informacji po-
stanowi³em zastosowaÊ wy-
úwietlacz alfanumeryczny
LCD, a†do odliczania czasu
i†przechowywania danych
osobny uk³ad zegara czasu
rzeczywistego. Wyúwietlacz
alfanumeryczny umoøliwia
przeÊwiczenie wyúwietlania
komunikatÛw i†danych licz-
bowych oraz napisania wie-
lopoziomowego menu. Zasto-
sowanie oddzielnego uk³adu
zegara z†dodatkow¹ pamiÍci¹
RAM zwalnia mikrokontroler
z†odliczania czasu, co jest is-
totne podczas odbioru i†na-
dawania komunikatÛw w†ko-
dzie RC5 jednoczeúnie umoø-
liwia zastosowanie awaryjne-
go zasilania w†przypadku za-
niku napiÍcia w†sieci. Ze
wzglÍdu na doúÊ znaczny po-
bÛr pr¹du przez mikrokontro-
lery typu AT89CXX51 zasto-
sowanie buforowego zasilania
umoøliwiaj¹cego pracÍ pod-
czas zaniku g³Ûwnego, wyma-
ga³oby zastosowanie baterii
lub akumulatora o†znacznej
pojemnoúci, a†co za tym idzie
sporych gabarytÛw.
2. Wyúwietlaczem alfanu-
merycznym LCD2x16 zna-
kÛw, ktÛry jest sterowany
w†trybie czterobitowym. Kon-
trast wyúwietlacza jest usta-
wiony za pomoc¹ rezystorÛw
R1 I†R2. Podúwietlanie jest
za³¹czone na sta³e i†nie pod-
lega regulacji.
3. Odbiornikiem podczer-
wieni, ktÛry jest pod³¹czony
bezpoúrednio do wejúcia prze-
rwania INT1 mikrokontrolera.
W†celu zmniejszenia zak³ÛceÒ
jest odseparowany od zasila-
nia elementami R5 i†C7.
4. Diod¹ nadawcz¹, ktÛra
jest sterowana za pomoc¹
stopnia mocy na tranzystorze
T1. Maksymalny pr¹d jest za-
leøny od rezystora R4.
Procesor jest taktowany
z†wewnÍtrznego generatora
stabilizowanego kwarcem
o†czÍstotliwoúci 11,059 MHz.
Od jego czÍstotliwoúci zale-
ø¹ parametry nadawanego
kodu RC5 oraz prawid³owe
jego odbieranie, dlatego
w†przypadku wyboru innego
rezonatora naleøy przeliczyÊ
odpowiednie sta³e czasowe
programu.
Program sk³ada siÍ z†szeú-
ciu plikÛw (opublikowanych
ba CD-EP4/2004B), s¹ to:
1.
Zegar_10tc.c
- zawiera pro-
gram g³Ûwny.
2.
I
2
C.c
- zawiera procedury
obs³ugi szyny I
2
C.
Opis dzia³ania uk³adu
Schemat elektryczny zega-
ra pokazano na
rys. 1
. ìSer-
cemî uk³adu jest mikrokontro-
ler AT89C4051 firmy Atmel.
WspÛ³pracuje on z†nastÍpuj¹-
cymi uk³adami peryferyjnymi:
1. Zegarem czasu rzeczy-
wistego na uk³adzie PCF8583.
Uk³ad ten zawiera generator
stabilizowany zewnÍtrznym
rezonatorem kwarcowym
o†czÍstotliwoúci 32768 Hz,
uk³ad generuj¹cy przerwania
INT, interfejs szyny I
2
C, ze-
staw rejestrÛw do przecho-
wywania aktualnych wartoú-
ci czasu i†daty oraz 240 baj-
tÛw wolnej pamiÍci RAM do
dowolnego wykorzystania.
Zegar posiada dwa ürÛd³a za-
silania wspÛlne z†reszt¹ uk³a-
dÛw oraz dodatkowe z†bate-
rii 3V zapewniaj¹ce ci¹g³oúÊ
pracy uk³adu i†zachowanie
danych w†czasie przerwy za-
silania. Dane w†rejestrach ze-
gara s¹ przechowywane
w†formacie BCD.
Elektronika Praktyczna 4/2004
91
P R O J E K T Y C Z Y T E L N I K Ó W
Rys. 1. Schemat elektryczny zegara
3.
I
2
C.h
- plik nag³Ûwkowy.
4.
Lcd4b.c
- procedury obs³u-
gi wyúwietlacza.
5.
Lcd4b.h
- plik nag³Ûwko-
wy.
6.
Nadaj_RC5.a51
- program
w†asemblerze z†procedur¹
nadawania kodu RC5.
AnalizÍ pracy uk³adu roz-
poczniemy od momentu pier-
wszego w³¹czenia zasilania na
podstawie fragmentu listingu
programu zawartego w†pamiÍ-
ci mikrokontrolera (
list. 1
).
Natychmiast po w³¹czeniu
zasilania program ustawia po-
cz¹tkowe wartoúci dla niektÛ-
rych zmiennych i†wskaüni-
kÛw, ustawia parametry TI-
MER0 mikrokontrolera a†na-
stÍpnie inicjalizuje wyúwiet-
lacz oraz zegar czasu rzeczy-
wistego (
Real Time Clock
).
NastÍpnie przechodzi do wy-
konywania nieskoÒczonej pÍt-
li
while
, wewn¹trz ktÛrej jest
zagnieødøona kolejna, ktÛrej
wykonanie jest uzaleønione
od ustawienia wskaünika
pet-
la
. Wskaünik ten moøe byÊ
ustawiony podczas obs³ugi
przerwania INT0 zg³aszanego
przez zegar RTC po odebra-
niu rozkazu w†kodzie RC5
przez odbiornik podczerwieni
lub w†niektÛrych funkcjach
menu. Ustawienie wskaünika
powoduje wykonanie instruk-
cji
switch
zawartej w†pÍtli,
ktÛra ma za zadanie sterowa-
nie wykonywaniem programu
w†zaleønoúci od zmiennej
status_g.
Po wykonaniu in-
strukcji przed wyjúciem z†pÍt-
li wskaünik petla zmienia
wartoúÊ na przeciwn¹. Ma to
na celu zablokowanie kolej-
nego wykonania pÍtli lub,
jeúli w†trakcie jej wykonywa-
nia, jego wartoúÊ zosta³a wy-
zerowana umoøliwienie po-
wrotu do niej. Jeøeli razem
z†wyzerowaniem tego wskaü-
nika nast¹pi³o przypisanie
zmiennej
status_g
innej war-
toúci przy nastÍpnym wejúciu
do pÍtli zostanie wykonany
inny element instrukcji
switch. Taka konstrukcja
umoøliwia skoki programu do
obs³ugi wyúwietlania czasu
oraz wyúwietlanie i†porusza-
nie siÍ po rÛønych poziomach
menu. WartoúÊ zmiennej
sta-
tus_g
decyduje o†funkcjach
wykonywanych przez pro-
gram i†jest to g³Ûwny wskaü-
nik steruj¹cy jego prac¹.
I†tak, dla
status_g
= 0†-
program reaguje na komendÍ
ì53î (w kodzie RC5) zmian¹
ustawienia wskaünika
FlipD
odpowiedzialnego za formÍ
wyúwietlania daty (
dd.mm.-
rrrr
lub dzieÒ tygodnia), a†na
komendÍ ì63î podstawia do
zmiennych wartoúci koniecz-
ne do wyúwietlenia pierwsze-
go poziomu menu. Gdy
sta-
tus_g
= 1†- ustawiany podczas
obs³ugi przerwania od zegara
RTC, program realizuje funk-
cje zwi¹zane z†odczytem ak-
tualnego czasu z†rejestrÛw,
nastÍpnie przesy³a go do wy-
úwietlacza, porÛwnuje nasta-
wy timerÛw†z†aktualnym cza-
sem a†w†przypadku stwier-
dzenia zgodnoúci nadaje od-
powiedni kod RC5. Gdy
sta-
tus_g
= 2†- ustawiany po ode-
braniu komendy ì63î umoø-
liwia obs³ugÍ pierwszego po-
ziomu menu. Z†kolei dla
sta-
tus_g
= 3†- ustawiany po wy-
braniu menu timery na pier-
wszym poziomie. Umoøliwia
odczyt nastaw timerÛw z†pa-
miÍci RAM i†ich przegl¹da-
nie. W†przypadku gdy
sta-
tus_g
= 4†- ustawiany po wy-
braniu menu czas na pierw-
szym poziomie. Umoøliwia
odczyt czasu i†daty z†rejest-
rÛw ich zmianÍ i†zapisanie
aktualnych wartoúci. Dla
sta-
tus_g
= 5†- ustawiany po wy-
braniu danego timera umoøli-
wia zmianÍ jego parametrÛw
i†zapis nowych wartoúci.
Poniewaø jest to pierwsze
w³¹czenie wyúwietlony czas
nie bÍdzie odpowiada³ aktu-
alnemu. Moøemy teraz nacis-
n¹Ê przycisk LD (komenda 63
w†RC5) na pilocie, wyúwietli
nam siÍ teraz pierwsza opcja
menu ìUstaw Timerî. Nacis-
kamy CHANNEL
+
(30) lub
CHANNEL
-
(36), po czym wy-
úwietla siÍ ìUstaw Czas i†da-
teî teraz wciskamy PLAY(53)
i†jesteúmy w†opcji ustawiania
czasu. Liczby wprowadzamy
92
Elektronika Praktyczna 4/2004
Elektronika Praktyczna 2/98
P R O J E K T Y C Z Y T E L N I K Ó W
List. 1. Fragment programu sterującego pracą mikrokontrolera
void main (void)
{
IT0 = 1; // zewnętrzne przerwanie INT0 przy H/L-zbocze
IT1 = 1; // zewnętrzne przerwanie INT1 przy H/L-zbocze
EX0 = 1; // zewnętrzne przerwanie INT0 zezwalać
EX1 = 1; // zewnętrzne przerwanie INT1 zezwalać
EA = 1; // zezwolenie na obsługę przerwań
TMOD = 0x11; // ustawienie trybu pracy zegarów
Ired = 1; // doda ired wyłączona
LcdInitialize(); // inicjalizacja wyświetlacza
I2C_Start();
I2C_Send(0xA0); // adres PCF8583 do zapisu
I2C_Send(0x00); // adres w RAM
I2C_Send(0x00); // wartość pod adres “00”
I2C_stop();
Petla = 1;
while(1)
{
while (petla)
{
switch (status_g)
{
case 0:
if (komenda == 53){FlipD = !FlipD;LcdClrScr();} // wyświetlanie roku
//lub dnia tygodnia
if (komenda == 63) // wybór LD wejście do menu głównego
{
status_g = 2;
status_m = 0;
EX0=0;
Petla = 0;
}
break;
case 1:
// wyświetlenie czasu
CzytajCzas();
if (mies == 0x12 && Mdzien == 0x31 && godz == 0x23 &&
min == 0x59 && sek == 0x59)
{
rok++;
x1 = rok;
x1 = x1 & 0x0F;
if (x1 == 0x0A) // odliczanie roku
{
rok = rok & 0xF0;
rok = rok + 0x10;
}
ZapiszRok();
}
WriteToLcdCtrlRegister(0x02);
WriteToLcdCtrlRegister(0x84);
LcdWyswietl();
SprawdzAlarm();
break;
case 2:
// wyświetlenie menu głównego
LcdClrScr();
WriteToLcdCtrlRegister(0x02);
WysMenu ();
break;
Rys. 2. Algorytm działania funkcji main()
case 3:
LcdClrScr();
WriteToLcdCtrlRegister(0x02);
WysMenuTaim();
break;
z†klawiatury numerycznej na-
tomiast dane takie jak dzieÒ
tygodnia zmieniamy przycis-
kami CHANNEL. Po ustawie-
niu w³aúciwego czasu i†daty
przyciskiem STANDBY(12)
wychodzimy z†menu z jedno-
czesnym zapisem nowych
ustawieÒ do rejestru zegara.
Czas i†data w†uk³adzie
PCF8583 s¹ zapisywane w†for-
macie BCD natomiast w†pro-
gramie wygodniej jest opero-
waÊ zapisem w†formacie HEX,
dlatego podczas ich odczytu
i†zapisu s¹ one konwertowa-
ne do odpowiedniego forma-
tu. Dane zawieraj¹ce nastawy
timerÛw, zapisywane w†pa-
miÍci RAM, nie podlegaj¹ tej
procedurze jedynie przed ich
transferem jest wyliczany ad-
res, pod ktÛrym s¹ one zapi-
sane.
Skoro mamy juø ustawio-
ny czas moøemy ustawiÊ ti-
mery. Zaczynamy tak jak po-
przednio aø do chwili wy-
úwietlenia ìUstaw Timerî.
Naciskamy PLAY wyúwietla-
j¹ siÍ nastawy pierwszego ti-
mera, przyciskami CHANNEL
moøemy kolejno wyúwietliÊ
nastawy wszystkich dziesiÍ-
ciu. Po pierwszym za³¹cze-
niu w†pamiÍci RAM mog¹
byÊ jakieú przypadkowe war-
toúci nie naleøy siÍ tym prze-
jmowaÊ tylko przechodzimy
do ich ustawiania. Wybiera-
my np.
timer 1
naciskamy
PLAY i†migaj¹cy kursor za-
chÍca nas do zmiany usta-
wieÒ. Na pierwszej pozycji
ustawiamy, ktÛrym urz¹dze-
niem ma sterowaÊ ten timer.
Jeúli ustawimy ì*î oznacza
to, iø jest on wy³¹czony. Na-
case 4:
// ustawianie czasu
LcdClrScr();
WysMenuCzas();
break;
case 5:
WriteToLcdCtrlRegister(0x0D); // włączenie mrugania znaku
UstawAlarm();
break;
}
komenda = 0xFF;
// ustawienie “obojętnej” komendy
petla = !petla;
// zaprzeczenie bitu
EX1 = 1;
}
}
}
stÍpnie naciskamy >>(46)
i†przechodzimy do ustawia-
nia dnia i godzin za³¹czenia
i†wy³¹czenia. Ustawiaj¹c
dzieÒ oprÛcz skrÛtÛw (dwÛch
pierwszych liter) dni tygo-
dnia wyúwietlaj¹ siÍ inne
oznaczaj¹ce:
PP - od poniedzia³ku do pi¹t-
ku
CT - ca³y tydzieÒ
WK - sobota i†niedziela
Zmienione wartoúci zapi-
sujemy przyciskiem PLAY, po
czym program wraca do prze-
gl¹dania timerÛw i†moøemy
Elektronika Praktyczna 4/2004
93
P R O J E K T Y C Z Y T E L N I K Ó W
przyst¹piÊ do ustawiania ko-
lejnych nastaw.
Krytyczny moment w†pra-
cy programu wystÍpuje, gdy
w†tej samej minucie urz¹dze-
nie musi wys³aÊ rozkazy do
dwÛch lub wiÍkszej liczby
urz¹dzeÒ. Czas nadawania
jednego cyklu rozkazu w†ko-
dzie RC5 to ok. 100 ms. Dla
pewnoúci jest on wysy³any
szeúciokrotnie, ³¹czny czas
nadawania wynosi 600 ms.
Gdyby teraz rozpocz¹Ê nada-
wanie kolejnego rozkazu na-
st¹pi³aby kolizja w†czasie
z†odczytem i†wyúwietlaniem
czasu, mog³oby to powodowaÊ
przek³amania transmisji, dla-
tego w†jednej sekundzie jest
nadawany rozkaz tylko od jed-
nego timera, nastÍpne zaú
wraz z†pocz¹tkiem kolejnych
sekund. Za realizacjÍ dzia³a-
nia timerÛw i†nadawanie ko-
dÛw odpowiada funkcja
SprawdzAlarm
, ktÛrej dzia³a-
nie moøna przeúledziÊ na
podstawie
list. 2
.
Funkcja ta jest wywo³y-
wana, co sekundÍ. Na pocz¹t-
ku jest sprawdzany warunek
czy zmienna
sek
jest rÛwna
zero, jeúli tak nastÍpuje usta-
wienie wskaünika poszukiwa-
nia alarmu i†zerowanie
zmiennej pomocniczej
sta-
tus_m
. NastÍpnie po spraw-
dzeniu znacznika
SzukajA-
larm
program przechodzi do
wykonywania pÍtli
do_while
.
Jej cech¹ charakterystyczn¹
jest to, iø jest ona wykonywa-
na przynajmniej jeden raz,
a†warunek jej dalszego wyko-
nywania jest sprawdzany po
wykonaniu instrukcji w†niej
zawartych. Teraz nastÍpuje
odczytanie odczyt danych
z†pamiÍci RAM i†jeúli alarm
jest aktywny sprawdzenie wa-
runkÛw od dnia tygodnia.
Spe³nienie ktÛregokolwiek
z†warunkÛw powoduje usta-
wienie wskaünika OK, co jest
przepustk¹ do porÛwnania ak-
List. 2. Listing funkcji
SprawdzAlarm
void SprawdzAlarm (void)
{
unsigned char n2;
// zmienne lokalne dla licznika
if (sek == 0){status_m = 0;SzukajAlarm = 1;}
if (SzukajAlarm == 1)
{
do{
CzytajAlarm();
// odczyt danych z pamięci RAM
EX1 = 0;
// przerwania od IR wyłącz
// sprawdzenie warunków od dnia tygodnia
//-------------------------
if (alarm.Stan > 0){ // pomiń jeśli “0”(*) alarm wyłączony
if (alarm.Dzien == 7){OK = 1;} // alarm codzienny ustawienie bitu “OK”
if (alarm.Dzien == 8 && Tdzien > 0x04){OK = 1;}
// weekend
if (alarm.Dzien == 9 && Tdzien < 0x05){OK = 1;}
// od pon do piątku
if (alarm.Dzien == Tdzien){OK = 1;}
// dla konkretnego dnia tygodnia
// sprawdzenie warunków dla czasu załączenia i wyłączenia
//-------------------------
if (OK == 1){
OK = 0;
if (godz == alarm.OnGodz && min == alarm.OnMin){
for (n2 = 0; n2 < 6; n2++){
x5 = kody_RC5[alarm.Stan * 3];
// pierwszy element tabeli
x6 = kody_RC5[alarm.Stan * 3 + 1];
// drugi element
NadajA();
// wywołanie procedury nadawania RC5 z asm
Delay(86);
}
status_m++;
status_g = 0;
return;
}
if (godz == alarm.OffGodz && min == alarm.OffMin){
for (n2 = 0; n2 < 6; n2++){
x5 = kody_RC5[alarm.Stan * 3];
x6 = kody_RC5[alarm.Stan * 3 + 2];
// trzeci element
NadajA();
// wywołanie procedury z asm
Delay(86);
}
status_m++;
status_g = 0;
return;
}
}
//---------------------------
}
//---------------------------
status_m++;
}while (status_m < 0x0B);
}
EX1 = 1;
// przerwania od IR włącz
status_g = 0;
SzukajAlarm = 0;
}
tualnego czasu z†czasem za³¹-
czenia i†wy³¹czenia timera.
Jeúli te czasy siÍ zgadzaj¹ pro-
gram przechodzi do wykony-
wania pÍtli
for
, w†ktÛrej jest
realizowane nadawanie kodu
RC5. Procedura nadawania
kodu jest napisana w†asemb-
lerze po to øeby moøna by³o
precyzyjnie zrealizowaÊ odli-
czanie czasu nadawania po-
szczegÛlnych bitÛw kodu. Po
wyjúciu z†pÍtli nastÍpuje mo-
dyfikacja zmiennych i†prze-
rwanie wykonywania pÍtli
do_while
. W†kolejnej sekun-
dzie program podejmuje wy-
konywanie tej pÍtli i†po kil-
kukrotnym jej wykonaniu,
o†ile nie nast¹pi nadanie ko-
lejnego rozkazu, zostanie
spe³niony warunek konieczny
do zakoÒczenia jej dzia³ania.
Odbiornik podczerwieni
jest pod³¹czony do wejúcia
przerwania zewnÍtrznego
INT1. Procedura jego obs³ugi
startuje TIMER0 mikrokontro-
lera i†blokuje przerwanie
INT1 do zakoÒczenia odbiera-
nia kodu, wejúcie to pracuje
teraz tylko jako zwyk³y port
wejúciowy, ktÛrego stan jest
odczytywany w†procedurze
obs³ugi przerwania TIMER0.
Dekoduje ona odbierane in-
formacje i†po sprawdzeniu ad-
resu umieszcza komendÍ
w†odpowiednim rejestrze a†na
koniec ustawia wskaünik pet-
la i†odblokowuje przerwanie
INT1 umoøliwiaj¹c odbiÛr ko-
lejnego rozkazu. Ze wzglÍdu
na pewne uproszczenia zwi¹-
zane z†odbiorem bitu FLIP ko-
Rys. 3. Rozmieszczenie elementów na płytce drukowanej
94
Elektronika Praktyczna 4/2004
Elektronika Praktyczna 2/98
 P R O J E K T Y C Z Y T E L N I K Ó W
du RC5, przy pierwszym na-
ciúniÍciu przycisku na pilocie
moøe wyst¹piÊ potrzeba po-
wtÛrnego jego naciúniÍcia dla
uzyskania reakcji urz¹dzenia.
Funkcje Channel i†Numery
zapewniaj¹ prawid³ow¹ inter-
pretacjÍ komend wprowadza-
nych za pomoc¹ przycis-
kÛw†CHANNEL i†numerycz-
nych pilota podczas wprowa-
dzania danych. Zegar
PCF8583 posiada tylko czte-
roletni kalendarz, dlatego
aktualny rok jest zapisany
w†pamiÍci RAM. Dla zapew-
nienia prawid³owego wy-
úwietlania roku przestÍpnego
podczas zapisu daty jest wy-
liczana odpowiednia zawar-
toúÊ rejestru roku w†tym ze-
garze. Dok³adny opis proce-
dur obs³ugi wyúwietlacza
i†szyny I
2
C moøna znaleüÊ
w†kursie jÍzyka C†opubliko-
wanego w†EP7 i†11/2002. Pi-
lot, ktÛrego uøywam do stero-
wania zegarem, pochodzi od
amplitunera firmy Philips
i†ma moøliwoúÊ sterowania
rÛønymi urz¹dzeniami. Funk-
cja LD (adres 12 w†kodzie
RC5) jest nie wykorzystywa-
na, dlatego wybra³em j¹ do
sterowania tym urz¹dzeniem.
Moøna zastosowaÊ dowolny
pilot nadaj¹cy w†kodzie RC5
zmieniaj¹c adres i†odpowied-
nie komendy. Naleøy zwrÛciÊ
szczegÛln¹ uwagÍ na komen-
dy gdyø pod tak samo opisa-
nym przyciskiem mog¹ byÊ
nadawane rÛøne. Kody RC5
nadawane przez opisany ze-
gar, w†tej wersji programu, s¹
sta³e dla danego urz¹dzenia,
a†ich zmiany moøna dokonaÊ
tylko w†tabeli
cody_RC5
gdzie
s¹ zapisane w†kodzie HEX.
Pierwszy element wiersza ta-
beli jest adresem sterowanego
urz¹dzenia drugi jest komen-
d¹ nadawan¹ o†czasie usta-
wionym w†menu na pozycji
on natomiast trzeci, na pozy-
cji
off
.
modu³. Na p³ytce znajduje siÍ
teø bateria 3†V†stanowi¹ca do-
datkowe zasilanie dla uk³adu
PCF8583, odbiornik podczer-
wieni i†dioda nadawcza. Do
zasilania uk³adu naleøy do-
starczyÊ stabilizowane napiÍ-
cie 5†V†gdyø nie ma on na
p³ytce stabilizatora. Uk³ad
moøe byÊ zamontowany w†sa-
modzielnej obudowie lub jako
element innego urz¹dzenia.
W†celu zwiÍkszenia zasiÍgu
dzia³ania moøna na oddziel-
nej p³ytce po³¹czyÊ szerego-
wo kilka diod IRED zasila-
j¹c†je z†wyøszego napiÍcia,
a†tak wykonany modu³ umieú-
ciÊ na obudowie lub dodaj¹c
przewÛd w†innym dogodnym
miejscu zapewniaj¹cym odpo-
wiedni zasiÍg. Po zmontowa-
niu i†w³¹czeniu zasilania na-
leøy zwrÛciÊ uwagÍ na kon-
trast wyúwietlacza i†ustawiÊ
go potencjometrem P1. Zwory
Z1 i†Z2 (nie ma na schema-
cie) wlutowaÊ, jeúli wymaga
tego podúwietlanie†wyúwietla-
cza.
Henryk Wiêsyk
henko.w@wp.pl
WYKAZ ELEMENTÓW
Rezystory
P1: 1k

Kondensatory
C1: 100nF
C2: 220
F/16V
C3, C5, C6: 33pF
C4: 1
µ
F/16V
C7: 100
F/16V
Półprzewodniki
D1, D2: BAVP21
D3: IRED
Q1: BC327
U1: AT89C4051
U2: PCF8583
IR1: SOH5110
Różne
X1: rezonator kwarcowy
11,0592 MHz
X2: rezonator Kwarcowy
32768 Hz
LC1: wyświetlacz
alfanumeryczny LCD2x16
J1: ARK2
BT1: podstawka na baterię
CR2032
µ
Montaø i†uruchomienie
Uk³ad zmontowano na
jednostronnej p³ytce drukowa-
nej (schemat montaøowy po-
kazano na
rys. 3
) i†po³¹czono
z†wyúwietlaczem za pomoc¹
goldpinÛw, tworz¹c zwarty
Elektronika Praktyczna 4/2004
95

R2, R5: 100
R4: 5,6
µ
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • diakoniaslowa.pev.pl