Published Book on Amazon
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1 | |
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2 |
출판된 한글판 도서
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상) | |
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하) |
Original Book Contents
25.4.5 Pull-up 저항과 Pull-down 저항
많은 전자회로에서는 여러 가지 전기적인 충격으로부터 회로가 망가지지 않도록 안전하게 보호하고, 어떠한 상황에서도 처음 설계한 의도대로 정확하게 동작하는 것을 보장하기 위한 방법의 하나로 사용하는 것이 Pull-up 저항과 Pull-down 저항이다. 기본적으로 Pull-up 저항과 Pull-down 저항은 전원과 GND 사이에서 어느 쪽에 저항을 설치하는가에 따라서 구분되는 용어이며, 각각의 저항에 적절한 크기의 저항을 사용하여 작은 전류가 흐르도록 한다. 다음에는 이에 대한 설명을 할 것이다.
추가적인 참고 사항은 다음을 참고하기 바란다.
■ http://www.resistorguide.com/pull-up-resistor_pull-down-resistor/
■ https://learn.sparkfun.com/tutorials/pull-up-resistors
■ http://www.seattlerobotics.org/encoder/mar97/basics.html
25.4.5.1 floating 상태(floating state)
컴퓨터는 정보를 1(High)와 0(Low)으로 표현된다. 칩에 연결된 전자회로에서 정보를 표현할 때는 입력 pin에 입력 정보에 대응하는 전압을 가해서 정보를 표현한다. 즉 최고전압을 1(High)로 표현하고, 최저전압을 0(Low)로 표현한다. 1(High)를 표현하고 싶으면 최고전압을 가하고, 0(Low)를 표현하고 싶으면 0V의 전압을 가한다. 이렇게 pin이 받는 값이 최고전압을 받는 1(High) 상태이거나, GND에 연결되어 최저전압을 받는 0(Low) 상태의 값을 가지고 있어야만 정상적인 작동이 가능하다.
micro-controller에 따라 사용하는 전압이 다를 수 있는데, 통상 최고전압에는 5V가 많이 사용되고, 최저전압은 0V를 사용한다. Raspberry Pi는 최고전압으로 3.3V를 사용한다.
하지만, 입력 핀의 전압이 최고전압도 아니고, 최저전압도 아닌 상태가 되면, 1(High) 상태인지 0(Low) 상태인지 결정할 수 없다. 이런 상태를 플로팅(Floating)되었다고 한다. 즉 floating 상태는 허공에 뜬 채 아무것도 연결을 하지 않는 상태, 또는 서로 절연되어 있는 상태를 말한다.
일반적으로 생각하기에, 선이 연결되지 않은 경우 전기가 통하지 않기 때문에 0(Low)의 상태로 생각하기 쉽지만, 사실은 그렇지 않다. 전자적으로는 아무것도 연결을 하지 않으면, 입력 핀의 전압이 최고전압과 최저전압의 중간 전압일 수도 있고, 주변의 전기장 상태나 각종 노이즈에 따라서 수시로 High 상태로 변동될 수도 있고, Low 상태로 변동 될 수도 있다. 이렇게 입력값이 불안정하게 수시로 변하면, 정확한 디지털 입출력에 방해가 되고, 부품이 오작동하게 된다.
그림 25‑7 floating 상태의 전자회로
위에서 왼쪽 그림은 입력 pin이 GND에 연결되어 있는 회로이다. 스위치가 On 상태이면 0V(Low)가 입력으로 들어 가지만, 스위치가 Off 상태이면 입력이 5V인지, 0V인지 알 수가 없다. 이런 상태를 floating이라고 한다.
오른쪽 그림은 입력 pin이 5V 전원에 연결되어 있는 회로이다. 스위치가 On상태이면 5V(High)가 입력으로 들어 가지만, 스위치가 Off 상태이면 입력이 5V인지, 0V인지 알 수가 없다. 이런 상태를 floating이라고 한다.
25.4.5.2 Pull-up 및 pull-down에서 저항을 사용하는 이유
예를 들어 스위치를 누르지 않으면 High상태이고, 스위치를 누르면 Low 상태가 되는 회로를 만든다고 가정해 보자
|
이를 위해서 위의 왼쪽과 같은 회로를 만들면 될 것 같은데, 문제가 없는지 점검해 보자. 이런 경우는 지점 "1"의 MCU(micro-control unit)의 입력포트가 하이임피던스 (HIGH-Z) 상태이므로 High 상태인지 Low 상태인지를 알 수가 없다.
그래서 이번에는 위의 오른쪽과 같은 회로를 꾸미면, 스위치가 On 되었을 때, Vcc에서 GND로 너무 많은 전류가 흐른다는 것이다. 그러면 많은 열이 발생하고, 이것은 부품이나 전선을 태우거나 화재가 발생할 수도 있다. 더구나 전원공급부의 전압이 zero수준으로 떨어지게 되므로 대부분의 회로는 고장이 날 수 있다. 이러한 과전류는 micro-controller에는 엄청난 충격을 주어 장치를 망가뜨릴 수 있고, 또한 접지로 곧바로 연결되는 경우는 short 현상이 발생해서 전선이 타 버릴 수도 있다.
이러한 위험을 방지하기 위해서 아래와 같이 전원과 GND 사이에 적절한 크기의 저항을 사용하여 작은 전류를 흐르도록 제한하면, 위와 같이 short가 발생하는 것을 방지할 수 있다. 왼쪽은 pull-up 저항이고, 오른쪽이 pull-down 저항이다.
25.4.5.3 pull-up 저항
디지털 회로에서 논리적으로 평상시 switch off일 때 High 상태를 유지하고, switch on 상태가 되면 Low 상태가 되는 회로가 있다.
이런 회로를 만들기 위해서 신호의 입력 또는 출력단자와 +VCC 전원 단자 사이에 접속하는 저항을 pull-up 저항라고 한다. pin을 높은 저항에 매달아 둔다는 뜻으로 'pull-up'이라고 한다. 저항을 5V 전원 쪽에 달고, 아래에 접지 쪽으로 스위치가 붙어 있다. 한편 입력 pin 내부는 High impedence상태로서 높은 저항이 작동하고 있다.
그림 25‑8 pull up 저항
이 회로에서 평상시 switch가 off 상태일 때를 검토해 보자. 전원 쪽에 설치된 10 KΩ의 상당히 큰 pull-up 저항이 설치되어 있어서 회로에 손상을 주지 않은 정도로 제한된 작은 전류만 공급된다. 공급되는 모든 전류는 입력 pin 쪽으로 흘러 가게 된다.
입력 pin 내부는 high impedence 상태로서 통상 pull-up 저항보다 10 배 이상의 높은 저항이 작동하고 있다. 이러한 연결 상태는 pull-up 저항과 입력 pin 내부 저항이 직렬 접속의 상태로 연결된 것으로 pull-up 저항에서 극히 일부 전압강하가 발생하지만 대부분의 전압은 입력 pin 내부 저항에 배분되도록 되어 있다. 따라서 입력 pin에는 최고전압인 High 상태가 유지되는 것이다.
micro-controller의 입력핀은 통상 100KΩ ~ 1MΩ 정도의 입력 impedence를 가지고 있다. 따라서 스위치가 off인 상태에서는 pull-up 저항 R1과 내부 impedence R2에 의해 VCC에 가해진 전압이 분배가 되고, R2에 분배된 값이 입력 pin에 나타나는 값이 된다. pull-up 저항이 수 MΩ 정도로 크다면 R2에 걸리는 전압이 상대적으로 작아져서 최악의 경우 프로그램에서 High로 인식되지 않을 수도 있다. 이런 문제를 방지하기 위해서 통상 pull-up 저항은 입력 pin의 impedence의 1/10 보다 적은 저항을 사용하도록 한다. 이렇게 하면 대부분의 전압이 R2에 걸리게 되어 VCC의 전압이 거의 그대로 입력 pin 값으로 나타나게 된다.
이제 switch가 on 상태를 검토해 보자. 스위치를 닫으면, GND 쪽에는 저항이 없고, 입력 pin 쪽으로는 high impedence의 높은 저항이 작동하고 있으므로, 전원에서 공급되는 전류는 모두 GND 쪽으로 흐르고, 입력 pin도 GND에 연결되어 있기 때문에 입력 pin에 남아 있던 모든 전류도 GND로 흘러서 입력 pin에는 0V의 낮은 전압 상태가 유지되는 것이다.
또한 이런 상태는 전원과 GND가 직접적으로 연결되는 형태이지만, pull-up 저항으로 전류의 크기를 낮은 수준으로 제한했기 때문에 전기적으로 short가 발생하지 않고 안정적인 상태를 유지할 수 있다. 이렇게 pull-up 저항를 사용하면 회로에서 스위치 off 상태에서 항상 High 상태를 유지하고, switch가 on 상태에서 Low 상태를 안정적으로 유지할 수 있게 해 준다.
이러한 pull-up 저항은 저항값에 따라서 다른 특징을 가진다. 저항값이 높으면, 소비전류는 적지만 노이즈에 약하고, 반대로 저항값이 낮으면, 소비전류는 많지만 노이즈나 속도에 유리한 특징이 있다.
25.4.5.4 pull-down 저항
디지털 회로에서 논리적으로 평상시 switch off일 때 Low 상태를 유지하고, switch on 상태가 되면 High 상태가 되는 회로가 있다.
이런 회로를 만들기 위해서 신호의 입력 또는 출력단자와 -GND 접지 단자 사이에 접속하는 저항을 pull-down resistor라고 한다. pin을 항상 그라운드에 묶어 둔다는 의미에서 'pull-down'이라고 한다. 5V 전원 쪽에 스위치를 달고, 아래에 접지 쪽으로 저항이 붙어 있다. 한편 입력 pin 내부는 high impedence상태로서 높은 저항이 작동하고 있다.
그림 25‑9 pull-down 저항
이 회로에서 평상시 switch가 off 상태일 때를 검토해 보자. 입력 pin이 GND에 연결되어 있기 때문에 입력 pin에 남아 있던 모든 전류는 GND로 흘러서 입력 pin의 전압은 0V가 된다.
|
이제 switch가 on 상태를 검토해 보자. 스위치를 닫으면, 전원에서 흘러오는 전류는 pull-down 저항과 입력 pin 쪽으로 동시에 흘러 가게 된다.
GND 쪽에는 pull-down 저항이 있고, 입력 pin 내부는 high impedence 상태로서 통상 pull-down 저항보다 10 배 이상의 높은 저항이 작동하고 있다. 이러한 연결 상태는 pull-down 저항과 입력 pin 내부 저항이 병렬 접속의 상태로 연결된 것으로, pull-down 저항이 입력 pin의 저항에 비해 훨씬 작으므로, 전원에서 공급되는 전류의 대부분이 GND 쪽으로 흐르고, 입력 pin에는 약간의 전류가 흐르게 된다. 하지만 pull-down 저항과 입력 pin에는 전원의 전압이 동일하게 가해지게 된다.
또한 이런 상태는 전원과 GND가 직접적으로 연결되는 형태이지만, pull-down 저항으로 전류의 크기를 낮은 수준으로 제한했기 때문에 전기적으로 short가 발생하지 않고 안정적인 상태를 유지할 수 있다. 이렇게 pull-down 저항를 사용하면, 회로에서 스위치 off일 때 항상 Low 상태를 유지하고, switch가 on 이면 High 상태를 안정적으로 유지할 수 있게 해 준다.
이러한 pull-down 저항은 저항값이 높으면 소비전류는 적지만 노이즈에 약하고, 반대로 저항값이 낮으면, 소비전류는 많지만 노이즈나 속도에 유리한 특징이 있다.
25.4.5.5 pull-up 저항의 저항값
pull-up 저항의 적절한 저항값은 다음 두 가지 factor에 의해서 제한을 받는다.
첫 번째 factor는 전력 소모이다. 저항값이 너무 낮으면 switch가 닫혔을 때 pull-up 저항에 많은 전류가 흐르고, 장치에 열이 발생하게 되며, 불필요한 전류가 소모된다. 이러한 상태를 strong pull-up (more current flows)이라고 하고, 저전력 소비가 필요한 경우에는 피해야 하는 조건이다.
두 번째 factor는 switch가 open 되었을 때의 pin 전압이다. pull-up 저항값이 너무 높으면, 입력 pin에서의 많은 누설 전류와 결합하여 switch가 open될 때 입력전압이 부족할 수 있다. 이러한 상태를 weak pull-up(less current flows)이라고 한다. 실제의 pull-up 저항의 저항값은 입력 pin의 누설 전류와 밀접한 관련이 있는 입력 pin의 impedance에 좌우된다.