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.

ATMEGA88P - przycisk - czy podłączyć rezystor?

p.kaczmarek2 09 Sty 2015 22:08 1860 9
  • #1 09 Sty 2015 22:08
    p.kaczmarek2
    Poziom 23  

    Witajcie moi drodzy.
    Postanowiłem dodać do swojej Atmegi przycisk, tzw. "push button".
    Najpierw myślałem, że wystarczy wstawić go gdzieś między portem ustawionym w tryb odczytu a masą, ale w wyszukiwarce znalazłem troszkę inne schematy.
    W związku z tym mam kilka pytań (nie chcę niczego spalić).
    1. Jak najprościej wykorzystać przycisk do wysyłania impulsów do atmegi (typu "zwiększ int o 1"?
    2. Czy podłączenie przycisku S2 z tego schematu jest poprawne?
    ATMEGA88P - przycisk - czy podłączyć rezystor?
    Jest on między pinem PC4 a masą bez żadnego rezystora, to bezpieczne?
    W sumie na mikrokontrolery.blogspot też jest taki schemat...

    3. Czy podłączenie przycisku z tego schematu jest poprawne?
    ATMEGA88P - przycisk - czy podłączyć rezystor?
    Tu z kolei przycisk jest pomiędzy PD0 a Vcc (5V), a od tego PD0 również do masy pociągnięty jest rezystor 10k. Po co ten rezystor?

    4. Wytłumaczy mi ktoś czemu się stosuje dwa takie rozwiązania i które jest lepsze/gorsze?

    Z góry dziękuję za odpowiedzi!

    0 9
  • Pomocny post
    #2 09 Sty 2015 22:18
    mickpr
    Poziom 39  

    Ad.1 - Najprościej podłączyć go tak, jak opisano np. tutaj: http://mikrokontrolery.blogspot.com/2011/04/przycisk-drgania-stykow-debouncing.html
    Ad.2 - Poprawne, o ile zapewnisz wewnętrzne (programowe) podciągnięcie pinu (pull-up).
    Ad.3 - Moim zdaniem - jest "dziwne", choć teoretycznie poprawne to rzadko stosowane.

    p.kaczmarek2 napisał:
    Po co ten rezystor?
    Zapewnia zewnętrzne "pull down", bo inaczej zwierał byś sobie zasilanie do masy po wciśnięciu przycisku.
    Ad.4 Patrz link z Ad.1

    Poczytaj o pull-up i pull-down.

    0
  • #3 09 Sty 2015 22:26
    p.kaczmarek2
    Poziom 23  

    Czyli jak zastosuję schemat z pkt 2 to starczy, że dodam:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    i będzie mi działać wtedy:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dobrze rozumiem?[/code]

    0
  • #4 09 Sty 2015 22:27
    mickpr
    Poziom 39  

    Nie powinieneś omijać problemu debouncingu, ale tak, teoretycznie będzie ci działać.
    Ja w stosuję zewnętrzne rezystory realizujące "sprzętowy pull-up" praktycznie zawsze.

    0
  • #5 09 Sty 2015 22:27
    Ture11
    Poziom 34  

    Całość sprawy rozbija się o to, że wejścia mikroprocesora mają dość dużą impedancję, więc należy coś zrobić, by utrudnić przedostawanie się zakłóceń. Można albo włączyć wbudowane rezystory podciągające, albo dać zewnętrzne. Wewnętrznego rezystora podciągania nie zmienisz, bo jest w strukturze, dlatego też nie do każdego zadania wystarczy wbudowany pull-up/pull-down.

    Rozwiązanie takie jak na rysunku 3. po prostu ustala stan na wejściu, gdy przycisk jest rozwarty. Z jakiegoś powodu użyto zewnętrznego rezystora - może przycisk jest podłączony do kabla, który ma 50m i zbiera sporo zakłóceń (nie pamiętam wartości podciągania w atmedze). Ale uwaga! Jeśli włączymy w tym przypadku pull-up atmegi, będziemy tracić moc na zasilanie dzielnika rezystorowego (rezystor do plusa w M88 i zewnętrzny do masy).

    Ja jestem osobiście zdania, że podanie bezpośrednio masy lub +VCC na pin atmegi jest dopuszczalne, a czy bezpieczne - to zależy od zabezpieczenia programowego i sprzętowego. Myślę, że żeby wyszedł "bigos" to musiałoby dośjść do uszkodzenia atmegi, wtedy płyną znaczne prądy którędy chcą :D.

    0
  • #6 09 Sty 2015 23:17
    nsvinc
    Poziom 35  

    Ture11 napisał:
    Ja jestem osobiście zdania, że podanie bezpośrednio masy lub +VCC na pin atmegi jest dopuszczalne, a czy bezpieczne - to zależy od zabezpieczenia

    Nie do konca.
    Kazde (stosowane) cyfrowe wejście jest zaprojektowane sprzętowo tak, aby potrafiło przyjąć bez zadnych uszkodzen - w sposób zupełnie naturalny - przyjąć tak samo GND, jak i potencjał napięcia zasilania scalaka. Większość ma dodatkowo diody zabezpieczające (wejscie-katoda-anoda-masa i wejscie-anoda-katoda-plus). Często te diody mają swój spadek napięcia (rzędu, klasycznie 0.3V dla schottky dla małych prądów) dlatego w absolute maximum ratings podaje się Vmax VCC+0.3V i Vmin (VCC-0.3V).

    0
  • #7 09 Sty 2015 23:24
    BlueDraco
    Specjalista - Mikrokontrolery

    Diody zabezpieczające (pasożytnicze) są na wszystkich "normalnych" wejściach. Nie ma ich tylko na wejściach, które służą do podania wyższego napięcia w specjalnych trybach programowania - takim wejściem jest w AVR wejście RESET. Są to zawsze diody zwykłe, nie Schottky, więc mają napięcie przewodzenia rzędu 0.65 V.

    Często można z nich sprytnie skorzystać, trzeba tylko pamiętać o tym, że absolutnie nie wolno przepuścić przez nie prądu większego niż podany przez producenta - zwykle jest on specyfikowany na 1..20 mA.

    2
  • #8 09 Sty 2015 23:43
    94075
    Użytkownik usunął konto  
  • Pomocny post
    #9 10 Sty 2015 09:57
    dondu
    Moderator Mikrokontrolery Projektowanie

    nsvinc napisał:
    Ture11 napisał:
    Ja jestem osobiście zdania, że podanie bezpośrednio masy lub +VCC na pin atmegi jest dopuszczalne, a czy bezpieczne - to zależy od zabezpieczenia

    Nie do konca.
    Kazde (stosowane) cyfrowe wejście jest zaprojektowane sprzętowo tak, aby potrafiło przyjąć bez zadnych uszkodzen - w sposób zupełnie naturalny - przyjąć tak samo GND, jak i potencjał napięcia zasilania scalaka.

    Co więcej, nawet napięcia ujemne na poziomie -0,5V, a wartość ta jest związana z VF dolnej diody zabezpieczającej:

    ATMEGA88P - przycisk - czy podłączyć rezystor?

    oraz Vcc+0,5V dla pinów z górną diodą zabezpieczającą.

    Dlatego tak jak pisali koledzy wyżej to zwykła dioda o napięciu zbliżonym do 0,6V-0,7V.

    A co do głównych pytań, to przycisk w 99% przypadków podłączasz bez dodatkowych elementów po prostu do GND oraz pinu mikrokontrolera włączając programowo rezystor pull-up.

    0
  • #10 24 Lut 2015 17:07
    p.kaczmarek2
    Poziom 23