Mikroprocesorowy zegar z budzikiem i dużymi cyframi

Miejsce dobre do dyskusji nad własnymi projektami - pochwal się wszystkim co samodzielnie stworzyłeś.
ODPOWIEDZ
villen
-
Posty: 6
Rejestracja: 22 maja 2010, 6:52
Lokalizacja: Bełchatów

Mikroprocesorowy zegar z budzikiem i dużymi cyframi

Post autor: villen » 22 maja 2010, 7:05

Obrazek

Witam!

Chciałbym dziś pokazać urządzenie, które powoli i z bólami tworzyłem ostatnimi czasy.
Inspiracją do ruszenia z pracami były zbliżające się urodziny narzeczonej, której chciałem podarować coś nietypowego, a jednocześnie praktycznego. A że nie może być chyba nic bardziej praktycznego i przydatnego każdego dnia niż zegarek z budzikiem to wybór padł właśnie na takie urządzenie Dodatkowo temat wszelakich zegarków jakoś tak ciągle się przewija w życiu elektronika

Stage 1: założenia

Od samego początku miałem w głowie pewną wizję całości i pomimo stopniowego dodawania nowych rzeczy trzymałem się wyraźnego szlaku. Początkowo chciałem zastosować wyświetlacze siedmiosegmentowe, ale znalazłem na pewnym portalu aukcyjnym wyświetlacze alfanumeryczne 4 x 20 zgodne z HD44780 w atrakcyjnej cenie, więc… nastąpiła pierwsza zmiana założeń. Sterowanie miało odbywać się za pomocą przycisków, ale to też ostatecznie zostało zastąpione pilotem. Oprócz zegara postanowiłem wyświetlać jeszcze pełną datę i temperaturę. Dodałem również budzik na 7 dni tygodnia. Chciałem by podświetlanie ekranu adaptowało się do jasności otoczenia, tak by w nocy nie raziło, a w dzień gwarantowało czytelność. Na podobnej zasadzie miało działać podświetlanie obudowy. Właśnie, obudowa – koniecznie estetyczna i schludna – kobiety jakoś niezbyt doceniają wyeksponowanie starannie polutowanej PCB Jedyną funkcją której nie udało mi się zrealizować to (nazwa wymyślona przeze mnie) „Przypominacz TV” – coś działające na zasadzie podobnej do budzika, tyle ze nie wzywa do wstawania, a przypomina o zbliżającym się filmie lub programie – najpierw piknięciem i wyświetleniem stosownego komunikatu, a potem włączeniem telewizora na odpowiedni kanał. Brakło jednak umiejętności programistycznych do implementacji własnej metody nadawania komend IR w standardzie Sony, a nasz odbiornik nie reagował na komendy nadawane za pomocą bascomowego ‘sonysend’. Ale może kiedyś…

Stage 2: program

Całość programu powstawała sobie powolutku w chwilach wolnych od innych zajęć i obowiązków. Do tego celu powstawał na bieżąco prototyp na płytce stykowej, wyglądało to mniej więcej tak:

Obrazek

Program pisany był w Bascomie (proszę nie zaczynać dyskusji o tym jak tragiczny jest to język, a inne jakie dobre). Jako że zegarek, a już budzik w szczególności musi być czytelny nawet z daleka i z oczyma zamglonymi z powodu pobudki trzeba było zrobić coś, by główne wskazanie urządzenia, czyli godzina, była odpowiednio widoczna. Podpatrzyłem kilka różnych projektów i opracowałem własny sposób wyświetlania „dużych znaków” na wyświetlaczu alfanumerycznym. W tym miejscu podziękowania dla kolegi kuniarz za słowo porady – choć nie wykorzystałem jego pomysłu to zdecydowanie nakierował mnie na właściwe tory. Dzięki! Najpierw powstały czcionki:

Obrazek

A następnie implementacja tego do programu. Do odmierzania czasu wykorzystałem popularny RTC PCF8583 – układ już dosyć wiekowy, ale mimo to dobry. Myślałem że wiek i popularność tego układu pomogą mi w poszukiwaniu sprawdzonej metody jego programowej obsługi – niestety zawiodłem się. Również prośby o pomoc trafiły w pustkę. Zmuszony byłem więc sam rozgryźć problem, który okazał się nie taki straszny. Ostatecznie udało mi się stworzyć pełnowartościowy zegar z pełną obsługą daty (dni tygodnia, lata przestępne). Kalendarz może odliczać dowolną ilość lat (no dobrze, jego koniec nastąpi w roku 65535 – ograniczenie wynikające z „pojemności” zmiennej typu word ). Dalej poszło już z górki: dwa PWM’y na timerze1 sterują buforami na darlingtonach BC516, które z kolei zasilają diody wyświetlacza i obudowy. Sprawdzanie jasności otoczenia zrealizowane jest za pomocą dzielnika z fotorezystora i rezystora i przetwornika A/C mikrokontrolera. Aby uniknąć wahań i nieprzyjemnego migotania odczyt zapisuję bez żadnej konwersji i przeliczania do zmiennej word a następnie dzielę przez 10. Dzięki temu otrzymuję liczby całkowite w zakresie 0-10. To nie woltomierz i taka dokładność w zupełności wystarcza. Odbiór sygnałów RC5 zrealizowany na typowym odbiorniku IR 36kHz – SFH5110. Jego zasilanie zrealizowane jest zgodnie z notą katalogową, ponieważ miałem problemy z zakłóceniami i przypadkowymi, bezsensownymi przerwaniami.

Stage 3: wykonanie

Tutaj zaczęło się przysłowiowe zoo nie obliczyłem sobie czasu potrzebnego na wykonanie całej mechanicznej i elektronicznej części przez co musiałem bardzo się uwijać Dodatkowo los rzucał mi co chwile kłody pod nogi. Płytkę zaprojektowałem w oparciu o schemat narysowany „na kolanie” (dlatego taki zagmatwany i mało czytelny):

Obrazek

Zostawiłem płytkę dwustronną, choć pewnie udało by się upchnąć wszystko na jednostronnej z tego powodu, że nie miałem czasu nad tym myśleć, a wykonanie płytki dwu czy jednostronnej zajmuje podobną ilość czasu. I tu pierwszy zonk: drukarka odmówiła posłuszeństwa. Sobota wieczór, nie ma gdzie wydrukować mozaiki ścieżek – przymusowy przestój do poniedziałku. Po wydrukowaniu „na mieście” okazało się, że albo jakiś lipny toner mieli, albo włączony tak ekstremalny tryb jego oszczędzania że pomimo stosowania tego samego papieru, laminatu i metody termotransferu po odmoczeniu papieru spora część ścieżek na warstwie dolnej (bottom layer) się odblepiła… Cóż, na poprawki nie było czasu, więc poprawiłem co mogłem na szybko pisakiem. Lutowanie na szczęście przebiegło bez większych problemów – jedynie nie mogłem nigdzie dostać podstawki precyzyjnej DIP40 i mikrokontroler ostatecznie zamontowany został na kawałkach listwy żeńskiej. Ale to mała wada.

Obrazek Obrazek Obrazek Obrazek Obrazek
Obrazek Obrazek Obrazek Obrazek Obrazek
Obrazek

Obudowa to grawerowane i wyginane na gorąco plexi. Grawer robiony ręcznie – jak wyszło oceńcie sami. Wyginana za pomocą gorącego powietrza, podświetlona dwoma diodami białymi (z rezystorami 180omów) i jedną czerwoną (z rezystorem 100omów) co w efekcie daje ładny różowy kolor – niestety na zdjęciach kiepsko widać.

Nie mam zbyt wielu zdjęć z budowy – nie dość zę zarezerwowałem na nią za mało czasu, to jeszcze całość musiałem jakoś konspirować (tyle, na ile to możliwe w kawalerce zajmowanej razem z kobietą ). Ostatecznie zdążyłem, prezent się udał.

A co Wy powiecie?

Obrazek Obrazek Obrazek Obrazek Obrazek
Obrazek Obrazek Obrazek Obrazek Obrazek
Obrazek Obrazek Obrazek Obrazek

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 22 maja 2010, 14:36

Bardzo fajne ci to wyszło, widać że włożyłeś w to sporo pracy. Ja tylko nie rozumiem dla czego wszyscy uparcie w swoich projektach jako RTC stosują PCFa8583, skoro w tej samej cenie można kupić dużo lepsze, a przede wszystkim prostsze w obsłudze układy. No ale to tylko taka moja osobista dygresja bo strasznie nie lubię PCFa, niepotrzebnie przekomplikowany układ (w końcu niemiecka myśl techniczna :wink: ).

alaris
Użytkownik
Posty: 530
Rejestracja: 21 lut 2006, 14:56
Lokalizacja: Gorzow/Poznan

Post autor: alaris » 23 maja 2010, 21:38

kayron pisze:Ja tylko nie rozumiem dla czego wszyscy uparcie w swoich projektach jako RTC stosują PCFa8583
Bo pojawił się jego opis w EdW? Bo jest wspierany przez Bascoma? Zgaduję, że jedno z tych :wink:

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 23 maja 2010, 22:26

Pewnie masz racje, lecz w moim przypadku wystarczyło że raz zakosztowałem DSa1307 i nie chciałem już więcej widzieć przestarzałego (w sensie niepotrzebnie skomplikowanej obsługi) PCFa.

villen
-
Posty: 6
Rejestracja: 22 maja 2010, 6:52
Lokalizacja: Bełchatów

Post autor: villen » 24 maja 2010, 8:33

Ale ta obsługa nie jest w cale skomplikowana! Owszem, na początku sprawiała straszne wrażenie, ale ostatecznie całość sprowadza się do kilku prostych operacji na bitach. Wystarczy raz jeden zrozumieć jak działa ten układ, co gdzie siedzi w pamięci i dalej leci już z górki.
Artykuł o nim pojawił się w EdW, ale nie był zbyt dokładnie opisany. Ja posiłkowałem się spolszczonym fragmentem noty katalogowej znalezionym gdzieś w internecie i obrazkami z noty oryginalnej.

Pozatym jest to chyba najbardziej populatny i najtańszy układ tego typu na rynku. DS'a1307 czy nowszego PCF'a8563 nie mogłem dostać "od ręki" w sklepie w którym się na codzień zaopatruję. Ale obydwa te układy nie dość że droższe, to podobno bardziej kapryśne - z tego co czytałem DS lubi się spóźniać lub przyśpieszać. Do tego (pdobno, bo nie stosowałem go nigdy) wrażliwy jest na różnice napięć na pinie podtrzymującym i lubi tam tylko 3.2V.

PCF'a 8583 można często spotkać w różnym sprzęcie elektronicznym - ja wylutowałem kiedyś sztukę z jakiejś starej płyty głównej na AMD K6-2 ;)

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 24 maja 2010, 8:48

Tzn. nie wiem czy PCF jest taki najtańszy ja DSa mam darmola jako próbka od Maxima, a i w sklepach w których kupuje jest w takiej samej cenie lub tańszy od PCFa. Ale to na pewno zależy gdzie się mieszka, więc trudno tu cenę uznawać za argument jednoznaczny.
Natomiast nigdy go nie spotkałem w żadnym urządzeniu, tym bardziej płycie głównej PC. Co do skomplikowania obsługi to chodzi mi o to że po co mam zużywać np. 500B pamięci programu na PCFa, jak na DSie na dokładnie to samo wystarczy mi 340B, bo nie muszę dokonywać dziwnych wyłuskań liczb (data).
Ale obydwa te układy nie dość że droższe, to podobno bardziej kapryśne - z tego co czytałem DS lubi się spóźniać lub przyśpieszać. Do tego (podobno, bo nie stosowałem go nigdy) wrażliwy jest na różnice napięć na pinie podtrzymującym i lubi tam tylko 3.2V.
Spóźnianie, czy śpieszenie się, akurat ma dużo wspólnego z oscylatorem i jego jakością, oraz ścieżkami na PCB (w nocie piszą o tym). Co do tego napięcia podtrzymania, to knif jest w tym że ten układ reaguje nie tyle na jego poziom co różnicę 2 napięć, która wynosi chyba 1.2V. tzn. napięcie zasilania musi być co najmniej większe o 1.2V od napięcia podtrzymania, które żeby było śmieszniej jest jak dobrze pamiętam ustalone na 2V. stąd te 3.2V, choć układ jest przystosowany do pracy tylko na 4.5-5V, w nocie nie wspominają o zasilaniu go 3.3V w trybie pracy. Aczkolwiek faktem jest że jego obwód podtrzymania jest trochę kapryśny.

villen
-
Posty: 6
Rejestracja: 22 maja 2010, 6:52
Lokalizacja: Bełchatów

Post autor: villen » 24 maja 2010, 11:27

Zakupy robię we Wrocławiu, w sklepie "Robotronik" który jest wg. mnie najlepiej zaopatrzony ze wszystkich. Może Poltronic moze z nim rywalizować, ale sprzedają tylko wysyłkowo, a mając 10minut autobusem do nich nie chce mi się płacić dodatkowych pieniędzy za wysyłkę.

Co do próbek: kurde, jak Wy to robicie? Kiedyś potrzebowałem od Dallasa wzmacniacz słuchawkowy klasy D, jeden układ którego nie mogłem nigdzie dostać. Napisałem ładnego maila, ze skrzynki uczelnianej i nie doczekałem się żadnej odpowiedzi, ani układu. Jak Wy to robicie, gdzie i w jaki sposób zamawiacie sample że je dostajecie? ;(

PCF'a8583 na prawdę znalazłem na jakiejś płycie głównej - baaaardzo starej, chipset chyba jakiś ALi. Następnego w sterowniku pieca CO, którego "trafił piorun" - okazał się sprawny, wymazany był tylko program mikrokontrolera, za którego ponowne wgranie producent życzył sobie prawie tyle, ile nowy sterownik kosztował...

Układ ten poza pewnymi problemammi ze strony programowej (które rozwiązałem i które mimo wszystko pozwoliły mi się czegoś nauczyć) okazał się bardzo wdzięczny - równo odmierzał nawet na płytce stykowej i robi to również teraz - po tygodniu działania nie zauważyłem żadnych różnic pomiędzy czasem wskazywanym przez niego, a tym pokazywanym przez zegar systemowy mojego laptopa, równo z którym go ustawiałem...

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 24 maja 2010, 11:35

To znaczy z tymi próbkami jest tak że nie zawsze wszystko dostaniesz. Ale ogólnie ja tylko raz dostałem odmowę od nich. No i trzeba się tam zarejestrować, i mile widziane jest jakieś sensowne argumentowanie.

ODPOWIEDZ