Witam!
Chciałbym dodać coś od siebie na forum, dlatego przedstawiam Wam urządzenie, które zrobiłem jako prezent bratu na Boże Narodzenie. Mam nadzieję, że projekt się spodoba pomimo błędów które popełniłem, aczkolwiek chciałbym się podzielić nimi ku przestrodze dla wszystkich.
Cóż to za urządzenie? Kiedyś usłyszałem, że każdy elektronik powinien zacząć od mrugania diodą, a następnie wykonać zegarek. Niestety ja ominąłem ten punkt i robiłem inne rzeczy. Około 2 miesięcy temu dostałem zapytanie o zrobienie takiego urządzenia jak zegarek binarny pokazujący godzinę w kodzie BCD (każda cyfra, a nie liczba zapisana jest w kodzie binarnym) na rękę. Zrobiłem wizualizację, przedstawiłem koszta i jak to w życiu bywa, osoba ta się rozmyśliła. W tym momencie wpadłem na pomysł aby wykonać ten zegarek właśnie na święta dla brata, który studiuje informatykę i uwielbia ręcznie robione rzeczy (wszystko pasuje jak ulał!). Poniżej wizualizacja zegarka (już końcowa):
Budowa zegarka:
- ładowanie przez USB
- procesor ATmega88PA
- ultra dokładny zegarek na DS3231
- czujnik przyspieszenia na LIS35D (nie uruchomione)
- dwa przyciski funkcyjne
- wyświetlacz w matrycy 4x6
- wydajny akumulator
Funkcje (które działają):
- ładowanie USB
- pokazywanie aktualnej godziny przez 10s po naciśnięciu któregokolwiek przycisku
- pokazywanie daty po naciśnięciu dolnego przycisku (działa w momencie działającego wyświetlacza i gaśnie po 10s od naciśnięcia przycisku)
- przyciski są sprawdzane w przerwaniu PCINT
- w czasie wygaszenia w DS3231 wyłączane zostają przerwania, a procesor przechodzi w stan uśpienia
- praca na akumulatorze przy sprawdzaniu czasu co około 30min w ciągu dnia wynosi około 5 dni (na inne testy nie miałem czasu)
- akumulator ma wbudowane zabezpieczenie przeciw nadmiernemu przeładowaniu i rozładowaniu (nie zdążyły dojść rezystory 1% i nie uruchomiłem pomiaru napięcia) dlatego sam się wyłączy i nie włącza się
Funkcje pozostałe do zrobienia:
- wlutować i uruchomić LIS35D (zegarek miał pokazywać godzinę po podwójnym stuknięciu lub ułożeniu ręki w określonej pozycji)
- pokazywanie więcej danych na wyświetlaczu takich jak temperatura z DS3231, dzień tygodnia, położenie zegarka od układu LIS35D
- wymiana i uruchomienie przetwornicy ST1S10PHR (uległa najprawdopodobniej uszkodzeniu po podaniu odwrotnego napięcia o czym dalej)
- wymiana baterii kondensatorów podtrzymujących zasilanie na baterię 3V
Jako, że wszystko wykonałem w około tydzień robiąc wieczorami nie ustrzegłem się błędów. Pośpiech to zły doradca i płata czasami śmieszne figle. Są dwie podstawowe i najgorsze rzeczy jakie można popełnić i ja to zrobiłem, oraz jedna dość poważna omyłka przez informacje w sieci:
- zamieniłem miejscami SCL i SDA w zegarku DS3231
- nie podłączyłem katod od wierszy do procesora (zupełnie wypadło mi to z głowy)
- dość kosztowna (czasowo i finansowo) pomyłka to lustrzane odbicie złącza USB co zaskutkowało odwrotnym podłączeniem zasilania na układy, uszkodzeniem ST1S10 oraz LTC4054ES5-4.2, całe szczęście, że reszta układów nie uległa zniszczeniu! Niestety o uszkodzeniu ST1S10 dowiedziałem się dopiero jak zamówiłem ten drugi układ, więc ten pozostał w stanie jakim jest czyli przekazuje napięcie z baterii bezpośrednio na układy.
Pamiętajcie!
Spieszcie się powoli! Zwykle po zaprojektowaniu PCB zostawiam ją na tydzień i później jak zapomnę co i jak robiłem to wracam i sprawdzam wszystko od początku, ale teraz miałem mało czasu, nie odczekałem i wyszły dość uciążliwe babole. Wszystkie poprawki zostały wykonane nacinając ścieżki i używając kynaru oraz schowane tak aby nie było widać.
Poniżej (już poprawiony) schemat:
Oraz zdjęcia samej konstrukcji:
Mam nadzieję, że nie zawalam zbytnio serwera
Co do kodu, to został napisany w całości w C, przy wykorzystaniu bibliotek Mirka oraz trochę własnej inwencji twórczej. Nie będę wrzucał samego kodu bo pisane na szybko i nie wygląda tak aby się nim pochwalić. Jak będzie chęć to poprawię i wrzucę już z wszelkimi poprawkami.
Jeżeli ktoś jest chętny to mogę oddać kilka płytek za free wraz z pomocą przy uruchomieniu ale to dopiero po nowym roku.
Cały tekst miałem wrzucić jeszcze przed świętami ale wyjechałem i dopiero teraz mam czas. Teraz już wiem, że prezent jest trafiony i działa tak jak powinien. Ostatnie ładowanie było 18.12.14r. i do dnia dzisiejszego bateria jak i cały zegarek działają.
Uff... Wreszcie skończyłem. Czekam na konstruktywną krytykę oraz pomysły co można poprawić lub co można dodać! No i życzę wszystkiego dobrego w Nowym Roku, aby Wasze projekty pracowały długo i bezawaryjnie!