커패시터를 사용하여 버튼을 디 바운스 할 수 있습니까?


19

궁금합니다. 왜 커패시터를 버튼에 연결하여 디 바운스를 할 수 없습니까? 마이크로 프로세서의 작업을 줄이는 방법을 알아 냈지만 설계중인 PCB의 공간이 매우 제한적이므로 설계를 복잡하게하는 완전한 디 바운스 회로를 원하지 않습니다.


개략도

이 회로 시뮬레이션CircuitLab을 사용하여 작성된 회로도


이것이 회로의 예입니다. 오류가 발생하여 죄송합니다 (콘덴서가있는 회로 설계에 좋지 않습니다). 이것도 효과가 있을까요? 압정 스위치의 경우 실제 상황과 일치하는 스위치를 찾을 수 없지만이 상황에서는 작동합니다. 버튼은 여기에있는 것과 같습니다 . D10의 약자 Digital Pin 10이지만 중요하지 않습니다. 그것은 단지 Arduino 입력을 의미합니다. 또한 필요한 커패시터의 크기를 모릅니다.이 회로가 작동하면 어떤 크기가 필요합니까?


다시 말하지만, 소프트웨어 디 바운싱을 수행하지 않고도 쉽게 구축 할 수 있도록 이것을 단순화하려고합니다. 커패시터 작동 방식을 살펴보면 작동하는 것처럼 보이지만 정전 용량이 너무 크면 버튼을 길게 누르거나 지연시킬 수 있습니다. 전원 공급 장치의 노이즈를 "평활화"하는 데 일반적으로 사용되므로 수신 거부를 "매끄럽게"만드는 것과 유사한 것이 아닙니까? (필요한 경우) 작동하도록 회로를 수정해도 좋습니다.


1
우리가 전에 논의했던 곳 : electronics.stackexchange.com/questions/6884/…
Andy aka

5
입력을 50ms 이상의 간격으로 폴링하여 입력을 디 바운싱 할 수 있다는 것을 알고 있습니까? 귀하의 aduino를 위해 할 일이 적습니다 :)
Wouter van Ooijen

1
50 밀리 초가 할 것-좋은 점 Mr O
Andy aka

1
아니요, 최소 50ms 간격의 폴링을 의미하며 감지 한 수준에 따라 필요한 모든 작업을 수행하십시오.
Wouter van Ooijen

1
@AnnonomusPerson-단일 스레드 환경에서 delay ()는 다른 일이 발생할 수 없음을 의미합니다. 이것이 하나의 옵션이지만 다른 하나는 다시 확인할 때까지 다른 유용한 작업을 수행하는 것입니다.
Chris Stratton

답변:


12

스위치의 기본 상태에 따라 다릅니다. 커패시터는 양의 전압을 줄 때만 충전됩니다. 일반적으로 임베디드 환경에서는 풀업을 사용하여 핀에 기본 하이 상태를 부여하고 스위치를 접지에 연결합니다. 커패시터를 추가하면 접지 상태를 "저장"하지 않기 때문에 여기서 도움이되지 않습니다.

그러나 풀다운을 사용할 수도 있습니다. 이것은 핀이 기본적으로 낮음을 의미합니다. 스위치를 눌러 높이면 커패시터가 충전됩니다. 해제 후 커패시터는 잠시 동안 핀을 높게 유지하므로 작동합니다. 1uF가 충분한 지, 너무 적거나 너무 많이 있는지 잘 모르겠습니다. 스코프를보고 조금 사용해보십시오.


그래서 만약 내가 변화 +하고 -그것은 작동합니다?
익명 펭귄

@AnnonomusPerson에 따라 다릅니다. 스위치의 기본 상태는 무엇입니까?

그것이 전기를 전도하는지 여부를 누를 때를 의미합니까? 이것이 당신이 의미하는 바라면, 사용중인 스위치의 특성으로 인해 어느 쪽이든 할 수 있습니다. 내 질문에있는 링크를 볼 때 버튼을 누르지 않으면top left to the bottom left 및 버튼에서 버튼이 작동합니다 the top right to the bottom right. 누르면, top left to the bottom right및에서 작동합니다 top right to the bottom left.
익명 펭귄

괜찮아. 이것은 기본적으로 핀을 낮추기를 원한다는 것을 의미합니다. 스위치는 +에 접촉해야 버튼을 놓기 전에 커패시터가 약간 충전됩니다.

3
@AnnonomusPerson 아니, 스위치가해야 +에 접촉. 누르면 스위치가 무엇에 연결되는지에 대한 전문 용어입니다 . 커패시터가 올바른 위치에 있습니다. 저항은 접지에서 IO 핀으로 직접 연결하는 것이 좋습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.