본문 바로가기
Arduino/AVR/0. 회로이론

pullup resistor(풀업저항), pulldown resistor(풀다운저항)

by pepsiman 2009. 6. 1.
디지털 논리회로를 하면서 가장 처음 나를 괴롭힌것이 풀업저항과 풀다운저항이었습니다.
지금도 해깔리긴하지만 일단 정리하고자 글을 남깁니다.

디지털에서는 모두 알다시피 0(거짓,LOW)과 1(참,HIGH)만 존재하고 그 중간은 없습니다.
TTL 레벨에서는 0~5v의 전압이 공급되는데 0v 는 거짓이고 5v는 참으로 인식합니다.

여기서 문제가 생기는데
2.5v는 참일까 거짓일까?
또는 
회로와 아무 연결이 없는 (avr의)입력핀은 참일까 거짓일까?

이문제를 해결하기 위해 풀업과 풀다운 저항이 필요하게됩니다.
즉 회로가 연결이 안되어 있으면 잡음신호등으로 
불안정한 값이 읽혀질수 있으므로 명시적으로 LOW 또는 HIGH 값을 주는 것입니다.




실제 사용예를 보겠습니다.


스위치를 눌렀을 경우 HIGH를 입력받고 싶은경우(좌측그림)
스위치를 누르지 않으면 LOW여야만 합니다. 따라서 스위치와 입력핀 사이에 충분히 큰저항(TTL에서는 대략10K옴)을 사용하여 GND에 연결합니다. 이때 사용한 저항을 풀다운저항이라고 합니다.

반대로 스위치를 눌렀을 경우 LOW를 입력받고 싶은경우(우측그림)
스위치를 누르지 않으면 HIGH여야만 합니다. 따라서 스위치와 입력핀 사이에 충분히 큰저항(TTL에서는 대략10K옴)을 사용하여 5v에 연결합니다. 이때 사용한 저항을 풀업저항이라고 합니다.

이걸 응용하여 스위치 없이 항시 HIGH 또는 LOW 값을 주고자할 때도 쓰입니다.

[참고] 
AVR에서 인식하는 정확한 값은
0~5v를 사용할경우 2v이상이면 HIGH로 인식하고, 0~3.3v를 사용할 경우 1.5v이상이면 HIGH로 인식한다고 합니다.