Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Prosty w obsłudze "nakręcany" minutnik

quinty 23 Sty 2019 14:22 2376 7
  • Prosty w obsłudze "nakręcany" minutnik

    Witam,
    poniższy mini-projekt powstał z inspiracji tematem kolegi 0x5261647A6975.
    Założenia obejmowały:
    -zrobić jakiś przydatny prezent dla dziewczyny
    -przypomnieć sobie po kilku latach programowanie uC AVR
    -wdrożyć się w robienie dwustronnych PCB
    -zrobić coś z ultra niskim poborem prądu (zasilanie 3xAA szeregowo ma wystarczyć na długo).

    Część elektroniczna
    Urządzenie bazuje na dwóch PCB (4x wyświetlacz LED + płyta główna) połączonych ze sobą taśmą flex z jakiejś drukarki. Wyświetlacze to wylutowane z czegoś 7-segmentowe pojedyńcze kostki ze wspólną anodą i czerwonym filtrem do kompletu.
    Płyta główna zawiera:
    -enkoder obrotowy z przyciskiem, debouncing po 100nF na każdy pin
    -podstawkę pod arduino mini pro
    -4x mosfet typu P do sterowania multipleksowaniem LED (z odzysku)
    -1x mosfet N do sterowania buzzerem z wbudowanym generatorem
    Sama płytka z arduino jest właściwie tylko po to, żeby łatwo było zainstalować uC. Została ona mocno zmodyfikowana, wyrzucone wszystkie zbędne elementy jak LED'y, stabilizator, kwarc wymieniony na zegarkowy 32768Hz (+ przestawione fusebity). Użyte są dwa sprzętowe timery, jeden zlicza sekundy, drugi multipleksuje LEDy. Enkoder obsługiwany jest przez przerwania PCINT, ponieważ zwykłe INT0,1 znajdowały się w porcie do obsługi 8-śmiu segmentów LED. Mosfety mają po dwa rezystory - ograniczający prąd bramki + rozładowujący bramkę. Budowa urządzenia jest w sumie tak prosta, że schemat nie powstał, wystarczył projekt płytki, który został zrobiony w programie DIPtrace. Żeby zgrać ze sobą obie warstwy sklejałem z papieru kredowego "koperty" do wsunięcia w nie płytki, a dopasowanie wyglądało tak, że postawiłem do góry nogami naczynie żaroodporne, w którym znajdowała się latarka. Zakres zasilania to 3-5V, czyli idealnie na 3 baterie paluszki w całym ich cyklu zycia.

    Prosty w obsłudze "nakręcany" minutnik
    Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik

    Część software'owa
    Kod napisany w MKclipse. Żeby przypomnieć sobie C, na początku własnoręcznie najlepiej jak umiałem, potem zasięgnąłem internetu żeby zoptymalizować go i zapożyczyć niektóre fragmenty z innych konstrukcji.
    Główne bloki kodu to:
    -usypianie uC do trybu Power-Down (0,1uA @ 4,5V) i potem budzenie
    -wyłącznie nieużywanych części sprzętowych w PRR (power reduction register)
    -podciągnięcie nieużywanych pinów do pullupów
    -obsługa enkodera w przerwaniu, które ustawia "flagi" obsługiwane w pętli głównej
    -multipleksowanie LED i odliczanie czasu dzięki przerwaniom od timerów
    -prosty alarm na "delay'ach" żeby już nie używac trzeciego timera
    Obsługa jest banalnie prosta. Wciśnięcie enkodera budzi urządzenie, obroty zmieniają nastawę czasu. W zakresie <10min krok jest co 30sek, >10min co 1min. Wciśnięcie enkodera startuje odliczanie. W trakcie można zwiększać/zmniejszać nastawę bez przerywania odliczania. Wciśnięcie enkodera w trakcie odliczania wyłącza urządzenie i zeruje licznik. Jeżeli odliczanie dojdzie do 0, to rozpoczyna się optyczno-dźwiękowy alarm, który po kilku sekundach sam zamilknie usypiając urządzenie, lub można go przerwać wciskając enkoder.
    Podczas kręcenia gałką można zobaczyć delikatne "glicze" na LED, przez to, że uC jest tak wolno taktowany, ale to nie przeszkadza.
    I teraz PROTIP - długo walczyłem czemu w losowych momentach przejścia do stanu uśpienia uC zamiast 0,1uA pobierał aż 227uA. Doszedłem w końcu do przyczyny, którą było to, że piny wejściowe obsługujące gałkę zostawały w sleepie podciągnięte do pullupów. Czasem enkoder zostawał w pozycji "zwarte do VCC", a czasem "zwarte do GND". Wpadłem na to, żeby przed uśpieniem sprawdzać w jakim stanie są wejścia i ustawiać pullup lub nie. To był dobry wybór i teraz zawsze pobór prądu jest znikomy. W trakcie wybudzenia działa BOD 2,7V, który w uśpieniu jest wyłączany.

    Część mechaniczna
    Obudowa wykonana z użyciem wkrętarki, ręcznej piłki do metalu, papieru ściernego, kleju wikol i epoksydowego najlepiej jak umiałem (co nie znaczy, że dobrze). Wszystko zrobione z pociętego kawałka sklejki. Obudowa jest dwuczęściowa: przód+góra oraz reszta. Po wykręceniu czterech śrubek można wymienić baterie. Gałka to dwa kawałki sklejki wycięte otwornicą, nabite na chwilę na wkrętarkę, przeszlifowane papierem ściernym i sklejone wikolem. Ostre krawędzie samej obudowy też przeszlifowane. Całość na koniec pobejcowana 2 warstwami. Na spód naklejone gumowe nóżki, i zamontowany buzzer w dolnej ściance. Baterie i buzzer podłączone przez goldpiny.

    Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik Prosty w obsłudze "nakręcany" minutnik

    Na koniec filmik z działania (przyśpieszony w niektórych momentach). Zakres nastawy to 30sek-99min i jest dokładny co do sekundy na maksymalnym ustawieniu.


    Link


    W załączniku dodaję:
    -program w C
    -płytki w formacie DIPtrace
    -płytki w formacie BMP

    Pozdrawiam
    Załączniki:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • PCBway
  • #2
    SylwekK
    Poziom 30  
    Bardzo ładny i praktyczny projekt. Przeraża mnie jednak trochę ten zabieg:
    quinty napisał:
    enkoder obrotowy z przyciskiem, debouncing po 100nF na każdy pin


    100nF to bardzo dużo i jestem wręcz przekonany, że przy nieco szybszym ręcznym kręceniu enkoder gubi impulsy.
  • PCBway
  • #3
    HD-VIDEO
    Poziom 39  
    "Wciśnięcie enkodera w trakcie odliczania wyłącza urządzenie i zeruje licznik"

    Moim zdaniem powinno być inaczej:
    Naciśniecie przycisku pauzuje TIMER (wtedy wartość na wyświetlaczu miga), brak reakcji >1minuty - wyświetlacz się wygasza (ale nie zeruje), >3minut TIMER się zeruje i usypia.
    Jeżeli ponowne naciśniecie przycisku nastąpi przed upływem 3 minut, TIMER zlicza od zatrzymanego czasu. W tym czasie (do 3minut) naciśnięcie i przytrzymanie przycisku natychmiast zeruje i usypia.
    Poszczególne stany TIMERA, w postaci przypomnienia w jakim trybie jest można sygnalizować krótkimi piknięciami BUZ.

    Z uwagi, ze udostępniłeś źródło taką modyfikację można dokonać na własne potrzeby.
  • #4
    Greyangel
    Poziom 14  
    Całkiem porządna, rzemieślnicza praca. W związku z budową, mam pytania:

    - Czy Przewidujesz jakąś miniaturyzację ? Dziewczyna mogła by go schować do torebki i wziąć ze sobą żeby np. przypominał jej o wzięciu lekarstw, lub innych medykamentów.
    - Obudowa wydaje się mało chwytliwa jak na gusta kobiety, czy nie Myślałeś żeby ozdobić ją np. serduszkami czy kwiatkami, dzisiaj dizajn jest bardzo ważny, zwłaszcza dla kobiet.
    - Czemu nie Rozważyłeś zastosowania wyświetlacza LCD ? Zminimalizował by pobór prądu, nawet przy multipleksowaniu, LCD byłby bardziej oszczędny.

    Pozdrawiam,
  • #5
    0x5261647A6975
    Poziom 9  
    Cieszę się, że mój projekt Cię zainspirował. Bardzo fajny efekt końcowy dzięki ładnej obudowie. W czasie kręcenia enkoderem wstrzymujesz multipleksowanie wyświetlacza, co widać poprzez błyski i gaśnięcie cyfr, przerwanie trwa zbyt długo.
  • #6
    quinty
    Poziom 28  
    Dziękuje za komentarze. Minutnik dziubdziałem po trochę przez dłuższy czas i nie pamiętam czy potem faktycznie nie zmieniłem kondensatorów z 100nF na 10nF. Enkoder faktycznie gubi kroki przy naprawdę bardzo szybkim kręceniu. Przy takim jak na filmiku nie gubi ani kroku.

    Obudowa faktycznie mogłaby być 2x mniejsza, ale "wyszło jak wyszło". Co do samego wyglądu to przynajmniej mi nie kłuje w oczy, bo wtapia się w stół o tym samym kolorze. Pobór prądu miał być jak najmniejszy, ale w uśpieniu. W trakcie działania wyświetlacz miał być wyraźny w dzień i w noc w ciemności dlatego padło na LED.

    Przerwanie faktycznie trwa zbyt długo i "szarpie" cyframi przy kręceniu, ale nic innego niż system "flag" nie wymyśliłem, a taktowanie 32Khz robi swoje.
  • #7
    SylwekK
    Poziom 30  
    Zmień obsługę enkodera na taką cykliczną w zwykłych przerwaniach, a nie zewnętrznych. Jak poszukasz to znajdziesz moja bibliotekę w sieci, do której żadne kondensatory Ci nie będą potrzebne, nic nie będzie migało, a i kroków gubił nie będzie ;-)
  • #8
    0x5261647A6975
    Poziom 9  
    quinty napisał:
    Przerwanie faktycznie trwa zbyt długo i "szarpie" cyframi przy kręceniu, ale nic innego niż system "flag" nie wymyśliłem, a taktowanie 32Khz robi swoje.


    Z tego co pamiętam to też korzystam z flag i u mnie nic takiego się nie dzieje. Może masz przerwanie na stan niski, ja chyba mam na zbocze, może tu jest problem?