cyfrowy zegar „słoneczny - avteroa a zy grudzie˜2014 19 roey vt do sterowania matrycami użyłem...
TRANSCRIPT
E l e k t ro n i k a d l a Ws z y s t k i c h Grudzień 2014 17
Projekty AVT
Prezentowane urządzenie to cyfrowy zegar z wyświetlaczem analogowym, mierzący czas z dokładnością do jed-nej sekundy. Spośród wszystkich innych zegarów wyróżnia go efektowny sposób działania. Łączy on w sobie starożytny pomysł odmierzania czasu z nowoczesną technologią. Zasada wyświetlania aktu-alnej godziny jest analogiczna jak w... zegarze słonecznym. Ramiona widocz-ne na tarczy zegara tworzone są przez cienie powstające w wyniku oświetlania pod odpowiednim kątem nieruchomej, pionowej wskazówki, znajdującej się w centrum tarczy. Różnica polega na tym, że zamiast pojedynczego źródła świat-ła – słońca, które znacznie ograniczało dokładność zegara, wskazówkę oświetlają jednocześnie 3 spośród 180 diod LED ste-
rowanych przez odpowiednio zaprogra-mowany mikrokontroler. Wbrew pozorom zegar wcale nie jest tak skomplikowany, jak mogłoby się wydawać, dzięki czemu nawet mniej zaawansowani elektronicy nie powinni mieć problemu ze zrozumie-niem jego działania, a także z realizacją.
Pracę zegara można obejrzeć w serwi-sie YouTube (najlepiej ustawiając wersję HD 1080p): h t t p s : / / w w w . y o u t u b e . c o m /watch?v=50vo3-p1fPA
Opis układuNa każdą wskazówkę zegara przypada 60 stanów (jak w tradycyjnym analogowym zegarze), co wymagało użycia 180 diod LED. Sterowanie taką liczbą diod wiąże się przeważnie z budowa-niem skomplikowanych matryc, ale ponieważ głównym założeniem projektu była prostota konstrukcji, wykorzy-stałem sprytny pomysł sterowania dużą licz-bą diod przy możliwie
małej liczbie wyjść mikrokontrolera, tzw. charlieplexing.
Liczbę diod możliwych do sterowania tą metodą, za pomocą n wyjść, oblicza się z wzoru:Liczba diod = n2 – nPrzykładowo 3 wyjścia umożliwiają ste-rowanie sześcioma diodami, jak widać na rysunku 1.
Poszczególne diody zaświecane są za pomocą odpowiedniej polaryzacji wejść X1–X3. Wadą takiego rozwiązania jest to, że nie można jednocześnie zaświecić 2 lub więcej dowolnych diod. Pełną kon-trolę mamy jedynie nad wyświetlaniem jednej diody w całej matrycy. Dlate-go też wyświetlanie trzech wskazówek
wymagało utworzenia 3 oddzielnych matryc po 60 diod. Matryce są identyczne, dlate-go można dowolnie zamieniać wskazówki miejscami, nawet po zmontowaniu ukła-du. Schemat ideowy
3115
Rys. 1
Niezwykły cyfrowy zegar, wyświetla-jący czas w sposób analogowy, za po-mocą wskazówek – cieni. Dla bardziej dociekliwych Czytelników w Elpor-talu, wśród materiałów dodatkowych do tego numeru, umieszczone są boga-te materiały dodatkowe i wskazówki
do dalszej rozbudowy.
Cyfrowy zegar... „słoneczny”
LED
1LE
D2
LED
3LE
D4
LED
5LE
D6
LED
7LE
D8
LED
9LE
D10
LED
11LE
D12
LED
13LE
D14
LED
15LE
D16
LED
17LE
D18
LED
19LE
D20
LED
21LE
D22
LED
23
LED
24
LED
25LE
D26
LED
27
LED
28LE
D29
LED
30LE
D31
LED
32
LED
33LE
D34
LED
35LE
D36
LED
37LE
D38
LED
39
LED
40
LED
41LE
D42
LED
43LE
D44
LED
45
LED
46LE
D47
LED
48
LED
49LE
D50
LED
51LE
D52
LED
53LE
D54
LED
55
LED
56LE
D57
LED
58LE
D59
LED
60
R1R2
R3
R4
R5
R6
R7
R8
R9
12
34
56
78
910
JP1
B
C
D
E
F
G
H
A
I
Rys. 2
Projekty AVT
18
wyświetlacza dla jednej wskazówki przedstawiony jest na rysunku 2.
Często wymienianą wadą charlieple-xingu jest tzw. ghosting, czyli zaświecanie się słabszym światłem innych niepożąda-nych diod. Problem można jednak wyeli-minować, stosując dobrze izolowane połą-czenie oraz wysokiej jakości płytki dru-kowane. Osobiście zauważyłem go jedy-nie przy prototypowej wersji zegara na płytce wykonanej metodą termotransferu, bez soldermaski. Z tego samego względu
odradzam również łączenie diod sposo-bem „na pająka”. W przypadku pomyłki w połączeniu, późniejsze szukanie błędu jest bardzo czasochłonne. Kolejnym argu-mentem przeciw lutowaniu „na pająka” jest konieczność mocnego osa-dzenia diod, ponieważ każdą z nich należy później odpowied-nio wygiąć, aby skupić wiązkę światła na wskazówce. Duże płytki drukowane nie są tanie, ale w tym przypadku naprawdę warto w nie zainwestować.
Jak wynika z obliczeń, do sterowania jedną 60-diodową matrycą wymagane jest co najmniej 9 wyjść mikrokontrolera, co razem daje 27 wyjść do sterowania całym zegarem.
ICSP
+5V
+5V
GREEN
+5V
100n
100n
+5V
ATMEGA2560-16AU
100n
100n
22p
+5V
100n
YELLOW
YELLOW
500mA+5V
100n
GND
YELLOW
100n
1u
+5V
ATMEGA8U2-MU
ICSP
+5V
16MHz
BLM21
PG
B10
1060
4
PG
B10
1060
4
16MHz1M
1k
1k
1k
1k
10K
10K
10K
10K
10K
10K
1k
1k
1k
1k
22R
22R
22R
22R
1M
16M
Hz
16M
Hz
22p
22p
22p
22p
27R
27R
ICSP1 23 45 6
12345678
PW
ML
12345678
PWMH
ON
C3
C6
12345678
AD
CL
12345678
CO
MM
UN
ICAT
ION
GNDGNDGND
VCCVCC
VCC
(A8)PC0 53(A9)PC1 54(A10)PC2 55(A11)PC3 56(A12)PC4 57(A13)PC5 58(A14)PC6 59(A15)PC7 60
(AD0)PA0 78(AD1)PA1 77(AD2)PA2 76(AD3)PA3 75(AD4)PA4 74(AD5)PA5 73(AD6)PA6 72(AD7)PA7 71
(ADC0)PF0 97(ADC1)PF1 96(ADC2)PF2 95(ADC3)PF3 94(ADC4/TCK)PF4 93(ADC5/TMS)PF5 92(ADC6/TDO)PF6 91(ADC7/TDI)PF7 90
(ALE)PG2 70
(CLKO/ICP3/INT7)PE7 9
(ICP1)PD4 47
(MISO/PCINT3)PB3 22
(MOSI/PCINT2)PB2 21
(OC0A/OC1C/PCINT7)PB7 26
(OC0B)PG5 1
(OC1A/PCINT5)PB5 24(OC1B/PCINT6)PB6 25
(OC2A/PCINT4)PB4 23
(OC3A/AIN1)PE3 5(OC3B/INT4)PE4 6(OC3C/INT5)PE5 7
(RD)PG1 52
(RXD0/PCIN8)PE0 2
(RXD1/INT2)PD2 45
(SCK/PCINT1)PB1 20
(SCL/INT0)PD0 43(SDA/INT1)PD1 44
(SS/PCINT0)PB0 19
(T0)PD7 50
(T1)PD6 49
(T3/INT6)PE6 8
(TOSC1)PG4 29
(TOSC2)PG3 28
(TXD0)PE1 3
(TXD1/INT3)PD3 46
(WR)PG0 51
(XCK0/AIN0)PE2 4
(XCK1)PD5 48
AGND99
AREF98
AVCC100
GND11326281
PH0(RXD2)12 PH1(TXD2)13 PH2(XCK2)14 PH3(OC4A)15 PH4(OC4B)16 PH5(OC4C)17 PH6(OC2B)18 PH7(T4)27
PJ0(RXD3/PCINT9)63 PJ1(TXD3/PCINT10)64 PJ2(XCK3/PCINT11)65 PJ3(PCINT12)66 PJ4(PCINT13)67 PJ5(PCINT14)68 PJ6(PCINT15)69 PJ779
PK0(ADC8/PCINT16)89PK1(ADC9/PCINT17)88PK2(ADC10/PCINT18)87PK3(ADC11/PCINT19)86PK4(ADC12/PCINT20)85PK5(ADC13/PCINT21)84PK6(ADC14/PCINT22)83PK7(ADC15/PCINT23)82
PL0(ICP4)35PL1(ICP5)36 PL2(T5)37 PL3(OC5A)38 PL4(OC5B)39 PL5(OC5C)40 PL641 PL742
RESET30
VCC10316180
XTAL134 XTAL233
IC3
C5C4
12345678
AD
CH
C1
C8
RX
TX
X21234
P$1
P$1
P$2
P$2
F1C9
L
C7 21RESET-EN
C10
IC4
(PCINT9/OC1B)PC5 25
(PCINT10)PC4 26
(INT4/ICP1/CLK0)PC7 22
(OC1A/PCINT8)PC6 23
(AIN2/PCINT11)PC2 5
(PCINT5)PB5 19
(T1/PCINT4)PB4 18
(PD0/MISO/PCINT3)PB3 17
(PDI/MOSI/PCINT2)PB2 16
(SCLK/PCINT1)PB1 15
(SS/PCINT0)PB0 14
(CTS/HWB/AIN6/TO/INT7)PD7 13
(RTS/AIN5/INT6)PD6 12
(XCK/AIN4/PCINT12)PD5 11
(INT5/AIN3)PD4 10
(TXD1/INT3)PD3 9
(RXD1/AIN1/INT2)PD2 8
(AIN0/INT1)PD1 7
(OC0B/INT0)PD0 6
GND3
VCC4
AVCC32
UVCC31
XTAL11
XTAL2(PC0)2
RESET(PC1/DW)24
UGND28
PADEXP
UCAP27
D-30
D+29
(PCINT6)PB6 20(PCINT7/OC0A/OC1C)PB7 21
ICSP11 23 45 6
Y2
UB
OO
T2
1
L1
Z1 Z2
21
GROUND
Y1R1
RN4A1 8
RN4B2 7
RN4C3 6
RN4D4 5
RN
5A18RN5D
4 5
RN
1A1
8
RN
1B2
7
RN
1C3
6
RN1D4 5
RN3A1 8
RN3B2 7
3 6RN3C
45RN3D
RN2A18
RN2B2 7
RN2C3 6
RN2D45
R2
Q1
21
Q2
21
C14
C15
C16
C17
R3
R4
GNDAREFAREF
RESET
RESET
RESET
RESET
M8RXD
M8RXD
M8TXD
M8TXDADC0
ADC2ADC1
ADC3ADC4ADC5ADC6ADC7
SDA
SDA
SCL
SCL
ADC9ADC8
ADC10ADC11ADC12ADC13ADC14ADC15
PB3
PB3
PB2
PB2
PB1
PB1
PB5PB4
PE5
PE5PE4
PE4PE3
PE3
PE1 PE1
PE1
PE0 PE0
PE0
DTR
USBVCC
USBVCC
PB6
PH3
PH3
PH4
PH4
PH5
PH5
PH6
PH6
PG5
PG5
RXD1TXD1RXD2
RXD2
RXD3
RXD3
TXD2
TXD2
TXD3
TXD3
PC0PC1PC2PC3PC4PC5PC6PC7
PB0
PG0PG1PG2
PD7
0APPA1PA2PA3PA4PA5PA6PA7
PL0PL1PL2PL3
PL5PL6PL7
PB7
VUCAP
RD-RD+
RESET2
MISO2
MISO2
MOSI2
MOSI2
SCK2
SCK2
XVCC
RXLTXL
D-D+
UG
ND
UGND
US
HIE
LD
XTAL2
XTAL2
XTAL1
XTAL1
XT2
XT2
XT1
XT1XT1R
US
B
01234567
8910111213
15161718192021
14
(SCK)(MISO)
(MOSI)
pwmpwmpwmpwm
pwmpwmpwm
pwmpwmpwmpwmpwm
pwmpwmpwm
(TX0)(RX0)
pwmpwm
pwm
pwmpwm
(MISO)
(SCK)(MOSI)
pwmpwmpwm
pwmpwm
US
B b
oot E
n
Arduino Mega 2560Reference Design
TM+5V
1 JP1
1 JP2
1 JP3
1 JP4
u74u74
M7
MC33269D-5.0
MC33269ST-5.0T3
100n
+5V
2CP
1CP
D111
22
3 3
IC2
ADJ
VI3
1
VO 2
IC1
1
IN3 OUT 42
C2
VIN
PWRIN
+ +
+5V+3V3TS42
POWER123456
RESET
134 2
5RESET
VIN
100n
FDN340P
LM358D
LM358D
100n
+5V
100n
+5V
C13
T2
2
31
IC5A
IC5B
6
57
84
C12 C11
RN
5B2
7
RN
5C3
6
IN1
EN3
NC/FB 4
OUT 5
GND2
+5V
VIN
+3V3 +3V3
USBVCCGATE_CMD
CMPXIOH
1 23 45 67 89 10
11 1213 1415 16
PC0 PC1PC2 PC3PC4 PC5PC6 PC7
0APPA1PA2PA3PA4PA5PA6PA7
222324252627282930323436
31333537
XIOL1 23 45 67 89 10
11 1213 1415 16
PB3PB2PB1PB0
PG0 PG1PG2 PD7
PL0 PL1PL2PL4 PL5PL6 PL7
515253 (SS)
(MOSI)(SCK)(MISO)
494745434139
50484644424038
Rys. 4
Fot. 1
Rys. 3
E l e k t ro n i k a d l a Ws z y s t k i c h Grudzień 2014 19
Projekty AVT
Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić dalszą rozbudowę i uaktualnienia programu sterującego. Schemat układu pokazany jest na rysunku 3, a płytka na rysunku 4. Ze względu na popular-ność Arduino jest to również rozwiązanie znacznie tańsze niż projektowanie nowej dedykowanej płytki PCB.
Układ uzupełnia moduł RTC z układem DS1307, pamięcią EEPROM i akumula-torkiem LIR2032 – schemat na rysunku 5. Komunikacja układu DS1307 z pro-cesorem ATmega odbywa się przez port szeregowy I2C. Moduł RTC zapewnia dokładniejsze wskazania czasu i pod-trzymuje odmierzanie czasu w przypad-ku awarii zasilania. Jego dokładność w zakresie temperatur od 20°C do 30°C wynosi 1–2ppm (Parts Per Milion). Ozna-cza to, że późni się maksymalnie o 0,08 sekundy na dobę. Układ jest również bardzo energooszczędny. Podczas nor-malnej pracy zegar pobiera około 60mA (wersja 2-wskazówkowa około 40mA), natomiast na podtrzymaniu akumulatoro-wym 0,5mA, dzięki czemu akumulator LIR2032 powinien wystarczyć na kilka-dziesiąt lat.
Ustawianie czasu odbywa się za pomo-cą jednego przycisku. Po jednokrotnym naciśnięciu wskazówka minutowa zostaje przesunięta o 1 do przodu. Po przytrzy-maniu przycisku wskazówka sekundowa zatrzymuje się w pozycji zerowej, a wska-zówka minutowa zaczyna poruszać się coraz szybciej, przesuwając odpowiednio wskazówkę godzin.
Schemat ideowy Arduino Mega2560 dostępny jest w Elportalu wśród materia-łów dodatkowych do tego numeru. Można tam też znaleźć schemat ideowy modułu Tiny RTC.
Opis programuProgram jest dosyć przejrzysty i nie wymaga specjalnego omówienia. Warto jednak wspomnieć o działaniu głównej tablicy programu, dzięki której może-my łatwo dokonać zmian w sterowaniu matrycą (nawet jeśli ktoś nie jest pro-gramistą), w przypadku rozbudowy lub innych modyfikacji zegara.
Wyjścia dla poszczególnych wskazó-wek są tak skonfigurowane, aby ułatwić późniejszy montaż (patrz tabela 1). Przy-kładowo wyjście 24 na płytce Arduino ustawione jest jako linia A wskazówki sekund (patrz rysunek 2).
Główna tablica (listing 1) ustawia konfigurację wejść/wyjść, a następnie ich stan. Dla przykładu pierwszy wiersz tab-licy najpierw ustawia piny dla linii D i H (patrz tabela 1) jako wyjścia (output), a następnie ustawia stan wysoki (high, czyli +5V) na linii D i niski (low, czyli masę) na linii H, zaświecając diodę LED31, która rzuca cień
na godzinę 12 (lub minutę/sekundę 0) na tarczy zegara.
Gdybyśmy chcieli wlutować diody odwrotnie lub odwrócić płytki, np. żeby zbudować wersję zegara, w której diody podświetlają od spodu odpowiednią cyfrę na tarczy, wystarczy zmienić stan wyjść w kolumnie PIN_STATE. Dla diody LED31 będą to pozycje D (z HIGH na LOW) i H (z LOW na HIGH).
Można również dowolnie zmieniać kolejność zaświecania diod. Przykładowo gdy zamienimy dwa pierwsze wiersze miejscami, najpierw zaświeci się dioda 32, później 31. Można w ten sposób zbu-dować wersję zegara chodzącą „do tyłu”.
Pełny kod źródłowy programu, wraz z odpowiednimi bibliotekami, również dostępny jest w Elportalu.
Montaż i uruchomienieZegar został zaprojektowany w taki spo-sób, aby był łatwy w montażu nawet dla początkujących elektroników. Schemat montażowy matrycy dla każdej wska-zówki jest taki sam – rysunek 6. Diody ułożone są w okręgu, licząc od LED1 do LED60, w przeciwną stronę niż ruch wskazówek zegara. Wynika to z tego, że płytki zamontowane są „do góry nogami” względem tarczy zegara, aby łatwiej je było wyginać w kierunku tarczy (czyli w dół).
Tab. 1
100pFC1
VCC VCC
SDASCL
SDASCL
VCC
32768Hz
X1
3k3R3
3k3R2
DSDS
A01
SDA 5A23 A12 WP 7
VSS4 SCL 6
VCC 8
U3 AT24C32
VCC
SCLSDA
VCC200R5
470K
R6
1.5MR4
SCLSDA
3k3R1
VCC
DS
SQ
X11
X22
VBAT 3
GND4
SDA5 SCL6
SQW/OUT 7
VCC 8U2
DS1307Z
IN4148D1
BatV cc
BatV cc
100pFC2
VCC1234567
P1
Header7
12345
P2
Header5SQ
680k
R7VCC
GND
1
DO
2
VCC
3
DS18B20U1
B1Battery
3k3
R8
Wskazówka
Linia
Sek. Min. Godz.
A 24 34 44
B 25 35 45
C 26 36 46
D 27 37 47
E 28 38 48
F 29 39 49
G 30 40 50
H 31 41 51
I 32 42 52
int matrix[LED_COUNT][2][9] = { // PIN_CONFIG PIN_STATE // A B C D E F G H I A B C D E F G H I Piny|Nr diody { { INPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT}, { LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW } }, // DH 31 // (ustawia +5V na linii D i masę na linii H, zapalając diodę LED31) { { INPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT, OUTPUT}, { LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW, LOW } }, // DI 32 { { OUTPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EA 33 { { INPUT, OUTPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EB 34 { { INPUT, INPUT, OUTPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EC 35 { { INPUT, INPUT, INPUT, OUTPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // ED 36 { { INPUT, INPUT, INPUT, INPUT, OUTPUT, OUTPUT, INPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EF 37 { { INPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT, OUTPUT, INPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EG 38 { { INPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, OUTPUT, INPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EH 39 { { INPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT, OUTPUT}, { LOW, LOW, LOW, LOW, HIGH, LOW, LOW, LOW, LOW } }, // EI 40(...)};
Fot. 2
Listing 1
Rys. 5
Top wwwE-mail: [email protected]
F.H.U.P. "LIS POL”ul. Rzemieœlnicza 2
Mikrokontrolery, wyœwietlacze LCD, diody LED i wiele innych32-400 Myœlenice
WWW.LISPOL.COM
Projekty AVT
Grudzień 201420
Po wlutowaniu diod, rezystorów, gold-pinów, odpowiednim podłączeniu okab-lowania według rysunku 7, układ nie wymaga specjalnego uruchamiania. Po włączeniu zasilania należy jedynie jed-nokrotnie nacisnąć przycisk ustawiania godziny. Wynika to z tego, że w pamięci modułu nie jest zapisana żadna godzina. Naciśnięcie powoduje pierwszy zapis, dzięki czemu zegar zaczyna działać.
Po zmontowaniu i uruchomieniu ukła-du należy zamontować tarczę i przeprowa-dzić kalibrację, czyli odpowiednio powy-ginać diody, aby każda świeciła central-nie na nieruchomą wskazówkę na środku tarczy. Najłatwiej to zrobić, podłączając ustawianą matrycę do wyjść minutowych i następnie przyciskiem ustawiania godzi-ny przełączać kolejno diody i odpowied-nio je wyginać. Czynność należy wykonać dla każdej diody z każdej matrycy. Właś-ciwe przeprowadzenie kalibracji ma duży wpływ na późniejszą jakość wyświetlania wskazówek (szczególnie gdy dwa cie-nie się nakładają lub jeśli są ustawio-ne naprzeciw siebie). Są one najlepiej widoczne, gdy strumień światła ustawiony jest zgodnie z zaleceniami na rysunku 8.
Po pierwszym uruchomieniu moduł RTC może nie pamiętać od razu godziny, ponie-waż akumulatorek nie jest naładowany. Po około 1 godzinie ciągłej pracy zegara powi-nien być naładowany w pełni i pamiętać godzinę nawet po długim braku zasilania.
ObudowaUkład prezentuje się najlepiej, gdy na tar-czę pada jak najmniej światła z zewnątrz, które osłabia widoczność wskazówek-cie-ni. W związku z tym najlepiej umieścić go w odpowiedniej obudowie.
W tym celu zaprojektowałem obudowę w dwóch wersjach. Pierwsza wersja prze-znaczona jest do wydruku na drukarce 3d
( f o t o -grafia 1). O b u d o w a jest zaprojekto-wana w taki sposób, aby można ją było łatwo zmontować lub rozmontować. Jest też podzielona na części nie większe niż 20x20x20cm (rysunek 9), dzięki czemu można ją wydrukować na większości domowych drukarek 3D. Gotowy projekt do wydrukowania obudowy również znaj-duje się wśród materiałów dodatkowych w Elportalu .
Druga wersja obudowy (fotografie 2 i 3) zaprojektowana jest do wycinania laserowego i może być wykonana z plek-si lub sklejki o gru-bości 3mm według rysunku 10. Goto-wy projekt do wyci-nania dostępny jest w Elportalu jako plik zegar_cieni_obudo-wa_laser.dxf.
Możliwości zmianZe względu na dosyć prostą konstruk-cję i wykorzystanie popularnej platfor-my Arduino, układ można bardzo łatwo modyfikować.
Pierwszą zmianą, jaka przyszła mi na myśl, była wersja bez sekundnika. Zaświecająca się co sekundę dioda może rozpraszać uwagę, jeśli zegar stoi np. w pobliżu telewizora, komputera lub miej-sca, w którym się czyta. Warto też rozwa-
12
34
5
Pro
toni
k C
lock
rev.
1
LED
1LE
D2
LED
3
LED
4
LED
5
LED6
LED7
LED8
LED9
LED10
LED11
LED12
LED13
LED14LED15 LED16
LED17 LED18LED19
LED20LED21
LED22
LED23
LED24
LED25
LED2
6LE
D27
LED
28LE
D29
LED
30LE
D31
LED
32LE
D33
LED
34LE
D35
LED3
6
LED37
LED38
LED39
LED40
LED41
LED42LED43
LED44LED45LED46
LED47LED48
LED49
LED50
LED51
LED52
LED53
LED54
LED55
LED5
6
LED
57
LED
58
LED
59LE
D60
R1
R2
R3
R4
R5
R6
R7
R8
R9
JP1
Fot. 3
Rys. 6. Skala 50%
Rys. 7
E l e k t ro n i k a d l a Ws z y s t k i c h Grudzień 2014 21
Projekty AVT
żyć użycie innych kolorów diod, pamię-tając o doborze odpowiednich rezystorów i nieprzekraczaniu maksymalnego prądu wyjścia modułu Arduino, który wynosi 50mA. Wersję z dwoma wskazówkami i z białymi diodami przedstawia fotogra-fia 4. Koszt zegara w tej wersji jest też znacznie niższy (o cenę 60 diod i jednej płytki PCB).
Odwracając płytki „do góry nogami”, łatwo stworzymy wersję zegara chodzącą do tyłu. Należy wtedy pamiętać o zmia-nie kierunku skali czasu na tarczy. Efekt taki można również uzyskać, modyfikując odpowiednio główną tablicę programu (patrz listing 1).
W module Arduino pozostało sporo niewykorzystanych wyjść. Można je wykorzystać do utworzenia matrycy dla wahadła – cienia, czy chociażby dodać moduł dźwiękowy wybijający odpowied-nią liczbę gongów co godzinę lub peł-niący funkcję budzika. Gotowy układ dostępny jest np. na:http://serwis.avt.pl/manuals/AVT1257.pdf.
Moduł z układem DS1307 umożli-wia również odczyt daty, dzięki czemu łatwo dodać do zegara funkcję wyświet-
lania aktualnego dnia tygodnia, dnia w miesiącu, miesiąca i roku.
Dla platformy Arduino dostępne są również moduły komunikacyjne (np. Wi-Fi, Bluetooth), dzięki czemu bardziej zaawansowani elektronicy mogą zrobić, relatywnie niskim kosztem, bezprzewodową synchro-nizację z jednym z serwerów czasu wzorcowego.
Jeśli ktoś posiada drukarkę 3D, może również poeksperymento-wać z kształtem wskazówki, tarczy i obudowy. W Internecie dostęp-nych jest wiele ciekawych kon-strukcji zegarów, którymi można się zainspirować, np. zegar pierścienio-wy, zegary słoneczne z wklęsłą tarczą lub przepuszczające światło przez otwory w kształcie cyfr.
Wskazówka może być o wiele cień-sza, jednak wymaga to zastosowania diod o mniejszym kącie świecenia i/lub więk-szej jasności. W prezentowanym układzie użyłem diod o kącie świecenia 15° i jas-ności około 6000mcd. Diody o lepszych parametrach są trudno dostępne, ale moż-liwe do zdobycia.
Używając zamiast tarczy lustra i doda-jąc półprzezroczystą, lustrzaną folię do szyb (dostępna np. na Allegro) nad dioda-mi, można uzyskać ciekawy efekt trójwy-miarowości.
Zamiast przycisku można zastosować enkoder obrotowy (przełącznik – impulsa-tor), podążający równomiernie ze wska-zówką minutową w obie strony, co znacz-nie ułatwiłoby ustawianie godziny.
Wszelkie komentarze, pytania i uwagi mile widziane :-)
Redakcja obiecuje też, że z przyjem-nością przedstawi fotografie Waszych wersji przedstawionego projektu, zarów-no zrealizowanych dokładnie według podanych właśnie wskazówek, jak też wszelkich wersji zmodyfikowanych.
Sebastian Wacwww.protonik.pl
R1–R9 (dla diod czerwonych) � � � � � � � � � � � � � 150WR1–R9 (dla diod zielonych) � � � � � � � � � � � � � � � 120WR1–R9 (dla diod niebieskich)� � � � � � � � � � � � � � � 91WRp � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � 10kWD1–D60� � � � � � � � � � � � � � � � � � � � � � �dioda LED 5mmModuł Arduino Mega2560Moduł TinyRTC DS1307 I2CPrzełącznik 2-pozycyjny off-(on) typu przyciskJP1: złącze goldpin kątowe symetryczne 2x5Złącze goldpin kątowe asymetryczne 2x5Taśma 10-żyłowa „rainbow” ze złączem IDC10
Wykaz elementów
Komplet podzespołów z płytką jest do stęp ny w sie ci han dlo wej AVT ja ko kit szkol ny:
AVT3115/1 A Płytki drukowane do wersji RGB (trzy wskazówki: sek, min, godz). Zestaw zawiera:Zestaw 3xPCB+dokumentacja.
AVT3115/1 B Wersja RGB (trzy wskazówki: sek, min, godz).Zestaw zawiera: - 3x płytka pcb - 60 diod RED, 60 diod GREEN, 60 diod BLUE- moduł Arduino Mega + moduł RTC- kabelki, goldpiny, rezystory, śrubki i dystanse- wskazówka wydrukowana na drukarce 3d- dokumentacja z linkami do materiałów dodatkowych
AVT3115/2 A Płytki drukowane do wersji B&W (dwie wskazówki, białe diody). Zestaw zawiera: Zestaw 2xPCB+dokumentacja.
AVT3115/2 B Wersja B&W (dwie wskazówki, białe diody). Zestaw zawiera: - 2x płytka pcb - 120 diod bialych - moduł Arduino Mega + moduł RTC - kabelki, goldpiny, rezystory, śrubki i dystanse - wskazówka wydrukowana na drukarce 3d - dokumentacja z linkami do materiałów dodatkowych
AVT3115/O (OBUDOWA) Obudowa wycinana laserowo z plexi 3mm, kolor biały pełny.
x4
x2x1
x1x1
Rys. 9
Rys. 10
Fot. 4
Rys. 8