cyfrowy zegar „słoneczny - avteroa a zy grudzie˜2014 19 roey vt do sterowania matrycami użyłem...

5
Elektronika dla Wszystkich 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): https://www.youtube.com/ watch?v=50vo3-p1fPA Opis układu Na 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 = n 2 – n Przykł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 LED1 LED2 LED3 LED4 LED5 LED6 LED7 LED8 LED9 LED10 LED11 LED12 LED13 LED14 LED15 LED16 LED17 LED18 LED19 LED20 LED21 LED22 LED23 LED24 LED25 LED26 LED27 LED28 LED29 LED30 LED31 LED32 LED33 LED34 LED35 LED36 LED37 LED38 LED39 LED40 LED41 LED42 LED43 LED44 LED45 LED46 LED47 LED48 LED49 LED50 LED51 LED52 LED53 LED54 LED55 LED56 LED57 LED58 LED59 LED60 R1 R2 R3 R4 R5 R6 R7 R8 R9 1 2 3 4 5 6 7 8 9 10 JP1 B C D E F G H A I Rys. 2

Upload: others

Post on 22-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cyfrowy zegar „słoneczny - AVTeroa a zy Grudzie˜2014 19 roey VT Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić

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

Page 2: Cyfrowy zegar „słoneczny - AVTeroa a zy Grudzie˜2014 19 roey VT Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić

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

Page 3: Cyfrowy zegar „słoneczny - AVTeroa a zy Grudzie˜2014 19 roey VT Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić

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

Page 4: Cyfrowy zegar „słoneczny - AVTeroa a zy Grudzie˜2014 19 roey VT Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić

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

Page 5: Cyfrowy zegar „słoneczny - AVTeroa a zy Grudzie˜2014 19 roey VT Do sterowania matrycami użyłem platformy Arduino Mega z procesorem ATMEGA2560, głównie dlatego, aby uła-twić

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

[email protected]

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