소프트웨어 디바운스가 적절하지 않은 경우 스위치와 계전기의 하드웨어 디바운스를 구현하는 방법

작성자: Clive "Max" Maxfield

DigiKey 북미 편집자 제공

전기 및 전자 엔지니어링에서 스위치는 전기 회로를 "만들거나" "차단"하는 역할을 하며, 이를 통해 전류가 차단되거나 컨덕터 간에 전류가 전환될 수 있습니다. 엔지니어가 사용하는 스위치에는 토글 스위치, 로커 스위치, 푸시버튼 스위치, 마이크로 및 제한 스위치, 자기 및 리드 스위치와 계전기가 있습니다. 이 모든 스위치에는 한 가지의 공통점이 있는데, 그것은 바로 스위치가 바운스한다는 점입니다.

보통 이러한 바운스는 회로에 미치는 영향이 없거나 미미하지만, 디지털 회로가 다수의 바운스를 감지하고 응답할 만큼 빠른 경우 심각한 결과가 초래될 수도 있습니다. 엔지니어의 과제는 이러한 바운스의 영향을 제거 또는 완화하거나 스위치를 "디바운스"하는 것입니다. 업계에서는 오랫동안 하드웨어 디바운스를 실행해 왔지만 최근에는 점차 소프트웨어 기반의 디바운스 접근법으로 바뀌는 추세입니다. 그러나 하드웨어 디바운스가 더 나은 선택인 경우도 있습니다.

이 기사에서는 바운스에 대해 설명하고, 소프트웨어 및 하드웨어 접근법을 사용한 디바운스에 대해 알아봅니다. 그런 다음 하드웨어 디바운스가 더 나은 옵션인 경우를 살펴본 후 이를 구현하는 방법을 제시합니다. 스위칭 디바이스 및 하드웨어 디바운스 부품의 예로 NKK Switches, ON Semiconductor, Texas Instruments, Maxim Integrated 및 LogiSwitch의 제품이 소개됩니다.

스위치 바운스란?

스위치 또는 계전기가 플립 또는 토글되는 경우, 사람이 장치의 상태가 변경될 때마다 즉각적인 단일 응답을 인식한다는 것은 접점이 실제로 준비되기 전 수천 분의 1초 동안 지속되는 100회 이상의 생성 또는 차단 활동이 있다는 것을 의미할 수 있습니다.

예를 들어 NKK의 M2011SS1W01단극 단투(SPST) 상시 개방(NO) 패널 실장 토글 스위치를 살펴보겠습니다. 이 스위치의 한 쪽(여기에서는 입력)은 접지(0V)에 연결되고 다른 쪽(이 경우에는 출력)은 풀업 저항 (R1)을 통해 5V 전원 공급 장치(+ve로 표시됨)에 연결되어 있다고 가정해 보겠습니다(그림 1).

SPST-상시 개방 토글 스위치 바운싱 구성도(확대하려면 클릭)그림 1: SPST-상시 개방 토글 스위치의 경우, 스위치 활성화 및 비활성화 상태 모두에서 바운싱이 발생할 수 있습니다. (이미지 출처: Max Maxfield)

스위치가 활성화(폐쇄) 및 비활성화(개방)된 상태 모두에서 스위치 바운싱이 발생할 수 있음을 알 수 있습니다. 공급 레일 간에 바운스가 완전히 전환되는 경우도 있습니다(여기서는 논리 0 및 1의 상태가 고려됨). 이런 경우의 바운스는 "깨끗한" 바운스입니다. 이에 비해 신호가 중간 전압에만 도달하는 경우 이를 "오염된" 바운스라고 합니다.

NKK의 M2012SS1W01-BC와 같은 단극 쌍투(SPDT) 패널 실장 토글 스위치의 경우, 상시 개방(NO) 및 상시 폐쇄(NC) 터미널 모두에서 바운싱이 발생할 수 있습니다(그림 2). 여기에서는 간단한 설명을 위해 "깨끗한" 바운스만 표시되어 있습니다.

SPDT 토글 스위치 바운싱 구성도(확대하려면 클릭)그림 2: SPDT 토글 스위치의 경우, 스위치가 활성화 및 비활성화 상태일 때 상시 개방(NO) 및 상시 폐쇄(NC) 터미널 모두에서 바운싱이 발생할 수 있습니다 (이미지 출처: Max Maxfield)

많은 경우에서 이러한 신호 바운스 시간은 아무런 영향을 미치지 못합니다. 스위치가 다수의 바운스를 감지하고 응답할 만큼 빠른 전자 장비에 연결되어 있는 경우에는 문제가 발생합니다. 전자 장비가 조치를 취하기 전에 스위치가 전송하는 신호를 디바운스할 수 있는 방법이 필요합니다.

소프트웨어 디바운스와 하드웨어 디바운스 비교

1960년대와 1970년대에는 스위치 디바운스가 SPST 스위치에서의 간단한 저항기 커패시터(RC) 지연 회로부터 더욱 복잡한 설정/리셋(SR) 래치 기능에 이르기까지 다양한 하드웨어 기술을 통해 구현되었습니다.

최근에는 많은 시스템에 마이크로 프로세서 장치(MPU) 또는 마이크로 컨트롤러 장치(MCU)가 갖추어져 있으므로, 일반적으로 소프트웨어 기술을 사용하여 모든 스위치로부터의 신호를 디바운스하는 방법을 사용하게 되었습니다. 그러나 소프트웨어 디바운스가 항상 최선의 방법인 것은 아닙니다. 어떤 응용 제품은 작고 성능이 낮으며 메모리 제약이 있는 프로세서가 있어 디바운스 루틴을 구현할 수 있는 코드 공간 및/또는 클록 주기가 제한적입니다. 이러한 경우에는 하드웨어 구현이 더 나은 솔루션이 될 수 있습니다.

또한 많은 소프트웨어 개발자들은 스위치의 바운스 특성이 활성화 때마다 달라질 뿐 아니라 온도 및 습도와 같은 환경적 조건의 영향을 받을 수도 있는 등의 스위치의 물리적 특성에 대해 잘 알지 못합니다.

소프트웨어 개발자들이 스위치에 대한 전문 지식이 부족하므로 스위치 바운스와 관련되어 서술된 자료를 이해한다는 것은 난해하고 모순된 일이기 때문에 문제가 더 심각합니다. 예를 들어, 일반적으로 이런 자료에는 스위치는 활성화 또는 비활성화된 지 1ms이 지난 후에 바운스를 멈춘다고 설명됩니다. 그러나 잘 알려진 내장형 시스템 전문가인 Jack Ganssle은 여러 스위치 유형에서 경험적 테스트를 시행했고, 각 스위치를 300회씩 활성화하여 접점의 개방 및 폐쇄 상태에서 바운싱의 최소 및 최대 횟수를 기록했습니다. 그가 기록한 평균 바운스 시간은 1.6ms, 최대 바운스 시간은 6.2ms였습니다. 일부 산업 및 군사용 "모범 사례"에서는 스위치의 첫 번째 활성화 후 20ms가 지나야 바운싱이 멈춘다고 가정할 것을 권장하고, 어떤 분야에서는 다른 작동을 재개하기 전 마지막 감지된 바운스로부터 20ms를 기다리도록 권합니다.

또한, 많은 단순한 비프로페서 기반 시스템에서도 스위치 디바운스가 요구됩니다. 이러한 시스템의 몇 가지 예로는 계전기의 펄스를 카운팅하는 7세그먼트 디스플레이를 구동하는 이진 카운터, 문 또는 게이트의 모터 제어를 위해 사용되는 555 원샷 타이머로의 트리거 입력, 키 형식 입력을 사용하는 레지스터 기반 유한 상태 신호 발생기(FSM)가 있습니다. 또한 스위치 바운스가 문제가 될 수 있는 스위치 입력(업, 다운, 어떤 경우에는 저장)을 사용하여 값이 조정된 전자 트림 전위차계(pot)도 있습니다.

이런 시스템을 다루기 위해서는 설계자 또는 개발자가 하드웨어 디바운싱에 대해 알아두는 것이 유용할 수 있습니다.

RC 네트워크를 통한 SPST 스위치의 하드웨어 디바운싱

가장 간단한 하드웨어 기반 스위치 디바운스 솔루션 중 하나는 저항기 커패시터(RC) 네트워크를 SPST 스위치와 결합하는 것입니다. 이러한 회로에는 다양한 종류가 있습니다. 보다 다목적인 구현 방법으로 두 개의 저항기와 한 개의 다이오드를 사용하는 방법이 있습니다(그림 3).

SPST 스위치 디바운스를 위한 RC 네트워크 구성도(확대하려면 클릭)그림 3: RC 네트워크를 사용하여 SPST 스위치(위)를 디바운스하는 경우, 다이오드(D1)를 추가하면 커패시터(C1)가 저항기 R1을 통해 충전되고 저항기 R2를 통해 방전됩니다. (이미지 출처: Max Maxfield)

스위치가 활성화(폐쇄)되면 커패시터 C1은 저항기 R2를 통해 방전됩니다. 이 회로에서 다이오드 D1이 빠지는 경우에는 스위치가 비활성화(개방)되면 C1이 두 저항기(R1와 R2)를 통해 충전됩니다. 그러나 D1이 있는 경우에는 C1은 R1을 통해서만 충전됩니다.

어떤 경우에는 스위치를 활성화하는 것(즉, 작동이 발생하도록 함)만이 중요하며, 이러한 경우에는 D1을 생략해도 됩니다. 그러나 스위치가 활성화 및 비활성화된 상태 모두에서 작동이 이루어지도록 하며 지연을 최소화하고자 하는 경우, D1을 추가하는 것이 좋습니다.

커패시터 전압 VC를 통해 알 수 있는 외부 충전 및 방전 커브를 살펴보겠습니다. 이 신호를 다운스트림 디지털 논리 기능의 입력에 직접 제공하는 것은 권장되지 않는데, 왜냐하면 "양호한" 논리 0과 논리 1값 사이의 정의되지 않은 영역에서 낭비되는 신호는 불필요하기 때문입니다. 대신 이 신호는 슈미트 트리거 입력이 포함된 버퍼의 입력에 제공됩니다. 또한 Texas Instruments의 CD74HC14M96의 한 채널과 같은 반전 버퍼가 통상적으로 사용되는데, 그 이유는 반전 기능이 비반전 기능에 비해 더 빠른 전환을 제공하기 때문입니다.

SR 래치를 사용한 SPDT 스위치 디바운스

SPDT 스위치의 경우, 일반적인 하드웨어 디바운스 솔루션은 SR 래치를 사용하는 것입니다. 1960년경부터 IBM과 같은 기업이 메인프레임 컴퓨터의 스위치 패널에 이러한 기술을 도입한 이후, 이러한 접근 방식은 간단한 하드웨어 디바운스 솔루션 중 최고 중의 최고로 여겨져 오고 있습니다. 그러한 래치를 형성하려면 2개의 백투백 2개 입력 NAND 게이트를 사용하면 됩니다. 예를 들면 Texas Instruments의 SN74HC00DR 4중 2개 입력 NAND IC 채널 2개를 사용할 수 있습니다(그림 4).

SPDT 스위치 디바운스를 위한 NAND 기반 SR 래치 구성도그림 4: SPDT 스위치를 디바운스하기 위해 NAND 기반 SR 래치를 사용하는 것은 매우 유용한 하드웨어 디바운스 솔루션입니다. (이미지 출처: Max Maxfield)

그림 4의 상단에 나오듯이 스위치의 NC 단자가 접지되는 경우, 게이트 g2의 출력은 논리 1로 나옵니다. 그런 다음, 게이트 g1으로의 입력에 해당하는 두 개의 논리 1은 g1의 출력을 논리 0으로 나오게 합니다. 이에 비해 그림 4의 하단에서 볼 수 있듯이 스위치의 NO 단자가 접지되어 있는 경우, 게이트 g1의 출력은 논리 1로 나옵니다. 그런 다음, 게이트 g2로의 입력에 해당하는 두 개의 논리 1은 g2의 출력을 논리 0으로 나오게 합니다.

이 회로가 이같이 순조롭게 작동하는 이유는 두 입력이 모두 비활성 논리 1 상태에 있을 때, SR 래치가 이전 값을 기억하기 때문입니다. 그림 2에 나오듯이 SPDT 스위치가 전환될 때 그 순간에 접지에 연결된 단자가 먼저 바운스됩니다(단자의 종류에 상관없이). 이러한 바운스는 원래 값(논리 0)과 새 값(논리 1)의 사이에 있으므로 SR 래치의 현재 상태에 아무런 영향을 미치지 않습니다. 이 단자가 바운스를 멈추고 상대편 단자가 바운스를 시작할 때에야 SR 래치의 상태가 바뀝니다.

전용 장치를 사용한 SPST 스위치 디바운스

이전 솔루션과 관련된 한 가지 문제는, SPST 스위치가 일반적으로 SPDT 스위치에 비해 저렴하므로 많은 설계자들이 SPST 스위치를 선호한다는 점입니다. ON Semiconductor의 MC14490DWG와 Maxim Integrated의 MAX6818EAP+T 등의 널리 알려진 전용 SPST 디바운스 장치가 다양하게 출시되어 있습니다.

또 다른 제조업체인 LogiSwitch는 3채널, 6채널, 9채널 디바운스 솔루션 모음을 스루홀 및 표면 실장 장치(SMD) 패키지 모두로 제공합니다. 예를 들어 LogiSwitch LS18-S 장치를 사용하는 회로를 살펴보겠습니다(그림 5).

SPDT 스위치 디바운스를 위한 전용 3채널 LS18-S 칩 구성도그림 5: SPDT 스위치 디바운스를 위한 전용 3채널 LS18-S 칩 사용(6채널 및 9채널 장치도 제공됨). (이미지 출처: Max Maxfield)

모든 LogiSwitch 제품군과 마찬가지로 LS18-S는 2.5V ~ 5.5V의 작동 전압 범위를 지원합니다(공급 전압 값은 장치의 응답 시간에 영향을 주지 않음). 또한 LogiSwitch 디바운스 장치는 일부 다른 전용 IC 솔루션과는 달리 입력 또는 출력에 외부 클록, RC 타이밍 네트워크 또는 풀업 저항기와 같은 추가 부품이 필요하지 않습니다.

LS18-S는 LogiSwitch의 독점적인 적응형 NoBounce 기술을 활용하여 높은 수준의 잡음 내성을 제공합니다. 20ms 미만의 잡음 스파이크로 인해 주기가 시작되거나 종료되지 못하며, 바운스 시간과 상관없이 작동 및 분리 모두에서 최종 스위치 바운스가 발생하여 출력이 20ms만큼 지연됩니다.

결론

스위치에는 토글 스위치, 로커 스위치 및 푸시 버튼 스위치 등 다양한 유형이 있으며, 모든 스위치는 바운스할 수 있습니다. 이러한 스위치 바운스가 완화되지 않는 경우, 마이크로 프로세서 및 기타 전자 회로에서 단일 스위치가 활성화되면 다수의 이벤트가 구성됩니다.

스위치로부터의 바운싱 신호는 보통 마이크로 컨트롤러에서 실행되는 소프트웨어를 통해 디바운스됩니다. 이러한 솔루션은 저렴하긴 하지만 위에서 설명된 대로 성능과 메모리가 제한된 마이크로 컨트롤러 기반의 시스템, 소프트웨어 개발자가 스위치 관련 문제에 대한 전문성이 부족한 경우 또는 마이크로 컨트롤러 없이 구현된 시스템 등의 경우 등에서는 최선의 옵션이 아닐 수도 있습니다.

대안으로, 저항기 커패시터 네트워크로부터 SR 래치, 전용 집적 회로에 이르기까지 다양한 방법으로 하드웨어에서 디바운싱을 수행할 수 있습니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield는 1980년 영국 Sheffield Hallam University에서 제어 공학 학사 학위를 받았으며 이후 중앙 컴퓨터용 중앙 처리 장치(CPU) 설계자로 일하기 시작했습니다. 수년에 걸쳐 Max는 실리콘 칩에서 회로 기판, 뇌파 증폭기에서 스팀펑크 예언 엔진(steampunk Prognostication Engines)에 이르는 다양한 제품을 설계했습니다. 또한 30년 이상 전자 설계 자동화(EDA) 부문을 이끌어 왔습니다.

Max는 Designus Maximus Unleashed(앨라배마에서는 금서임), Bebop to the Boolean Boogie(전자 제품 관련 색다른 안내서), EDA: Where Electronics Begins, FPGA: Instant Access 및 How Computers Do Math 등 다양한 도서의 저자/공동저자입니다. Max가 운영 중인 “Max’s Cool Beans” 블로그에 방문해 보세요.

게시자 정보

DigiKey 북미 편집자