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

Załączanie i wyłączanie uC jednym przyciskiem z opóźnieniem

demeus 13 Kwi 2009 02:52 3343 12
  • #1 13 Kwi 2009 02:52
    demeus
    Poziom 18  

    Witam,

    Czy ktoś ma pomysł jak zrealizować załączanie i wyłączanie mikroprocesora jednym mikrostycznikiem, tak aby układ załączał się i wyłączał z opóźnieniem - po chwilowym przytrzymaniu przycisku? Zależy mi na tym, aby opóźnienie wyłączania było regulowane najlepiej programowo z poziomu uc i układ zużywał tylko jeden pin uC.

    Przykładowe rozwiązanie:
    Załączanie i wyłączanie uC jednym przyciskiem z opóźnieniem
    Niestety w tym rozwiązaniu układ załącza się i wyłącza natychmiast po przyciśnięciu przycisku.

    Z góry dziękuję za wszelkie pomysły.

    --
    pozdrawiam,
    demeus

    0 12
  • #2 13 Kwi 2009 12:27
    Zbych_
    Poziom 24  

    demeus napisał:
    Niestety w tym rozwiązaniu układ załącza się i wyłącza natychmiast po przyciśnięciu przycisku.


    To że się wyłącza natychmiast po wciśnięciu, to wyłącznie kwestia programu, więc można to bez problemu zmienić. Żeby się też włączał z opóźnieniem, to trzeba niestety dołożyć trochę elementów np. rezystor równolegle z kondensatorem między B-E tranzystora PNP, albo obejść to programowo, poprzez pomiar czasu wciśnięcia przycisku po włączeniu zasilania.

    BTW.
    - D3 jest w tym układzie zbędna,
    - brak rezystorów między B i E tranzystorów zwiększa wrażliwość tego układu na zakłócenia,
    - sterowanie T1 (NPN) z uC powinno się odbywać tylko poprzez włączanie i wyłączanie podciągania portu, inaczej nie będziesz w stanie wychwycić naciśnięcia przycisku.
    - brakuje kondensatora odsprzęgającego na uC i na wejściu stabilizatora

    0
  • #3 13 Kwi 2009 12:41
    atom1477
    Poziom 43  

    D3 jest jak najbardziej potrzebna.
    Za to D4 na moje oko trochę miesza. Przez nią tranzystor T1 nie będzie zasilany prądem bazy zaraz po puszczeniu przycisku. Dioda ta mniej więcej zwiera bazę T1 do masy. Zaraz po puszczeniu przycisku minie więc parę us zanim T1 się otworzy i podtrzyma zasilanie T2 a więc i zasilanie układu. Mimo to układ powinien działać ze względu na obecność kondensatorów. Ale coś w miejsce tej diody by się przydało żeby uC mógł wykrywać naciśnięcie przycisku. Na przykład dwie diody połączone szeregowo. Chociaż i to jest nieeleganckie skoro układ z jedną diodą (też nieelegancki) też będzie działał.
    Kondensator przed stabilizatorem jest. Brak go zaraz za mostkiem prostowniczym.
    Kondensator odsprzedający uC możliwe że jest. To może być C17.

    0
  • #4 13 Kwi 2009 16:27
    mirekk36
    Poziom 42  

    Panowie, pokazany schemat załączania jednym przyciskiem przez autora, został zaczerpnięty wprost z notki PDF dostępnej na stronach microchipa, więc wydaje się być w pełni prawidłowy. Natomiast jak już wspomniał jeden z kolegów - potrzebne autorowi opóźnienia można już bezpośrednio zrobić programowo w samym procku.

    poniżej ta notka i algorytm działania:

    0
  • #5 13 Kwi 2009 16:46
    demeus
    Poziom 18  

    Witam,

    Tak zgadza się, układ zaczerpnąłem z tej noty katalogowej. Znalazłem ją w Internecie szukając potrzebnego mi rozwiązania.

    Poprawiłem układ zasilający tj. kondensatory odsprzęgające itp.

    Dalej niestety nie rozumiem, jak programowo można zrealizować opóźnienie wyłączania układu, przecież po wciśnięciu S4 tranzystor T2 przestanie przewodzić i następnie tranzystor T1 odłączy zasilanie do stabilizatora i dzieje się to bez udziału uC. Czy dobrze rozumuje?

    Wg. jakich kryteriów należy dobierać rezystory polaryzujące (R1, R7) do tranzystorów (jakie powinne mieć wartości)?
    Załączanie i wyłączanie uC jednym przyciskiem z opóźnieniem

    Z góry dziękuję za odpowiedzi.

    --
    pozdrawiam,
    demeus

    0
  • #6 13 Kwi 2009 16:47
    Zbych_
    Poziom 24  

    atom1477 napisał:
    D3 jest jak najbardziej potrzebna.

    Racja, mój błąd.

    atom1477 napisał:
    Kondensator przed stabilizatorem jest.

    Pisałem o odsprzęgającym (~100n), a nie filtrującym.
    Pomysł z dwiema diodami jest o tyle kiepski, że utrudnia rozpoznanie stanu logicznego przez uC (no chyba, że stan przycisku będzie odczytywany komparatorem, albo ADC).

    Cytat:
    Dalej niestety nie rozumiem, jak programowo można zrealizować opóźnienie wyłączania układu


    Bardzo prosto. Nie zdejmujesz podtrzymania zasilania z uC dopóki przycisk nie będzie przytrzymany chociaż 1s.

    0
  • #7 13 Kwi 2009 17:55
    demeus
    Poziom 18  

    atom1477 napisał:


    Cytat:
    Dalej niestety nie rozumiem, jak programowo można zrealizować opóźnienie wyłączania układu


    Bardzo prosto. Nie zdejmujesz podtrzymania zasilania z uC dopóki przycisk nie będzie przytrzymany chociaż 1s.


    No tak...

    W normalnym stanie pracy układu na linii pomiędzy uC a T2 jest stan wysoki, w momencie wciśnięcia S4 na linii pojawia się stan niski T2 przestaje przewodzić i T1 wyłącza zasilanie stabilizatora. Gdzie tutaj jest miejsce na kontrolę tego przez uC?

    --
    pozdrawiam,
    demeus

    0
  • #8 13 Kwi 2009 19:06
    mirekk36
    Poziom 42  

    Zastanów się po pierwsze czy chodzi ci tylko o opóźnione włączenie procka, który dopiero dalej steruje pozostałymi zasilanymi układami? ... jeśli tak? - to po kliknięciu przyciskiem (procek włącza sobie zasilanie) - i czekasz aż minie przez ciebie zadane opóźnienie, a gdy minie i przycisk jest nadal włączony to procek - odpala wszystko. Gdy natomiast po tym czasie przycisk nie jest nadal przyciśnięty to procek sam wyłącza sobie zasilanie i czeka na kolejny impuls od przycisku.

    Można też nie sprawdzać czy przycisk jest nadal wciśnięty, jeśli na tym ci nie zależy, bo generalnie układ już spełni twoje teoretycznie pierwotne założenie, gdy raz klikniesz przycisk - nastąpi (żądane przez ciebie) opóźnienie i dopiero potem całe urządzenie się załączy.

    No chyba, że zaraz się okaże, że chodziło tobie o coś innego ;)

    0
  • #9 13 Kwi 2009 20:02
    demeus
    Poziom 18  

    Witam ponownie ;)

    Całkowicie rozumiem jak zrealizować opóźnienie załączenia układu przez uC. Niestety nie do końca rozumiem jak zrealizować opóźnienie wyłączenia tak by układ się wyłączał po przytrzymaniu przycisku przez określony czas, który będzie można ustalić programowo.

    --
    pozdrawiam,
    demeus

    0
  • Pomocny post
    #10 13 Kwi 2009 20:18
    mirekk36
    Poziom 42  

    hmmm a wiesz jak się programowo obsługuje zwykły przycisk ? jak się eliminuje skutki drgań styków ? bo przecież tam własnie stosuje się opóźnienia. Wykorzystaj to.

    0
  • Pomocny post
    #11 13 Kwi 2009 20:19
    Zbych_
    Poziom 24  

    demeus napisał:
    W normalnym stanie pracy układu na linii pomiędzy uC a T2 jest stan wysoki, w momencie wciśnięcia S4 na linii pojawia się stan niski T2 przestaje przewodzić i T1 wyłącza zasilanie stabilizatora. Gdzie tutaj jest miejsce na kontrolę tego przez uC?


    Póki trzymasz przycisk to zasilanie i tak jest włączone, a uC może zmierzyć czas trzymania przycisku. Jeśli czas trzymania jest wystarczająco długi, to wyłączasz sterowanie z uC, gość puszcza przycisk i wszystko się wyłącza. Bardziej obrazowo już nie potrafię tego opisać. Musisz tylko pamiętać, żeby sterowanie włączaniem przez uC nie odbywało się przez ustawienie 1 na linii, a przez włączenie pullupu - tylko wtedy możesz jednocześnie czytać stan przycisku.

    0
  • Pomocny post
    #12 13 Kwi 2009 20:22
    atom1477
    Poziom 43  

    demeus napisał:

    atom1477 napisał:

    Cytat:
    Dalej niestety nie rozumiem, jak programowo można zrealizować opóźnienie wyłączania układu


    Bardzo prosto. Nie zdejmujesz podtrzymania zasilania z uC dopóki przycisk nie będzie przytrzymany chociaż 1s.



    Ja tego nie napisałem ;)

    0
  • #13 13 Kwi 2009 20:34
    demeus
    Poziom 18  

    mirekk36 napisał:
    hmmm a wiesz jak się programowo obsługuje zwykły przycisk ? jak się eliminuje skutki drgań styków ? bo przecież tam własnie stosuje się opóźnienia. Wykorzystaj to.


    Tak, tak dokładnie to wiem, tylko ja to widzę w ten sposób, że niezależnie od działania uC wciśnięcie przycisku powoduje wyłączenie obu tranzystorów i wyłączenie zasilania układu. Przecież jeśli procesor wykryje wciśnięcie przycisku, czyli pojawienie się stanu niskiego na T2 to układ już się wyłączy.

    --
    pozdrawiam,
    demeus

    Dodano po 7 [minuty]:

    Ok wszystko jasne. Przepraszam panowie za natręctwo ;). Człowiek się cały czas uczy...

    Temat zamykam.

    --
    pozdrawiam świątecznie i mokro ;)
    demeus

    0