widmo albo magiczna różczka.pdf

(239 KB) Pobierz
Wlidmo Koppel.qxd
★★ ★★
Widmo, albo
magiczna ró¿d¿ka
3 0 1 7
Do czego to s³u¿y?
mów RS232 – CMOS. Podczas czytania do-
kumentacji uk³adu U1 konieczne okaza³o siê
ograniczenie pr¹du p³yn¹cego przez diody do
oko³o 10mA, aby nie przekroczyæ maksy-
malnego pr¹du p³yn¹cego przez wyprowa-
dzenia zasilania. Jest to realizowane przez re-
zystory R1-R12.
Uk³ad poœrednicz¹cy miêdzy portem sze-
regowym komputera jest wykonany w trochê
nietypowy sposób. Dziêki temu uda³o siê
osi¹gn¹æ oszczêdnoœci zarówno kosztów jak
i miejsca na p³ytce. Zdziwienie mo¿e budziæ
zwarcie zacisków TX i RX w porcie. Bez
obaw, komputerowi to nie zaszkodzi. Po pro-
stu odbierze on znaki, które sam wysy³a
a dziêki takiemu rozwi¹zaniu z tej samej
p³ytki mo¿emy zrobiæ interfejs pod³¹czany
zarówno bezpoœrednio do portu jak i przez
zwyk³y kabel (w kablu linie RX oraz TX s¹
skrzy¿owane).
Tu w³aœciwie koñ-
czy siê sprzêt a zaczy-
na siê oprogramowa-
nie. Aby jednak dobrze
zrozumieæ dzia³anie
programu konieczna
jest wiedza na temat te-
go, w jaki sposób dane
o obrazkach s¹ prze-
chowywane w pamiê-
ci: Obrazki s¹ jakby
ciête na kawa³ki tak jak
na rysunku 2. Ka¿da
kolumna która ma po
12 bitów (po jednym
na ka¿d¹ diodê) jest za-
pisywana jako bajt i je-
go po³ówka. Para s¹-
siaduj¹cych ze sob¹ li-
nii jest zapisywana ja-
ko 3 bajty. W progra-
mie przyjêto nastêpuj¹-
c¹ konwencjê: naj-
pierw bajt zawieraj¹cy po³ówki, nastêpnie
dwa bajty „ca³e”. Taki zapis, choæ kompliku-
je nieco procedurê odczytywania danych
w stosunku do zapisu, w którym ka¿da ko-
lumna by³aby zapisywana w oddzielnych
dwóch bajtach, pozwala jednak skompreso-
waæ obrazki w stopniu 3 do 4.
Tak naprawdê rysunek 2 jest tylko rysun-
kiem pogl¹dowym. Obrazki s¹ zapisywane
w taki sposób, ¿e ca³e bajty odpowiadaj¹ bez-
poœrednio diodom na porcie B, natomiast po-
³ówki danym na pinach portu D. Kolejnym
odci¹¿eniem procesora jest za³o¿enie, ¿e
obrazki musz¹ mieæ parzyst¹ liczbê kolumn.
Dziêki temu procesor ma trochê mniej robo-
ty a program zajmuje trochê mniej miejsca.
Takie zabiegi by³y konieczne. Po skompi-
lowaniu koñcowej wersji programu okaza³o
Jest to m³odszy brat opisanej w EdW „Wid-
mowej wst¹¿ki” (numer 7/2000). Uk³ad trud-
no ju¿ nazwaæ wst¹¿k¹, dlatego postanowi-
³em pozostawiæ samo „Widmo ”. Tak jak i je-
go poprzedniczka, m³odszy brat wykorzystu-
je efekt stroboskopowy po to, aby troszkê
oszukaæ nasz wzrok. Tym razem jednak dio-
dami nie steruje ju¿ proœciutki generator lecz
ca³kiem m¹dry procesor. Efekt?
Ta niezwyk³a zabawka mieszcz¹ca siê
w rurce o œrednicy 2cm i d³ugoœci 35cm pod-
czas machania wyœwietla w powietrzu roz-
maite serduszka, kó³eczka, domki... Efekt
jest niesamowity. Odnosi siê wra¿enie, ¿e
obrazki te wisz¹ w powietrzu!
Do tego, oprócz standardowych obrazków,
ka¿dy, kto ma komputer, mo¿e stworzyæ w³a-
sn¹ kompozycjê i umieœciæ j¹ w pamiêci
uk³adu za pomoc¹ kilku klikniêæ! Program
obs³uguj¹cy „Widmo ” zosta³ napisany w taki
sposób, ¿e akceptuje zwyk³e dwukolorowe
bitmapy które mo¿na przygotowaæ w dowol-
nym edytorze graficznym.
Do wykonania uk³adu zachêcam wszyst-
kich którzy maj¹ jeszcze w sobie coœ z dziec-
ka, mianowicie - lubi¹ siê bawiæ!
Rys. 1 Schemat ideowy
Jak to dzia³a?
Schemat elektryczny uk³adu widoczny jest
na rysunku 1. Tak prosty elektrycznie uk³ad
realizuj¹cy doœæ z³o¿one zadania uda³o siê
zrealizowaæ dziêki zastosowaniu mikrokon-
trolera AVR 90S2313. Procesor ten œwietnie
sprawdzi³ siê w uk³adzie ze wzglêdu na swo-
je mo¿liwoœci sprzêtowe.
Ale procesor to nie wszystko. Sam w so-
bie jest œlepy, g³uchy i nie robi w³aœciwie nic
ciekawego. Aby „coœ ciekawego” mog³o siê
objawiæ zosta³ on wsparty przez 12 diod
LED, przycisk i uk³ad dopasowania pozio-
18
Elektronika dla Wszystkich
208772554.020.png 208772554.021.png 208772554.022.png 208772554.023.png 208772554.001.png 208772554.002.png
siê, ¿e w pamiêci ROM uk³adu U1 zosta³y
ju¿ tylko 2B!
Pe³ny ci¹g danych zawiera jeszcze dodat-
kowo informacje o rozmiarach kolejnych
obrazków. Dziêki temu program wie, gdzie
dany obrazek siê koñczy, a zaczyna nastêpny.
Ca³oœæ wygl¹da jak w tabeli 1. Ostatnia dana
równa 0 oznacza, ¿e rozmiar nastêpnego
obrazka wynosi w³aœnie 0 czyli, ¿e to ju¿ ko-
niec definicji obrazków. Dane w pamiêci
u¿ytkownika (EEPROM) s¹ przechowywane
w identyczny sposób. Dziêki temu procedury
po wyœwietleniu drugiej kolumny wywo³ywa-
na jest procedura Laduj_linie. Procedura ta
pobiera z odpowiedniej pamiêci dane nastêp-
nych dwóch kolumn. Kod ten jest powtarzany
z eksperymentalnie dobran¹ czêstotliwoœci¹.
Przy przerwaniu do timera nie jest wpisywana
¿adna wartoœæ – nastêpne przerwanie wyst¹pi
po wykonaniu pe³nego cyklu zliczania.
Lecz co siedzi w tajemniczych, wymienio-
nych wy¿ej procedurach? Na listingu 2 wi-
dzimy proœciutkie procedury wyœwietlania
obydwu kolumn. Zmienne B_bait1 i B_bait2
zawieraj¹ ca³e bajty wyœwietla-
nego obrazka. Zmienna B_po-
lowki zawiera po³ówki bajtów
z kolumn. Zmienne te s¹ inicjo-
wane w podprogramie Laduj_li-
nie, który widzimy na Listingu
3. To, sk¹d dane s¹ ³adowane,
jest uzale¿nione od stanu bitu
Bit_bank_eeprom . Zmienna
W_przet_linia zawiera adres ak-
tualnie przetwarzanej linii. Gdy
jej wartoœæ bêdzie wskazywa³a na ostatni¹ li-
niê aktualnie wybranego obrazka zostanie ona
zainicjowana
wartoœci¹ ze
zmiennej W_ad-
res_obrazka.
Spowoduje to
wyœwietlanie
obrazka od po-
cz¹tku.
Obs³ug¹ wy-
œwietlania w ko-
dzie programu
zajmuj¹ siê je-
s³u¿y do inicjacji wszystkich zmiennych tak,
aby rozpoczê³o siê wyœwietlanie pierwszego
obrazka z wybranego banku. Zmieñ_obrazek
inicjuje wszystkie zmienne na nastêpny obra-
zek chyba, ¿e ak-
tualnie wyœwie-
tlany jest ostat-
nim. Wtedy wy-
wo³uje ona pod-
program
Ustaw_pierw-
szy_obrazek.
Serce naszego
programu, czyli
pêtla g³ówna, jest
malutkie, ale zu-
pe³nie wystarcza-
j¹ce. Widzimy je
na listingu 4.
Niewielki roz-
miar tego ele-
mentu programu
uda³o siê osi¹-
gn¹æ dziêki prze-
rzuceniu wiêkszoœci zadañ na przerwania.
Procedura On_przycisk rozró¿nia d³ugie
i krótkie naciœniêcie przycisku. W przypadku
pierwszego zmienia bank pamiêci, w przy-
padku drugiego zmienia aktualnie wyœwietla-
ny obrazek.
Po pêtli g³ównej od razu widaæ, ¿e zdecy-
dowa³em siê na u¿ycie watchdog’a. Czasami
podczas wy³¹czania procesor zawiesza³ siê,
gasi³ diody i pobiera³ w tym stanie tak ma³o
pr¹du, ¿e kondensatory blokuj¹ce zasilanie
wystarczy³y mu na utrzymanie tego nieprzy-
jemnego stanu przez doœæ d³ugi czas. Watch-
dog ustawiony na oko³o 0,5 sekundy sku-
tecznie usun¹³ problem i dodatkowo przy-
czyni³ siê do u³atwienia procedury odbioru
danych z komputera.
W³aœnie ostatnim fragmentem programu
jest modu³ odpowiedzialny za transmisjê.
Aby u³atwiæ zrozumienie algorytmu, warto
najpierw poznaæ przyjêty format transmito-
wanych danych. Do uk³adu musz¹ byæ prze-
s³ane nastêpuj¹ce informacje: 1 bajt – iloœæ
przesy³anych danych; 5 bajtów – identyfika-
tor, kolejne bajty musz¹ tworzyæ napis „WID-
MO” z du¿ych liter; n Bajtów – dane w iloœci
okreœlonej w pierwszym bajcie, te bajty s¹
wpisywane bezpoœrednio do pamiêci eeprom.
Transmisja jest oparta na przerwaniu
URXC – odbioru znaku z portu szeregowego.
Pierwsza wersja uk³adu korzysta³a z poleceñ
INPUTBIN. Powodowa³o to, ¿e przed prze-
s³aniem danych nale¿a³o uk³ad wy³¹czyæ
a nastêpnie uruchomiæ go z przytrzymanym
przyciskiem. Uzna³em, ¿e w obecnej modzie
urz¹dzeñ PLUG&PLAY jest to rozwi¹zanie
nieeleganckie. Dziêki wykorzystaniu prze-
rwania wystarczy podpi¹æ dzia³aj¹cy uk³ad do
komputera, nacisn¹æ „Wyœlij” i je¿eli wszyst-
ko jest w porz¹dku to diody zgasn¹ na chwilê
Gosub Zmien_bank
Gosub Mignij
Goto Petla_glowna
Else
Incr B_akumulator
End If
Waitms 3
Reset Watchdog
Loop Until Przycisk = 1
Gosub Zmien_obrazek
Goto Petla_glowna
Rys. 2
odwo³uj¹ce siê do
nich ró¿ni¹ siê tylko
jedn¹ instrukcj¹: ró¿-
ne s¹ sposoby dostê-
pu do pamiêci.
Poniewa¿ wiemy
ju¿, w jaki sposób
obrazki „siedz¹”
w pamiêci, pora do-
wiedzieæ siê co
uk³ad dok³adnie
z nimi robi. Linie s¹ po prostu wyœwietlane
kolejno z du¿¹ czêstotliwoœci¹. Podczas
przesuwania diodami dziêki bezw³adnoœci
ludzkiego oka widzimy ca³e obrazki. Nie ma
tu ¿adnej synchronizacji z ruchami rêki.
Wbrew pozorom nawet bez synchronizacji
obrazki s¹ œwietnie widoczne, a jej brak ma
ten plus, ¿e nie jesteœmy zmuszani do jedno-
stajnego machania uk³adem tam i z powro-
tem. Mo¿emy
wywijaæ „Wid-
mem” na wszyst-
kie strony, obra-
caæ... i co tylko
przyjdzie nam do
g³owy.
Kolejne linie
obrazka s¹ wy-
œwietlane i ³ado-
wane w obs³udze przerwania Timer0 . Kod je-
go obs³ugi widzimy na listingu 1. Naraz ob-
s³ugiwane s¹ dwie kolumny obrazka. Informa-
cja o tym która kolumna by³a ostatnio wy-
œwietlona znajduje siê w zmiennej
Bit_przet_polowka. Procedura przerwania
uzale¿nia podejmowane dzia³ania od wartoœci
tej zmiennej. Je¿eli jest ona wyzerowana, je-
dyne co jest wykonywane to wyœwietlenie
pierwszej kolumny. W przeciwnym wypadku
IloϾ danych obrazka 1
Dane pierwszego obrazka
IloϾ danych obrazka 2
Dane drugiego obrazka
...
IloϾ danych obrazka n
Dane n-tego obrazka
0
Listing 2
Wyswietl_1:
Portb = B_bait1
D11 = B_polowki.0
D09 = B_polowki.1
D07 = B_polowki.2
D05 = B_polowki.3
Return
Wyswietl_2:
Portb = B_bait2
D11 = B_polowki.4
D09 = B_polowki.5
D07 = B_polowki.6
D05 = B_polowki.7
Return
Tab. 1
Listing 1
On_timer:
If Bit_przet_polowka = 0 Then
Gosub Wyswietl_1
Bit_przet_polowka = 1
Else
Gosub Wyswietl_2
Gosub Laduj_linie
Bit_przet_polowka = 0
End If
Return
Listing 3
Laduj_linie:
If Bit_bank_eeprom = 0 Then
B_polowki = Lookup (w_przet_linia , Dane_obrazki)
Incr W_przet_linia
B_bait1 = Lookup (w_przet_linia , Dane_obrazki)
Incr W_przet_linia
B_bait2 = Lookup(w_przet_linia , Dane_obrazki)
Else
Readeeprom B_polowki , W_przet_linia
Incr W_przet_linia
Readeeprom B_bait1 , W_przet_linia
Incr W_przet_linia
Readeeprom B_bait2 , W_przet_linia
End If
Incr W_przet_linia
W_akumulator = W_adres_obrazka + B_wielkosc_obrazka
If W_przet_linia >= W_akumulator Then
W_przet_linia = W_adres_obrazka
End If
Return
szcze trzy podprogramy, s¹ to: Zmien_bank,
Ustaw_pierwszy_obrazek, Zmien_obrazek.
Opiszê tylko ogólnie ich dzia³anie.
Pierwsza z nich umo¿liwia zmianê banku
obrazków miêdzy standardowym a zawartym
w EEPROM’ie. Gdy próbujemy zmieniæ bank
na EEPROM sprawdza ona, czy pamiêæ u¿yt-
kownika zawiera jakieœ dane, jeœli nie to nie
realizuje ona prze³¹czenia. Druga procedura
Elektronika dla Wszystkich
19
Listing 4
Petla_glowna:
Do
Debounce Przycisk , 0 ,
On_przycisk
Reset Watchdog
Loop
On_przycisk:
B_akumulator = 0
Do
If B_akumulator = 255
Then
208772554.003.png 208772554.004.png 208772554.005.png
a nastêpnie uk³ad rozpocznie wyœwietlanie
pierwszego z odebranych obrazków.
Jak siê okaza³o BASCOM nie inicjuje po-
rtu szeregowego, gdy w programie nie ma po-
leceñ typu INPUT, OUTPUT... etc. Konieczne
okaza³o siê wiêc samodzielne wykonanie tej
czynnoœci. Sposób inicjacji przedstawia
listing 5. Wszystko jest ³atwe do zrozumienia
za wyj¹tkiem mo¿e ustawienia prêdkoœci trans-
misji. Uk³ad UART procesora AT90S2313 wy-
posa¿ony jest we w³asny generator transmisji.
Potrzebn¹ nam prêdkoœæ ustalamy wpisuj¹c do
rejestru UBRR wartoœæ wyliczon¹ ze wzoru:
miejsca pokazanego na listingu 6. Mo¿liwe
b³êdy transmisji i odpowiadaj¹ce im diody
przedstawia tabela 2.
Ca³a obs³uga b³êdów zosta³a stworzona
w celu zapobiegniêcia przypadkowemu wy-
mazaniu pamiêci u¿ytkownika.
Tak w³aœnie to dzia³a. W razie jakiœ nieja-
snoœci polecam analizê kodu Ÿród³owego,
szczególnie fragment odpowiedzialny za
odbiór danych.
wszystko przymierzyæ, a potem robiæ otwory.
W otwór po stronie plusa baterii nale¿y wpa-
sowaæ sztywn¹ blaszkê. Lutujemy j¹ od
spodu du¿¹ iloœci¹ cyny. Ca³oœæ musi wytrzy-
maæ nacisk sprê¿yny z drugiej strony p³ytki.
Po drugiej stronie lutujemy w³aœnie sprê¿y-
nê. Mo¿emy wymontowaæ j¹ z oprawki na
bateriê. Powinna to byæ raczej obudowa z ba-
terii wê¿szej ni¿ AA. Sprê¿yna zyska wiêk-
sz¹ wytrzyma³oœæ je¿eli umieœcimy j¹ tak, ¿e
jeden z jej zwojów bêdzie znajdowa³ siê
w zrobionym przez nas pod³u¿nym otworze.
Aby utrzymaæ baterie na wyznaczonym
miejscu konieczne jest wykonanie obejm
z blaszek. Umieszczamy je w bocznych
wg³êbieniach p³ytki. Dobrym rozwi¹zaniem
jest zastosowanie po jednej blaszce na ka¿d¹
bateriê. Obejmy mo¿emy przylutowaæ do
p³ytki du¿¹ iloœci¹ cyny.
Na koñcu p³ytki (tym, po stronie plusa)
lutujemy zwyczajny prze³¹cznik przykrêcany
do p³yty czo³owej. Lutujemy go za najni¿sz¹
koñcówkê a wyprowadzenie œrodkowe
pod³¹czamy za pomoc¹ srebrzanki do punktu
oznaczonego na p³ytce kó³kiem.
Sprawdzamy raz jeszcze czy wszystko pa-
suje do rurki. W razie jakiœ problemów doko-
nujemy odpowiednich korekcji. Proszê zwró-
ciæ uwagê, czy obejmy baterii nie blokuj¹
p³ytki.
Ostatni¹ p³ytk¹ jest p³ytka g³ówna. Niestety
ze wzglêdu na w¹skoœæ p³ytki i du¿¹ iloœæ ko-
niecznych po³¹czeñ nie uda³o mi siê unikn¹æ
kilku zworek, a nawet kilku po³¹czeñ, które bê-
dziemy musieli poprowadziæ w¹skimi kabel-
kami. Zaczynamy od zworki pod uk³adem U1.
Nastêpnie ³¹czymy punkty A z odpowiadaj¹-
cymi im punktami B. Dobrze jest u¿yæ do tego
cieniutkich kabelków. Oznaczenia punktów
B na p³ytce mog¹ byæ trochê niejasne. Najwy-
¿ej umieszczony napis odpowiada najwy¿sze-
mu punktowi. Na przyk³ad po lewej stronie
najwy¿szy punkt to B1. Nale¿y zwróciæ uwagê
na prawid³owoœæ przeprowadzenia tych po³¹-
czeñ. £atwo na tym etapie pope³niæ b³¹d, który
spowoduje b³êdne dzia³anie uk³adu. Ostatnim
takiego typu po³¹czeniem jest +V z +V’.
Dalszy monta¿ przeprowadzamy typowo.
Diody LED nie zosta³y opisane ze wzglêdu
na brak miejsca na p³ytce. Nie przeszkadza to
jednak w ich monta¿u. Najlepiej u¿yæ ultra-
Monta¿ i uruchomienie
Listing 5
Petla_glowna:
Petla_glowna:
Do
Debounce Przycisk , 0 , On_przycisk
Reset Ucr.2‘8bit
Ubrr = 207 ‘1200bps / 4MHz
Set Ucr.4 ‘Aktywacja odbiornika
Enable Urxc
Ca³y uk³ad sk³ada siê z trzech p³ytek drukowa-
nych zaprezentowanych na rysunku 2 . Osob-
no montujemy p³ytkê g³ówn¹, osobno p³ytkê
baterii i osobno p³ytkê konwertera. Omawia-
nie monta¿u rozpocznê od ostatniej p³ytki.
Konwerter jest na tyle prosty, ¿e mo¿na
go by³o co prawda zrealizowaæ „na paj¹ka”
ale ja nie jestem zwolennikiem tej techniki.
Zaprojektowa³em maleñk¹ p³ytkê która zna-
komicie mieœci siê w obudowie wtyczki
DB9. Monta¿ elementu rozpoczynamy od
przylutowania gniazda. To, jakiego ono bê-
dzie typu, (mêskie / ¿eñskie) zale¿y od tego
czy chcemy konwerter podpi¹æ bezpoœrednio
do portu, czy wykorzystamy w tym celu ka-
belek. Nastêpnie montujemy elementy R13,
R14 i T1. Do z³¹cza Q nale¿y przylutowaæ za
pomoc¹ kabelków wtyk cinch. Ca³oœæ umie-
szczamy w obudowie. Aby obudowa da³a siê
zamkn¹æ prawdopodobnie konieczne oka¿e
siê po³o¿enie tranzystora T1 na rezystorach.
Konwerter jest gotowy. Odk³adamy go
i przygotowujemy siê na zabawê wymagaj¹-
c¹ ju¿ wiêkszego zaanga¿owania.
W tym momencie dobrze jest mieæ przy-
gotowan¹ ju¿ rurkê której u¿yjemy na obudo-
wê. Mo¿na zastosowaæ rurkê PCV do zimnej
wody o œrednicy 21,2mm i gruboœci œcianki
1,7mm. Rurki tego typu powinny byæ bez
problemu dostêpne w sklepach z artyku³ami
hydraulicznymi lub sklepach z armatur¹.
Najpierw montujemy p³ytkê zasilacza.
Jest on przystosowany do u¿ycia w nim typo-
wych baterii AAA. K³adziemy baterie na
p³ytkê i przymierzamy, czy ca³oœæ mieœci siê
w rurce. Z obydwu stron miejsca na baterie
na koñcach nale¿y wyci¹æ pod³u¿ne otwory.
Miejsca te zaznaczone s¹ grubszymi kreska-
mi po stronie opisu. Dobrze jest najpierw
Prêdkoœæ transmisji = czêstotliwoœæ zegara /
16(1 + UBRR)
Po przekszta³ceniu otrzymujemy:
UBRR = czêstotliwoœæ zegara / (16*prêdkoœæ
transmisji) – 1
Co dla czêstotliwoœci transmisji 1200bps
i zegarze 4MHz daje
wartoϾ 207.
Niska szybkoϾ
transmisji zosta³a
wybrana g³ównie
dlatego, ¿e zapis do
pamiêci eeprom zajmuje trochê czasu i przy
zbyt du¿ej szybkoœci uk³ad „gubi³by” nie-
które dane.
Ca³ej procedury transmisji nie prezentujê ze
wzglêdu na jej znaczn¹ objêtoœæ. Zawiera ona
sporo odga³êzieñ IF... ELSEIF... ELSE a to ze
Listing 6
Blad_transmisji:
'Czekamy na reset z WDT
Disable Interrupts
Stop
Zapalona dioda Opis b³êdu
D1 . . . . . . . . . . . .Zbyt du¿a liczba danych do przes³ania
D2 . .Przesy³ana dana powinna byæ ostatnia a nie jast = 0
D3 . . . . . . . . . . . . . . . . . . . . . . .Z³y format - identyfikator
D4 . . . . . . . . . . . . . . . . . . . . .B³¹d ramki - brak bitu stopu
Tab. 2
wzglêdu na obs³ugê ewentualnych b³êdów.
W przypadku b³êdu zapala siê odpowiadaj¹ca
mu dioda, a nastêpnie program przechodzi do
Rys. 2 Schemat monta¿owy
20
Elektronika dla Wszystkich
208772554.006.png 208772554.007.png 208772554.008.png 208772554.009.png 208772554.010.png 208772554.011.png 208772554.012.png 208772554.013.png 208772554.014.png 208772554.015.png 208772554.016.png
 
jasnych lub niskopr¹dowych prostok¹tnych
diod 5x3mm. Diody nale¿y zamontowaæ jak
najbli¿ej p³ytki. Jeœli ktoœ chce u¿yæ diod
okr¹g³ych zaleca³bym monta¿ rezystorów
R1-R12 po stronie druku.
Przycisk S1 powinien mieæ zdejmowany
klawisz dziêki czemu ca³oœæ uda siê wsadziæ
do rurki. W innym przypadku klawisz bêdzie
siê blokowa³ przy próbie w³o¿enia.
Na koñcu p³ytki znajduje siê miejsce do
pod³¹czenia konwertera. Sposób jego pod³¹-
czania zale¿y od konstruktora. Ja przyluto-
wa³em do p³ytki gniazdo cinch za pomoc¹
odcinków srebrzanki.
P³ytkê g³ówn¹ próbujemy w³o¿yæ do rur-
ki. Jeœli siê nie mieœci postêpujemy z ni¹ tak
samo jak z p³ytk¹ zasilania. Jeœli diody s¹
ewidentnie za wysokie, mo¿e zajœæ koniecz-
noϾ ich zmiany na inne.
P³ytki g³ówn¹ i zasilania ³¹czymy ze sob¹
za pomoc¹ odcinków srebrzanki. Dodatkowo
od spodu po³¹czenie mo¿na wzmocniæ za po-
moc¹ cyny.
Elektrycznie urz¹dzenie jest ju¿ sprawne.
Pozostaje nam tylko wykonaæ obudowê.
Z rurki obcinamy kawa³ek trochê d³u¿szy ni¿
po³¹czone p³ytki zasilacza i g³ówna. Przyk³a-
damy go obok widma i zaznaczamy miejsce
na wyœwietlacz i przycisk. Nale¿y zwróciæ
uwagê na to, ¿eby nie zosta³y ¿adne zadziory
po wewnêtrznej stronie rurki. Po stronie
w³¹cznika mo¿emy wykonaæ zaœlepkê z po-
krywki z pude³ka po filmie fotograficznym.
W tym celu wycinamy jego œrodkow¹ czêœæ
– utworzy to coœ na kszta³t kapsla. Rurka jest
trochê za szeroka, aby brzegi naszej zaœlepki
mog³y j¹ obj¹æ. Nale¿y jej koniec pi³owaæ
naoko³o tak d³ugo, a¿ zaœlepka da siê luŸno
na³o¿yæ. W zaœlepce nale¿y wyci¹æ otwór na
prze³¹cznik.
Po z³o¿eniu ca³oœci mamy ju¿ pe³nowar-
toœciow¹ zabawkê! Otwór na diody mo¿na
upiêkszyæ za pomoc¹ przeœwietlonej b³ony
fotograficznej. Osobiœcie nie przewidzia³em
zaœlepki na górê obudowy. Uwa¿am, ¿e nie
jest ona konieczna.
Dodatki
toraWidma” jest bardzo prosta i przyjemna.
Sprowadza siê w³aœciwie do przeniesienia
obrazków na okno programu i przyciœniêcia
przycisku wyœlij. Polecam zapoznanie siê
z tym programem, poniewa¿ dziêki niemu
mo¿na dowiedzieæ siê paru dodatkowych
rzeczy o uk³adzie.
Obydwa programy akceptuj¹ monochro-
matyczne bitmapy o wysokoœci 12 pikseli,
przy czym ich szerokoœæ musi byæ liczb¹
parzyst¹.
Oprócz samego uk³adu przygotowa³em dla
Was dwa programy.
Pierwszy o nazwie „BitmapToWidmo ” bê-
dzie wsparciem dla programistów. Jest to
program, którego sam u¿ywa³em. Nie posia-
da on ¿adnych wodotrysków, poniewa¿ po
pierwsze pisa³em go na przys³owiowym „ko-
lanie”, a po drugie wiem, jak ró¿ne bajery de-
nerwuj¹, gdy ciê¿ko pracujemy g³ówk¹. Jego
zadanie jest proste: po po³o¿eniu na okienku
obrazka, je¿eli jego format jest w³aœciwy
umieszcza on w schowku tekst, który mo¿e-
my wkleiæ do programu w BASCOM’ie.
Umieszcza on najpierw iloϾ danych obrazka
a nastêpnie po znaku [ENTER] dane. Musi-
my jedynie dopisaæ s³ówko Data przed oby-
dwoma liniami i wykasowaæ przecinek
z koñca ostatniej linii. Ten nadmiarowy prze-
cinek wynika ze sposobu przekszta³cania
obrazka na dane i braku czasu na umieszcze-
nie procedur korekcji.
Mimo wymienionych niedogodnoœci na-
rzêdzie to naprawdê jest wygodne i bardzo
pomaga. Mo¿ecie mi wierzyæ – obrazek
pierwszego serca przekszta³ca³em na kartce!
Okropna robota.
Drugi program wyposa¿ony ju¿ w wiele
upiêkszeñ nazywa siê „ProgramatorWidma”.
Jest to aplikacja dokonuj¹ca transferu obraz-
ków do pamiêci u¿ytkownika EEPROM
„Widma”. Jest on wyposa¿ony w plik pomo-
cy uruchamiany za pomoc¹ klawisza F1. Plik
pomocy stara³em siê napisaæ prosto i treœci-
wie tak, ¿e zapoznanie siê z programem nie
powinno zaj¹æ wiêcej ni¿ 5 minut. Z tego
wzglêdu tutaj ograniczê siê do stwierdzenia,
¿e obs³uga „Widma” z pomoc¹ „Programa-
Rados³aw Koppel
Wykaz elementów
Rezystory
R1-R12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300
R13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10k
R14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4,7k
Kondensatory
C1,C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF ceramiczny
C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100µF/16V
Pó³przewodniki
D1-D12 . . . . . . . . . . . . . . . . . . . . . . . . .Diody LED 3x5mm
T1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .BC548
U1 . . . . . . . . . . . . . . . . . . . .AT90S2313 (zaprogramowany)
Ró¿ne
S1 . . . . . . . . . . . . . . . .Przycisk ze zdejmowanym klawiszem
X1 . . . . . . . . . . . . . . . . . . . . . . .Rezonator kwarcowy 4MHz
2-pozycyjny, przykrêcany na p³ytê czo³ow¹, prze³¹cznik zasilania
Sprê¿ynka z pude³ka na baterie
Blaszki (np. z du¿ego przekaŸnika)
Gniazdo cinch
Wtyk cinch
Wtyk DB9 w wersji uzale¿nionej od typu uk³adu (patrz tekst)
Obudowa na wtyk DB9
Obs³uga uk³adu
Chocia¿ ju¿ o tym wspomina³em, chcê te in-
formacje zebraæ osobno, poniewa¿ mog³y siê
one wydaæ za bardzo rozrzucone po treœci ar-
tyku³u.
Obs³uga jest banalna: krótkie naciœniêcie
przycisku powoduje zmianê wyœwietlanego
obrazka. D³ugie, a¿ do zamigania wyœwietla-
cza, powoduje zmianê banku pamiêci.
W celu programowania uk³adu nie trzeba
nic robiæ oprócz pod³¹czenia uk³adu przez
konwerter do wolnego portu szeregowego
PC-ta. Uk³ad jest ca³y czas gotowy na przyj-
mowanie danych.
P³ytka drukowana jest dostêpna w sieci
handlowej AVT jako kit szkolny AVT-3017
Elektronika dla Wszystkich
21
208772554.017.png 208772554.018.png 208772554.019.png
 
Zgłoś jeśli naruszono regulamin