Debouncing [RS Elektronika]

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 พ.ย. 2024

ความคิดเห็น • 51

  • @piotrjanicki18
    @piotrjanicki18 2 ปีที่แล้ว +1

    Właśnie z tym problemem walczyłem. Dzięki za cenne rady.
    Prowadzisz kanał tak, że nawet odcinki 8 godzinne nie byly by w stanie znudzić :)

  • @IHearEverythingDude
    @IHearEverythingDude 7 ปีที่แล้ว +15

    Świetnie jak zawsze. Proponuję założenie patronite - będę pierwszym wpłacającym. Pozdrawiam serdecznie

  • @lipcowyporanek177
    @lipcowyporanek177 7 ปีที่แล้ว +8

    Ja też czekam na każdy odcinek z niecierpliwością, zwłaszcza na taki, który poświęcony jest cyfrówce.

  • @grzes73hej
    @grzes73hej 7 ปีที่แล้ว +1

    Doświadczyłem problemu debouncingu jak robiłem licznik w maszynie zbierającej w drukarni. Na szczęście licznik jest wyposażony w filtr, którego czułość ustawia się programowo.
    Bardzo cenne informacje. Dzięki i pozdrawiam

  • @arturmienkowski4200
    @arturmienkowski4200 7 ปีที่แล้ว +25

    Rob więcej filmów obejrzałem wszystkie

  • @BHBalast
    @BHBalast 7 ปีที่แล้ว +13

    9:06 Procesor nie musi czekać bezczynnie na to, aż drgania styków się skończą, jeśli kod do ich obsługi napisany jest z wykorzystaniem przerwań.

    • @matadsz
      @matadsz 7 ปีที่แล้ว +7

      Nawet bez przerwań nie musi czekać bezczynnie jeśli program napisany jest w trybie "maszyny stanów".

  • @KOLEJ_pl
    @KOLEJ_pl 7 ปีที่แล้ว +2

    9:06 dodatkową zaletą jest możliwość łatwego zaimplementowania w kodzie stopniowego przyspieszania zmiany wartości ustawianej przyciskiem (np. przy przytrzymaniu przycisku do 5 sekund wartość przeskakuje o jeden, a przy dłużyszm trzymaniu o 10). Stosuje się to przy przyciskach typ REW/FF czy ustawianiu daty/godziny w zegarach.

  • @GourangaPL
    @GourangaPL 7 ปีที่แล้ว +4

    najwięcej czasu w tym odcinku spędziłem na analizowaniu tych kawałków kodu w C :)

    • @Zuubiik
      @Zuubiik 7 ปีที่แล้ว

      GourangaPL można tak napisać funkcje aby mikrokontroler nie zawieszał działania programu na czas drgań

  • @grankeee
    @grankeee 7 ปีที่แล้ว +1

    Dziękuję za kolejną świetną lekcję, jak zawsze :) Drobna uwaga, eliminacja na poziomie software absolutnie nie oznacza, że program musi czekać i nic nie robić, bowiem nie trzeba używać funkcji delay(). Tworzymy zmienną unsigned long int dla każdego przycisku, w każdym obiegu pętli sprawdzamy czy stan przycisku się zmienił a następnie ignorujemy zmiany stanu przez 40ms (o ile pamiętam taki czas drgań ma tactile button). Oto przykład:
    unsigned long int lastChange=0;
    boolean pressed=false;
    main()
    {
    if(digitalRead(pinButton)!=pressed && (millis()>lastChange+40 || millis()

  • @mariusz17772
    @mariusz17772 6 ปีที่แล้ว

    Puść baton..8:36.. to tak na śmiesznie, tak w ogóle to miło się ogląda.

  • @888waldi
    @888waldi 6 ปีที่แล้ว +5

    Czy bramka Shmita nie załatwiłaby sprawy ?

  • @ukaszrugaa104
    @ukaszrugaa104 7 ปีที่แล้ว +1

    Krótko, ale jakże treściwie 👍🏻👌🏻

  • @thephper
    @thephper 7 ปีที่แล้ว +2

    problem był mi znany, ale nie znałem jego nazwy. Ja rozwiązuję go softwareowo (w Arduino). Dziękuję za odcinek, teraz widzę więcej możliwości.

  • @misiektoolucky159
    @misiektoolucky159 7 ปีที่แล้ว

    Kurde jestem totalnie zielony w tych sprawach, oglądam z ciekawości bo mam tylko podstawy. I oglądając tylko kilka pierwszych odcinków, już na początku tego pomyślałem "kondensator". Chyba mogę być z siebie dumny. 😁

  • @ukaszklucznik7253
    @ukaszklucznik7253 6 ปีที่แล้ว

    Super odcinek jak zawsze!

  • @kolys1
    @kolys1 7 ปีที่แล้ว +5

    Metode z kondensatorem odkryłem kiedyś przypadkiem. Miałem problem z lewym przyciskiem w myszce komputerowej. Klikałem raz a mysz czasem interpretowała to jako podwójny klik. Wlutowanie przy przycisku kondensatora smd o odpowiedniej pojemności załatwiło sprawę. Minęło już prawie 4 lata a przycisk nadal działa poprawnie.
    W wierzy miałem trochę zużyty enkoder od regulacji głośności.Reagował chaotycznie, ja chciałem uciszyć a on podgłaśniał albo przeskakiwał o kilka poziomów. Nie chciałem wymieniać enkodera więc wlutowałem przy nim dwa dodatkowe kondensatory smd. Od tego czasu enkoder działa poprawnie już ponad 2 lata.

    • @jakubmateusz1999
      @jakubmateusz1999 7 ปีที่แล้ว

      Pomijając fakt że ktoś wypuścił do produkcji mysz z takimi problemami, czego oczekiwałeś wlutowując tam kondensator? Co chciałeś osiągnąć?

    • @kolys1
      @kolys1 7 ปีที่แล้ว +2

      Mysz kosztowała 20zł więc nie ma się co dziwić. Liczyłem na to że w ten sposób wyeliminuję dodatkowe impulsy spowodowane niepewnym stykiem w przycisku no i udało się.

  • @tomekpeki
    @tomekpeki 7 ปีที่แล้ว +1

    Co do rozwiązań sprzętowych warto było jeszcze wspomnieć o filtrach dolnoprzepustowych RC. Jeśli o soft chodzi to program niekoniecznie musi czekać, wystarczy, że weźmie pierwsze zbocze/impuls a później sprawdza stan przycisku za np. 50ms kiedy już drgania ustaną na bank.

    • @pllevi
      @pllevi 7 ปีที่แล้ว

      @tomekpeki Można zrobić jeszcze lepiej - próbkować stan przycisku lub przycisków co 30-35 ms . Stan przycisku powinien mieć tą samą wartość dla n próbek - wtedy przełączmy stan logiczny. W ten sposób można badać stan wielu przycisków bez blokowania programu. Przy ~33 ms 3 próbki są wystarcząjce dla większości przełączników i użytkownik ma wciąż wrażenie że przycisk reaguje szybko. Oczywiście dodanie pasywnego mechanizmu do eliminacji drgań (na przykład RC) dodatkowo poprawia stan. Zabawa z przerzutnikami ... bo ja wiem - trochę drogie rozwiązanie chyba, że będziesz testował wiele przycisków w sekwencji (każdy uruchamiany osobnym tranzystorem) albo jeszcze lepiej w matrycy.

  • @marcinkarwot6652
    @marcinkarwot6652 7 ปีที่แล้ว +8

    procesor nie musi czekać bezczynnie przy programowym debouncingu trzeba tylko wiedzieć jak napisać program.

    • @grzesiekb9142
      @grzesiekb9142 7 ปีที่แล้ว

      Marcin Karwot masz rację, też na to zwrocilem uwage

  • @waldekpodaj7472
    @waldekpodaj7472 7 ปีที่แล้ว +1

    Witam. Jest gdzieś na kanale coś o pętlach fazowych (PLL) ? Nie mogę znaleźć.

  • @skrzatyex
    @skrzatyex 7 ปีที่แล้ว +2

    Może jakiś odcinek o układach programowalnych? Pozdrawiam

  • @sebastiansiemiradzki
    @sebastiansiemiradzki 7 ปีที่แล้ว +1

    Super :)

  • @korneliuszksiazek6945
    @korneliuszksiazek6945 7 ปีที่แล้ว +1

    A co z rezystorami podciągającymi czy to jest dobre rozwiązanie ?

  • @greges4723
    @greges4723 7 ปีที่แล้ว

    A moze w następnym odcinku powie Pan coś o prądzię przemiennym a tak konkretniej to jego drodze od naszych "skrzynek" na klatkach schodowych do gniazdek w domu, nie chodzi mi tutaj o to aby tłumaczył Pan jak "kłaść elektrykę" na budowie czy w domu, ale na przykladzie jednego gniazdka opisał cały proces wszystkie zabezpieczenia, jak to jest połączone, gdzie w żadnym wypadku nie można iść na skróty, skoro był odcinek o masie to może też coś o uziemieniu, dlaczego przewód neutralny "uziemia się" i co to w ogóle znaczy, Sugeruję skromnie taki temat na następny odcinek gdyż co raz częsciej wielu tak zwanych fachowców podejmuje się takich prac w domu na własną rękę nie mając o tym większego pojęcia co już nie wspominając o bezpieczeństwie.

  • @banytube
    @banytube 7 ปีที่แล้ว

    W asemblerze, taki programowy filterek jest znacznie mniej skomplikowany, zwłaszcza w wykorzystaniem systemu przerwań i manewrów na stosie w taki sposób, aby procedura detekcji, była obsługiwana jako pierwsza po przechwyceniu przerwania przez RTI i to po jej wykonaniu powinien nastąpić powrót do przerwanej pętli głównej Przez RET. Stos nam trochę może urosnąć, ale szansa na zgubienie impulsu jest mniejsza przez szybkie zatwierdzenie przerwania.

  • @elektrotomasz
    @elektrotomasz 6 ปีที่แล้ว +1

    Albo podciągnąć rezystorem do GND lub VCC w zależności od potrzebnego stanu logicznego.

  • @genbu6831
    @genbu6831 7 ปีที่แล้ว +2

    W klawiaturach jest rozwiązanie hardwarowe czy softwarowe?

    • @gruchenstein9163
      @gruchenstein9163 7 ปีที่แล้ว

      z tego co sie orientuje to w windowsie mozesz sobie czulosc ustawic wiec soft

  • @bidonn9655
    @bidonn9655 7 ปีที่แล้ว +1

    Wie ktoś może jak regulować napiecie w zasilaczu impulsowym.
    Bo mam problem poniewarz jak wiadomo zasilacz impulsowyvdaje napięcie wtedy gdy go obciążymy.
    Jeżeli ktoś wie to prosze o pomoc.

    • @rafakrakowiak2719
      @rafakrakowiak2719 5 ปีที่แล้ว

      Należy zwiększyć wypełnienie impulsów

  • @rajmundmortis3300
    @rajmundmortis3300 7 ปีที่แล้ว +1

    Hej, mam pytanie. Skąd masz tą wieze? Studiowałeś czy jesteś samoukiem? Polecisz jakieś książki? Pozdrawiam

    • @RSElektronika
      @RSElektronika  7 ปีที่แล้ว

      Polecam film: th-cam.com/video/NpG13yM4z9w/w-d-xo.html

  • @husc7775
    @husc7775 3 ปีที่แล้ว

    Grzeczna dioda XD šmiechłem.

  • @Makuslaw
    @Makuslaw 7 ปีที่แล้ว

    0:35 - „przerzutnik typu flip-flop”? A to nie czasem przerzutnik jest polskim tłumaczeniem angielskiego flip-flop (reagowanie na zbocze), a zatrzask - tłumaczeniem angielskiego latch (reagowanie na poziom)?
    Na filmie imho zaprezentowano przerzutnik typu T. ;)

  • @Oelngatikameie
    @Oelngatikameie 7 ปีที่แล้ว

    na ''stykach'' wyłącznika czy na ''zestykach''? :D

  • @wojciechgorzoka1722
    @wojciechgorzoka1722 7 ปีที่แล้ว

    Mozna sobie poradzić z tym problemem programowo bez blokowania programu, bez tzw delay-ów. Można poslużyć się timerem i unikniemy blokowania programu.

    • @Matlalcueitl
      @Matlalcueitl 7 ปีที่แล้ว

      Zazwyczaj wolnych timerów szybciej zaczyna brakować niż tych ms na odczekanie na klawisz.

    • @kovalx51
      @kovalx51 7 ปีที่แล้ว +2

      Wykorzystując jeden timer sprzętowy możesz zrobić sobie nawet 100 programowych

  • @ammorapl
    @ammorapl 7 ปีที่แล้ว

    Bardzo ciekawe te scalaczki od maxim, ale czy to da się gdzieś kupić?

    • @KACPER050599
      @KACPER050599 7 ปีที่แล้ว +1

      Sklep Mouser ma, ale cena dość duża (max 6818 - 25zł).

    • @jakubmateusz1999
      @jakubmateusz1999 7 ปีที่แล้ว +1

      www.digikey.pl/product-detail/en/maxim-integrated/MAX6816EUS-T/MAX6816EUS-TCT-ND/774155
      12.3 zł za sztukę, ciut za drogo, ale z drugiej strony jak się kupi 2.5 tyś na raz to już po 5.7 zł
      www.digikey.pl/product-detail/en/maxim-integrated/MAX6816EUS-T/MAX6816EUS-TTR-ND/774084

    • @KACPER050599
      @KACPER050599 7 ปีที่แล้ว +1

      Patrzyłem cenę max 6818 jak coś

  • @Maku254
    @Maku254 7 ปีที่แล้ว

    EEV blog też o tym mówił jak coś.

  • @robikz
    @robikz 7 ปีที่แล้ว

    Tragicznie sformatowany ten kod.

    • @mtma2353
      @mtma2353 6 ปีที่แล้ว

      bo to RS Elektronika a nie Informatyka i dla tego nie zapytam o uzasadnienie czy propozycję lepszego

    • @robikz
      @robikz 6 ปีที่แล้ว

      Raczej po to tak było żeby się na ekranie całe zmieściło przy takiej czcionce.