Skocz do zawartości

kloss

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

kloss's Achievements

1/10

1/10 (1/10)

6

Reputacja

  1. Wymagania Postanowiłem zbudować zegar. O, kolejny projekt zegara, jakich w necie jest setki lub tysiące? No tak właśnie pomyślałem, przecież wśród tysięcy projektów zegara na pewno znajdę odpowiedni dla siebie ale niestety, po kilku dniach szukania dałem sobie spokój, nie ma takiego jak ja chcę. Dlatego rozpisałem wymagania i podzieliłem na obowiązkowe oraz opcjonalne, aby jeszcze raz przemyśleć i poszukać lub zastanowić się nad własnym projektem. Wymagane obowiązkowe: zasilanie akumulatorowe (najlepiej li-ion typu 18650) z okresem działania co najmniej 2 miesiące, dobra widoczność w nocy - wymagane podświetlenie wraz z regulacją jasności świecenia aby w nocy nie rozświetlał połowy pokoju tylko delikatnie się jarzył. duże cyfry min. 4 cm dokładność +/- 1 min/rok. Wymagania opcjonalne: automatyczne przestawianie czasu na letni i zimowy, nie musi pokazywać czasu non stop, wystarczy szybkie włączenie w reakcji na czujnik ruchu. No i niestety żaden projekt który znalazłem nie spełniał wszystkich 4 punktów obowiązkowych. Najczęściej jak w projekcie były duże widoczne wyświetlacze LED to było wymagane zasilanie sieciowe bo nikt się nie przejmował poborem prądu. Pierwsza myśl była taka, że może nie da się tego pogodzić, więc z ciekawości zabrałem się za analizę i weryfikację wymagań. Czy da się technicznie zrobić co spełnia wymagania obowiązkowe? Projekt Wstępne wyliczenia pokazały, że 7 segmentowe wyświetlacze o wielkości 1,8 cala są widoczne w nocy przy prądzie ok. 0,02 mA na segment, całkiem nieźle. Jednak w drugą stronę przy świetle dziennym do wyraźnego widzenia godziny wymagany jest prąd około 5-10 mA na segment no to dużo gorzej. Jednak opierając się o te wyliczenia i dodając czujnik ruchu PIR oraz czujnik oświetlenia zaprojektowałem zegar który powinien spełnić moje wymagania. Centralny mikrokontroler to Atmega88PA, który większość czasu jest uśpiony i pobiera tylko kilkanaście µA. Jako dokładny zegar wykorzystałem gotowy moduł DS3231. Bałem się trochę o prąd pobierany przez czujnik PIR, jednak okazało się, że moduł SR-505 zadowala się tylko ok. 50 µA. Dodatkowo do kontroli ładowania i zabezpieczenia akumulatora użyłem modułu z TP4056. Budowa Po etapie analizy wstępnie mogłem narysować schemat, w sumie prawie standardowy zegar tylko z dwoma obwodami zasilania. Pierwszy obwód o napięciu ok. 3.3V zasila mikrokontroler i pozostałe moduły: zegar i czujnik PIR. Drugi obwód z przetwornicą 5V zasila drivery 74HCT541 i wyświetlacze LED. Do narysowania schematu i projektu PCB użyłem programu KiCad oraz FreeRouting. Oto schemat, zaprojektowana płytka PCB i wizualizacja 3D Niestety już po zleceniu wykonania płytki PCB, eksperymentując z Atmega88PA, doczytałem i sprawdziłem też w praktyce na płytce stykowej, że wykorzystując do sterowania jasnością LED licznik 2 zamiast licznika 0 można znacząco ograniczyć pobór prądu. Sposób polega na generowaniu za pomocą licznika 2 modulacji PWM w której pomiędzy okresami CPU jest uśpiony w trybie SLEEP_MODE_EXT_STANDBY. Dlatego już podczas składania zegara dolutowałem dwa dodatkowe przewody zamieniając piny PD3<->PD5 czyli funkcje OC0B z OC2B, które one pełnią, dzięki temu uzyskałem zmniejszenie poboru prądu podczas wyświetlania godziny. Dodatkowo jeszcze wejścia sterujące jednego z buforów 74HCT541 podłączyłem na stałe do masy co zwolniło jeden z pinów Atmega do ewentualnego wykorzystania w przyszłości. Jeszcze po testach modułów postanowiłem zasilanie modułu DS3231 podłączyć do wyjścia Atmega i włączać zasilanie tego modułu tylko na moment odczytania aktualnego czasu co dodatkowo zredukowało pobierany prąd. Docelowo po uruchomieniu wersji testowej inne zmiany, w porównaniu do pierwszej wersji schematu z której było projektowane PCB, jak na razie nie były wymagane. Będąc przewidujący wyprowadziłem wszystkie mające znaczenie piny mikrokontrolera na kilka portów umożliwiających dolutowanie w przyszłości złącz szpilkowych tzw. goldpiny. Dzięki wyprowadzeniom szpilkowym zaprojektowana płytka PCB może pełnić rolę modułu dużego wyświetlacza LED sterowanego np. z Arduino lub innego zewnętrznego sterownika zasilanego 2,8-5V. Zegar w trakcie lutowania. Uruchomienie Podzieliłem uruchomienie na dwa etapy. W pierwszym przetestowałem obwód 3.3V co pozwoliło znaleźć kilka błędów programowych które uniemożliwiały przejście w tryb SLEEP_MODE_PWR_DOWN. W drugim etapie podłączyłem obwód 5V na razie bez wyświetlaczy LED i tu małe zaskoczenie, same bufory 74HCT541 w stanie włączenie ale bez żadnego obciążenia pobierają prąd kilka mA. Szybki test na płytce stykowej to niestety potwierdził, więc to nie był błąd w programie czy w montażu. Widocznie ten "model tak ma". Zamiana na D74HC541C nie pomogła a wręcz pogorszyła sytuację. No trudno te kilka mA w stanie aktywnym jakoś odżałuję, na szczęście stan wybudzenia to może 1% czasu pracy. Ostatecznie udało się zmniejszyć w trakcie uśpienia zegara pobór prądu do około 80 µA co uważam za sukces całego projektu. Jak się zegar będzie zachowywał i co ile czasu wymagane będzie doładowanie akumulatora okaże się w praktyce. Zdjęcia zmontowanego i uruchomionego zegara. Podsumowanie Ostatecznie udało mi zegar uruchomić i spełnić moje wymagania. Zdjęcie zegara w docelowym miejscu, a właściwie dwóch zegarów bo z rozpędu wykonałem dwie sztuki. Teraz mam jeden używany jako zegar i drugi do testów, rozbudowy i eksperymentów. Rozbudowa w przyszłości Po pewnym okresie użytkowania pojawiły się pomysły na rozbudowę: Bezprzewodowa synchronizacja z dokładnym zewnętrznym zegarem - niestety pierwszego pomysłu aby synchronizować zegar z siecią GPS nie udało mi się zrealizować z powodu słabego sygnału satelitów dostępnego w docelowym miejscu gdzie zegar ma się znajdować. Dlatego zamiast GPS planuję dołożyć moduł Bluetooth Low Energy HM-10 oraz dopisać prostą aplikację na Androida która będzie przesyłąła aktualny czas do modułu. Zatrzymywanie filmu gestem - zegar powstał jako „dodatek” do TV i jako taki sprawdza się doskonale, szczególnie kiedy wieczorem oglądam film i mogę na bieżąco kontrolować godzinę bez odrywania wzroku od ekranu. Jednak zamarzyła mi się opcja włączania pauzy w TV jedynie poprzez zbliżenie ręki od zegara. Zakupiłem już w tym celu moduł APDS9960 i po pierwszych testach wygląda na spełniający wymagania, czas reakcji na zbliżenie ręki na ok. 10cm jest błyskawiczny. Planuję w reakcji na zbliżenie przez dołączoną diodę IR emitować sygnał pilota Play/Pause.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.