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
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.
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()
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. 😁
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.
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ę.
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.
@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.
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.
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.
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.
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. ;)
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
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ć :)
Świetnie jak zawsze. Proponuję założenie patronite - będę pierwszym wpłacającym. Pozdrawiam serdecznie
Ja też czekam na każdy odcinek z niecierpliwością, zwłaszcza na taki, który poświęcony jest cyfrówce.
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
Rob więcej filmów obejrzałem wszystkie
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ń.
Nawet bez przerwań nie musi czekać bezczynnie jeśli program napisany jest w trybie "maszyny stanów".
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.
najwięcej czasu w tym odcinku spędziłem na analizowaniu tych kawałków kodu w C :)
GourangaPL można tak napisać funkcje aby mikrokontroler nie zawieszał działania programu na czas drgań
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()
Puść baton..8:36.. to tak na śmiesznie, tak w ogóle to miło się ogląda.
Czy bramka Shmita nie załatwiłaby sprawy ?
Krótko, ale jakże treściwie 👍🏻👌🏻
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.
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. 😁
Super odcinek jak zawsze!
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.
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ąć?
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ę.
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.
@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.
procesor nie musi czekać bezczynnie przy programowym debouncingu trzeba tylko wiedzieć jak napisać program.
Marcin Karwot masz rację, też na to zwrocilem uwage
Witam. Jest gdzieś na kanale coś o pętlach fazowych (PLL) ? Nie mogę znaleźć.
Może jakiś odcinek o układach programowalnych? Pozdrawiam
Super :)
A co z rezystorami podciągającymi czy to jest dobre rozwiązanie ?
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.
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.
Albo podciągnąć rezystorem do GND lub VCC w zależności od potrzebnego stanu logicznego.
W klawiaturach jest rozwiązanie hardwarowe czy softwarowe?
z tego co sie orientuje to w windowsie mozesz sobie czulosc ustawic wiec soft
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.
Należy zwiększyć wypełnienie impulsów
Hej, mam pytanie. Skąd masz tą wieze? Studiowałeś czy jesteś samoukiem? Polecisz jakieś książki? Pozdrawiam
Polecam film: th-cam.com/video/NpG13yM4z9w/w-d-xo.html
Grzeczna dioda XD šmiechłem.
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. ;)
na ''stykach'' wyłącznika czy na ''zestykach''? :D
Mozna sobie poradzić z tym problemem programowo bez blokowania programu, bez tzw delay-ów. Można poslużyć się timerem i unikniemy blokowania programu.
Zazwyczaj wolnych timerów szybciej zaczyna brakować niż tych ms na odczekanie na klawisz.
Wykorzystując jeden timer sprzętowy możesz zrobić sobie nawet 100 programowych
Bardzo ciekawe te scalaczki od maxim, ale czy to da się gdzieś kupić?
Sklep Mouser ma, ale cena dość duża (max 6818 - 25zł).
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
Patrzyłem cenę max 6818 jak coś
EEV blog też o tym mówił jak coś.
Tragicznie sformatowany ten kod.
bo to RS Elektronika a nie Informatyka i dla tego nie zapytam o uzasadnienie czy propozycję lepszego
Raczej po to tak było żeby się na ekranie całe zmieściło przy takiej czcionce.