Wahadlowy_zegar_widmowy.pdf

(1370 KB) Pobierz
054-057_zegar_widmowy.indd
PROJEKTY CZYTELNIKÓW
Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze od-
powiedzialności za prawidłowe działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż sprawdzamy
poprawność konstrukcji.
Prosimy o nadsyłanie własnych projektów z modelami (do zwrotu). Do artykułu należy dołączyć podpisane oświadczenie, że
artykuł jest własnym opracowaniem autora i nie był dotychczas nigdzie publikowany. Honorarium za publikację w tym dziale
wynosi 250,– zł (brutto) za 1 stronę w EP. Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie prawo do dokonywania
skrótów.
Wahadłowy zegar widmowy
Opisane urządzenie, jak nie
trudno się domyślić, służy do
wyświetlania aktualnego czasu.
Jednak funkcja ta jest spełniana
w bardzo nietypowy sposób,
ponieważ czas w standardowym
formacie HH:MM:SS jest
wyświetlany za pomocą jedynie
siedmiu diod LED. Poza tym,
świecące cyfry wydają się
być zawieszone w przestrzeni.
Uzyskanie takiego efektu jest
możliwe dzięki opóźnieniu
ludzkiego oka w reakcji na
zanik światła.
Dodatkowe
materiały na CD
Projekt
171
Linijka diod LED zamocowana jest na koń-
cu elastycznego, plastikowego ramienia, który
wprawiany jest w ruch wahadłowy za pomocą
elektromagnesów (stąd „wahadłowy” w tytule).
Cyfry nie są wyświetlane w całości lecz linia po
linii, jednak to przemiatanie następuje tak szyb-
ko, że obserwatorowi wydaje się, że ma przed
sobą cały nieruchomy obraz. Dokładnie ta sama
zasada obowiązuje w telewizorze, gdzie obraz
również jest wyświetlany liniami, z tym że po-
ziomymi (w dzisiejszych czasach należałoby już
wspomnieć, że chodzi o staroświecki telewizor
z kineskopem ). Zapewne niektórym czytelni-
kom znane są inne zegary lub wyświetlacze wid-
mowe oparte na tej samej zasadzie, jednak za-
zwyczaj są to konstrukcje gdzie linijka diod jest
zamontowana na wirniku silnika elektrycznego.
To niestety wymaga albo umieszczenia całego
układu na płytce z diodami i nie zawsze łatwe-
go wyważenia go, albo zastosowania skompli-
kowanego systemu szczotek do przekazywania
zasilania poszczególnym diodom świecącym.
W tym pierwszym przypadku również potrzeb-
ne są szczotki lub transformatory obrotowe,
bo układ musi przecież jakoś być zasilany. Do-
datkowym problemem jest ustawianie godziny
– o przyciskach na płytce można zapomnieć,
bo przecież aby było widać godzinę układ musi
wykonywać przynajmniej kilkanaście obrotów
na sekundę.
Dlatego postanowiłem zbudować coś od-
miennego, co nie wymaga szczotek ani trans-
formatorów obrotowych, a jednocześnie układ
elektroniczny jest nieruchomy i w pełni do-
54
ELEKTRONIKA PRAKTYCZNA 2/2009
PROJEKTY CZYTELNIKÓW
447342574.051.png
Wahadłowy zegar widmowy
List. 1.
$crystal = 12000000
Config Scl = Portd.1
Config Sda = Portd.0
Config I2cdelay = 10
Config Portb = Output
Portb = 127
Config Int0 = Rising
On Int0 Go
Enable Int0
Enable Interrupts
Dim I As Byte , Ii As Byte
Dim B As Byte
Dim S As Byte , M As Byte , H As Byte
Dim Ustawione As Byte
Dim Znaki(8) As Byte
Znaki(3) = 10 ‘dwukropek
Znaki(6) = 10 ‘dwukropek
Declare Sub Get_time
Declare Sub Set_time
Declare Sub Setting_time
Do
Call Get_time
If Pind.4 = 0 Then Call Setting_time
Waitms 100
Loop
Go:
Waitms 20 ‘odległość od krawędzi
Znaki(1) = H / 10
Znaki(2) = H Mod 10
Znaki(4) = M / 10
Znaki(5) = M Mod 10
Znaki(7) = S / 10
Znaki(8) = S Mod 10
For I = 1 To 8
For Ii = 0 To 4
B = Znaki(i) * 5
B = B + Ii
B = Lookup(B , Dta_znaki)
Portb = B
Waitus 400 ‘SZEROKOŚĆ ZNAKU
Next Ii
Portb = 127
Waitus 400 ‘ODSTĘP
Next I
Return
Sub Setting_time
S = 0
Do
Waitms 100
If Pind.5 = 0 Then
If Ustawione = 2 Then
Ustawione = 0
Call Set_time
Exit Do
Else
Ustawione = 1
List. 1. c.d.
Incr H
If H > 24 Then H = 0
End If
End If
If Pind.4 = 0 Then
If Ustawione <> 0 Then
Ustawione = 2
Incr M
If M > 59 Then M = 0
End If
End If
Loop
End Sub
Sub Get_time
I2cstart
I2cwbyte 160
I2cwbyte 2
I2cstart
I2cwbyte 161
I2crbyte S , Ack
I2crbyte M , Ack
I2crbyte H , Nack
I2cstop
H = Makedec(h)
M = Makedec(m)
S = Makedec(s)
End Sub
Sub Set_time
M = Makebcd(m)
H = Makebcd(h)
Disable Interrupts
I2cstart
I2cwbyte 160
I2cwbyte 0
I2cwbyte 8
I2cstop
I2cstart
I2cwbyte 160
I2cwbyte 2
I2cwbyte S
I2cwbyte M
I2cwbyte H
I2cstop
Enable Interrupts
End Sub
Dta_znaki:
Data &B1000001 , &B0111110 , &B0111110 , &B0111110 , &B1000001 ‘0
Data &B1111111 , &B1011110 , &B0000000 , &B1111110 , &B1111111 ‘1
Data &B1011110 , &B0111100 , &B0111010 , &B0110110 , &B1001110 ‘2
Data &B0111101 , &B0111110 , &B0101110 , &B0010110 , &B0111001 ‘3
Data &B1110011 , &B1101011 , &B1011011 , &B0000000 , &B1111011 ‘4
Data &B0001101 , &B0101110 , &B0101110 , &B0101110 , &B0110001 ‘5
Data &B1100001 , &B1010110 , &B0110110 , &B0110110 , &B1111001 ‘6
Data &B0111111 , &B0111000 , &B0110111 , &B0101111 , &B0011111 ‘7
Data &B1001001 , &B0110110 , &B0110110 , &B0110110 , &B1001001 ‘8
Data &B1001111 , &B0110110 , &B0110110 , &B0110101 , &B1000011 ‘9
Data &B1111111 , &B1001001 , &B1001001 , &B1111111 , &B1111111 ‘:
stępny w czasie działania urządzenia. Opisany
przeze mnie zegar widmowy wyświetla godzinę
za pomocą diod umieszczonych na plastikowym
ramieniu drgającym w ruchu wahadłowym.
się ze strony prawej do lewej) przeznaczona jest
na odczyt czasu z układu RTC oraz kontrolo-
wanie przycisku powodującego wejście w tryb
ustawiania godziny.
Program składa się kolejno z części dekla-
racji i konfiguracji sprzętowej procesora (której
dokładniejszy opis będzie chyba zbędny), pętli
głównej oraz czterech procedur:
Go – przerwanie realizujące wyświetlenie godzi-
ny,
Setting_time – tryb ustawiania godziny,
Get_time – realizacja odczytu czasu za pomocą
magistrali I 2 C,
Set_time – realizacja zapisu ustawionego wcze-
śniej czasu, również za pomocą I 2 C.
Pętla gówna dziesięciokrotnie w ciągu se-
kundy wywołuje procedurę odczytu czasu oraz
sprawdza czy przycisk S1 podłączony do pinu
d.4 jest wciśnięty. Jeśli tak, to wywołana zostaje
procedura ustawiania czasu. Wówczas czas jest
zerowany (zostaje wyświetlone 00:00:00) i za
pomocą przycisku S2 należy ustawić aktualną
godzinę. Następnie, dopiero po ustawieniu go-
dziny, przechodzimy do ustawiania minut za po-
mocą przycisku S2. Ustawianie sekund uznałem
za zbędne, dlatego przy wejściu do trybu usta-
wiania czasu są one zerowane i aby zegar był
punktualny co do sekundy należy ustawić czas
o minutę późniejszy niż aktualny, a następnie
poczekać aż ta minuta nastanie – w tym mo-
mencie należy ponownie wcisnąć przycisk S1,
co spowoduje wywołanie procedury zapisu cza-
su do układu RTC a następnie powrót progra-
mu do pętli głównej.
Do tej pory program jest prosty i zrozu-
miały, jednak procedura Go jest trochę bardziej
zagmatwana. Komenda waitms 20 rozpoczyna-
jąca procedurę ustala opóźnienie wyświetlania
godziny w stosunku do sygnału przerwania,
czyli w praktyce odległość wyświetlanego
obrazu od lewej skrajnej pozycji wahadła. Go-
dzina powinna być wyświetlana w czasie gdy
ruch wahadła jest najbardziej jednostajny, czyli
w rejonie jego środkowego położenia, dlatego
wartość tego opóźnienia trzeba ustalić indywi-
dualnie do każdej konstrukcji. Kolejne sześć linii
Program
Program mikrokontrolera przedstawia
List. 1 . Napisany został w znanym i prostym
języku Bascom. Zastosowany mikrokontroler to
bardzo popularny AT90S2313, którego obecnie
produkowanym odpowiednikiem jest Attiny-
2313. Ogólnie rzecz biorąc zadaniem mikro-
procesora jest odczyt czasu z układu RTC i na
podstawie otrzymanych informacji zaświecanie
odpowiednich diod LED w odpowiednim czasie,
oraz oczywiście umożliwienie użytkownikowi
ustawienia właściwej godziny. Synchronizacja
wyświetlanego obrazu jest realizowana za po-
mocą przerwania Int0, na które podawany jest
sygnał prostokątny sterujący elektromagnesami.
Praktycznie połowę czasu mikroprocesor zuży-
wa na obsługę tego przerwania, natomiast dru-
ga połowa (czyli czas gdy wahadło przemieszcza
ELEKTRONIKA PRAKTYCZNA 2/2009
55
447342574.054.png
PROJEKTY CZYTELNIKÓW
Rys. 1. Schemat elektryczny zegara
procedury zapisuje kolejne cyfry godzin, minut
i sekund do tablicy Znaki, która zawiera osiem
znaków wyświetlanych kolejno przez zegar
(dwa dwukropki zostały wpisane do tej tablicy
na stałe na początku programu). Następnie pro-
gram przechodzi do podwójnej pętli For. Pętla
zewnętrzna wykonuje się osiem razy, ponie-
waż tyle jest wyświetlanych znaków, zmienna
I określa który raz pętla jest wykonywana, czyli
który znak jest aktualnie wyświetlany. Nato-
miast pętla wewnętrzna wykonuje się pięć razy
dla każdego znaku, ponieważ jeden znak składa
się z pięciu pionowych linii, zmienna Ii określa
która linia (z I -tego znaku) jest w danej chwili
wyświetlana.
W tym momencie należałoby wspomnieć,
że konfiguracja zaświecania diod LED zapisana
jest w obszarze danych na końcu programu pod
etykietą Dta_znaki . Zapis ten składa się z 55
liczb ośmiobitowych (dla ułatwienia zapisałem
je binarnie), które reprezentują kolejno pionowe
linie jedenastu znaków, od „0” do „9” oraz „:”.
Kolejne bity liczby reprezentują kolejne diody
LED, gdzie „0” oznacza diodę zaświeconą a „1”
zgaszoną. Najstarszy, ósmy bit każdej liczby jest
nieistotny, ponieważ mamy tylko 7 diod LED. Te-
raz wróćmy do dalszej analizy programu.
Zmienna B przyjmuje wartość reprezentu-
jącą miejsce pierwszej pionowej linii znaku za-
pisanego w tablicy Znaki na pozycji I -tej, każdy
znak to 5 linii dlatego wartość z tablicy mnożo-
na jest przez 5. Następnie wartość B zwiększana
jest o wartość Ii , czyli o wartość aktualnej linii
z aktualnego znaku. Następnie z obszaru da-
nych Dta_znaki pobierana jest wartość zapisana
na pozycji B -tej. Dla przykładu, jeśli jest godzi-
na 14 i w danej chwili trzeba zaświecić trzecią
pionową linię cyfry drugiej (czyli cyfry „4”), to
program pobierze informację które diody włą-
czyć z 4×5+3=23 pozycji z obszaru danych
Dta_znaki. Następnie odczytana liczba zostaje
wystawiona na port B do którego podłączone
są diody LED, po czym program czeka 400 m s
(ta wartość określa szerokość pojedynczego zna-
ku). Na tym kończy się pętla wewnętrzna, i po
wyświetleniu wszystkich pięciu linii na port B zo-
staje wystawiona liczba 127 (binarnie 1111111),
czyli wszystkie diody zostaną zgaszone, po-
nieważ właśnie trwa przerwa między znakami
trwająca zgodnie z wartością wpisaną w na-
stępnej linii programu 400 m s. Po odczekaniu
tego czasu program przechodzi do wyświetlania
następnego znaku, a jeśli wyświetlone zostały
już wszystkie z ośmiu to następuje powrót do
pętli głównej i oczekiwanie na następny sygnał
przerwania.
3 kg. Tyle w zupełności wystarczy aby zegar
stał stabilnie. Warto jest wyposażyć dolną pły-
tę w jakieś gumowe nóżki, dzięki czemu cała
konstrukcja podczas pracy będzie stała jeszcze
stabilniej. Do górnej płyty podstawy przymoco-
wana jest płytka drukowana z układem elek-
tronicznym, do jej zamocowania użyłem sze-
ściokątnych kołków dystansowych, które słu-
żyły wcześniej do utrzymywania płyty głównej
w obudowie komputera PC. Kołki te wkręciłem
ciasno w wywiercone wcześniej, nieco węższe
WYKAZ ELEMENTÓW
Rezystory
R1...R4: 1 k V
R5: 4,7 k V
R6: 10 k V pot. montażowy wieloobrotowy
R7...R12: 10 k V
R13...R19: 200 V
Kondensatory
C1: 4,7 m F (patrz tekst)
C2...C5: 100 nF
C6: 470 m F
C7: 100 m F
C8: 1 m F
D1...D7: LED zielona
D8, D9: 1N4007
D10, D11: 1N4148
T1, T2: BC211
T3: BC548
U1: LM7805 w obudowie TO-220
U2: NE555
U3: AT90S2313 (ATTiny2313)
U4: PCF8583P
Inne
Y1: Rezonator kwarcowy 12 MHz
Y2: Rezonator kwarcowy „zegarkowy”
32,768 kHz
BT1: Bateria CR2032
S1, S2: Microswitch
J1...J3: Złącza
Konstrukcja mechaniczna
Ważnym elementem przedstawionego ze-
gara jest konstrukcja mechaniczna widoczna
na zdjęciach. Zasadniczym elementem jest tutaj
zamocowany pionowo plastikowe ramię stano-
wiące wahadło, na którego końcu umieszczo-
ne są diody LED. Ramię to jest zamocowane
sztywno do płyty PCV będącej podstawą urzą-
dzenia. W płycie wycięta jest szczelina, w którą
koniec ramienia jest wsunięty i przymocowany
od spodu za pomocą dwóch aluminiowych ką-
towników. Podstawa jest dwupoziomowa, aby
między płyty można było wsunąć ciężarki. Zegar
z uwagi na zasadę działania wymaga balastu,
aby po włączeniu nie zaczął „tańczyć” po stole.
Ja jako tego balastu użyłem dwóch ołowianych
odważników do nurkowania o łącznej masie
56
Na CD karty katalogowe i noty aplikacyjne elementów oznaczonych na Wykazie Elementów kolorem czerwonym
ELEKTRONIKA PRAKTYCZNA 2/2009
447342574.055.png 447342574.056.png 447342574.001.png 447342574.002.png 447342574.003.png 447342574.004.png 447342574.005.png 447342574.006.png 447342574.007.png 447342574.008.png 447342574.009.png 447342574.010.png 447342574.011.png 447342574.012.png 447342574.013.png 447342574.014.png 447342574.015.png 447342574.016.png 447342574.017.png 447342574.018.png 447342574.019.png 447342574.020.png 447342574.021.png 447342574.022.png 447342574.023.png 447342574.024.png 447342574.025.png 447342574.026.png 447342574.027.png
Excellence in Electronics
niż średnica gwintu kołków otwory w płycie,
dzięki czemu nic od spodu nie wystaje i nie
trzeba używać nakrętek. Do ramienia przymo-
cowane są po bokach dwa magnesy neodymo-
we (ja zastosowałem magnesy z dysków twar-
dych), a przy magnesach znajdują się cewki
odpowiedzialne za rozbujanie ramienia. Cewki
te w oryginalnym projekcie zostały wyjęte ze
starych liczników telefonicznych, jednak z po-
wodzeniem można zastosować cewki z więk-
szych gabarytowo przekaźników na 12 V. Elek-
tromagnesy zostały przymocowane do płyty
podstawy za pomocą kątowników aluminio-
wych. Dobrze jest zadbać o łatwość regulacji
odległości rdzeni elektromagnesów od magne-
sów zamocowanych na ramieniu, gdyż pozwoli
to na regulację amplitudy drgań ramienia. Musi
być ona na tyle duża, żeby wyświetlany obraz
nie musiał być zbyt wąski, ale z drugiej strony
na tyle mała żeby ramię nie wygięło się za moc-
no i nie przykleiło magnesem do rdzenia cewki
lub nie złamało.
Ramię zegara musi poruszać się z często-
tliwością swojego rezonansu mechanicznego,
dlatego częstotliwość pracy generatora jest za-
leżna od wymiarów oraz materiału, z którego
ramię jest zrobione, co skutkuje koniecznością
dobrania częstotliwości indywidualnie do wy-
konanej konstrukcji. Przy doborze wymiarów
ramienia i materiału z którego będzie zrobione
należy pamiętać o tym, że jego częstotliwość
drgań powinna być większa niż 15 Hz aby nie
było efektu migotania wyświetlanego obrazu.
w urządzeniu, więc jeśli dysponujemy takim
programatorem warto przy projektowaniu po-
łączeń na płytce uwzględnić złącze ISP (nie ma
go na schemacie). Rozmieszczenie elementów
i połączeń można zaplanować do końca ze
szczegółami, ale ja osobiście po takim zgrub-
nym zaplanowaniu zaczynam montaż płytki
i w trakcie montażu rozwiązania kolejnych
połączeń same się pojawiają. Układy scalone,
zwłaszcza mikrokontroler należy zamontować
w podstawkach.
Po zmontowaniu układu pierwszą czynno-
ścią jaką należy zrobić jest sprawdzenie czy ge-
nerator NE555 działa poprawnie. To jest bardzo
prosta część układu więc nikt nie powinien mieć
problemu z jego uruchomienie. Jeśli już pracu-
je, należy przy pomocy potencjometru ustawić
częstotliwość tak, aby ramię drgało jak naj-
mocniej. Jeśli przy pomocy potencjometru nie
znajdziemy częstotliwości rezonansu ramienia
to może okazać się konieczna wymiana kon-
densatora C1 na inną pojemność. Po ustawie-
niu odpowiedniej częstotliwości należy ustawić
elektromagnesy w takiej pozycji, aby amplituda
drgań była odpowiednia, o czym napisałem
wcześniej.
Po uzyskaniu takiego stanu należy włożyć
mikrokontroler w podstawkę i wgrać skompi-
lowany wcześniej program, lub jeśli nie korzy-
stamy z ISP program należy wgrać wcześniej.
Po włączeniu urządzenia diody powinny już
coś wyświetlać, jednak może to być niecz ytelne
z powodu niedobranych odstępów czasowych.
Wówczas należy samodzielnie dobrać wartości
opóźnień związanych z odległością obrazu od
skrajnej pozycji wahadła, szerokością wyświe-
tlanego znaku oraz odstępu między znakami
a następnie po ponownym skompilowaniu pro-
gramu wgrać go do pamięci mikroprocesora.
Ta konstrukcja może oczywiście wyświetlać
nie tylko czas ale również dowolny tekst, to je-
dynie kwestia programowa. Dlatego zachęcam
do samodzielnego eksperymentowania z mo-
dyfikacją programu. Znaki są zapisane w takiej
samej postaci jak w wyświetlaczach alfanu-
merycznych LCD (5×7 pikseli) więc jeśli chodzi
o litery i inne znaki alfanumeryczne nie trzeba
ich wymyślać po pikselu tylko można znaleźć
ich gotowe rysunki w notach katalogowych
wyświetlaczy.
ALL YOU NEED!
LEDs
Äußerst wettbewerbsfähige,
Montaż płytki drukowanej
Prezentowany model zegara został wyko-
nany na płytce uniwersalnej, dlatego brak w ar-
tykule wzoru ścieżek. Wymiary zastosowanej
płytki to 65×85 mm. W przypadku konstruo-
wania układu na płytce uniwersalnej najpierw
należy ustawić na niej luźno kluczowe elementy
(układy scalone, elementy o dużych gabary-
tach) w odpowiednich miejscach, a następnie
z grubsza zaplanować połączenia które trzeba
będzie wykonać. Należy pamiętać, że złącza
powinny znajdować się na krawędziach płyt-
ki, oraz o tym że na rogach musi znaleźć się
miejsce na otwory pod śruby mocujące. Zasto-
sowany w zegarze procesor posiada interfejs
ISP (In System Programming), pozwalającą pro-
gramować go bez wyjmowania go z podstawki
lückenlose Palette in
sämtlichen Farben
Fertigung erfolgt zu 100% in
eigenen, kapazitätsstarken
Produktionsstätten mit
höchstem Qualitätsniveau
Die PicoLED besitzt mit einer
Höhe von 0,2 mm das flachste
0402-Gehäuse der Welt
Karol Łuszcz
R
E
K
L
A
M
A
ANWENDUNGEN
Ideal geeignet für Consumer-,
Industrie- und Automotive-Anwendungen.
ELEKTRONIKA PRAKTYCZNA 2/2009
www.rohmeurope.com
57
Wahadłowy zegar widmowy
447342574.028.png 447342574.029.png 447342574.030.png 447342574.031.png 447342574.032.png 447342574.033.png 447342574.034.png 447342574.035.png 447342574.036.png 447342574.037.png 447342574.038.png 447342574.039.png 447342574.040.png 447342574.041.png 447342574.042.png 447342574.043.png 447342574.044.png 447342574.045.png 447342574.046.png 447342574.047.png 447342574.048.png 447342574.049.png 447342574.050.png 447342574.052.png 447342574.053.png
Zgłoś jeśli naruszono regulamin