Skocz do zawartości

Stabilizacja przycisku do symulacji impulsów


cyryllo

Pomocna odpowiedź

Witam ponownie.

Odnosząc się do tego tematu

Mam przylutowane przyciski małe za pomocą których symuluje impulsy dla liczników. Problemem jest to, że gdy wciskam przycisk to czasem zliczy mi zamiast 1 impuls np 2-3, myślę że jest to spowodowane stykami, które nie są idealne i przy styku wywoływane są jakieś przerwy.

Pomyślałem czy nie użyć do tego np układu 555 czy układ poradzi sobie z takim ustabilizowaniem impulsu aby nie zliczało mi jednego naciśnięcia 2-3 razy. Dodam że przy symulacji impulsów np z drugiej maliny lub arduino liczniki dobrze zliczają impulsy.

Ewn. jakieś inne rozwiązanie mile widziane.

Link do komentarza
Share on other sites

Tak, to jest drganie styków, też miałem taką sytuację, przy odpowiednio dużej częstotliwości próbkowania przycisku bez jakiegokolwiek 'zabezpieczenia' MCU potrafił zliczyć nawet 300 zmian wartości przy rzekomo jednym naciśnięciu.

Rozwiązanie może być albo softwarowe albo hardwarowe. Z hardwarowych można użyć np przerzutnika SR na układzie 74LS00

Można zastosować filtr RC z układem 74HCT14

Można zastosować gotowy chip MAX6816/17/18 do których podpinamy przycisk a z MAXa mamy czysty sygnał.

Z zastosowań softwarowych jest pewnie tyle ile osób podchodziło do tematu, dużo informacji jest zawartych tutaj:

http://mikrokontrolery.blogspot.com/2011/04/przycisk-drgania-stykow-debouncing.html

  • Lubię! 1
Link do komentarza
Share on other sites

@KonradIC13

Przymierzam się do MAX6816/17/18 lub 74LS00 i właśnie do ostatniego układu mam pytanie czy ma on kilka wejść i wyjść czyli mogę spokojnie podpiąć 3 różne przyciski do tego układu, dobrze rozumiem? Bo MAX6816/17/18 są pojedynczymi układami.

Dla mnie łatwiej jest użyć gotowego układu niż bawić się rezystorami i kondensatorami.

Pytanie pomocnicze czy układy MAX6816/17/18 dostanę w polce oprócz w kamami za 11 zł? bo pozostałe są w sklepach ale nigdzie akurat tych nie widzę :/

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

MAX6816 obsługuje jeden zestyk zwierny, 6817 dwa a 6818 aż osiem.

Do 7400 możesz podłączyć dwa ale uwaga: muszą to być przełączniki a nie zwykłe przyciski. Musisz mieć coś co przełącza z jednego zestyku na drugi (tzw. SPDT). Takie kwadratowe maluchy z czarnym, przyciskanym kołeczkiem w środku nie są przełącznikami.

Zwykły przycisk możesz "odśmiecić" wyłącznie metodami czasowymi: oporniki/kondensatory lub tak jak w MAXach - generator + licznik.

Jeśli masz zrobić jeden i to tylko do testów, to wstaw filtr RC i użyj przycisku - to chyba najprostsze. Co będzie docelowym źródłem impulsów dla Twojego licznika?

  • Lubię! 1
Link do komentarza
Share on other sites

Podejdę jutro do sklepu i kupie te które maja bo 1 zł to nie taka straszna cena + kondensatory bo nie mam 🙂

Źródłem będą liczniki prądu a jakie to nawet jeszcze nie wiem. Wiem jakie częstotliwości i tyle 😋

Mam się na dniach dowiedzieć co to będzie. Ale obecnie na tym etapie tylko przyciski maja dobrze generować impulsy.

Dzięki za podpowiedzi 🙂

Link do komentarza
Share on other sites

Z całym szacunkiem ale "mam kabelek z + który jest podłączony do przycisku" nie jest językiem elektroniki.

Mogę Ci tu narysować kilka schematów podłączenia przycisku z filtrem RC ale dlaczego mam zgadywać? Wysil się choć trochę i nawet jeśli nie jesteś orłem w temacie, narysuj to jak masz teraz zrobione. Wiesz, schemat za schemat, deal?

Przecież na pewno nie chcesz dostawać podobnie nieskładnych odpowiedzi jak Twoje pytania, prawda?

EDIT: Ja też mam jakiś kondensator a i opornik by się znalazł. Czy jesteś w stanie zgadnąć czy da się ich użyć do filtrowania przycisku? Nie? To dlaczego wymagasz tego ode mnie?

Jakie elementy kupiłeś?

  • Lubię! 1
Link do komentarza
Share on other sites

Sorki, rzeczywiście poleciałem bez przyłożenia się do pytania. W Raspberry Pi pin ustawiony mam jako input i z częstotliwością około 270 na sekundę sprawdzam zmiany stanów pinu i zliczam zmiany pomiędzy stanami 0 i 1. chciałem za symulować impulsy poprzez przycisk z jednego końca podłączone dodatnie napięcie 3,3v i przy przyciskaniu przycisku prąd popłynął by do pinu a program wykrył by stan dodatni na pinie.

Próbowałem tylko 2 sposoby ale i tak najlepiej działa 1 opcja bo zlicza w miarę normalnie choć zdarzają się podwójne lub potrójne zliczenia i to jest moim problemem. Wydaje mi sie że wszystkie w/w przykłady układów poza MAX6816/17/18 nie nadają się do moich potrzeb bo wydaje się, że potrzebują normalnego przełącznika a nie przycisku, chyba że się mylę (oby).

Kupiłem kondensatory 100 i 200 nF oraz 10 i 20 uF. Rezystorów mam pełno o różnych wartości od 100ohm do 200Kohm. Kupiłem również układy 74LS00 i 74HCT14

Jeśli był byś mi w stanie pomóc i pokazać jak podłączyć układ lub RC.

Przepraszam za moje chaotyczne wpisy :/ Obiecuję się poprawić 🙂

Link do komentarza
Share on other sites

Chociaż lepszy jest pierwszy filtr RC - masz wzór na częstotliwość. Dla Ciebie kilka kHz będzie dobre.

Tak tez podłączałem, ale najwidoczniej źle dobrałem rezystor i kondensator.

Link do komentarza
Share on other sites

Rysunek u góry przedstawia coś zupełnie innego.

Pytanie jest jak długo jest wciśnięty ten przycisk?

Jak dobierzesz R = 1k i C=100nF to masz częstotliwość 1,5kHz. Powinno nieźle działać jak masz częstotliwość odczytu 270Hz.

Do tego najlepiej mieć bramkę z układem schmitta na wejściu...

Link do komentarza
Share on other sites

Rysunek u góry przedstawia coś zupełnie innego.

Wiem ale w między czasie kombinowałem i taki układ też próbowałem tylko miałem źle dobrane R i C.

Dzięki na naprowadzenie.

Z przyczyn tego że licznik sprawdza z 275Hz a ja do testów potrzebuję tylko aby na razie zliczać tylko z przycisków wyliczyłem sobie i użyłem najmniejsze jakie miałem 10uF i 100ohm i teraz przyciski zdaje się dobrze zliczają. przy zwykłym przyciskaniu (maksymalnie 2-3/s).

Link do komentarza
Share on other sites

No tak, dużo zostało już napisane i skoro coś już tam działa to pewnie zostawisz jak jest ale.. ja chciałem wrócić do korzeni. Umówiliśmy się na deal, więc i ja mam schemat 🙂

Zacznijmy od tego, że port wejściowy, żeby dobrze działać musi widzieć dwa różne napięcia. Najlepiej, żeby jedno było jak najbliższe 0V a drugie w okolicach 3.3V, bo takie jest zasilanie pinów GPIO Maliny.

Twoje pierwsze rozwiązanie podaje napięcie 3.3V w czasie zwarcia zestyku - to dobrze, ale co się dzieje gdy przycisk zostanie puszczony? Nie wiadomo, napięcie na wejściu jest nieokreślone i nie ma tu miejsca by tłumaczyć dlaczego może to wcale nie być 0V.

Drugie rozwiązanie jest jeszcze gorsze, kompletnie źle podłączone RC nie ma prawa działać.

Przeczytałem co kupiłeś i mam wrażenie, że szykujesz się na poważną wojnę. Wygrasz ją przy pomocy dowolnego z dział w jakie się wyposażyłeś, ale zanim zaczniesz strzelać proponuję rozwiązanie najprostsze sprzętowo. Jeśli sobie z tym poradzisz, już nigdy nie będziesz musiał kupować oporników i kondensatorów do przełączników. Wyobrażasz sobie kilkaset elementów RC na płytce klawiatury którą masz przed sobą? Nie? Masz rację. Filtry RC montują ludzie w desperacji, którzy nie umieją napisać prostej funkcji odkłócającej zestyk, a Ty przecież do nich nie zależysz. Masz na pokładzie Maliny procesor rzędy wielkości potężniejszy niż tutejsze AVRy - zatrudnij go również filtrowania odbić zestyku.

Na początek musisz zapewnić to, że port wejściowy GPIO będzie widział dwa maksymalnie różne napięcia. Wykorzystaj do tego wbudowane w Malinę oporniki. Możesz je włączać programowo. Możesz wybrać taki ciągnący w górę - i wtedy zestyk musi zwierać wejście do masy lub też opornik może ściągać wejście w dół - zestyk podaje wtedy 3.3V:

A teraz napisz prostą funkcję, która zanim zatwierdzi wykrycie zbocza upewni się, że stan stabilny na wejściu trwał wystarczająco długo, np. 5 sprawdzeń. Możesz wzorować się na poniższym dokumencie, gdzie oprócz sprzętowych "odkłócaczy" opisano też procedurę programową:

http://www.eng.utah.edu/~cs5780/debouncing.pdf

lub tutaj:

http://www.labbookpages.co.uk/electronics/debounce.html

Sprzętowe odkłócanie jest niezbędne, gdy zestyk współpracuje z głupim licznikiem lub innym układem z bramek i przerzutników, gdzie sygnał podawany na wejścia musi mieć tylko jedno zbocze na jedno wciśnięcie. W przypadku procesora to kompletnie niepotrzebny gadżet. Jeżeli jesteś w stanie próbkować Maliną zestyk dwieście razy na sekundę, to każdorazowe np. 5-krotne upewnianie się, że stan jest stabilny załatwi odbicia trwające maksymalnie 5*(1/200)=25ms a to wystarczy na większość przycisków. Zmniejsza to maksymalną częstotliwość "przyciskania" ze 100 do 20Hz, ale nie wyobrażam sobie licznika energii elektrycznej tak szybko mrugającego swoim wyjściem. W razie czego zawsze możesz zmienić jedną stałą w programie zamiast wylutowywać oporniki 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.