순간적인 스위치 제어 토글 만들기


17

순간 스위치가 2- 상태 토글 출력 (래칭 순간 스위치)을 생성하도록하는 가장 간단하고, 저렴하며, 가장 작은 방법은 무엇입니까?

다시 말해, 출력은 지속적으로 낮으며, 버튼 / 택트 스위치를 잠깐 누르면 출력이 지속적으로 높아지고 다시 누르면 다시 낮게 전환됩니다.


이것에 대한 가장 좋은 대답은 asker와 하드웨어 또는 소프트웨어 솔루션에 더 익숙한 지 여부에 달려 있다고 생각합니다.
J. Polfer

또한이 출력 스위치의 위치와 사용 가능한 전압 (상태!)에 따라 다릅니다.
XTL

디지털 로직처럼 높고 낮은 두 가지 상태. 순환하는 여러 상태를 수행하려면 마이크로 컨트롤러가 필요하다고 생각합니다. 어쨌든 회로에 하나가있을 것입니다.
endolith

나는 2 개의 인버터가있는 솔루션을 좋아합니다. 이것이 30V @ 1A를 전환하기 위해 무엇이 필요한지 궁금하십니까?
stevenrcfox

@Overlow : 출력 트랜지스터를 파워 트랜지스터 또는 릴레이로 교체하십시오
endolith

답변:


9

두 개의 인버터와 디 바운싱을 사용하는 또 다른 대안 은 다음과 같습니다 .

Two inverters

로직 출력의 경우 두 인버터 RC 및 피드백 저항 만 필요합니다.

enter image description here

NC7WZ14 는 2 개의 인버터, 소형 6 핀 패키지 및 슈미트 트리거 입력으로 $ 0.06이지만,이 회로는 RC 때문에 슈미트 입력조차 필요하지 않다고 생각합니다. 또한 24mA를 구동 할 수 있으므로 어떤 이유로 든 LED를 사용하는 경우 LED를 직접 연결할 수 있습니다.

또한 여기여기에 토글 터치 스위치로 표시 됩니다.

피드백 저항은 출력을 낮은 임피던스로 연결하면 놓을 때까지 커패시터가 중간 전압으로 충전되는 것을 방지하기 때문에 버튼을 누르고 있으면 진동이 발생하지 않도록 중심 저항보다 훨씬 작아야한다고 생각합니다.

변형은 Press ON-Press OFF 소프트 래칭 회로에 설명되어 있습니다 .

AND gate variant


처음 전원을 켤 때 출력을 켜거나 끄거나 무작위로 시작합니까? 회로를 검사하면 출력이 켜지면 전원이 켜질 것입니다.
Craig McQueen

@CraigMcQueen 처음 전원을 켤 때 커패시터의 양단에 0V가 있습니다. 따라서 첫 번째 회로는 ON 위치에서 시작됩니다. 커패시터를 접지 대신 전원에 연결하면 OFF 위치에서 시작됩니다.
endolith

@CraigMcQueen 실제로 이것이 보장됩니까? 잘 모르겠습니다. 인버터의 낮은 출력 임피던스는 220k 저항을 지배하므로 임의 상태에서 시작할 수 있습니다.
endolith

@CraigMcQueen 표시된 마지막 회로는 0.01μF 커패시터 0V로 시작하므로 Vout은 0이됩니다.
endolith

@endolith 마지막 이미지에서 VCC는 어디에 연결되어 있습니까? 나는 땅과 Vout을 참조하십시오.
Mike

7

한 가지 가능한 방법 :

RC를 사용하여 스위치 디 바운스

RC network connected to momentary switch to debounce

그런 다음 출력을 입력으로 다시 공급하여 T 플립 플롭을 구현하여 D 플립 플롭에 공급합니다.

D flip-flop configured as toggle flip-flop

D 플립 플롭은 포지티브 에지 트리거 만 가능하고 반전 된 출력이 필요합니다.

  • 8 핀 NC7SZ74 는 작동해야하며 매우 작으며 가격은 0.12 달러입니다.
  • 74HC74는 $ 0.05의 14 핀 듀얼 D 플립 플롭입니다.

이것에 문제가 있습니까? 클럭 입력을 트리거하기 위해 상승 시간 동안 스위치를 짧은 시간 동안 누르고 있어야하는데 이는 아마도 좋을 것입니다. 버튼을 누르고 있으면 버튼이 한 번만 트리거되므로 좋습니다. 피드백 루프 나 다른 방법으로 디 바운스하는 더 좋은 방법이 있습니까?


5
버튼의 입력에 슈미트 트리거 버퍼가 필요합니다 (또는 플립 플롭에 슈미트 트리거 입력이있는 경우). 그렇지 않으면 버튼에서 손을 the 때 시계 입력이 느리게 상승 할 때 FF가 순간적으로 진동 할 수 있습니다. (이것은 디 바운싱 캡과 저항을 신중하게 선택하면 다소 완화 될 수 있지만 절대 제거되지는 않습니다.)
Connor Wolf

수신 거부를 방지하기 위해 피드백 경로에 RC 필터를 사용할 수도 없습니까?
endolith

6

또는 하나의 작은 6 핀 마이크로 컨트롤러로 구성 할 수 있으며 다른 구성 요소는 없습니다. 조금 더 비싸지 만 더 간단하고 공간을 덜 차지합니다. 소프트웨어에서 스위치를 제거하는 것은 간단하지만 출력이 높거나 낮을 경우 부울을 저장하는 방법 일뿐입니다. 이 MCU의 최소 버전은 2mm x 2mm 표면 실장 패키지로 제공됩니다. 대량으로 $ 0.50 일 수 있습니다.

회로도 토글


+1-그러나 나는 그 부분이 SMT에만 있다고 생각합니다.
J. Polfer

1
그러나 가장 저렴한 마이크로 컨트롤러조차도 단순한 디지털 로직보다 비용이 많이 듭니다. 간단한 작업을 수행하는 것은 매우 복잡한 시스템이며 소프트웨어 버그의 세계에 자신을 개방하고 있습니다. 또한 모든 마이크로 프로그래밍에 필요한 생산 비용이 증가합니까?
endolith

따라서 PB0의 내부 풀업 저항을 디지털 입력으로 설정 한 다음 접지하여 트리거합니다. 그런 식으로 스위치와 직렬로 연결된 저항이 필요하지 않습니다.
endolith

1
@TokenMacGuy PB0은 출력이 아니라 입력이므로 PB0에서 GND로 전류가 흐르지 않아야합니다. 내부 풀업을 사용하면 @endolith가 정확하므로 외부 풀업이 필요하지 않습니다. 또한, 풀업은 내부 또는 외부 풀업과 함께 스위치와 직렬로 연결되어 있지 않습니다. SMT로 오는 @sheepsimulator는 취미 애호가에게만 문제가됩니다. 이 경우 1 ~ 2 달러가 더 이상 문제가되지 않으며 8 핀 DIP ATtiny25까지 쉽게 업그레이드 할 수 있습니다.
davr

@endolith 그것은 내가 생각하는 응용 프로그램에 따라 다릅니다. 항상 상충 관계가 있습니다. 가장 기본적인 장치를 제외한 모든 것에는 일종의 논리가 있습니다. 소프트웨어 버그의 세계에 자신을 개방한다고 말하는 것은 그리 큰 문제가 아닙니다 .mcu 없이는 로직 버그를 수행하기 위해 일종의 디지털 / 아날로그 회로를 구성하고 있기 때문에 하드웨어 버그에 자신을 열 수 있습니다.
davr

1

이 회로 ( 여기서도 설명 )는 매우 저렴하지만 더 복잡하고 모든 구성 요소가있는 공간을 차지합니다. 트랜지스터가 대량으로 $ 0.02와 같다면, 총 $ 0.10 일 것입니까?

3 트랜지스터 래칭 스위치


$ 0.02 ... 아마도 다음과 같이 27,000 개를 산다면 : search.digikey.com/scripts/DkSearch/…
davr

1
$ 0.03은 소량으로 $ 0.02와 같은 끔찍한
SingleNegationElimination 13:18에서 08:10

1.4 센트의 3904s : newark.com/on-semiconductor/mmbt3904lt1g/… 대량으로 커패시터는 1 센트, 저항은 1/10 센트입니다.
endolith

트랜지스터 Q2는베이스에 흐르는 전류를 제한하기 위해베이스에 저항이 필요한 것처럼 보입니다.
Craig McQueen


0

나는 그것이 "간접적 인"방법이라는 것을 알고 있지만 sparkfun과 같은 홀 효과 센서를 얻을 수 있습니다. http://www.sparkfun.com/commerce/product_info.php?products_id=9312

자석을 사용하면이 특정 홀 효과가 래칭되고 있다는 것을 알았습니다. (필요한 방법으로는 효과가 없지만 이론 상으로는 찾고자하는 것에 효과가있는 것처럼 보입니다. .

방금 브레드 보드에 꽂았습니다. 저항을 사용했을 수도 있습니다 (아마도 한 달이어서 세부 사항에 약간 모호합니다). 마그넷을 가까이 (모 멘터 리) 움직이면 센서가 닫힙니다. 너가.


1
그래도 어떻게 "래치 해제"하시겠습니까? 자석을 센서에 두 번째로 가까이 가져 가면 분리되지 않습니까?
davr

나는 당신이 그것을 "지우기"위해 자석의 극성을 반대로 바꾸어야한다고 믿습니다. 나는 확실히 그것을 테스트하기 위해 집에서 다시 연결해야 할 것입니다. 전원을 끄면 지정된 시간 동안 전원을
끊으면 (내가

0

가장 쉬운 대안은 교류 푸시 버튼 스위치를 사용하는 것입니다.

다른 위치에서 래치한다는 사실을 무시하면 거의 순간적인 스위치와 같습니다. 이것이 문제의 정신은 아니지만 소프트웨어와 외부 하드웨어가 필요하지 않은 간단하고 컴팩트 한 솔루션이라는 것을 알고 있습니다.


0

최종 목표가 무엇인지 확실하지 않지만 나는 이것을 거기에 넣을 것이라고 생각했습니다.

이것은 쌍 안정 릴레이를 구동하는 데 사용하는 아주 작은 회로입니다. 빌드하는 것도 꽤 저렴합니다.

순간 스위치를 누르면 릴레이와 LED의 상태가 전환됩니다. 버튼을 얼마나 오래 누르고 있는지는 까다 롭지 않습니다. 릴레이가 래칭되기 때문에 대부분의 시간에 많은 전류를 소비하지 않습니다.

이 구성에서 릴레이가 설정된 상태에 있으면 LED가 켜지고 릴레이가 재설정되면 꺼집니다. R7을 C3의 + 단자에 연결하여 릴레이를 재설정 할 때 LED를 켤 수도 있습니다.

나는 기타 효과에 이것을 사용하여 순간적인 풋 스위치로 장치를 우회하거나 맞 물릴 수 있습니다. 물론 3PDT 스위치는 자체적으로 동일한 기능을 수행하지만이 방식은 더 조용하고 (큰 팝 없음) 순간적인 소프트 터치 풋 스위치는 큰 3PDT 스위치보다 훨씬 멋지게 느껴집니다.

도움이 되었기를 바랍니다.

래칭 릴레이 드라이버


0

소프트웨어로만 할 수 있습니까?

버튼이 프로그래밍 가능 장치의 입력입니까, 아니면 하드웨어 영역에서 전환해야합니까?

버튼 상태를 메모리에 저장하면 순간 스위치를 토글로 사용하는 것이 매우 쉽습니다.

boolean buttonState = false; // store for toggle state, false = off true = on

if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
     Serial.println("Button Toggled On"); // do something while button is on

     buttonState = true // set button state to on
}

if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
     Serial.println("Button Toggled Off");  // do something else while button is off

     buttonState = false // set button state to off
}

이 마크가 맞지 않으면 죄송합니다. 분명히이 답변은 MCU 또는 프로그래밍 가능 칩을 사용하는 사용자에 따라 다릅니다.


개인적으로 독립형 솔루션이 필요하지만 일반적인 문제입니다.
endolith

1
그렇습니다. 마이크로 프로세서를 보유한 경우에는 합리적인 솔루션입니다. 전환 할 때 스위치와 버튼에 노이즈가 발생하므로 "디 바운스"도 구현해야합니다.
Craig McQueen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.