background image

Wielu z nas swoją przygodę z elektroniką 
rozpoczynała od układów audio. To ogromna 
satysfakcja słuchać muzyki z samodzielnie 
poskładanego wzmacniacza, na własnoręcz-
nie zbudowanych kolumnach głośnikowych. 
Gdyby tak jeszcze odtwarzacz audio do kom-
pletu też samemu skonstruować...

Urządzenie, które pragnę zaprezento-

wać, łączy w sobie funkcję wzmacniacza i 
kolumny głośnikowej, ale przede wszystkim 
cyfrowego odtwarzacza plików muzycznych. 
A wszystko to w starej stylowej obudowie 

lampowego odbiornika radiowego. Model ten 
zbudowałem jako rozwiązanie zadania numer 
163 Szkoły Konstruktorów, którego tematem 
było: „Wykorzystanie starego komputera”. 
A stary komputer PC 486 jest zasadniczą 
częścią mojego odtwarzacza. Współpracując 
z modułem sterowania opartym na nieco 
młodszym procesorze od firmy Atmel, tworzą 
razem zgrany duet. 

Rozwiązania, które zastosowałem są nie-

typowe, ale mam nadzieję, że zainspirują 
do działań. Omawianie konstrukcji zacznę 
niejako od tyłu – od obudowy. A przechodząc 
przez wszystkie elementy, dojdę do źródła... 
sygnału audio, rzecz jasna 

☺. W drugiej 

części omówię w skrócie zastosowane przeze 
mnie oprogramowanie.

 

Konstrukcja urządzenia

Obudowa

Jakiś czas temu wszedłem w posia-

danie resztek radioodbiornika Pionier, pocho-
dzącego z lat 50. ubiegłego wieku. Obudowa 
była w bardzo złym stanie. Wewnątrz były 
resztki chassis i niekompletne gałki. Nie 
było głośnika. Zachowała się za to oryginal-
na szybka ze stacją… Stalinogród na skali! 
Obudowę odnowiłem – musiałem ją pokle-
ić, poszpachlować, uzupełnić ubytki forni-
ru i polakierować. W trakcie tej renowacji 
myślałem o wmontowaniu do środka jakiegoś 
radyjka, ale przy okazji tematu zadania Szkoły 
Konstruktorów wpadłem na bardziej szalony 
pomysł zbudowania stylowego odtwarzacza 
muzycznego.

Moduł sterowania. 

Odbiornik Pionier ory-

ginalnie miał dwie gałki. Jedna do regula-
cji głośności, druga do strojenia. W mojej 
konstrukcji pierwsza gałka pełni taką samą 
funkcję jak w oryginale, czyli wyłącznik i 
regulacja głośności. Pozostała druga gałka to 
jednak za mało do sterowania odtwarzaczem. 
Zdecydowałem się dorobić dodatkową – trze-
cią. Na fotografii 1 widoczne są szczegóły 

konstrukcji modułu sterowania, umieszczo-
nego na dość dużej płytce drukowanej. Dolną 
część tej płytki zajmują przełączniki gałek. 
Ich konstrukcję w zbliżeniu prezentuje foto-
grafia 2
. Przełączniki są sterowane poprzez 
obrót wałków, wykonanych ze skróconych 
gwoździ. Na wałki te nałożyłem tuleje ze 
śrubkami (wyjąłem je z dużej elektrycznej 
kostki zaciskowej). Właśnie te śrubki naciska-
ją na odpowiedni przełącznik przy obrocie osi 
w lewo lub w prawo. Ponadto wałki-gwoździe 
opierają się na mikroprzyciskach przyluto-
wanych bezpośrednio do płytki modułu ste-
rowania i załączają je po naciśnięciu. Wałki 
obracają się swobodnie w tulejkach wkle-
jonych distalem w kawałek pleksi. A pleksi 
przykręciłem, poprzez tulejki dystansowe, do 
płytki – w pewnej odległości od niej.

Większy dylemat miałem z wyświetla-

czem. Jak to zrobić, aby nie zepsuć orygi-
nalnego wyglądu radioodbiornika? Na środ-
ku skali umieściłem obrotową wskazówkę 
– prawie jak w oryginale, a poniżej 8 sekcji 
wyświetlacza 7-segmentowego LED. Są one 
ukryte za maskownicą wykonaną z brązo-
wego papieru. Gdy są wyłączone, na skali 
widać tylko wskazówkę, gdy zaś są włączone 
– widać tylko aktywne czerwone segmenty, 
które ciekawie kontrastują z zielonymi napi-
sami na skali i żółtawym podświetleniem (bo 
szybkę ze skalą podświetliłem – oczywiście 
żarówką).

Zasadniczą funkcję w module sterowa-

nia pełni mikrokontroler ATmega8. Odbiera 
on poprzez port szeregowy od komputera 
dane do wyświetlania. Do konwersji poziomu 
napięć interfejsu RS232 wykorzystałem pro-
sty układ z tranzystorem i diodą Zenera – roz-
wiązanie takie stanowi alternatywę dla układu 
MAX232. Dzięki taktowaniu mikrokontrole-
ra zegarem 11,0592MHz zminimalizowałem 
ryzyko błędów transmisji. Wyświetlacze LED 
są multipleksowane, a do sterowania anodami 

15

Lipiec 2010

Lipiec 2010

Projekty AVT

#

#

#

#

#

#

#

#

#

Old Time Player

Old Time Player

Fot. 1

Fot. 2

background image

wyświetlacza wykorzystałem rejestr przesuw-
ny – dla 8 sekcji wyświetlacza to oszczędność 
6 portów procesora.

Widoczna na fotografii 1 biała plama nad 

wyświetlaczem to wklejona distalem rurka, 
stanowiąca oś dla wspomnianej wcześniej 
analogowej wskazówki. Do jej obracania 
wykorzystałem silnik krokowy, pochodzący 
ze starej stacji dyskietek 3,5 cala. Ponieważ 
taki silniczek po wymontowaniu traci swoją 
geometrię, wyciąłem cały fragment napędu 
głowic ze stacji. Mechanizm ten przykrę-
ciłem na plecach dużej płytki. W miejsce 

głowicy stacji dyskietek 
przykręciłem popychacz 
(wygięty ze spinacza biuro-
wego). Popychacz przesu-
wa wskazówkę za pomocą 
krzywki. Krzywka ta została 
przykręcona do osi wska-
zówki zaciskiem śrubowym 
wydłubanym z małej elek-
trycznej kostki zaciskowej. 
Szczegóły tego rozwiązania 
są widoczne na fotografii 3
Mechanizm taki jest prosty i 

skuteczny. Dodatkowo na wyciętym fragmen-
cie stacji dyskietek znajduje się oryginalny 
wyłącznik krańcowy – transoptor szczelino-
wy. Wykorzystałem go, odczytując napięcie 
na jego fotoelemencie za pomocą przetworni-
ka A/C mikrokontrolera.

Na płytce modułu sterowania zabrakło 

miejsca na sterowanie silnikiem krokowym. 
Sterownik ten, w moim wykonaniu, to dwa 
mostki H – razem 12 tranzystorów. Wraz 
z gniazdem programowania mikrokontrolera 

 

Rys. 3 Skala 50%

Projekty AVT

Elektronika dla Wszystkich

MEGA8-P

H

D

-K

1

2

1

H

D

-K

1

2

1

H

D

-K

1

2

1

H

D

-K

1

2

1

BC327

BC327

BC327

BC327

BC327

BC327

BC327

BC327

100n

33p

33p

10k

10k

10k

10k

10k

10k

10k

10k

2

2

0

R

220R

220R

220R

220R

220R

220R

4k7

74HC164N

+5

V

+5

V

+5

V

+5

V

+5

V

+5

V

+5

V

+5

V

+1

2V

+1

2V

+5

V

+5

V

4k7

4k7

1

0

k

9

v

1

BC546A

RS-232

CZUJNIK

ZASILANIE

+5

V

+5

V

STEROWNIK

+5

V

+5

V

+5

V

1

0

0

k

+5

V

4k7

1

k

5

220n

100n

PB5(SCK)

19

PB7(XTAL2/TOSC2)

10

PB6(XTAL1/TOSC1)

9

GND

8

VCC

7

AGND

22

AREF

21

AVCC

20

PB4(MISO)

18

PB3(MOSI/OC2)

17

PB2(SS/OC1B)

16

PB1(OC1A)

15

PB0(ICP)

14

PD7(AIN1)

13

PD6(AIN0)

12

PD5(T1)

11

PD4(XCK/T0)

6

PD3(INT1)

5

PD2(INT0)

4

PD1(TXD)

3

PD0(RXD)

2

PC5(ADC5/SCL)

28

PC4(ADC4/SDA)

27

PC3(ADC3)

26

PC2(ADC2)

25

PC1(ADC1)

24

PC0(ADC0)

23

PC6(/RESET)

1

IC1

1

8

2

1

5

1

6

D

IS

1

3

1

1

7

9

1

2

6

1

0

11

1

3

8

5

7

1

4

d

p

1

d

p

2

a

1

b

1

c

1

d

1

e

1

f1

g

1

a

2

b

2

c

2

d

2

e

2

f2

g

2

C

A

1

C

A

2

4

1

8

2

1

5

1

6

D

IS

2

3

1

1

7

9

1

2

6

1

0

11

1

3

8

5

7

1

4

d

p

1

d

p

2

a

1

b

1

c

1

d

1

e

1

f1

g

1

a

2

b

2

c

2

d

2

e

2

f2

g

2

C

A

1

C

A

2

4

1

8

2

1

5

1

6

D

IS

3

3

1

1

7

9

1

2

6

1

0

11

1

3

8

5

7

1

4

d

p

1

d

p

2

a

1

b

1

c

1

d

1

e

1

f1

g

1

a

2

b

2

c

2

d

2

e

2

f2

g

2

C

A

1

C

A

2

4

1

8

2

1

5

1

6

D

IS

4

3

1

1

7

9

1

2

6

1

0

11

1

3

8

5

7

1

4

d

p

1

d

p

2

a

1

b

1

c

1

d

1

e

1

f1

g

1

a

2

b

2

c

2

d

2

e

2

f2

g

2

C

A

1

C

A

2

Q1

Q2

Q3

Q4

Q5

Q6

Q7

Q8

C1

C2

C3

R1

R2

R3

R4

R5

R6

R7

R8

R

9

R10

R11

R12

R13

R14

R15

R16

R17

A

1

B

2

QA

3

QB

4

QC

5

QD

6

CLK

8

CLR

9

QE

10

QF

11

QG

12

QH

13

IC2

7

1

4

IC2P

G

N

D

V

C

C

Q9

R18

R19

R

2

0

D

1

Q10

1
2

JP2

1
2
3
4

JP3

1
2
3
4

JP1

1
2
3
4
5
6
7
8

JP4

R

2

1

1
2

PRZ/ESC

R22

R

2

3

C4

C5

4

11,0592MHz

LM317

LM317

100n

3

0

0

R

3

0

0

R

2k5

2k5

B

C

3

3

7

BC327

BC546A

2

k

2

k

2

k

2

k

2

k

2

k

2

k

BC327

B

C

3

3

7

2

k

2

k

BC546A

2

k

2

k

B

C

3

3

7

BC327

BC546A

2

k

2

k

2

k

2

k

2

k

BC327

B

C

3

3

7

2

k

2

k

BC546A

2

k

2

k

1

N

4

1

4

8

1

N

4

1

4

8

1

N

4

1

4

8

1

N

4

1

4

8

1
2

OUT1

1
2

OUT2

ADJ

IN OUT

U1

ADJ

IN OUT

U2

C1

R

1

R

2

A

E

S

P1

A

E

S

P2

1
2
3
4
5
6
7
8

UC

1

2

3

4

5

6

7

8

9

10

PROGRAMATOR

T3

T2

T1

1
2

J1

3

R

3

R

4

R

6

R

7

R

8

R

9

R

1

0

T5

T6

R

11

R

1

2

T4

R

1

3

R

1

4

T9

T8

T7

R

1

5

R

1

6

R

1

7

R

1

8

R

1

9

T11

T12

R

2

0

R

2

1

T10

R

2

2

R

2

3

D

1

D

2

D

3

D

4

1
2

OUT3

1
2

OUT4

Rys. 1

 

Fot. 3

 

Rys. 2

IC1

DIS1

DIS2

DIS3

DIS4

Q1

Q2

Q3

Q4

Q5

Q6

Q7

Q8

C1

C2

C3

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15

R16

R17

IC2

Q9

R18

R19

R20

D1

Q10

JP2

JP3

JP1

JP4

R21

JP6

R22

R23

C4

C5

background image

umieściłem go na osobnej płytce znajdu-
jącej się przy ściance bocznej. Ponadto na 
płytce regulatora umieściłem dwa układy 
LM317, umożliwiające regulację napięcia dla 
zasilania wentylatorów chłodzących krytycz-
ne elementy we wnętrzu. Dzięki obniżeniu 
napięcia wentylatory pracują wolniej, ale 
ciszej. Schemat ideowy modułu sterownika 
jest zaprezentowany na rysunku 1, a regula-
tora na rysunku 2.

Płytki drukowane zostały przeze mnie 

zaprojektowane w programie Eagle, wyko-
nane metodą termotransferu, a po wytrawie-
niu zabezpieczone farbą IDEAvetro. Schemat 
montażowy sterownika przedstawiony jest na 
rysunku 3, a regulatora na rysunku 4.

Wnętrze skrzynki odtwarzacza. 

Na  foto-

grafii 4 widoczne jest wnętrze odtwarzacza. 
Obie zielone płytki modułu sterowania zosta-
ły omówione szczegółowo powyżej. W dolnej 
części sterownika przylutowana jest szara 
taśma, służąca do sterowania, jej drugi koniec 
podłączony jest do komputera. Czerwono-
-czarny przewód z kolei to magistrala szere-
gowa, po której od komputera wędrują infor-
macje do wyświetlenia. Nad płytką widoczna 
jest rurkowa żarówka samochodowa 12V5W 
oświetlająca skalę. Żarówka ta, podłączona 
do 12V, świeciła zbyt mocno, a na 5V zbyt 
słabo. W rezultacie podłączyłem ją pomiędzy 
przewody 5V i 12V, a na powstałej różnicy 
napięć (7V) świeci idealnie. Na prawo od 
płytki sterownika znajduje się głośnik, przy-
kręcony od środka do maskownicy.

Płytka pod głośnikiem to komputerowy 

zasilacz AT. Byłem zmuszony wymontować z 
oryginalnej obudowy płytkę zasilacza, bo ina-
czej nie zmieściłbym się we wnętrzu. Jednak 
nie zalecam takiego rozwiązania, ponieważ 

na płytce zasilacza panuje nie-
bezpieczne napięcie sieciowe!

Z zasilacza kolorowe wiązki 

przewodów (oryginalne) rozpro-
wadzają napięcia do wszystkich 
elementów systemu. Jednym z 
nich jest widoczny w prawym 
górnym rogu wzmacniacz audio 
– standardowa aplikacja na ukła-
dzie TDA2030. Sygnał do niego 
jest doprowadzany z potencjome-
tru znajdującego się we wcięciu 
dużej płytki sterownika. Jest to 

starego typu potencjometr z wyłącznikiem, 
który jednocześnie załącza napięcie sieciowe 
dla zasilacza. A sygnał na potencjometr trafia 
z karty muzycznej komputera...

Komputer. 

Jako bazy do konstrukcji użyłem 

blaszanego elementu starej obudowy desk-
top PC. W obudowach tego typu podstawa 
płyty głównej i tylna ściana do przykręca-
nia kart rozszerzeń tworzyły jedną całość. 
Wyciąłem fragment z takiej obudowy tak, 
aby utworzyć tylną ściankę mojego odtwa-
rzacza. Do elementu tego przykręcona jest 
płyta główna z procesorem 486DX133. Do 
płyty włożyłem karty rozszerzeń: muzyczną, 
sieciową oraz – tylko na potrzeby serwisowe 
– graficzną. Ponadto do jednego ze slotów 
ISA zamontowałem na kawałku laminatu 
dysk twardy. Komputerowa tylna ścianka 
zamontowana jest na stalowym gwintowanym 
pręcie, który stanowi zawias. Odchylając w 
bok tylną ściankę uzyskuje się dostęp do 
elementów komputera oraz wnętrza skrzynki 
odbiornika. Konstrukcja taka z odchylanym 
chassis stosowana była w starych lampowych 
telewizorach. Szczegóły tego rozwiązania są 
widoczne na fotografii 5.

Działanie. 

Na przedniej ściance urządzenia 

znajdują się 3 gałki. Pierwsza z nich, najwięk-
sza, okrągła to potencjometr, który służy do 
włączania i regulacji głośności. Po włączeniu 
musi się załadować system operacyjny kom-
putera. Ale już po niespełna 20 sekundach 
z głośnika zaczyna wydobywać się muzyka 
(cóż – radio lampowe też musiało się rozgrzać 
☺). Prawa gałka służy do zmiany odtwarza-
nego utworu: w lewo – poprzedni, w prawo 
– następny. Ponadto naciśnięcie tej gałki 
wstrzymuje/wznawia odtwarzanie. Środkową 
gałką analogicznie można zmieniać albu-
my (katalogi). Natomiast naciśnięcie środ-

kowej gałki służy do zmiany trybu działania 
wyświetlacza. Można wybrać sekwencyjnie 
następujące tryby:
TIME – wyświetla czas bieżący utworu,
TITLE – nazwa wykonawcy i tytuł utworu 
(z ID3tag),
ALBUM – tytuł albumu,
SONG NBR. – numer bieżącego utworu – i 
liczba wszystkich,
SILENT – w trybie tym sygnalizowana jest 
tylko zmiana utworu i albumu jednorazowym 
jej wyświetleniem,
DISP. OFF – wyświetlacz całkiem wyłączony 
(jest dostępne tylko wskazanie analogowe 

☺). 

Dłuższe przytrzymanie tego przycisku restar-
tuje program odtwarzający muzykę.

Urządzenie zapamiętuje ostatnio wybrany 

tryb wyświetlania. Odczytywanie napisów 
przewijanych na takim wyświetlaczu wymaga 
pewnej wprawy, ale jest wystarczająco czy-
telne. Zajmująca centralną pozycję za szybką 
skali wskazówka pokazuje postęp słuchania 
– z każdym utworem przesuwa się w prawo, 
pokazując proporcjonalnie pozycję wśród 
odnalezionych na dysku plików audio.

Ale co zrobić, gdy muzyka z dysku się 

znudzi? Wystarczy podłączyć do wbudowa-
nej karty sieciowej kabel Ethernet lokalnej 
sieci (lub skrosowany kabel do komputera) 
i połączyć się z urządzeniem za pomocą 
dowolnego klienta FTP. Wymiana plików 
może następować w trakcie odtwarzania. 
Odtwarzacz świetnie sobie radzi z wszelkimi 
typami plików audio (mp3, aac, flac, wav i 
wiele innych).

I jeszcze jedna zaleta DOS-a – nie trzeba go 

zamykać. Zatem odtwarzacz wyłączamy prze-
kręcając gałkę potencjometru/wyłącznika.

 

Oprogramowanie 

urządzenia

Oprogramowanie odtwarzacza PC

Istnieje 

mnóstwo programów do odtwarzania muzyki 
na PC, np. WinAmp, Foobar. Niestety pracują 
one w systemie Windows, a ten niezbyt dobrze 
nadaje się do pracy bez myszy i klawiatury. 
Ponadto w Windows mamy małą kontrolę 
nad uruchomianymi procesami, co powoduje 
długi start i zamykanie systemu oraz koniecz-
ność częstych interwencji w przebieg pracy 
(np. niechciane wyskakujące okienka).

Szukając oprogramowania do odtwarzania 

muzyki, trafiłem na freeware’owy program 
Mpxplay. To konsolowy odtwarzacz rozma-
itych plików audio. Ma wbudowaną obsługę 
sprzętowych rozszerzeń, jak wyświetlacze 
LCD, odbiorniki podczerwieni, lub klawia-
tury podłączane poprzez porty LPT, RS232 
czy port joysticka. Program ten ma wersję 
skompilowaną pod Win32 (tekstowa konsola 
systemu Windows), ale jego podstawowym 
systemem operacyjnym jest DOS.

DOS (Disk Operation System) kojarzy 

się z prymitywnym systemem operacyjnym, 
który już dawno wyszedł z użycia, zastąpiony 

17

17

Projekty AVT

Elektronika dla Wszystkich

Lipiec 2010

Lipiec 2010

O I

A

O I

A

2

3

1

1

2

3

1

2

3

2

3

1

2

3

1

1

2

3

1

2

3

2

3

1

OUT1

OUT2

U1

U2

C1

R1

R2

P1

P2

UC

PR

OGRAM

A

T

OR

T3

T2

T1

J1

R3

R4

R6

R7

R8

R9

R10

T5

T6

R1

1

R12

T4

R13

R14

T9

T8

T7

R15

R16

R17

R18

R19

T1

1

T12

R20

R21

T10

R22

R23

D1

D2

D3

D4

OU

T

3

OU

T

4

 

Rys. 4 Skala 50%

Fot. 4

Fot. 5

background image

przez nowocześniejsze, wielozadaniowe, gra-
ficzne systemy operacyjne. Oryginalny MS-
DOS powstał prawie 30 lat temu w firmie 
Microsoft. W międzyczasie powstało jednak 
wiele jego alternatywnych implementacji, a 
systemy te nadal są używane w specyficznych 
zastosowaniach. Jedną z jego wersji jest dar-
mowy FreeDOS. Zawiera on wiele innowacji, 
których nie ma w oryginalnym DOS, m.in. 
obsługę FAT32, długich nazw plików, portu 
USB i sieci TCP/IP. Mpxplay ma wbudowany 
serwer FTP, zatem urządzenie zbudowane w 
oparciu o FreeDOS/Mpxplay można spróbo-
wać nazwać mianem „serwer muzyczny”.

System DOS. 

Jedną z podstawowych zalet 

systemu DOS są jego niskie wymagania 
sprzętowe. Do budowy systemu, takiego jak 
mój, wystarczy już jakieś stare Pentium 133 
lub nawet 486. Instalacja i konfiguracja syste-
mu DOS nie jest tak prosta jak Windowsa, ale 
jeśli wiemy, co i jak robić – trwa krócej 

☺. 

System FreeDOS jest rozpowszechniany w 
Internecie, jako obraz płyty instalacyjnej CD 
lub dyskietki. Ja wybrałem tę drugą opcję – ale 
wymaga ona komputera ze stacją dyskietek, 
co może być problematyczne. Ponadto praca 
w czystym DOS-ie, polegająca na mozolnym 
wklepywaniu poleceń, nie jest przyjemna. Ale 
od czego są menedżery plików? Ja używam 
klona programu Norton Commander o nazwie 
Volkov Commander w wersji 5 (a właś-

ciwie 4,99). 

To mały i zgrabny programik, który ma 
ponadto obsługę długich nazw plików (co nie 
jest typowe dla większości programów dla 
DOS-u). FreeDOS, którego użyłem w moim 
urządzeniu został sporo okrojony. Zawartość 
mojego dysku C:\ wraz z opisem przedsta-
wiam w tabeli 1. Pliki konfiguracyjne zawie-
rają  listing 1 – CONFIG.SYS oraz listing 2 
– AUTOEXEC.BAT (komentarze zaczynają 
się słowem REM).

Program MPXPLAY. 

Program mpxplay ma 

quasi-graficzny interfejs użytkownika. Ale na 
moje potrzeby byłby zbędny. Dlatego urucha-
miam go z parametrami przełączającymi go w 
tryb uproszczony. Dla poprawnej współpracy 
mpxplay z modułem sterowania niezbędne są 
zmiany w pliku konfiguracyjnym 

MPXPLAY.

INI. Na listingu 3 przedstawiam fragment 
zawierający najważniejsze ustawienia.

Program dla modułu sterowania. 

Program 

napisałem w języku C, wykorzystując środo-
wisko WinAVR. Ma on dość prostą budowę. 
W funkcji głównej 

main() następuje konfigu-

rowanie rejestrów procesora (porty, timery, 
itd.) W pętli głównej tej funkcji obsługiwa-
ny jest jedynie przycisk do zmiany formatu 
wyświetlania. Najważniejsze operacje wyko-
nują się w przerwaniach:
SIG_UART_RECV
Przerwanie wywoływane odbiorem znaku 
poprzez port szeregowy. Dane z PC są prze-
s y ł a n e 

w konsolowym formacie VT100. W formacie 
tym przesyłane są tylko informacje wymaga-
jące zmiany w stosunku do poprzednio ode-
branych. Dlatego wszystkie odebrane dane 
są buforowane w pamięci i modyfikowane 
fragmentami w razie potrzeby. Kluczowym 
znakiem jest #27 (ESC), który oznacza począ-
tek nowej sekwencji danych.
SIG_OVERFLOW0
Przerwanie od timera 0 służy do multiplek-
sowania wyświetlacza LED. Dla dłuższych 
napisów obsługuje też ich przesuwanie. Samo 
wyświetlanie napisów na wyświetlaczu 7-
segmentowym obarczone jest kompromisem. 
O ile część liter, jak „A” „b” „h” czy „P” jest 
raczej prosta do przedstawienia, o tyle „K” „T” 
czy „Y” jest problematyczne. Ale jakoś sobie 
poradziłem. Wzorce liter zawarłem w pamięci 
programu: 

prog_uint8_t g_Digit[48].

SIG_OVERFLOW1
Przerwanie od timera 1 jest wykorzysty-
wane do sterowania silnikiem krokowym. 
Zastosowałem sterowanie półkrokowe – jeden 
cykl pracy składa się z 8 kroków. Wzorce 
sekwencji sterujących zapisałem w pamięci 
programu: 

prog_uint8_t g_Steps[9].

SIG_ADC
Przerwanie od przetwornika A/C. Po urucho-
mieniu programu silnik krokowy zaczyna 
obracać wskazówką w lewo aż do zadzia-
łania wyłącznika krańcowego – zasłonięcia 
szczeliny transoptora. Moment ten wykrywa 

przetwornik A/C mikrokon-
trolera. Od tej chwili pro-
gram pamięta bieżącą pozy-
cję wskazówki. Ponieważ 
wyłącznik krańcowy jest 
tylko z jednej strony, mak-
symalne położenie wska-
zówki w prawo ustaliłem 
empirycznie i zapisałem 
jako stałą w programie, 
który pilnuje, aby jej nie 
przekroczyć. 

Kompletny kod źród-

łowy jest dostępny na 
Elportalu – wraz z innymi 
materiałami.

 

Zakończenie

Zastosowanie tak stare-
go komputera jak 486 oraz 
systemu operacyjnego DOS 
może się wydawać anachro-
niczne. Uważam jednak, że 

 

Tabela 1

 

18

Projekty AVT

Elektronika dla Wszystkich

Lipiec 2010

Lipiec 2010

DOSLFN

Katalog ze sterownikami do obs ugi d ugich nazw plików (wywo anie sterownika w pliku
AUTOEXEC.BAT)

FREEDOS

Katalog zawieraj cy pliki systemu operacyjnego FreeDOS

MP3

Katalog w którym przechowywane s  pliki z muzyk (w formacie np. *.mp3) 
Pliki mog (a nawet powinny) by umieszczane w podkatalogach

MPXP156T

Katalog z programem mpxplay w wersji 1.56TCP

NET_DRV

Katalog ze sterownikami karty sieciowej (wywo anie sterownika w pliku AUTOEXEC.BAT)

SNDAPP

Katalog ze sterownikami karty muzycznej (wywo anie sterownika w pliku AUTOEXEC.BAT)

VC5

Katalog z menederem plików Volkov Commander w wersji 4.99

AUTOEXEC.BAT

Plik konfiguracyjny z poleceniami wywo ywany po za adowaniu systemu operacyjnego.
Zawarto  na listingu 2

COMMAND.COM Plik systemu operacyjnego FreeDOS
CONFIG.SYS

Plik konfiguracyjny wywo ywany w trakcie uruchamiania systemu operacyjnego.
Zawarto  na listingu 1

KERNEL.SYS

Plik systemu operacyjnego FreeDOS

rem Uruchamianie sterowników pamięci rozszerzonej
rem (bez tego DOS obsługuje tylko 640kB pamięci)
DEVICE=C:\FREEDOS\HIMEM.EXE /TESTMEM:OFF
DEVICEHIGH=C:\FREEDOS\EMM386.EXE
DOS=UMB,HIGH

rem Rozmiary buforów, ilości otwartych plików itp.
LASTDRIVE=Z
FILES=20
BUFFERS=20
STACKS=9,256

rem Załadowanie sterownika napędu CD-ROM
rem (u mnie z powodu braku CD-ROM wykomentowane)
rem DEVICEHIGH=C:\FREEDOS\XCDROM.SYS /D:FDCD0001

Listing 1

rem Zdefiniowanie ścieżki do systemu 
rem dla łatwiejszego wywoływania plików
PATH C:\FREEDOS

rem Ewentualne załadowanie sterownika CD-ROM
rem (pierwsza część procedury w pliku CONFIG.SYS)
rem LH SHSUCDX /D:*FDCD0001,G /~

rem Ładowanie sterownika długich nazw plików
LH C:\DOSLFN\DOSLFN.COM

rem Ładowanie sterownika karty muzycznej
LH C:\SNDAPP\CMINIT /WA:530 /WI:11 /WM:0 /VA:220 
/VI:10 /VL:1 /VH:5 /MA:330 /MI:9 /GS:200 /FM:388
SET BLASTER=A220 I10 D1 H5 T4

rem Ładowanie sterownika karty sieciowej
C:\NET_DRV\NE2000 0x60 15 0x320
SET WATTCP.CFG=C:\NET_DRV

rem Kolejne linie to pętla w której ładowany jest
rem program mpxplay - każdorazowo przy wyjściu 
rem sprawdzany jest warunek: Czy ma nastąpić 
rem restart mpxplay czy przejście do konsoli?
:MPX
CD C:\MPXP156T
MPXPLAY.EXE -SL -DDMA -F0 -V -8 -CM C:\MP3\*.*\*.*
C:\MPXP156T\RESTART.EXE
IF ERRORLEVEL 1 GOTO :MPX

rem Jeżeli nie restartujemy mpxplay to ładujemy 
rem sterownik myszy i menedżer Volkov Commander
LH CTMOUSE.EXE 
LH C:\VC5\VC.COM

; Włączenie obsługi portu joysticka
; port ten wykorzystuję do sterowania odtwarzaniem
[joystick]
Joy1Port        =0x0200
Joy1FuncBtn1    =0x3920 ; play
Joy1FuncBtn2    =0x011b ; esc
Joy1FuncRight   =0xe02f ; a-
Joy1FuncDown    =0x4a2d ; prev
Joy2FuncBtn1    =0x372a ; a+
Joy2FuncBtn2    =0x4e2b ; next

; Właczenie obsługi wewnętrznego serwera FTP
[serialport]
SerialEnable =1
HandlerCFG =FTPSRV

; Właczenie obsługi wysyłania danych 
; do wyświetlania na port COM2 (RS-232)
; Interpretacją tych danych 
; zajmuje się mikrokontroler ATmega8
[LCDdisplay]
LCDport       =COM2
LCDtype       =8
LCDrows       =255
LCDlines      =6
LCD_items=1,1,P_ALLSONGNUM
LCD_items=2,1,P_ENTRYNUM
LCD_items=3,1,P_ARTIST,” - „,P_TITLE
LCD_items=4,1,P_ALBUM,” - „,P_YEAR
LCD_items=5,1,P_TIMEPOS
LCD_items=6,1,S_PLAY

; UWAGA: Ten plik jest niekompletny !!!
; Więcej informacji o tym pliku
; w dokumentacji programu mpxplay

Listing 2

Listing 3

background image

DOS świetnie nadaje się do zabawy w łączenie 
komputera z elektroniką. Stare komputery mają 
komplet bardzo prostych w obsłudze portów 
(zarówno szeregowe, jak i równoległy). Porty 
te w DOS-ie dostępne są jako komórki pamię-
ci komputera, dzięki czemu samodzielne ich 
oprogramowanie jest bardzo proste. Wbrew 

pozorom w sieci nie brakuje dokumentacji 
ani gotowego oprogramowania, np. program 
Mpxplay jest nieustannie rozwijany. Ja użyłem 
wersji 1,56, ale w chwili pisania tego artykułu 
(kwiecień 2010) dostępna była już beta wersji 
1,57 z nowymi funkcjami (m.in. odtwarzanie 
plików z sieci). Gdyby ktoś chciał zbudować 
podobne urządzenie, zalecam jednak trochę 
mocniejszy procesor, bo mój 486 ma problemy 
z plikami o większym bitrate. Zalecam procesor, 
co najmniej Pentium 133. Nie od rzeczy jest też 
dobra karta muzyczna, np. Sound Blaster Live. 
W takim zestawieniu odtwarzacz pod względem 
brzmienia bije na głowę większość tanich empe-
trójek, miniwież czy odtwarzaczy DVD.

Jak pisałem we wstępie, mam nadzieję, że 

zainspirowałem do działania nie tylko siebie. 
Bo ja, zachęcony działaniem opisanej powy-

żej konstrukcji buduję sobie – tym razem 
rasowy – serwer muzyczny. Wyposażony 
będzie m.in. w wyświetlacz LCD, pilot IR, 
złącze USB, CD-ROM z możliwością odtwa-
rzania i ripowania płyt CD oraz odtwarzania 
plików z sieci. I tym razem w obudowie 
slim, pasującej do wieży audio. Oczywiście 
z FreeDOS i MpxPlay na pokładzie. Jego 
moduł sterowania będzie się kontaktował z 
komputerem wyłącznie poprzez port RS232, 
wykorzystując terminalowy protokół VT100. 
Ale to temat na inny artykuł...

Sławomir Węgrzyn

bsw@poczta.onet.pl

Linki
Odtwarzacz mpxplay – http://mpxplay.sou-
rceforge.net/
System operacyjny FreeDOS – http://www.
freedos.org/

Projekty AVT

Uwaga! Podczas użytkowania urządze-
nia w jego obwodach występują napięcia 
groźne dla życia i zdrowia. Osoby nie-
doświadczone i niepełnoletnie mogą wy-
konać je wyłącznie pod kierunkiem wy-
kwalifi kowanego opiekuna, na przykład 
nauczyciela.

Moduł sterowania
Rezystory
R1-R8,R20. . . . . . . . . . . . . .  10kΩ
R9-R16  . . . . . . . . . . . . . . . . .220R 
R17-R19,R22. . . . . . . . . . . . 4,7kΩ 
R21 . . . . . . . . . . . . . . . . . .  100kΩ
R23 . . . . . . . . . . . . . . . . . . . 1,5kΩ
Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . 100nF 
C2 . . . . . . . . . . . . . . . . . . . . . 33pF
C3 . . . . . . . . . . . . . . . . . . . . . 33pF
C4 . . . . . . . . . . . . . . . . . . . . 220nF
C5 . . . . . . . . . . . . . . . . . . . . 100nF
Półprzewodniki
D1 . . . . . . . . . . . . . . . . . . . . . . 9V1 
DIS1-DIS4 . . . . . . . . . . . .HD-K121
IC1  . . . . . . . . . . . . . . . .  MEGA8-P 

IC2  . . . . . . . . . . . . . . .  74HC164N
Q1-Q8 . . . . . . . . . . . . . . . . .BC327 
Q10 . . . . . . . . . . . . . . . . . .BC546A 
Pozostałe
Q9 . . . . . . . . . . . . . . . 11,0592MHz
Regulator
R1,R2  . . . . . . . . . . . . . . . . . 300Ω
R3,R4,R6-R23 2kΩ  
P1,P2  . . . . . . . . . . . . . .2,5kΩ  PR
C1 . . . . . . . . . . . . . . . . . . . . 100nF
D1-D4 . . . . . . . . . . . . . . . .1N4148
T1,T4,T7,T10 . . . . . . . . . . .BC546A   
T2,T3,T5,T6,T8,T9,T11,T12 

BC327 

U1,U2  . . . . . . . . . . . . . . . .  LM317 
UC. . . . . . . . . . . . . . . . .goldpin x8
J1  . . . . . . . . . . . . . . . . . jumper x3
Programator. . . . . . . . .goldpin 5x2

Wykaz elementów

R   E   K   L   A   M   A