Przedstawiam zegarek VFD na bazie DVD-Playera DVP3042/12 firmy Philips
Od jakiegoś czasu w tzw dużym pokoju brakowało zonie zegarka. Dawno temu już zrobiłem zegar vfd na PCB z podobnego DVD ale problemem była obudowa a konkretnie brak pomysłu na nią. Jako ze tytułowy odtwarzacz lezy obok telewizora i zajmuje cenne miejsce to stwierdziłem ze pora aby w końcu miał okazje popracować i się przydać po kilku latach przerwy...
W projekcie użyłem kawałka płytki uniwersalnej oraz wykorzystałem ATTINY 26 który miałem oraz gotowy moduł zegara RTC kupiony na znanym serwisie aukcyjnym Dodatkowo w tylnej ściance zamontowałem gniazdko DB9 które służy do podłączenia programatora aby za każdym razem nie otwierać obudowy gdyż program jest dość prymitywny i będzie poprawiony a i może uda się dodać jakieś dodatkowe funkcje.
Program działa następująco - po podaniu zasilania odczytuje w przerwaniu co 1s czas z RTC i wysyła na wyświetlacz. Z każdym obiegiem pętli programowej na jej początku jest sprawdzane za pomocą funkcji "klawisz" czy nie został któryś naciśnięty i kontrolowana jest zmienna o nazwie global która steruje praca całego zegara i jego poszczególnymi funkcjami. Umożliwia tez poprzez proste zwiększenie jej zakresu rozszerzenie menu i dodanie innych funkcji wg potrzeb np przełączenie z trybu 24h na 12 AM/PM.
Menu jest zbudowane na bazie 3 przycisków pochodzących z panelu dekodera Echostar 616 Polsatu . Podczas normalnej pracy wciśniecie 1 (ON/OFF) powoduje wejście do menu i wyświetlenie godziny 12:00:00 na wyświetlaczu. Pozostałe przyciski tj 2 (góra) oraz 3 (dół) pracują jako przyciski +/- do ustawiania wartości godzin w zakresie 0-23. Po ustawieniu godzin wciskamy znowu przycisk 1 i ustawiamy analogicznie minuty w zakresie 0-59. Po trzecim wciśnięciu przycisku sekundy zostają ustawione na 0, analogicznie ustawiamy dni miesiące i rok a po kolejnym użyciu przycisku ON/OFF czas zostaje wpisany do RTC a zegar zaczyna normalna prace.
Podczas normalnej pracy zegara przyciski 2 i 3 maja swoje dodatkowe funkcje -przycisk 2 wyświetla date na 5s, a przycisk 3 miał regulować kontrast VFD ale o tym dalej. Wyświetlanie dwukropka na wyświetlaczu jest realizowane na podstawie tablicy zawierającej obraz segmentów do zapalenia. Pierwsze 10 cyfr jest bez dwukropka, kolejne 10 z dwukropkiem i jest używane w zależności od sekund (operacja modulo 2). W moim przypadku użyłem programowego SPI ze względu na attiny i nie mieszałem z wysyłaniem danych do sterownika VFD wiec w tym przypadku obrazy cyfr w tablicach maja zamienione starszy bajt z młodszym i najstarszy bit z najmłodszym a segmenty inna kolejność. Zajeło mi trochę czasu rozszyfrowanie tego wiec rozpisałem tylko cyfry. Kolejność jest podana na foto . Oczywiście nic nie stoi na przeszkodzie aby rozbudować tablice znaków o wszelkie inne możliwe znaki. W moim przypadku ważny był jedynie(na ta chwile) aktualny czas i to aby zegarek nie dawał w nocy po oczach. Seryjne szkło które emituje białe światło doskonale spełnia swoja role. Po ciemku i tak jest doskonale czytelny nawet z kilku metrów Program napisany na podstawie BB , poradników pana Mirka oraz własnej inwencji .Funkcje do obsługi VFD napisałem na podstawie bibliotek z forum Atnel ale w sumie wykorzystałem tylko podstawowe funkcje typu komenda/dana. Resztę opracowałem samodzielnie.
Jest to jeden z moich pierwszych programów w dodatku kleconych przez jakiś rok jak nie lepiej w dodatku na raty wiec zdaje sobie sprawę ze można(a nawet trzeba) to zoptymalizować bardziej. Na pewno do wyrzucenia są _delay_ms, poprawić można tez na pewno funkcje klawisz i funkcje dwukropka - nie za pomocą 2 zestawów tablic znakowych. Program z wersji testowej zbudowany na zestawie uruchomieniowym powstał na atmega 16. Przepisałem go na attiny z drobnymi zmianami i następnie zabrałem się za lutowanie płytki z UC, i rtc, itd.
Podczas instalacji w docelowym miejscu pojawiły się kolejne 2 problemy. Pierwszy to jak poinformować nasz UC ze chcemy właczyć odtwarzacz - w tym momencie musimy przestać przecież wysyłać nasze dane na wyświetlacz. W pierwszym momencie planowałem uzyć przycisku STANDBY-ON i przerwania mikrokontrolera do wykrycia faktu jego wciśnięcia. Niestety okazało się ze pomimo iż sygnał jest w złączu do którego wpinamy to panuje na nim napięcie 2,5V (naciskając go zwieramy do masy) wiec nie wiem czy attiny zasilany 5V wykryłby to jako stan wysoki czy w ogóle jako zmianę stanu.
Drugi problem powiązany z pierwszym to fakt ze moduł wyświetlacza korzysta (w tym akurat przypadku i w tym konkretnym modelu ) z napiec 3,3V , -24V i +12V do zasilania sterownika VFD które potem najprawdopodobniej jest obniżane za pomocą diody Zenera do 5V. Do płytki VFD na panelu przednim nie dochodzi fizycznie napięcie 5V z zasilacza a płytka nie posiada żadnego wbudowanego stabilizatora. Tak wiec w trybie STANDBY kiedy zegarek ma pracować i pokazywać czas, napięcie 12V i pośrednio 5V jest odcinane przez elektronikę sterująca. 3.3V i -24V są obecne cały czas. Sprawa na szczęście okazała się prostsza niż myślałem - obok złącza znajduje się tranzystor typu 8550 oznaczony jako Q33 który to wystarczy usunąć i zewrzeć C z E - wtedy mamy już napięcie zasilające na sterownik VFD
. Dodatkowo skoro ten tranzystor jest sterowany w momencie włączenia odtwarzacza to sygnał z jego bazy możemy wykorzystać do naszych celów
Wprawdzie ma wartość około 9 V ale nie jest to problem- 6 szeregowo podłączonych diod prostowniczych załatwia sprawę i zbija do około 4,8V co już bez problemu można wykryć jako stan wysoki.
Zasilanie 5V pobrałem z wejścia układu scalonego BE572L które idzie tam bezpośrednio ze złącza zasilacza. Może to mało eleganckie ale nie chciałem stosować dodatkowego stabilizatora na swojej płytce, a pcb odtwarzacza pomimo tego ze jest sporo wolnych miejsc gdzie można by się podłączyć praktycznie bezinwazyjnie to nigdzie 5 V nie występuje.
Zmuszony byłem również zastosować układ SN74HC245N - DVD jest zasilanie cały czas nawet w trybie STANDBY a ori sterownik po podpięciu AVR nie jest w stanie wysterować wyświetlacza. Dodatkowo na liniach sterujących utrzymuje stan wysoki z związku z czym musiałem dołożyć osobne przyciski z tyłu. Początkowo planowałem wykorzystać standardowe przyciski OPEN/CLOSE , PLAY/PAUSE oraz STOP. Niestety wymaga to odczytu danych ze sterownika co w w/w układzie połączeń jest niemożliwe. Można oczywiście przeanalizować PCB i odciąć zasilanie głównego układu ale po kilku dniach walki z uruchomieniem wyświetlacza z ori elektronika wolałem wywiercić kilka dziur z tyłu obudowy :]
Teraz garść info odnośnie samych modułów VFD Philipsa.
Moduły z tych DVD maja niestety dziwne rozwiązane sterowanie po SPI - DO jest zwarte z DI i podciągniete do +5V. Tak jest w 2 egzemplarzach które mam i piszą w internecie ze w innych typach DVD jest tak samo. Wymaga to specyficznej obsługi w porównaniu do zwykłego SPI.
Wyjścia do zasilania 4 szt LED są nie wykorzystane i zwarte ze sobą.
Podobnie nie wykorzystane i zwarte są porty od 3 dodatkowych przycisków. Pierwszy z nich (K1) wisi w powietrzu.
Jedyna dostępna dodatkowa funkcja to matryca klawiszy wykorzystuje tylko lub aż 3 przyciski - dokumentacja podaje ze tablica ma rozmiar 3 bajtów ale na szczęście można odczytać tylko pierwszy bajt z danymi które nas interesują i resztę pominać - sterownik nie protestuje
W dokumentacji podany jest sposób włączenia tzw test mode. Niestety po jego uruchomieniu nic się nie dzieje - ktoś wie cokolwiek o tej dodatkowej opcji ?
Przy programowym SPI nie jest konieczne oczekiwanie czasu 1us pomiędzy rozkazem odczytu stanu klawiszy a samym odczytem. Dokumentacja zwraca na to szczególna uwagę.
Model DVP 3042/12 jest bardziej "ubogi" niż DVP 520/02 - w pierwszym zasilacz pracuje cały czas nawet jeżeli tylko jest podłączony do zasilania, w tym drugim cały zasilacz startuje dopiero po zwarciu odpowiednich pinów - coś jak zasilacz do PC. Dodatkowo w pierwszym elektronika jest sporo mniejsza w stosunku do obudowy a zasilacz mniejszej mocy.
W moim przypadku (DVP 3042/12) zastosowany sterownik VFD ET16312N data produkcji 48 tydzień 2005 roku nie reaguje na komendę zmiany jasności świecenia pomimo kilkunastu prób - zmiana czasu impulsu strobe, dodanie opóźnień itp. Na sterowniku CS16312N (DVP 520/02) data produkcji 33 tydzień 2006 który to według not katalogowych jest kompatybilny działa bez najmniejszego problemu. Na ET16312 kontrast jest ustawiony na maximum, reszta komend również działa. Może w wolnej chwili wymienię scalak odpowiedzialny za obsługę VFD. Pomimo kilkunastu prób nie udało się uruchomić tych funkcji.
Koszty budowy trudno określić ponieważ oprócz nowego procesora kupionego parę lat temu zakupiłem tylko SN74HC245N za chyba 1,5zł, reszta elementów z demobilu a kawałek płytki został z jakiegoś wcześniejszego projektu. Płytka kosztowała cala około 5-7zł. Procesor taktowany 8MGHz. Na schemacie nie rysowałem kondensatorów filtrujących. Rezystor 45K jest potrzebny aby procesor nie głupiał przy włączaniu DVD do normalnego użytku- bez niego czasem VFD nic nie pokazywał. Data jest pokazywana z litera R na końcu
UWAGA :
Program do działania wymaga bibliotek do programowego i2c których tutaj nie publikowałem. Jeżeli ktoś jest zainteresowany to mogę też dodać funkcje odczytu klawiszy ze sterownika VFD.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.