bezposrednio, drgania wyeliminowac najlepiej programowo.
Kiedyś widziałem jak ktoś programowo niwelował drgania poprzez "puszczenie sygnału przez rejestr". Nawet to dosyć dobrze działało. Działało to w taki sposób że przy każdym kolejnym wywołaniu pętli programu, na początku rejestr (np. 8 lub 16 bitowy), przesuwany jest o jeden w prawo, a na najmłodszą pozycję wpisywany jest stan z wejścia (przycisku). Dalej...
Przy puszczeniu raczej o drgania nie musisz się martwić jedynie przy naciskaniu. Możesz np takie coś dodać: http://obrazki.elektroda.pl/6737702800_1... I wtedy masz sygnał wciśnięcia klawisza (któregokolwiek) i odpada skanowanie cały czas (wykrywasz zbocze opadające na tym pinie czekasz 20ms jeśli dalej jest 0 to sprawdzasz który klawisz...
Zmień na: R1 = 100 kΩ, R2 = 100 Ω. D1 wywal, po co ona?
Witam W celu eliminacji drgań styku SW1 zastosowano na nim kondensatorek i filtr na wejściu CLK (zamiast diody D1 można zastosować Zenerka np. 4V7 w zależności od poziomu sygn. wejściowego?). Elementy które mają eliminować drgania styków wcale ich nie eliminują. Bo zastosowałeś układ różniczkujący a on przepuszcza każdy impuls na wejście CLK. Zazwyczaj...
Zastąpić można np. If sw=0 then waitms 10 if sw=0 then Coś tam wyelimnuje to tzw. drgania styków, czyli zastąpienie DEBOUNCE
Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Procedura getkbd zwraca 0 gdy nie naciśniesz zadnego klawisza (albo jakas inna wartosc). Musisz zrobić tak, aby po naciśnieciu dowolnego klawisza program czekal na wartosc 0 a dopiero pozniej jezeli odbierze jakas wartosc to niech zapisuje to do tablicy. Np: dim x as byte dim i as bit do x=getkbd if x= 0 then i=0 end if if x<>0 and i =0 then tablica=x...
Generalnie problemem jet to co opisał Sareph - Twoja funkcja jest beznadziejnie napisana :lol: Tak arduinowo :D Po kiego grzyba sprawdzać czy przycisk jest jeszcze naciśnięty i dopiero wtedy reagować - jak wspomniano przyciski same z siebie bez naciskania nie generują sygnału, więc skoro jakiś wystąpił to wystąpił i koniec i nie trzeba sprawdzać za...
... i skoro ja mu wyłączam INT0, to co prawda go nie obsluguje, ale gdy tylko aktywuję przerwanie INT0, następuje obsługa przerwania sprzed sekundy? Wg mnie, tak być nie powinno, a jednak tak się dzieje. Jak to możlwie? Czy któs zna odpowiedź? Poprostu przed włączeniem przerwania dobrym zwyczajem jest skasowanie ewentualnej flagi tego przerwania. Ja...
return TRUE; ++licznik1; No ja też się zastanawiam dlaczego zmienna licznik1 nigdy nie zmienia wartości ;) Włącz flagę -Wunreachable-code, to kompilator sam Cię ostrzeże. Pozdrawiam, Dr.Vee
wstaw rezystor między kondensatorem c22 a vcc (10k).
1HZ to troche za wolno, nawet dla flegmatyka :). Podziel te swoje 12MHz tak bys dostal okres okolo 10ms. Tyle mniej wiecej wynosi okres drgania kiepskich zestykow. Typowo wejsie styku robi sie tak, ze w stanie nieaktywnym na wejsciu masz logiczna '1'. Gdy przycisniesz przycisk, wejscie to zwierane jest do poziomu '0'. zatem by wykryc ze przez okres...
https://obrazki.elektroda.pl/1290954000_... Garść praktycznych porad dla początkujących to (mam nadzieję) cykliczna seria przydatnych układów, porad i wskazówek, które powinny pomóc w unikaniu wpadek albo rozwiązać różne problemy. Seria będzie się ukazywać raczej nieregularnie, więc postaram się dodać do każdego odcinka linki do pozostałych....
Przy wciśniętym przycisku kondensator rozładowuje się przez R2, i jeśli dzieje się to odpowiednio wolno, to efekt drgań styków jest rzeczywiście mniej odczuwalny. Ale po puszczeniu przycisku kondensator ładuje się przez oba rezystory szeregowo, co powoduje, że będzie się to działo jeszcze wolniej, niż rozładowanie. Dioda bocznikuje R2 w czasie ładowania....
[syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...
kiedy wciskam przycisk, liczenie czasu nie rozpoczyna się. czy mógłbyś zaproponować inaczej napisany kod? Wstępna ocena dostępnych informacji Analiza podanych przez użytkownika danych: - Problem zgłoszony przez użytkownika: - Po wciśnięciu przycisku, liczenie czasu nie rozpoczyna się . - Użytkownik prosi o propozycję innego kodu, który rozwiąże ten...
jeśli wykryjesz, że naciśnięto przycisk (rozumię, że tyle zrobiłeś) to wstaw (najprościej): LCALL WAIT_KLAW a gdzieś poza programem dodaj procedurkę: WAIT_KLAW: DJNZ r7,$ DJNZ r6,WAIT_KLAW RET powinno działać ;-) jeśli gdzieś indziej używasz rejestrów r6/r7 to możesz oczywiście użyć innych rejestrów lub dowolną komurkę pamięci ram (zamiast r7/r6 może...
Sygnał z transoptorów daj na jakąś bramkę z wejściem Schmitta. Myślę że w tym wypadku wystarczy. Skutecznie powinna wyeliminować zakłócenia w sygnale wejściowym, zwłaszcza że sygnały nie będą zmieniały się bardzo powoli i nie będą szczególnie zakłócone. Co do rejestru to przepraszam, mój błąd - 4015. Podwójny rejestr 4 bitowy. Połączyć dwa w szereg...
Każdy program zawierający delayms da się zapisać w sposób nie wykorzystujący delayms. Możesz do każdego przycisku posiadać zmienną (wystarczy jeden bajt). I np co 1ms (w pętli głównej lub w przerwaniu od licznika) sprawdzać stan przycisku - jeśli nie jest naciśnięty, zerujesz zmienną, jeśli jest to zwiększasz o 1. Jeśli zakładasz, że drgania mogą trwać...
budujac moj uklad zapomnialem o oczywistym problemie eliminacji drgan stykow, nie mam juz miejsca za bardzo na plytce , wiec pozostaje mi zastosowanie obwodu RC, mam wiec pytanie jakiego rzedu moga byc drgania w zwyklym przelaczniku 2 pozycyjnym oraz w mikroswitchu ? 50ms-100ms ? co sie stanie jesli dobiore zbyt duza stala czasowa?
Jeśli do drgającego styku podłączymy szybki licznik, to taki licznik może zmienić stan kilka razy zanim drgania styku się zakończą, w takim przypadku zabezpieczenie jest potrzebne. W przypadku MAX038 nawet jeśli podczas zmiany stanu nastąpi kilkukrotne przełączenie to tam i z powrotem, to po krótkim czasie (kilkadziesiat ms) osiągnie stan ustalony....
Kolego andrzej_nied, Proponuję zastosować timer do generowania przerwań co około 2.5ms. W przerwaniu testujemy wejścia portów nie zawracając sobie głowy jakimiś 'drganiami styków'. Sprawdzone, pewne, proste. Czas 2.5ms dobrany jest tak aby zwykły enkoder 20-32imp./obrót obracany energicznie ręką nie zgubił impulsu (gdy czas pomiędzy przerwaniami za...
Ja bym sprawdzał w przerwaniu ale przez np 100 ms. Drgania mogą być i przez 30 ms jak masz nie za bardzo styki. Przykłady sa na np www.8052.com W bascomie jest rozkaz debounce i on załatwia wszystko Arek
Błędnie masz rozwiązaną sprzętową eliminację drgań styków kontraktona. Rezystor R3 powinien być dołączony nie do masy, lecz do +5V. Kontrakton powinien być dołączony między wejście mikrokontrolera i masę. Zobacz .
Radykalną metodą jest eliminacja drgań przez zastosowanie bramki Schmidta z obwodem RC eliminującym drgania.Dołączenie C równolegle do styków też może rozwiązać problem,ale skuteczność bardzo zależy od oporności źródła i obciążenia. Można też stosować uniwibratory,rejestry przesuwne itd. W dołączonym pliku wartości RC są przykładowe. Przyjmuje się że...
Ale BlueDarco, IMHO można dać między procesor mały układ FPGA (np. LATTICE MachXO2-256) i zrobić tam wielokanałową sprzętową eliminację drgań styków ;) Mimo to czasem niestety programowa eliminacja nie ma sensu - np. jeśli enkoder podpinamy bezpośrednio do odpowiednio skonfigurowanego timera ;)
Brak oczekiwania na zwolnienie przycisku i eliminacji drgań styków.
Jak przy każdym elemencie stykowym. Eliminację drgań zapewni ci cykliczny odczyt przykładowo co 100 ms.
Mają się włączyć w czasie wciskania a wylączyć w trakcie puszczenia, więc chyba przydało by się to maskowanie drgań przycisków............. Przy takiej, statycznej pracy eliminacja drgania styków (debounce) nie jest konieczna , jakkolwiek ze względu, że na wyjściu jest sterowany przekaźnik, mogą byc zauważone pewne zakłócenia w załączaniu cewki, co...
Witam, mam pytanie o rzecz oczywistą dla wielu, w jaki sposób eliminuje się drgania styków w "prawdziwych" urządzeniach ? takich gdzie znajduje sie uC. Czy jest eliminacja programowa czy sprzętowa ? Jak programowa to jak wygląda program ? Bo nie chce mi się wierzyć że programiści nie mają jakiegoś bardzo dobrego i prostego sposobu na eliminacje drgań,...
Właściwie nie musi mieć. Jeśli przerwania są co kilka-kilkanaście ms to eliminacja drgań robi się niejako przy okazji.
To podłącz kondensator 100nF równolegle do tego przycisku. A jak to nie pomoże to zastosuje bramkę ze schmittem która zapewni eliminację drgań styków jak i odpowiednią stromość zbocza.
Kod nieczytelny - użyj tagów Syntax C. O eliminacji drgań styków słyszałeś? Ogólnie nie jest dobrym pomysłem włączanie przerwań przy braku procedur ich obsługi.
Witam Dodam jeszcze, że na schemacie nie ma układu eliminacji drgań styku mikrowyłącznika i może wystąpić zjawisko przeskakiwania o 2 lub 3 pozycje (zamiast o jedną ) przy pojedynczym naciśnięciu przycisku.
Witam, mam problem z programowa eliminacja drgań styków w przerwaniu. Wiem, że temat mógł się przewinąć wiele razy ale nie znalazłem odpowiadającego mi rozwiazania. Wykorzystuje przerwanie EXTI, w ktore zostaje wywoływane w momencie wykrycia opadajacego zbocza. W przerwaniu mam zamiar uruchomić timer1, w którym wykorzystuje Input Capture by zatrzasnąć...
Jeśli impuls zegarowy bedzie przychodził rzadziej niż co kilkadziesiąt milisekund nie ma potrzeby stosowania układu eliminacji drgań styków na D, w najgorszym przypadku jeśli trafisz na drgania styków dostaniesz poprawny stan dopiero w następnym cyklu zegara.
Jak program wejdzie raz do obsługi przerwania to je wyłącza. Czyli eliminacja drgań styków jest załatwiona. Otóż nie jest załatwiona. Nawet jak wyłączysz przerwania na początku to i tak nie wyłączysz ich bezpośrednio po przyjęciu przerwania, a dopiero po paru mikrosekundach jak 28 rejestrów poleci na stos. W tym czasie może zostać zgłoszone następne...
W takim przypadku ja zrezygnowałbym z INTów i przeszedł na zwykłe skanowanie klawiatury za pomocą timera i przerwania z niego - łatwo zrobisz eliminację drgań styków.
Rezystory podciągające ATMega ma wbudowane - trzeba tylko włączyć. Jeśli to praca inżynierska to pora zacząć od podstaw pracy z AVRami... A do eliminacji drgań styków czasem same kondki nie starczają - owszem, pomagają, ale nie niwelują problemu do 0
A co zrobić żeby kolejne kliknięcie zmieniło x na zero? [syntax=c]if(PINC & 0x01) { if (x) x = 0; else x=1; }[/syntax] Oczywiście musisz też zrobić jakąś eliminację drgania styków.
Układ z pierwszego schematu nie koniecznie będzie pracował poprawnie z powodu braku układu eliminacji drgań styków (przycisku). I jeszcze może takie pytanie trochę nie na miejscu, ale czy podłączyłeś zasilanie do układu 4013 (nóżka 7 i 14) ?
Po za tym z tego co widzę, to kolega Benex napisał o jednym switchu, a nie o tysiącu :-D Tym bardziej nie ma sensu dodawać elementów zewnętrznych tylko zrobić to programowo :) Ciekawostką jest, że Atmel w dokumentacji oficjalnie zaleca stosowanie takich filtrów. Możesz podać źródło? Osobiście z powodzeniem je stosuję, dlatego wyraziłem jedynie swoje...
Zacznij od tego if pin.x=0 then waitms 30 call podprogram else end if Po przejściu do podprogramu też możesz dać na wstepie waitms 100 (jeśli w nim też używasz tego przycisku). Switch podciągnięty do masy? - rozwiń temat :) Kolego zabardzo, to co podpowiadasz to niestety jest niezabardzo, albo nawet gorzej :( ... spróbuj wytłumaczyć gdzie jest w tym...
Drgania styków i ich eliminacja - poszukaj, poczytaj. Domniemam że impulsy nie pochodzą z innego układu cyfrowego ale z przycisku;-)
Może zadziałać taki układ ale musi zależy czy w urządzeniu gdzie jest ten przycisk jest jakiś mikrokontroler albo układ eliminacji drgań syków i wykryje że nie ma zwarcia tylko po drodze jest spadek napięcia szczególnie pryz układach zasilanych z niskiego napięcia ja stosuje w takim wypadku układ 4066 jako klucz.
W celu eliminacji drgań styków należy użyć przerwania licznika, by odczytywać stan przycisku tylko raz na około 10 ms . Nie używamy funkcji Debounce i delay_ms ! Czy przycisk został naciśnięty sprawdzamy w zmiennej globalnej dostępnej w programie głównym.
Wszystko z powodu udziwnień które stosujesz. A wystarczą definicje dla LEDów ON i OFF. Oraz sprawdzanie stanu przycisku. [syntax=c]if(PIND & KEY_UP1) LED1_ON; else LED1_OFF;[/syntax] Eliminacja drgań styków jest niepotrzebna skoro ma to być układ kombinacyjny, a do tego niczym nie sterujący a jedynie zapalający LEDy.
Brakuje zablokowania wejścia CLK rezystorem - wejścia CMOSów nie moga wisieć w powietrzu a u Ciebie tak właśnie jest przy otwartym SW. Daj między nóżkę 14 a masę rezystor 4,7k. Po drugie potrzeba układ eliminacji drgań/odbić zestyków ale o tym sobie już sam poczytaj.
Na schematach masz dwa schematy: jeden na układzie CMOS 4013 (dwa przerzutniki typu D) można go zasilać napięciem niestabilizowanym od 3 do 15 V Drugi układ jest zrobiony na układzie 7474 (74LS74, 74HCT74, 74HC74, 74ACT74), zasilanie 5V. Pierwszy przerzutnik w układzie służy do eliminacji drgań zestyków, drugi pracuje jako dwójka licząca (przerzutnik...
eliminacja drgania styków eliminacja drgania styków schemat eliminacja sprzężeń
moment dokręcania śruby korbowody oporność głośnik schemat rozrząd laguna
buczenie oscyloskopem skoda roomster
Jak uruchomić piłę łańcuchową Eurotec? Saving and Restoring Data in OpenBeken OBK Drivers