풀업, 풀다운은 Floating상태를 방지하기 위한 회로이다.
Floating은 디지털적으로 0도 아니고 1도 아닌 단어 그대로 유동적이라는 말이다. 그래서 이런 상태를 방지하기 위해 풀업은 Floating 상태를 끌어올려 1상태로, 풀다운은 Floating상태를 끌어내려 0상태로 만드는 회로를 말한다.
다음 그림은 핀의 상태를 각각 Pull-up, Pull-down, No pull-up and no pull-down으로 설정했을때의 파형이다.
위 그림에서 Floating상태는 진폭이 크지 않지만 상황에 따라 어떻게 될지는 아무도 알 수 없다. 프로브와 연결된 선을 손으로 살짝 잡았더니 아래와 같이 바뀌었다.
Pull-up/Pull-down 회로는 간단하지만 내가 전자 전공이 아니라 설명을 들을 때는 이해가 가지만 실제 이 회로를 만들려고 하면 다시 검색을 해봐야 한다.
그래서 여기에 다시 한번 정리해 보고자 이 글을 쓴다.
1. Pull-up 저항
MCU의 Input Pin에 인가되는 신호를 상시는 1, 스위치를 누르면 0 상태로 만들고 싶을 경우 어떻게 해야 할까?
왼쪽과 같이 구성해야 할 것이다.
그러나 스위치를 눌렀을 때는 GND쪽으로 전류가 흘러 Input Pin에는 0V가 되지만 스위치를 누르지 않은 경우 Floating 상태가 된다.
따라서 Floating상태를 방지하기 위해서는 위 그림의 왼쪽과 같이 별도의 전원과 저항으로 윗쪽을 구성해 줘야 정상적으로 동작한다.
따라서 아래와 같이 구성해야 원하는 결과를 얻을 수 있다.
2. Pull-down 저항
Pull-up과 반대로 상시는 0, 스위치를 누르면 1인 상태의 회로를 구성하려면 어떻게 해야 할까?
가장 단순히 생각하면 왼쪽 그림과 같을 것이다. 스위치를 누르지 않은 상태에서는 3.3V가 인가되지 않으므로 0, 스위치를 누르면 1상태로...
하지만 스위치를 누르지 않은 상태는 Floating상태이다.
이 Floating상태를 해결하기 위해 GND쪽에 Pull-down저항을 사용해 회로를 구성해야 정상적으로 동작한다.
따라서 아래와 같이 구성해야 한다.
3. 복기
원리는 대충 이해가 간다. 왜 써야 하는지도 알겠다.
하지만 이해했다고 생각하고 다시 생각해보니 Pull-up저항의 용도가 이해가 되지 않았다.
먼저 Pull-up저항을 보기전에 Pull-down저항을 보자.
위 [Pull-down Open/Close] 그림의 오른쪽, 즉 스위치가 닫혔을 때 전류는 GND쪽의 Pull-down저항때문에 GND로 흐르지 않고 Input Pin쪽으로 흐른다.
이 상황에서는 Pull-down저항의 용도가 명확하다.
하지만 Pull-up저항은 Source부분에 있으므로 Pull-down과 같이 흐름을 막는 용도로 사용되지도 않는다.
그럼 여기다 왜 저항을 붙이는 것일까?
구글링을 열심히 해본 결과 Source와 GND간에 저항이 없을 경우 이 사이가 단락되어 과전류가 흐르기 때문이라고 한다.
음.. 대충 이해가 간다.
하지만 Pull-down회로를 보는 순간 다시 혼란스러워 졌다. Pull-down의 경우 스위치를 눌렀을 때 3.3V가 중간에 저항없이 그대로 Input Pin으로 전달되지 않는가???
한참 생각을 하다 혼자 내린 결론은 이렇다.
MCU 의 Input Pin에는 자체 저항값이 있다. 따라서 Pull-up의 경우 스위치를 눌렀을때 Source로부터 GND까지 단락을 막기 위해 저항을 사용하며 Input Pin은 외부 저항과 상관이 없다.
Pull-down의 경우도 마찬가지고 이에 더해 Source에서 GND로 가는 길을 막음으로써 전류가 Input Pin으로 가도록 유도하는 역할이 더해진다.
이게 맞는지는 모르겠지만 현재 얄팍한 전기지식으로는 이런 결론밖에 내릴 수 없을거 같다.
'임베디드 > 전자 일반' 카테고리의 다른 글
2. [전자일반] Open-Collector / Open-Drain (0) | 2024.09.24 |
---|