
Cześć,
Chciałem przedstawić Wam zegar widmowy, który niedawno wykonałem. To jest moja odskocznia od pracy i małe DIY po godzinach. Moje podstawowe założenia to możliwie najprostsza konstrukcja pod względem elektronicznym i mechanicznym oraz jakaś tam doza estetyki.
Mózgiem zegara jest Atmega i Arduino Nano, jednak program powstał w C, a skompilowałem go za pomocą toolchaina z Atmel Studio. Jako środowisko programistyczne służył mi CodeBlocks.
Źródło światła to 2 paski LED RGB, zasilane z 5 V: dłuższy do podświetlania zewnętrznej części "wskazówki" i krótszy - do podświetlania wewnętrznej jej części. Dzięki dwóm paskom, zegar wyświetla wskazówki minutową i godzinową o różnych długościach (oczywiście mogą być to również różne kolory).
Stopień "mocy" to trochę przerobiony konwerter poziomów za kilka złotych z portalu aukcyjnego. Konwerter ma pierwotnie zupełnie inne zastosowanie, jednak po obróceniu tranzystorów o 120 stopni, z konfiguracji wspólnej bramki, połączenie zmienia się na wspólne źródło i nadaje się do kluczowania LEDów. Pierwotnie chciałem jedynie wykorzystać tylko płytkę i zmienić tranzystory na jakieś NPN, ale okazało się, że w konwerterze zamontowane są BSS138, których rezystancja kanału w czasie włączenia to 1...1.5 Ohm, co jest wystarczające do wysterowania LED. Tak więc tranzystory zostały.
Źródło napędu to wentylator o rozmiarze 4 x 4 x 1 cm. Informację o położeniu tarczy uzyskuję z wentylatora. Pierwotnie miałem użyć, zgodnie ze sztuką, wentylatora z żółtym przewodem, nawet taki zakupiłem, jednak znalazłem w moich zasobach wentylator trochę lepszej jakości, łożyskowany, z dostępnymi pinami do sterowania cewek. Okazało się, że sygnał na nich to 0...5 V, bez większych przerzutów, w związku z czym dolutowałem tam przewód i wyprowadziłem sygnał do pinu Arduino, na wszelki wypadek przez rezystor 2,2 kOhm. No i teraz pojawił się mały problem, który również występowałby przy wentylatorze z żółtym przewodem: na wyjściu jest sygnał proporcjonalny do obrotów, jednakże o dwa razy wyższej częstotliwości. Próba określenia pozycji tarczy na podstawie pojawiającego się zbocza np. opadającego dałoby mi dwa takie zdarzenia na jeden obrót tarczy. Okazało się jednak, że wypełnienie tych impulsów nie jest jednakowe, minimalnie się różnią, przez co jednoznacznie można określić pozycję tarczy na podstawie zbocza, oraz tego, czy wcześniej wystąpił ten dłuższy, czy też krótszy impuls.
Obudowa została wykonana na taniej drukarce 3D Renkforce RF100, z użyciem imitującego drewno filamentu z zestawu. Moim zdaniem na żywo bardziej przypomina on przybrudzony mosiądz, ale w tym zastosowaniu się sprawdził. Obudowę zaprojektowałem we FreeCadzie - jestem początkujący w modelowaniu 3D, dlatego tworząc zegar trochę bardziej chciałem się skupić na projekcie mechaniki niż elektroniki, żeby się czegoś nauczyć. Z filamentu "drewnianego" powstała obudowa oraz górna i dolna część nóżki (sklejone ze sobą, wydruk na raz wymagałby podpór, czego chciałem uniknąć, żeby zachować jakość powierzchni). Wnętrze z kolei wydrukowałem z białego filamentu, by lepiej odbijane było światło LED. Swoją drukarkę dosyć konkretnie przerobiłem i dopiero wówczas uzyskałem satysfakcjonujące wydruki - jeżeli ktoś będzie tym zainteresowany, to mogę sklecić z tego osobny artykuł (ten model drukarki ogólnie polecam, bo ma metalową ramę, jest kompaktowa i na portalu akcyjnym raz po raz pojawiają się oferty sprzedaży tego modeli w naprawdę niskich cenach).
Zegar obsługiwany jest 1 przyciskiem w nóżce, który służy do ustawiania godziny poprzez przyśpieszanie pracy zegara (naciśnięcie i przytrzymanie przycisku wywołuje jeszcze szybszy ruch wskazówek). Obsługuje się to całkiem wygodnie. Być może zaimplementuję również różne widoki i kolory - taką kolorystykę wskazówek jak jest teraz, podobnie z resztą kolor druku, zaproponowała osoba obdarowana.
Program wykorzystuje przerwanie INT0 i TIMER1 (16-bitowy) do pomiaru okresu obrotu. Wykorzystuję prescaller w konfiguracji dzielenia zegara przez 8, bo to powoduje, że timer nie przepełnia się, ale przy normalnej prędkości obrotowej wentylatora dolicza mniej więcej do połowy swojej pojemności. Odstęp między pozycjami (1/60 obwodu tarczy) jest zapewniony przez pracę TIMER0 i przerwania COMPARE. Z kolei TIMER2 mierzy upływ czas. Raczej nie będę korzystał z zegara czasu rzeczywistego, bo w bieżącej konfiguracji zegar sprawuje się wystarczająco dobrze, a w razie zaniku zasilania, ustawienie go zajmuje może 15 sekund.
Jest kilka rzeczy do poprawy w moim zegarze:
- hałasuje nieco bardziej niż się tego spodziewałem. Sądzę że wpływ ma na to niedoskonałe wyważenie tarczy. Przykrycie zegara plastikowym naczyniem do posiłków prawie całkiem eliminuje szum przez niego wytwarzany. Zamierzam w związku z tym kupić jakieś szklane naczynie o odpowiednim kształcie i nim przykryć zegar, bądź zrobić poliwęglanową osłonę na tarczę, jeżeli okaże się wystarczająca do eliminacji hałasu.
- wentylator daje ciemną poświatę na tarczy, czego szczerze mówiąc nie przewidziałem. Jeżeli mnie to zirytuje, to przeprojektuję obudowę tak, by wentylator znalazł się za tarczą.
- brakuje pokrywki z tyłu, przez co, poza tym, że elektronika jest na wierzchu, to zegar oświetla przestrzeń za sobą. To zmienię niebawem

Nie dołączam schematu, bo go nie posiadam. Mam nadzieję, że zdjęcia dobrze pokazuję połączenia
- PA0...5 - sterowanie diod,
- sygnał z wentylatora do wejścia INT0,
- PD6 i PD7 - przycisk, przy czym PD6 jest na potencjale GND, zaś PD7 - pull-up i wejście przycisku.
Jak ktoś zechce powielić konstrukcję, to proszę bardzo i służę pomocą. Można od razu uniknąć moich błędów, do czego namawiam






Pozdrawiam,
Fimek
Cool? Ranking DIY