
Walentynkowy zegar
Zastanawiałem się co by tu zrobić dla mojej połowicy… siedząc w kuchni chciałem sprawdzić która jest aktualnie godzina. Patrzę na elektroniczny zegarek w kuchence i co? Brak godziny, bo akurat przed chwilą niechcący wywaliło mi bezpieczniki. Tak się patrzę i patrzę… na kartce rysuję serce… a że najlepsze pomysły przychodzą dyktuje serce, a skąd się biorą to nie wiem… w jednej chwili ujrzałem czerwony zegarek w kształcie serca, na obrzeżach diody, wskazujące ilość sekund, po środku wyświetlacz cyfrowy LED.
Była połowa grudnia… przerwy świąteczne itp… sklepy wysyłkowe miały przerwy itd. Schemat powstał w miarę szybko. Oczywiście moje teoretyczne rozważania odbiegły od efektu końcowego, ale przy odrobinie modyfikacji kodu źródłowego można by było je wszystkie zrealizować.
Jakie miałem założenia? Zegar RTC z podtrzymywaniem bateryjnym, budzik, sygnał budzika pochodzący z buzzerka miał być modulowany w taki sposób, żeby „przypadkowe” tony były zgodne z alfabetem morse’a i kodowały różne wyrazy. Ostatecznie z budzika zrezygnowałe po delikatnym podpytaniu połowicy czy chciałaby coś takiego… (dlatego w kodzie mogą być pozostałości procedur, zmiennych niewykorzystywanych, pochodzących z obsługi budzika). Może to nie jest jakiś bardzo skomplikowany projekt, coś oszałamiającego, ale mam nadzieje że przyniesie spodziewany rezultat.
Wysterowanie 4-cyfrowego wyświetlacza LED, 60 diod LED obsługą klawiatury, dwukropek między minutami a godzinami, komunikacja z RTC, wymagałoby bardzo wielu portów i byłoby nieekonomiczne. Niby LED-y są energooszczędne, ale przy takiej ich ilości potrzebowałyby troche prądu. Dlatego najlepszym rozwiązaniem (jako jedyne które brałem pod uwagę) było multipleksowe sterowanie segmentów wyświetlacza oraz podzielenie 60 diód na 6, 10 elementowych sekcji. Teraz bym troche zmienił sposób sterowania, otóż dekoder 1 z 10 podawał by zasilanie na poszczególne sekcje Diod, a uC wystawiałby logiczne 0 na poszczególnych sekcjach. (taka zmiana wymagałaby wykorzystania 4 linii do dekoder i 6 linii do sekcji w konsekwencji 10 lini, a obecnie wykorzystuje 13 lini do multipleksowania „człowiek uczy się na błędach” ). Klawiaturę również można było zwinąć, żeby wykorzystywała mniej portów. Do multipleksowania wyświetlacza wykorzystałem CA3161, oraz 4 linie portów uC. Można było zaoszczędzić jeszcze parę linii, ale cóż… w przyszłości będę o tym pamiętał…
Jako RTC przeszukiwałem noty katalogowe i sklepy internetowe… tak żebym wszystko mógł kupić u jednego dostawcy… ostatecznie zrezygnowałem z dallas’ów i wykorzystałem „oklepanego PCF8583. Do sterowania przecinkami i dwukropkiem zaprzęgnąłem PCF8574, powód był prosty, mam ich trochę w szufladzie, a że miałem już wszystkie porty wykorzystane musiałem dodać coś pod i2c. nad wszystkim czuwa Mega 32 (mega 16). Większość postawi pytanie dlaczego akurat te kości… kod programu przecież nie zajmuje tyle pamięci i można to traktować jako marnotrawstwo. Za Mega stoi to, że nie potrzeba zewnętrznego kwarcu, posiada 38 uniwersalnych linii I/O, ale najważniejsze tu jest to, że po prostu lubię te scalaczki, mam ich kilka w szufladzie, więc po co wydziwiać? Jak się coś lubi, to chętnie to się wykorzystuje.
Opis układu:
Schemat znajduje się poniżej.

ak widzimy konstrukcja nie jest przesadnie skomplikowana. Wszystko jest uzależnione od programu dla Megi. Program wykorzystuje przerwanie pochodzące od timera0. (Mega jest taktowana wewnętrznym generatorem 8 MHz.) w przerwaniu procesor zajmuje się jedynie zmiana stanu diod LED. Wybór odpowiedniej diody dokonywany jest za pomocą instrukcji CASE (0-59). Zwiększanie odpowiednich zmiennych odpowiada za skok do procedury obsługi wyświetlacza. Tzn. wybór konkretnego segmentu oraz wyświetlenie odpowiedniego znaku (porozumiewanie się z CA3161). Na oraz nawiązywana jest komunikacja z RTC i sprawdzana jest godzina (sekundy, minuty, godziny). Na koniec sprawdzany jest stan przycisków.
Timer1 odmierza odcinki czasu około 0,5s i zmienia ustawiania zmiennej typu bit odpowiedzialnej za kontrolowanie dwukropku, oraz zmieniany stan zmiennej odpowiedzialnej za zezwolenie na komunikacje z PCF8574.
Algorytm programu jest prosty:
-wyświetl konkretną diodę,
-wyświetl dany segment wyświetlacza LED ,
-odczytaj czas
-Sprawdź klawiaturę,
-wyświetl dwukropek,
I tak cały czas. Żeby za bardzo nie obciążyć wyjść, zastosowane zostały bufory, zwiększające wydajność prądową stopni wyjściowych. Rezystor R14-R22 oraz R1-R9 i R37 odpowiadają za jasność świecenia LED’ów. Rezystory umieszczone w baza tranzystorów, ograniczają prąd bazy. R25-R26 są to rezystory podciągające magistralę i2c. zastosowane kondensatory mają jedynie odprzęgać zasilanie. Układ zasilany jest z zasilacza zewnętrznego. IC2 stabilizuje je do 5V, a D2 chroni układ przed odwrotnym podłączeniem , oraz może pełnić funkcje prostego prostownika pół okresowego.Buzzer ostatecznie nie jest wykorzystywany. trymer 25pF służy do precyzyjnego ustawienia częstotliwości oscylatora RTC, żeby czas się nie rozjeżdżał. D3,D4 zapobiegają sytuacji kiedy cały układ podłączony byłby do baterii podtrzymującej, oraz aby bateria była podłączona do dodatniej linii zasilającej.
Układ zmontowany został na laminacie dwustronnym. Był to mój „pierwszy raz” z płytkami dwustronnymi, metodą fotograficzną, metalizacją otworów oraz rozmiarem płytki. Płytka zaprojektowana została w kształcie serca. Najpierw powstała polówka serca, na papierze milimetrowym, zmierzyłem obwód i rozmieściłem 30 LED’ów. Odczytałem wartości punktów (x,y) obliczyłem wartości punktów do nich symetrycznych i ustawiłem diody LED na wyznaczonych pozycjach. Płytka i schemat powstały w Eaglu. Rezystory 0,125W postanowiłem Montować na powierzchni, coś na wzór SMD, bez przewlekania. Na jednostronnej płytce nie zmieściłem wszystki połączeń. Dopiero na dwustronnej i to bez autorouter’a , który moim zdaniem źle prowadził ścieżki. Ale i tak musiałem wykorzystać parę zworek. Metalizację punktów zrobiłem z miedzianych tulejek wykorzystywanych do zakańczania przewodów elektrycznych. Ucięte, zaklepane, przylutowane do ścieżek i sprawdzone połączenia - dopiero teraz można było przejść do montażu. Warstwa opisowa niestety jest odręczna…
Na płytce jest kilka niedoskonałych ścieżek, przyczyna było to, że nigdy wcześniej nie robiłem dwustronnej płytki, metodą foto i takich rozmiarów… w takim dziwnym kształcie.
Pod układy scalone, wyświetlacz stosujemy oczywiście podstawki. Tranzystory, elektrolity, zworki itp. Lepiej przyłapać klejem np. na gorąco. Na koniec po sprawdzeniu, przed samym włożeniem w obudowę, radzę pomalować ścieżki lakierem, aby nie utleniały się z czasem i były odporniejsze na wilgoć.
Obudowa.
Jako prezent, musiałem go zabudować. Obudowę stanowi pokrowiec wykonany z czerwonego materiału, z zamkiem plastikowym takim ja do sukienki, dł. 50cm. Wszyty na krawędzi, żeby można było ściągnąć i założyć pokrowiec. Otwory na diody wypałiłem gorącym drutem. Zapobiega przy okazji rozchodzeniu się materiału. Otwór pod wyświetlacz wyciąłem nożyczkami.
W środek< aby nie było pustki, wszystko wypełniłem (fizeliną???) taka ta wata z kurtek. Dzięki niej można dobrze wymodelować pożądany kształt. Najlepiej nakłada ją na jeszcze klejący się lakier, dzięki temu zapobiegniemy przesuwaniu się jej. W okolicy baterii należy nałożyć kawałek tekturki, żeby można było ja wymienić. Stabilizator najlepiej zaopatrzyć w radiator, i przyłożyć do niego kawałek laminatu, żeby wata nie dotykała do scalaka i mógł lepiej oddać ciepło. złącze do zasilacza najlepiej umieścić z tyłu pod kątem ,żeby wtyczka nie przeszkadzała. Najlepiej zastosować jakąś ładowarkę od telefonu itp. Napięcie (w przypadku wykorzystania wbudowanego stabilizator) powinno mieć wartość min 7 V. pomijając stabilizator, trzeba podać stabilizowane napięcie 5V.
Ostatecznie nie ma wbudowanego budzika, kalendarza, ale to można łatwo sobie zaimplementować.

warstwo bottom:

poczatki obudowy

wytrawione obwody bezksztaltne takie...

zblizenie na obwody mojej pierwszej plytki dwustronnej i to tak duzego formatu

w swietle dziennym i bez obudowy. traci urok wg mnie


"wypelnienie serca" hehe


nie sugerujcie sie wyswietlana godzina:d

Cool? Ranking DIY