18
Elektronika dla Wszystkich
Projekty
Kod RC5 jest najpopularniejszym sposobem
kodowania informacji przekazywanej przez
promieniowanie podczerwone. Obfitość
układów wykorzystujących go sprawia, że
także amatorzy i hobbyści coraz częściej się-
gają po niego w swoich konstrukcjach.
Nadawanie rozkazów RC5 w układach zbu-
dowanych ze „zwykłych scalaków” napotyka
na pewne kłopoty. Głównie chodzi o to, że
dostępne nadajniki kodu RC5 przeznaczone
są do pracy w pilotach zawierających wielo-
przyciskową klawiaturę matrycową, co prze-
kreśla ich zastosowanie w układach cyfro-
wych, gdzie prawie zawsze informacja wy-
stępuje w postaci binarnej.
Zastosowanie techniki mikroprocesorowej
otwiera bardzo szerokie możliwości jego wy-
korzystania. Jest ono proste zwłaszcza w dia-
lekcie BASCOM BASIC, gdzie dostępne są
polecenia GETRC5 oraz dodane ostatnio do
pakietu Bascom AVR polecenie SENDRC5.
O ile w pakiecie Bascom AVR dostępne jest
polecenie SENDRC5, to programujący w in-
nych językach, gdzie takich ułatwień nie ma,
stają przed koniecznością albo napisania go
samemu, albo sięgnięcia po dodatkowy hard-
ware, którym może być opisywany układ.
Dotyczy to także konstruktorów wykorzystu-
jących procesory mniej popularne, dla
których nie stworzono łatwych w wykorzy-
staniu pakietów takich jak BASCOM.
Prezentowane urządzenie rozwiązuje
wszystkie takie problemy. Jest to nadajnik
RC5 sterowany popularną magistralą I
2
C lub
poprzez podanie zwyczajnej liczby sześcio-
bitowej określającej adres odbiornika i/lub
wysyłany rozkaz.
Krótki opis kodu RC5
Krótki opis kodu RC5 zamieszczony był
w EdW 9/96. W niniejszym opisie przyjmij-
my następującą konwencję: cyframi 0 lub 1
oznaczymy wartości kolejnych bitów w ko-
dowanej liczbie (zwyczajny kod binarny),
zaś literami H lub L odpowiednie stany w od-
powiadającej tej liczbie sekwencji kodowej.
H oznacza paczkę impulsów o częstotliwości
36kHz trwającą ok. 1ms, zaś L trwającą tyle
samo przerwę.
Na początku transmisji występuje pewna
sekwencja startowa, która nie jest zbyt waż-
na z punktu widzenia sposobu kodowania.
Później wysyłany jest adres odbiornika
(0...31), a następnie komenda (0...63). Za-
równo w adresie, jak i w komendzie najpierw
nadawany jest najbardziej znaczący bit, a na
końcu najmniej znaczący.
Zasada kodowania jest następująca: jeśli
kolejny bit występujący w liczbie ma war-
tość 0, to w sekwencji wstawiamy frag-
ment HL, jeśli ma wartość 1, to wstawia-
my LH. To wszystko! Cała tajemnica kodu
RC5 zawiera się w tym krótkim zdaniu!
Tabelka zawierająca stosowne przykłady.
Dla ułatwienia sekwencje kodowe podzie-
lone zostały na pary liter L i H – każda para
odpowiada jednemu bitowi w kodowanej
liczbie. Nazwijmy umownie litery
H i L przeciwnymi, pamiętając ciągle, że
H to paczka impulsów podczerwieni, a L to
przerwa w nadawaniu. Zauważcie, że zasadę
kodowania można wtedy także wyrazić ina-
czej – jeśli kolejny bit, jest taki sam jak po-
przedni, to dodaj literę przeciwną do ostat-
niej i po niej wstaw przeciwną do dodanej,
jeśli jest inny, to dodaj taką literę jaka była
ostatnio i po niej wstaw przeciwną do doda-
nej. Właśnie taki algorytm realizuje program
znajdujący się w procesorze – kto chce, mo-
że przerobić go tak, aby działał „po bożemu”,
czyli zgodnie z pierwszą zasadą.
Do omówienia pozostała tylko sekwencja
startowa. Właściwie są dwie sekwencje wy-
stępujące na zmianę przy każdym kolejnym
wciśnięciu przycisku w klasycznym pilocie,
np. do telewizora. Dzięki temu odbiornik
„wie”, czy przycisk jest stale trzymany, czy
też ciągle puszczany i wciskany. Trzeba bo-
wiem wiedzieć, że przytrzymanie przycisku
w takim pilocie powoduje ciągłe wysyłanie
sekwencji kodowych (każda trwa ok. 25ms)
z odstępem ok. 100ms – każda z nich posia-
da tę samą sekwencję startową. Kolejne pu-
szczenie i wciśnięcie przycisku zmienia ją na
inną. A sekwencje te wyglądają następująco:
HLHLH lub też HLHHL. Jak widać, dwie
ostatnie litery kodują parzystość, a pierwsze
trzy to niezbyt interesujący bit startu (a nawet
1,5 bitu!). Możemy teraz podać przykład peł-
nego rozkazu, w którym adres niech będzie
równy na przykład 10 (01010 BIN), a ko-
menda 25 (011001 BIN). Celowo dodałem
nieznaczące zera na najstarszych pozycjach –
wysyłane liczby są zawsze traktowane jako
pięciobitowe (adres) lub sześciobitowe (ko-
menda), nawet gdy do ich zapisu wystarczy
mniejsza liczba bitów. A oto jak wygląda wy-
syłany rozkaz:
lub analogicznie z drugą sekwencją startową.
Na koniec wspomnijmy, że taki sposób kodo-
wania nazywany jest transmisją bifazową -
i rzeczywiście każda zmiana bitu w wysyła-
nej liczbie powoduje niejako odwrócenie fa-
zy w sekwencji kodowej.
Opis układu
Schemat układu znajduje się na rysunku 1.
Jak widać, sercem urządzenia jest dobrze
znany Czytelnikom EdW AT89C2051, który
P
P
i
i
l
l
o
o
t
t
R
R
C
C
5
5
s
s
t
t
e
e
r
r
o
o
w
w
a
a
n
n
y
y
m
m
a
a
g
g
i
i
s
s
t
t
r
r
a
a
l
l
ą
ą
I
I
2
2
C
C
l
l
u
u
b
b
r
r
ó
ó
w
w
n
n
o
o
l
l
e
e
g
g
l
l
e
e
++
++
++
2
2
6
6
8
8
1
1
HLHLH HL LH HL LH HL HL LH LH HL HL LH
Liczba binarna
Reprezentacja
w kodzie RC5
11000
LH LH HL HL HL
10000
LH HL HL HL HL
00001
HL HL HL HL LH
100001
LH HL HL HL HL LH
101011
LH HL LH HL LH LH
realizuje wszystkie funkcje związane z wysy-
łaniem rozkazów w kodzie RC5, łącznie
z modulowaniem wiązki podczerwieni. Wy-
korzystanie procesora w roli urządzenia pod-
porządkowanego w transmisji I
2
C (Slave) na-
potyka na spore trudności. Jest to wada, ale
w sumie nie tak bardzo duża, bo sterowanie
przy użyciu magistrali I
2
C jest opcją dodat-
kową i w wielu przypadkach w ogóle nie bę-
dzie wykorzystane. Wtedy ekspander I
2
C
PCF8574(A) nie będzie montowany.
Podstawowe założenia projektowe mówiły,
że układ ma być nadajnikiem RC5 sterowa-
nym słowem sześciobitowym. W takim przy-
padku U2 wraz z elementami R1...R3 oraz J2
jest zbędny, a w miejsce nóżek 4,5,6,7,
9,10,11 należy wlutować rzędy goldpinów –
wraz z odpowiednimi złączami szufladkowy-
mi i przewodem taśmowym posłużą one do
sterowania pilotem. Układ elektroniczny pi-
lota jest bardzo prosty. Jumper J2 służy do
wybrania adresu bazowego ekspandera U2,
tranzystor T1 steruje dwoma diodami IRED.
W praktyce okazuje się, że do poprawnej
pracy w zupełności wystarczy jedna taka dio-
da. Prąd ten, z rezystorem R5 o wartości
4,7
Ω, wynosi ok. 615mA, co w zupełności
wystarcza. Rezystor R4 nie powinien mieć
wartości większej od 220
Ω, gdyż minimalny,
gwarantowany przez producenta, współczyn-
nik wzmocnienia prądowego T1 wynosi 40
i przy większych wartościach R4 tranzystor
ten nie zostałby w pełni otwarty. W praktyce
z pewnością okaże się, że T1 ma wzmocnie-
nie znacznie większe, nawet dochodzące do
150...200, ale gdyby zdarzyło się, że jest ono
bliskie 40, to R4 można nawet zmniejszyć do
180...200
Ω.
Opisywany pilot, podobnie jak klasyczne
piloty RC5, może pracować w jednym
z dwóch trybów pracy: ze stałym (J3 rozwar-
ty) oraz ze zmiennym (J3 zwarty) adresem
RC5. W trybie ze stałym adresem każde opa-
dające zbocze na porcie P1.0 układu U1 po-
woduje wysłanie przez niego rozkazu RC5,
w którym komenda jest liczbą pobraną
z nóżek P1.2...P1.7, a adres liczbą ustawioną
przez użytkownika jumperami J1 (P3.5 to
najstarszy bit). Uwaga! Zwarcie jumperka
jest tu traktowane jako ustawienie określone-
go bitu adresu na 1, pomimo że stanowi to
zwarcie do masy odpowiadającego mu pinu
portu P3. Jest to tylko kwestia programowej
interpretacji - połączenie kojarzy się raczej
z jedynką niż z zerem. Oczywiście nie doty-
czy to ustawiania adresu bazowego I
2
C ukła-
du U2, gdzie zwarcie któregoś z jumperków
J2 to podanie zera na odpowiedni pin
A0...A2.
W trybie ze zmiennym adresem jest ina-
czej. Pierwsze opadające zbocze sygnału na
P1.0 sprawia, że procesor odczytuje 5 bitów
P1.7...P1.3 i zapamiętuje tę liczbę jako adres
kolejnego rozkazu RC5 (na razie jednak ni-
czego nie wysyła). Następne opadające zbo-
cze na P1.0 powoduje wysłanie rozkazu, przy
czym adresem jest odczytana przed chwilą
liczba, zaś komendą liczba aktualnie znajdu-
jąca się na sześciu pinach P1.7...P1.2. Kolej-
ne opadające zbocze na P1.0 znów powoduje
odczytanie adresu... i tak w kółko. Oprócz te-
go niezależnie od trybu pracy każdy kolejny
rozkaz wysyłany jest z przeciwną sekwencją
startową, czyli parzystością.
Jak widać, procesor podejmuje jakiekol-
wiek działania wraz z odebraniem opadające-
go zbocza sygnału na P1.0 (n. 12). Jest to dla
niego informacja, że na porcie P1 znajduje
się nowa, ważna liczba mogąca być adresem
lub komendą wysyłanego rozkazu. Niektórzy
zapytają, dlaczego nie wykorzystałem do te-
go celu wyprowadzenia INT układu U2 –
otóż impuls na tej nóżce pojawia się dopiero
przy zmianie liczby znajdującej się w jego
wewnętrznym rejestrze 8-bitowym i jej wy-
korzystanie uniemożliwiłoby wysyłanie kil-
ku takich samych rozkazów RC5 bezpośre-
dnio po sobie, a to byłoby poważną wadą.
A oto przykład użycia pilota:
Załóżmy, że U2 jest typu PCF8574
i zwarte są wszystkie jumpery J2 (adres ba-
zowy 64), a system sterujący naszym pilotem
jest oprogramowany w Bascomie. Aby wy-
słać jeden rozkaz RC5, należy wydać nastę-
pujące polecenia.
Praca pilota ze stałym adresem (adres ustawiony
za pomocą J1):
I2csend 64, komenda ‘ komenda na
P1.7...P1.2 oraz 0 na P1.0
Waitms 50
I2csend 64, 64
‘ wystaw 1 na P1.0
Praca pilota ze zmiennym adresem:
I2csend 64, adres
Waitms 50
I2csend 64, 64
Waitms 50
I2csend 64, komenda
‘
w tym momencie pilot wysyła rozkaz
Waitms 50
I2csend 64, 64
Jak widać, po wystawieniu liczby na port
P1, należy chwilę odczekać, aby zlikwidować
ryzyko ewentualnych zakłóceń odbioru. Nie
musi to wcale być 50ms – zwykle wystarczy
znacznie mniej. Należy pamiętać, żeby ko-
menda była liczbą z zakresu 0...63, a adres
liczbą z zakresu 0...31. Wprawdzie niepo-
trzebne bity są ignorowane, ale chodzi o to,
żeby wraz z wysłaniem tych liczb na P1.0 po-
dawany był stan niski. W przypadku bezpo-
średniego sterowania pilotem zasada sterowa-
nia pozostaje ta sama z tym, że zamiast wysy-
łania danych magistralą I
2
C, na nóżki
P1.7...P1.2 podajemy adres lub komendę bi-
narnie oraz wystawiamy zero na P1.0. Po za-
kończeniu transmisji należy „posprzątać”,
czyli wystawić 1 na P1.0. W praktyce z pew-
nością znacznie częściej wykorzystywany bę-
dzie tryb ze stałym adresem. Tryb z adresem
zmiennym wykorzystamy wtedy, gdy zaist-
nieje potrzeba niezależnego sterowania kilko-
ma odbiornikami lub gdyby okazało się, że 64
różne komendy to za mało. Możemy wtedy
potraktować adres jako starszą część przesy-
łanego rozkazu, a komendę jako młodszą.
Dzięki temu liczba różnych możliwych do
wysłania rozkazów wyniesie 32*64=2048.
Tyle opisu wystarczy, aby samodzielnie
wykonać układ. Dalsza część przeznaczona
jest dla bardziej dociekliwych Czytelników,
którzy chcą lepiej zrozumieć funkcjonowa-
nie programu.
Program pilota
Przy jego opisie pominę główną część,
w której następuje wybieranie trybu pracy,
odczytywanie liczb binarnych z portów oraz
wywoływanie procedury wysyłającej dane
w kodzie RC5. Ograniczę się jedynie do opi-
sania tej procedury, którą nazwałem
Sendrc5(Adrbin as Byte, Kombin as Byte).
W głównej części programu zadeklarowane
są zmienne o nazwach Adres i Komenda.
19
Elektronika dla Wszystkich
Projekty
Rys. 1 Schemat ideowy
Do nich wczytywane są odpowiednie liczby
będące wartościami adresu i komendy w wy-
syłanym rozkazie RC5. Odczytywanie ko-
mendy odbywa się zawsze z nóżek
P1.7...P1.2 i zostało zaimplementowane
w oddzielnej procedurze Zbieraj_komende.
Odczytywanie adresu – zależnie od trybu pra-
cy – odbywa się albo z pinów P1.7...P1.3, al-
bo z pinów P3.1...P3.5 i ma miejsce w głów-
nej części programu. Wywołanie Call Sen-
drc5 (Adres, Komenda) sprawia, że wysyłany
jest rozkaz o takim adresie i komendzie, jakie
znajdowały się w owych zmiennych w chwi-
li wywołania tej procedury. Podczas jej wy-
wołania wartości ze zmiennych Adres i Ko-
menda kopiowane są do zmiennych Adrbin
i Kombin (parametry procedury Sendrc5),
które są później używane i zmieniane w pro-
cesie odczytywania ich kolejnych bitów
(w sekwencji od najstarszego do najmłodsze-
go). Dzięki temu zmienne Adres i Komenda
nie zmieniają swojej wartości po wywołaniu
procedury Sendrc5 i mogą być ewentualnie
dalej wykorzystywane w programie.
Główne zmienne występujące w procedu-
rze Sendrc5 (Adres,Komenda) są następujące:
Wy – zmienna typu bit. Wywołanie podpro-
gramu Czekaj w chwili, gdy ma ona wartość
1 powoduje wysłanie paczki impulsów (H),
w przeciwnym razie następuje przerwa o ta-
kim samym czasie trwania (L).
Parity – zmienna typu bit określająca rodzaj
sekwencji startowej.
Ired – alias dla pinu P3.0, czyli wyjście na
bazę T1.
Present – zmienna typu bit równa wartości
aktualnie analizowanego bitu zmiennej Ad-
res lub Komenda.
Last – jak wyżej, z tym, że chodzi o bit po-
przednio analizowany.
Potega(n) - zmienna tablicowa zawiera (n-1)
potęgę dwójki, np. Potęga(4)=8 itd. Zapisano
w niej sześć kolejnych liczb 1,2,4,8,16,32.
Jest ona potrzebna do konwersji liczby dzie-
siętnej na dwójkową.
Początek procedury jest następujący
:
Sendrc5(adrbin,Kombin)
Set Ired
`na wszelki wypadek wyłącz
T1
Parity = Not Parity
`zmień sekw. startową
Set Wy
`wyślij 1,5 bitu startu, teraz H
Gosub Czekaj
Reset Wy
`L
Gosub Czekaj
Set Wy
`H
Gosub Czekaj
If Parity = 0 Then
`parzystość taka
Set Wy
`H
Gosub Czekaj
Reset Wy
`L
Last = 0
`to jest potrzebne później
Gosub Czekaj
Else
`lub parzystość taka
Reset Wy
`L
Gosub Czekaj
Set Wy
`H
Last = 1
`to jest potrzebne później
Gosub Czekaj
End If
Teraz następuje wysyłanie adresu. Odby-
wa się to zgodnie ze zmodyfikowanym algo-
rytmem. Oto ten fragment:
For Licznik1 = 5 Downto 1 `wysyłanie adresu
If Adrbin >= Potega(licznik1) Then
`pobierz kolejny bit adresu
Present = 1
`wynosi on 1
Adrbin = Adrbin - Potęga(licznik1)
Else
Present = 0
`lub 0
End If
If Present = Last Then `jeśli dwa ostatnie bity są
równe
Wy = Not Wy
`wyślij literę przeciwną
Gosub Czekaj
`do ostatniej (H lub L)
Wy = Not Wy
`i przeciwną do wysłanej
Gosub Czekaj
`przed chwilą
Else
`w przeciwnym wypadku
Gosub Czekaj
`wyślij tę samą literę co
ostatnia
Wy = Not Wy
`i wyślij przeciwną
Gosub Czekaj
End If
Last = Present
`aktualny bit staje się
poprzednim
Next Licznik1
`pobierz kolejny bit
Następnie tak samo wysyłana jest ko-
menda, z tym, że bitów jest 6 i zamiast
zmiennej Adrbin jest Kombin. Na tym koń-
czy się działanie procedury Sendrc5. Uważ-
ny Czytelnik może w tej chwili powiedzieć
„skoro na portach procesora mamy normal-
ne liczby dwójkowe, to po co zamieniać je
w głównej części programu na dziesiętne,
a potem w procedurze Sendrc5 z powrotem
na binarne?”. Zrobiłem tak po to, aby proce-
dura Sendrc5 była uniwersalna, czyli żeby
po prostu dostawała dwie zmienne typu By-
te i wysyłała odpowiadający im rozkaz
w kodzie RC5. Do omówienia pozostał pod-
program Czekaj, który ma dość niecodzien-
ną budowę. Oto on:
Czekaj:
If Wy = 1 Then
`wysyłanie paczki impulsów
H
Reset Ired
`błysk diod D1 i D2
Gosub Czas
`czekaj niecałe 14us
Set Ired
wygaś diody IRED
Gosub Czas
`czekaj niecałe 14us
..........
`tu powyższe 4 linie
`powtarzane są 29 razy!
Else
`przerwa L
Reset Dodatkowa `tak samo jak wyżej
Gosub Czas
`tylko zamiast pinu Ired
Set Dodatkowa
`jest zmienna typu bit
Gosub Czas
..........
`29 razy tak samo
End If
Set Ired
`wyłącz profilaktycznie diody LED
Return
Czas:
`skok do tego podprogramu
Dodatkowa = 1
`i jego wykonanie zajmuje
Dodatkowa = 1
`procesorowi niecałe 14
µs
Dodatkowa = 1
`z popularnym kwarcem
Dodatkowa = 1
`11,059MHz
Return
Otóż pierwsza część podprogramu Czekaj
zajmuje się wysyłaniem paczek impulsów
o częstotliwości ok. 36kHz (oznaczanych H).
Nie można użyć Timerów, bo 89C2051 jest
na to za wolny. Wykorzystałem tu czas, jaki
zużywa on na wykonywanie wszelkich czyn-
ności. Zmienna Dodatkowa typu Bit służy
tylko do tego, aby jej ustawianie zajmowało
prockowi czas równy 1 cykl zegara, czyli
1,085
µs. Cztery jej ustawienia plus czas po-
trzebny na skok i powrót z podprogramu
Czas (8 cykli) plus ustawienie/wyzerowanie
pinu Ired P3.0 (1 cykl) to w sumie
13*1,085
µs = 14,105µs. Jest to połowa okre-
su wysyłanego sygnału. Częstotliwość nośna
wynosi więc około 1/28,21
µs = 35,4kHz. Nie
36, bo w cyfrowym świecie dysponujemy
czasem skwantowanym – w tym przypadku
kwant wynosi 2 cykle (po jednym na pół
okresu). Zmiana okresu o tę wartość daje
częstotliwość różniącą się od 36kHz o więcej
niż 0,6kHz, czyli wynik gorszy niż 35,4kHz.
Praktyczne próby wykazały, że samo wyko-
nanie pustej pętli for...next zajmuje więcej
niż 14
µs. Przy jej zastosowaniu generowany
sygnał miał odpowiednią częstotliwość, ale
jego wypełnienie mocno odbiegało od 50%
co powodowało znaczne pogorszenie zasięgu
i pewności odbioru. W tej sytuacji zrezygno-
wałem z pętli i kosztem większego zużycia
pamięci programu uzyskałem wypełnienie
dokładnie równe 50%. Natomiast wytwarza-
nie przerwy L w zasadzie nie wymaga takich
zabiegów i wystarczyłoby napisać 8 lub 9 in-
strukcji Delay a nawet Waitms 1. Chcąc jed-
nak zachować absolutną równość czasów
trwania paczki i przerwy, zdecydowałem się
na analogiczne rozwiązanie.
Zarówno długość okresu nośnej, jak
i liczba 30 okresów w paczce zostały dobra-
ne w wyniku praktycznych prób z użyciem
fabrycznego pilota RC5 sterowanego nim
telewizora oraz programu „Monitor pod-
czerwieni”. Wyniki były więcej niż zachę-
cające. Opisywany układ spisywał się wręcz
rewelacyjnie, nie ustępując pilotowi fa-
brycznemu ani zasięgiem, ani jakością ge-
nerowanych przebiegów. Wynik ten uzyska-
no z tanim i popularnym kwarcem
11,059MHz. Zastosowanie kwarcu 12MHz
lub 24MHz pozwoliłoby na wygenerowanie
częstotliwości nośnej 35,7kHz, ale w więk-
szości wypadków 35,4 w zupełności wystar-
czy. Kto chce, może dokonać takiej zmiany,
pamiętając o dopisaniu kolejnej, piątej linij-
ki Dodatkowa=1 w podprogramie Czas
(kwarc 12MHz) lub piętnastu takich linijek
dla kwarcu 24MHz.
Choć opisany program pracuje z najpopu-
larniejszą częstotliwością nośną 36kHz
(z dokładnością do kwantu czasu równego
dwóm cyklom zegara), to w przypadku uży-
cia odbiornika TFMS pracującego z inną czę-
stotliwością rezonansową, odpowiednia
przeróbka jest oczywiście możliwa.
20
Elektronika dla Wszystkich
Projekty
21
Elektronika dla Wszystkich
Projekty
Należy wtedy zmienić liczbę linijek Do-
datkowa=1 w podprogramie Czas (zmniej-
szenie powoduje wzrost częstotliwości). Jeśli
nawet usunięcie ich wszystkich nie pozwala
uzyskać odpowiednio dużej częstotliwości,
to należy zrezygnować z podprogramu Czas
(gdyż samo jego wywołanie zajmuje 8 cykli
zegara) i umieścić odpowiednią liczbę tych
linijek kodu bezpośrednio pomiędzy linijka-
mi Set Ired i Reset Ired w podprogramie Cze-
kaj. Należy przy tym pamiętać, że wraz ze
wzrostem częstotliwości skwantowany czas
daje się coraz bardziej we znaki. Maksymal-
ną możliwą do uzyskania częstotliwość (ok.
460kHz z kwarcem 11,059MHz) otrzymamy,
gdy linijek Dodatkowa=1 w ogóle nie bę-
dzie, ale wtedy okres staje się równy kwanto-
wi czasu! Na szczęście w praktyce nigdy nie
będziemy potrzebować częstotliwości więk-
szych od 100kHz. W przypadku zmniejsza-
nia częstotliwości nośnej taki problem nie ist-
nieje, a także nie ma ograniczenia jej warto-
ści od dołu.
Montaż i uruchomienie
Schemat montażowy znajduje się na rysun-
ku 2. Montaż jest klasyczny. Rozpoczynamy
od wlutowania jednej zworki, a potem stop-
niowo przechodzimy od elementów naj-
mniejszych do największych. W trakcie
montażu musimy zdecydować, czy montuje-
my U2, J2 oraz R1...R3, czy też w miejsce
nóżek 4, 5, 6, 7, 9, 10, 11 U2 wlutujemy rząd
goldpinów i pilot będzie sterowany słowem
sześciobitowym plus bit sterujący. Prawidło-
wo zmontowany układ nie wymaga urucha-
miania i od razu działa poprawnie. Spraw-
dzenia działania możemy dokonać, zależnie
od wersji montażowej, albo za pomocą gene-
ratora sekwencji I
2
C (w tej roli zaprogramo-
wany drugi procesor lub emulator sprzęto-
wy), albo w jakikolwiek sposób, podając 6-
bitowe liczby na wejście.
Arkadiusz Antoniak
Uwaga! Plik z programem (w Bascomie)
można ściągnąć ze strony internetowej
www.edw.com.pl/ z działu FTP.
Wykaz elementów
RReezzyyssttoorryy
R1-R3,R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10kΩ
R4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220Ω
R5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4,7Ω
KKoonnddeennssaattoorryy
C1,C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1µF/16V
C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470µF/16V
C5 . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF ceramiczny
PPóółłpprrzzeewwooddnniikkii
D1,D2 . . . . . . . . . . . . . . . . . . . . . . .dioda nadawcza IRED
T1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .BD136
U1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .AT89C2051
U2 . . . . . . . . . . . . . . . . . . . . . . .PCF8574 lub PCF8574A
IInnnnee
X1 . . . . . . . . . . . . . . . . . .rezonator kwarcowy 11,059MHz
J1...J3 . . . . . . . . . . . . . . . . . . . . . . . .goldpiny i jumperki
Rys. 2 Schemat montażowy
KKoom
mpplleett ppooddzzeessppoołłóóww zz ppłłyyttkkąą
jjeesstt ddoossttęęppnnyy ww ssiieeccii hhaannddlloowweejj AAVVTT
jjaakkoo kkiitt sszzkkoollnnyy AAVVTT-22668811
Ciąg dalszy ze strony 16.
Przy zwartym kondensatorze C3 może to do-
prowadzić do nasycenia wzmacniacza.
Po podłączeniu gramofonu do wzmacniacza
spadek napięcia na małej rezystancji wkładki
będzie rzędu ułamka miliwolta i układ może
pracować poprawnie. Inaczej mówiąc, dołą-
czenie wkładki spowoduje potężny skok spo-
czynkowego napięcia wyjściowego. Kto
chciałby zlikwidować taki efekt w wersji sta-
łoprądowej, może dodatkowo zastosować
obwód kompensacji prądu wejściowego we-
dług zasady pokazanej na rysunku 9. Tran-
zystory T1, T2 to klasyczne lustro i źródło
prądowe. Rezystor Rx trzeba dobrać indywi-
dualne, zależnie od wzmocnienia tranzysto-
rów, żeby prąd bazy tranzystora T3 był rów-
ny prądowi polaryzacji
wejścia nieodwracają-
cego wzmacniacza.
Napięcie na rezystorze
R1 będzie wtedy wy-
nosić zero. Także jed-
nakowe rezystory RA,
RB trzeba dobrać, że-
by spadek napięcia na
nich wynosił 0,1...
0,5V.
Ostatnie wskazów-
ki dotyczą „syme-
trycznej” wersji stało-
prądowej (ze zwarty-
mi kondensatorami C1, C3), którą zechcą
wykorzystać tylko nieliczni. W ogromnej
większości przypadków całkowicie wystar-
czy wersja podstawowa z rysunku 2, a nawet
wersja zasilana pojedynczym napięciem we-
dług rysunku 3.
Piotr Górecki
Komplet ppodzespołów zz płytką
jest ddostępny ww sieci hhandlowej AAVT jjako kkit sszkolny AAVT-22680
Rys. 9
Wykaz elementów
RReezzyyssttoorryy
R1A,R1B . . . . . . . . . . . . . . . . . . . .47,5kΩ
R2A,R2B . . . . . . . . . . . . . . . . . . . . .100Ω
R3A,R3B . . . . . . . . . . . . . . . . .100kΩ 1%
R4A,R4B . . . . . . . . . . . . . . . . .7,87kΩ 1%
R5A,R5B . . . . . . . . . . . . . . . . . . . .100kΩ
R6,R7 . . . . . . . . . . . . . . . . . . . . . . .10kΩ
KKoonnddeennssaattoorryy
C1A,C1B . . . . . . . . . . . . . . . . . . . .220nF
C2A,C2B . . . . . . . . . . . . . . . . . . . .100pF
C3A,C3B . . . . . . . . . . . .220µF/10V tantal
C4A,C4B . . . . . . . . . . . . . . . . . . . . .33nF
C5A,C5B . . . . . . . . . . . . . . . . . . . . .10nF
C6A,C6B . . . . . . . . . . . . .22µF/16V tantal
C7-C9 . . . . . . . . . . . . . .100nF ceramiczny
C10-C12 . . . . . . . . . . . . . . . . .100µF/25V
PPóółłpprrzzeewwooddnniikkii
U1 . . . . . . . . . . . . . . . . . . . . . . . .NE5532
PPoozzoossttaałłee
L1,L2 . . . . . . . . . . . . . . . . . . . . . . .33µH