아두이노, 풀업 저항, 풀다운 저항
글. 오상문 sualchi@daum.net
풀업(PULLUP)/풀다운(PULLDOWN) 저항을 사용하는 이유는 크게 두가지입니다.
1) 아두이노 보드를 과전류에서 보호한다.
2) 플로팅 현상을 방지한다. (HIGH(1)이나 LOW(0)가 아닌 중간 상태를 방지한다.)
아두이노는 자체적으로 풀업 저항이 있습니다. 그러므로 풀업 저항을 사용하고 싶으면 다음처럼 코딩하면 됩니다.
pinMode(12, INPUT_PULLUP); // 12번 핀 입력용, 아두이노 풀업저항 이용
그런데 아두이노 풀업저항은 20K옴인데, 어떤 회로에 따라서는 다른 저항 값이 필요한 경우가 있을 수도 있습니다. 그리고 아두이노에서 제공하지 않는 풀다운 저항이 필요한 경우도 있습니다. 이런 경우에는 외부에 풀업 저항이나 풀다운 저항을 사용하면 됩니다.
풀업 저항은 + 공급이 되는 선 중간에 저항을 연결하는 방식이고,
풀다운 저항은 그라운드(접지)로 연결되는 선 중간에 저항을 연결합니다.
저항은 일반적으로 10K옴 정도를 사용하면 무난합니다.
풀업 저항을 사용하면 스위치 경우에 안눌렸을 때 1이고, 눌리면 0이 됩니다.
풀다운 저항을 사용하면 스위치 경우에 안눌렸을 때 0이고, 눌리면 1이 됩니다.
풀다운 저항을 사용한 예제 회로는 다음과 같습니다.
[아두이노] [스위치]
디지털 12 핀 ------------------------- 오른쪽 다리
GND ------------- 10K 저항 ---------- 오른쪽 다리
5V --------------------------------- 왼쪽 다리
*스위치 다리는 극성이 없으므로 왼쪽/오른쪽이 바뀌어도 상관 없습니다.
다리 네개인 스위치는 양쪽에 두개씩 다리 쌍이 있고 그곳에 +, -를 연결합니다.
그리고 반대쪽 다리와는 왼쪽은 왼쪽끼리 오른쪽은 오른쪽끼리 서로 연결되어 있습니다.
=[스위치]= <-- 이쪽에 +/- 연결한다. 또는 건너편 쪽의 다리를 이용해도 된다.
스위치가 연결된 상태에서는 12핀으로 입력이 들어가고
스위치가 끊어진 상태에서는 저항을 거쳐서 그라운드로 빠져나갑니다.
만약 중간에 저항이 없다면 5V가 그대로 그라운드로 빠져나가면서 아두이노 보드가 망가집니다.
[화면] 연결한 모습
예제 코드는 다음과 같습니다.
결과 값은 시리얼 모니터 화면에서 볼 수 있습니다.
void setup() {
// put your setup code here, to run once:
// pinMode(12, INPUT_PULLUP); // 아두이노 풀업저항 이용
pinMode(12, INPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(digitalRead(12));
delay(50);
}
<이상>
'아두이노, 라즈베리파이' 카테고리의 다른 글
아두이노, 가변 저항을 이용한 DC모터 제어 (0) | 2019.11.04 |
---|---|
아두이노, 거리 센서 종류 (0) | 2019.11.04 |
아두이노, 초음파 센서와 서보모터 예제 (0) | 2019.10.31 |
아두이노, 서보모터 제어 예제 (0) | 2019.10.31 |
아두이노, 릴레이로 꼬마전구 외부전원 제어하기 (0) | 2019.10.29 |