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
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
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
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
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 obsugi dugich nazw plików (wywoanie sterownika w pliku
AUTOEXEC.BAT)
FREEDOS
Katalog zawierajcy 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 (wywoanie sterownika w pliku AUTOEXEC.BAT)
SNDAPP
Katalog ze sterownikami karty muzycznej (wywoanie sterownika w pliku AUTOEXEC.BAT)
VC5
Katalog z menederem plików Volkov Commander w wersji 4.99
AUTOEXEC.BAT
Plik konfiguracyjny z poleceniami wywoywany po zaadowaniu systemu operacyjnego.
Zawarto
na listingu 2
COMMAND.COM Plik systemu operacyjnego FreeDOS
CONFIG.SYS
Plik konfiguracyjny wywoywany 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
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
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