Witam wszystkich :) to mój pierwszy post na tej stronie, ale na bank nie ostatni. Do jego napisania i wykonania tego projektu zmobilizował mnie konkurs w którym od teraz często będę brał udział. Z góry przepraszam za trochę chaotyczny opis, lecz jest sporo rzeczy do wyjaśnienia i może nie wszystkie będą po kolei.
Więc do rzeczy – każdy elektronik zapewne wie, że stary komputer to po prostu skarb. Na tej stronie można znaleźć już wiele sposobów na jego wykorzystanie np. szlifierka z dysku czy grająca stacja dyskietek, czy przerobiony zasilacz atx, który też sobie zrobiłem i to z niego zasilam ten projekt. Teraz jednak pora na widmowy zegar z hdd.
Zasada działania
W tarczy dysku wycinamy szczelinę ok 2mm, wystarczy do tego celu dowolna szlifierka z cienką tarczą, pod nią umieszczone są diody rgb. Jeśli w momencie gdy szczelina będzie znajdować się po lewej stronie zapalimy np. zieloną diodę, a po drugiej stronie niebieską z racji obrotów dysku wynoszących ok 90 obrotów na sekundę ujrzymy niebiesko-zielony okrąg. Wystarczy ładnie przeliczyć w jakich pozycjach mają być różne kolory możemy uzyskać 2 wskazówki i tło więc mamy już zegar :)
Elementy użyte w projekcie
- stary dysk twardy
- przerobiony zasilacz atx (mam wyprowadzony z niego kabel molex)
- stara myszka kulkowa
- taśma led rgb (ja kupiłem pół metra ale zużyłem tu nieco ponad połowę)
- atmega8 – na nią będzie wgrany cały program
- płytka stykowa, kabelki itp. – niestety brakło mi czasu na przygotowanie ładnej płytki pcb więc wszystko jest na niej zmontowane
- układ zegara PCF8583 lub bardziej recyklingowo – niektóre starsze płyty główne zawierają zegar DALLAS DS1287 i można go wykorzystać podmieniając pliki bibliotek i wprowadzając pewne zmiany w kodzie
- 3 tranzystory BD139 (oraz jeden IRF5930 w przypadku, gdy dysk ma zabezpieczenie i wyłącza się po minucie)
- kilka rezystorów, przycisków trochę wolnego czasu i chęci
Budowa
Zacznę od dokładnego opisania najpierw części mechanicznej, a potem przejdziemy do kodu.
Najpierw musimy rozebrać dysk i wyjąć wszystko ze środka, w tym projekcie korzystam z oryginalnego sterownika do silnika BLCD z dysku, akurat mój model kręci się cały czas jednak gdy sprawdzałem inne to posiadają one zabezpieczenia. Silnik wyłącza się wtedy co około minutę, jednak nie jest to wada która nie pozwala na budowę zegara z niego. Wystarczy przerwać kabel z molexa od zasilania sterownika, podłączyć przez tranzystor i co około 30 sekund go restartować poprzez mikrokontroler.
Wycinamy w tarczy szczelinę, nie dojeżdżamy do samego końca (u mnie to ok 8mm). Podczas testowania okazało się, że tarcz jest wtedy niewyważona i dysk wibruje i to strasznie, jeździł po całym biurku. Możemy temu zaradzić przyklejając coś do tarczy i wyrównując jej wagę, wystarcza takie 2 paski taśmy jak na zdjęciu.
Następnie przymierzamy pasek led do dysku, aby sprawdzić czy zmieści się w obudowie. W moim przypadku niestety tarcz tarła o diody i uszkodził się jeden fragment paska L Musiałem wyciąć większość „obramowania”. Nacinałem je co kawałek ręczną piłką do metalu gdyż już nie miałem szlifierki, a tak powstałe „ząbki” wybijałem młotkiem. Na koniec wyrównałem wszystko pilnikiem. Do złączy taśmy led musimy przylutować kabelki.
Pod tarczą przyklejamy kawałek białej kartki odpowiednio wyciętej, aby ładniej było widać kolory.
Zajmijmy się teraz góra naszego dysku – musimy tam zrobić „okienko”, aby widzieć godzinę. Wycinamy więc otwór o średnicy mniejszej niż średnica tarczy (około 8,5 cm), ponieważ byłaby widoczna świecąca obwódka wokół niej. Po wymierzeniu i narysowaniu linii do wycięcia nawiercałem obudowę małym wiertłem wzdłuż linii, a potem wyrównałem wszystko pilnikiem.
Teraz kwestia w jaki sposób będziemy wiedzieć gdzie w danej chwili znajduje się szczelina w tarczy i jakie diody zaświecić. Potrzebujemy w jednym miejscu czujnik który będzie informował, że znajduje się ona w ustalonej pozycji. Można kupić gotowe optyczne czujniki szczelinowe, ale przecież tematem konkursu jest recykling, więc wykorzystajmy coś starego. Potrzebujemy teraz starą myszkę kulkową – w jej wnętrzu do określania w którą stronę poruszamy kursorem wykorzystywany był układ diody i optotranzystora. Znajduje się on w tym miejscu:
Wystarczy go wyciąć, przylutować kabelki i mamy własny czujnik szczelinowy. Działa on w skrócie tak, że tranzystor przewodzi gdy pada na niego światło diody.
Przyklejamy czujnik i pasek diod mniej więcej jak na zdjęciu, ja użyłem do tego kleju „kropelka”.
Zamykamy wszystko przygotowana obudową oraz wyprowadzamy kable na zewnątrz. Następnie składamy wszystko według schematu:
Kod
W kodzie starałem się dodawać dużo komentarzy więc tutaj wyjaśnię tylko zasadę jego działania. Chociaż zabawę z mikrokontrolerami zacząłem od Arduino to jednak nie przepadam za tym językiem i całość napisana jest w czystym C. Mikrokontroler jest taktowany 8MHz. Przyjmując obroty dysku na 5400 rpm otrzymujemy 90 obrotów na sekundę. Do mierzenia czasu obrotów używamy Timera1 i opcji Input Capture, pozwala ona na przechwycenie wartości licznika timera w chwili gdy nastąpi zmiana stanu pinu ICP1 w naszym przypadku – gdy szczelina w tarczy przejdzie przez czujnik. Uzyskany czas jest dzielony przez 120 pozycji, które są odmierzane przy pomocy timera0. Możemy więc cały obraz na tarczy podzielić na 120 małych trójkątów i w każdym z nich możemy zapalać taki kolor diody jaki chcemy. W przerwaniu timera0 sprawdzana jest aktualna pozycja i jaka wskazówka powinna w niej świecić. W międzyczasie co sekundę (idealnie co sekundę, ponieważ wykorzystujemy przerwanie generowane za pomocą układu zegara), wczytywana jest aktualna godzina, układy komunikują się przy pomocy i2c.
Zastosowałem trochę inny tryb wyświetlania godziny niż tradycyjnie – mianowicie np gdy jest godzina 3 to “wskazówką godzinową” jest cały obszar od 3 do 4, ciężko to wytłumaczyć, ale po filmiku na bank każdy to zrozumie. Inne wskazówki działają normalnie.
Projekt nie jest skończony w 100%, będzie dalej rozwijany. Muszę dodać ręczne ustawianie godziny, można dowolnie zmieniać kolory wskazówek i tła, może jakieś sterowanie pilotem lub komputerem no i oczywiście trzeba będzie wytrawić jakąś ładną płytkę pcb.
Mam nadzieję, że nie jest tak źle jak na pierwszy post. Mile widziane wszelkie komentarze, pomysły itp.
No i wreszcie filmik z działania (nagrywane aparatem więc wyłączcie dźwięk). Na filmiku wgrany jest zmodyfikowany kod, gdzie zegar jest znacznie przyspieszony, aby ładnie zobaczyć jego działanie.
Zegar w akcji
Pamiętaj, że talerze dysku twardego obracają się z olbrzymią prędkością i w razie pęknięcia mogą się rozprysnąć lecąc we wszystkie strony.
Pozdrawiam !
Aktualizacja 1
Poprawiłem kod oraz schemat(m.in. jest tam teraz bateryjny układ podtrzymywania zegara), dodałem możliwość sterowania dyskami, które mają blokadę. Można teraz za pomocą przycisków sterować godziną i kolorami podświetlania, a ustawienia zapisują się w pamięci układu zegara :)
kolejny filmik prezentujący dodane opcje:
http://projektydmb.blogspot.com/
Takiej formy zegara widmowego jeszcze nie widziałem, ale wszystkie mają to do siebie że są głośne i stąd mój pomysł na ulepszenie – włączanie poprzez gwizd. Po gwizdnięciu działał by kilka sekund i przechodził w stan czuwania.
Łał – robi wrażenie! Gratuluję udanego pierwszego projektu :)
Pomysł fajny, ale…
czy ktoś zastanawiał się co będzie jak CD pęknie (a jest mocno nadwyrężone poprzez wykonanie nacięcia) w trakcie pracy zegara? Nie chciałbym byc w pobliżu.
To nie jest CD… ;) To jest talerz od dysku twardego. :D A projekt fajny! :)
Niezwykle ciekawy efekt, też jeszcze takiego nie widziałem.
Pomyśl nad filtracją napięcia przy mikrokontrolerze; nie widzę tam ani jednego kondensatora.
Jak Waldemar, mam też obawy co do wytrzymałości talerza, jak pęknie, to będzie szrapnel.
To jest lekki stop metalu… nie powinien tak łatwo pęknąć. Ale dla pewności można by zrobić z kawałka płaskownika “ściankę”/osłonkę dookoła talerza :)
W sumie na moje oko to nie trzeba nic montować dodatkowo. Dysk ma swoją obudowę, wycięte jest praktycznie tylko okienko to nawet jak pęknie, nie powinno nic wylecieć z dużą prędkością.
Dla świętego spokoju dodałem ostrzeżenie :)
więc będę musiał dorobić na wierzchu płytkę z plexi, która powinna ładnie wszystko zabezpieczyć :)
Do niczego nie zmuszam :) Ja w swojej szlifierce z dysku też nie mam żadnych osłon. Ostrzeżenie dodałem dla innych, żeby mieli świadomość ryzyka :)
nawet na tej stronie jest projekt szlifierki z dysku i wytrzymuje to bez problemu. Filtracja zasilania jest na płytce stykowej, dla mnie to oczywiste, że dajemy kondensatorki filtrujące dla każdego scalaczka w układzie :) ale dodam je też na schemacie
I zapomniałem dodać, żebyś wyczyścił ten talerz jakimś płynem do czyszczenia (np. spirytusem), bo te odciski palców wyglądają okropnie :)
tak, jest ładnie już wyczyszczony, jednak przy robieniu gdybym miał go myć przed każdym zdjęciem to sporo czasu by mi zajęło
A, i jeszcze jedno: Łukasz, dlaczego w gwiazdkach do oceniania znajduje się jeszcze jeden kawałek szóstej gwiazdki? ;)
Gdzie? :| Możesz pokazać jakiegoś screena?
http://i.imagebanana.com/img/np46he1x/6.png
zakładam, że to o to chodzi
Super projekt :D
Życzę kolejnych udanych projektów!
Aaaa…. czuję się jak byś czytał w moich myślach :D, na biurku leży stary dysk 2,5 cala z laptopa z którego właśnie takie coś chcę zrobić :D, wielkie dzięki za poradnik, na pewno skorzystam ;).
A takie małe pytanie – bo na schemacie nie wiedzę podłączenia ślinika HDD, czy do zasilania silnika wykorzystałeś oryginalną elektronikę HDD? Raczej preferował bym się jej pozbyć całkowicie. A i może to http://www.elektroda.pl/rtvforum/topic1421623.html ci też pomoże ;).
tak, jest wykorzystana oryginalna elektronika HDD, w przyszłości też dodam więcej barw itp jak jest w tamtym projekcie, jednak na atmedze8 tym bardziej taktowana 8 MHz to na razie ponad moje możliwości programistyczne :/
O ile ilość kolorów dla mnie nie ma znaczenia :P, raczej preferują stonowane kolory :P. To o tyle uruchomienie silnika na AVR to będzie pierwsza rzecz za jaką się zabiorę :P. Głównym ale problem będzie to że postanowiłem w max stopniu zachować oryginalny wygląd HDD ;), czujnik myślę że uda mi się sprytnie umieścić na głowicy dysk, to z diodami będzie większy problem, muszę znaleźć takie które w całości schowają się pod tarczą bez wycinania obudowy :P.
ja wykorzystałem gotowy pasek led lecz jeśli sam byś sobie go zrobił to zajmowałby na styk miejsca (tak podejrzewam).
Ja jednak jestem za zastosowaniem gotowego sterownika, chociaż kto wie, jeszcze nie zajmowałem się kwestią uruchamiania silników blcd. Jak coś to pisz z chęcią pomogę :)
Mozesz pokazac jak ominac blokade aby dysk sie nie wylaczal?
Nie było strachu że wszystko się rozleci we wszystkie strony?
No właśnie pokaż jak ominąć blokadę żeby dysk się nie wyłączał bo też chce,se zbudować szlifierke ale blokada nie pozwala go rozkręcić do optymalnej prędkości 7200 rpm
Jaki jest ten rezonator kwarcowy ile ma hz?
Niezłe!