Od kiedy ustawiam drukowanie 3D kiedy nie ma mnie w domu to bardzo często drukarka jest włączona niepotrzebnie przez długi czas. Mimo, iż grzałki i silniki są wyłączone to i tak zużywa to kilka W prądu. Programatory czasowe w sklepie kosztują sporo (60zł najtańszy chyba), po chwili zastanowienia postanowiłem zrobić sobie własny, gdyż jego budowa nie jest skomplikowana i od razu przetestuje moje nowe moduły.
Przygotowanie
Najpierw trzeba zacząć oczywiście od zaplanowania i przemyślenia wszystkiego, bo jest to dość złożony projekt i jest kilka wymagań, które musi spełniać:
- Musi zmieści się w odbudowie do 230V podobnej do tej co są sprzedawane w sklepach.
- Układ odmierzania czasu musi być precyzyjny i bezawaryjny, oraz aktualizacja oprogramowania musi być szybka i sprawna.
Zacząłem więc od przygotowania modułów z jakich będę korzystał, oraz przemyślenia całego układu. Naszkicowałem sobie na kartce schemat blokowy i dzięki temu mogłem w pełni świadomie i bez problemu skompletować wszystkie potrzebne elementy:
- Moduł wyświetlacza segmentowego LED
- Moduł RTC
- Obudowę do gniazda 230V z wyjściem na 230V [20zł]
- Atmege 16 i wszystkie podzespoły elektroniczne które widnieją na schemacie
Prace
Na początku połączyłem wszystko na płytce stykowej i zabrałem się za programowanie. Schemat logiki przycisków dostępny jest na jednym ze szkiców powyżej. Zmniejszyłem liczbę wyświetlaczy segmentowych do 4 sztuk, bo potrzebne będą tylko minuty i godziny, sekundy to już przesada, szczególnie, że całość by mi się nie zmieściła w obudowie, która stawia spore wymagania co do rozmiarów układu.
Wymagania co do uC:
- ustawiamy w fusebite`ch JTAGEN na 1 (czyli niezaprogramowany) aby odblokować wszystkie proty C
Na schemacie już są załączone konkretne moduły i układ stanowi kompletną całość.
Teraz trzeba przenieść to na płytkę uniwersalną oraz włożyć wszystko do obudowy. Wymierzyłem wymiary płytki jakie może mieć aby zmieściła się w obudowie oraz zaznaczyłem miejsca na wyświetlacz oraz przyciski. Naniosłem wszystko na kartkę i zabrałem się za rozmieszczanie elementów. Efekty:
Po zlutowaniu całość prezentuje się następująco:
Obudowa i składanie
Teraz trzeba było wyciąć otwory w obudowie na przyciski, wyświetlacz i piny do programowania. Z okrągłymi otworami nie było problemu, wystarczyła wiertarka. Natomiast co do prostokątnych otworów to już pojawiły się komplikacje. Dalej nie znam idealnego sposobu na to. Na tą chwile radze sobie w następujący sposób. Odrysowuje skalpelem kształt do wydrążenia (w przypadku cienkich ścian możemy całość wyciąć skalpelem, albo nożykiem do tapet i problem z głowy), potem nawiercam sporo otworów wiertarką, tak oby można było kombinerkami powyłamywać całość. Dzięki temu, że krawędzie odrysowaliśmy skalpelem to wszystko się pięknie ułamywało w wyznaczonych miejscach.
Sporo problemów natomiast przysporzyło umieszczenie całości w obudowie. Wszystko musiało trzymać się sztywno, aby nie uginało się podczas wciskania przycisków. O przykręceniu płytki nie było mowy, ponieważ nie było na niej miejsca na śruby. Po przeciwnej stronie obudowy znajdowały się dziury na wkręty. Nagwintowałem je i wkręciłem długie śruby które dopychały po prostu cały układ, dzięki czemu trzymał się on pewnie. Nie chciałem go przyklejać na klej na gorąco ponieważ w razie upgrade albo awarii potrzebuje mieć możliwość szybkiego wymontowania układu. Po drugiej stronie przyczepiłem już klejem zasilacz 5V wymontowany z ładowarki do telefonu (był to jedyny który odpowiadał gabarytami i wydajnością), oraz przekaźnik. Wszystko połączyłem ze sobą i przetestowałem. Działa perfekcyjnie.
Zasada działania
Timer działa następująco: po podpięciu do kontaktu timer się automatycznie włącza i widnieje domyślny czas. Od razu jest ustawiony tryb modyfikacji. Przyciskami UP o DOWN ustawiamy godzinę, jeśli chcemy zmienić na minuty to wciskamy OK i zmieniamy minuty, po ponownym przyciśnięciu OK timer zaczyna odmierzać czas. W trybie odmierzania czasu możemy zatrzymać timer przyciskiem OK, który automatycznie wprowadza urządzenie w tryb modyfikacji czasu. Przyciskiem RESET resetujemy czas do pozycji początkowej.
Podsumowanie:
- Całość prezentuje się moim zdaniem wyśmienicie, design nie wyszedł zły, wszystko trzyma się kupy i spełnia swoje zadanie.
- Wyprowadzenie taki pinów MOSI, MISO, SCK, GND i RESET pozwala na bardzo łatwą aktualizacje oprogramowania, praktycznie kiedy mam tylko na to ochotę 😀
- Brak użycia kleju na gorąco do przymontowania układu do obudowy pozwala mi na szybki upgrade całości i w razie czego diagnozę.
- Koszt całości to ok 40zł (obudowa – 20zł; Atmega 16A – 14zł; wyświetlacze i reszta elektroniki < 10zł, zależnie od tego co mamy w domu a czego nie)
- Jestem mega zadowolony z projektu. Urządzenie już zaadoptowanie do drukarki 3D i rachunki za prąd powinny być o kilka złotych niższe.
Plany na przyszłość:
- Dodać funkcję oraz fizyczny przełącznik do zmiany trybu w cykliczny, tzn. gdy teraz po odliczeniu ustawionego czasu timer się wyłącza, i jeśli nie ustawimy wartości jeszcze raz, to urządzenie nic nie zrobi. Moim celem była by opcja aby działało to cyklicznie w trybie 24 godzinowym jak w większości programatorów czasowych. W pierwszej wersji pominąłem tą funkcje aby jak najbardziej uprościć projekt. W drugiej wersji planuje dorobienie tej funkcjonalności.
- Użyć pamięć EEPROM do zapamiętywania ustawionego czasu aby po resecie urządzenia nie trzeba było go wprowadzać na nowo, choć nie jest to jakoś specjalnie uciążliwe.