안녕하세요 오늘은 플로팅과 풀업저항,풀다운저항에 대해 알아보겠습니다. MCU는 아두이노로 사용하겠습니다
*플로팅이란
처음에 버튼을 사용할 경우 그림과 같이 보통 연결합니다
버튼이 IO핀과, 3.3V에 연결되어있고, 버튼이 안눌렸을때는 0, 눌렸을때는 1을 기대합니다
1
2
3
4
5
6
7
8
9
10
|
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(2,INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println(digitalRead(2));
}
|
cs |
하지만 버튼을 안 눌린 상태에서 실제 들어오는 값을 읽었을 경우 0과 1이 들어옵니다. 이 상태를 플로팅(Floating) 상태라고 합니다. 버튼이 안 눌렸을 경우 0인지 1인지 노이즈에 의해서 값이 변합니다.
그럼 이러한 증상을 해결하기 위해서는, 버튼이 안 눌렸을 때 1 or 0으로 고정이 되게 해야 합니다. 1로 고정을 시키는 행동을 풀업이라고 하고, 0으로 고정시키는 행동을 풀다운이라고 합니다. 풀업은 pull-up이고 풀다운은 pull-down인데 포트로 up을 pull(당기다)하면 1(HIGH)고 포트로 down을 pull하면 0(LOW)입니다.
위의 예시에서는 눌렀을 때 1이고 안 눌렸을 때 0이 되게 해야 하므로 풀다운저항을 사용해야 합니다.
예시의 회로도 입니다
*풀다운저항
풀다운 저항을 연결한 모습입니다. 버튼을 누르지 않으면 MCU 입력핀이 GND로 연결되어 있으므로 0이 됩니다
버튼을 누르면 3.3V 가 MCU입력핀으로 가게 돼서 1이 됩니다.
버튼을 안눌렀을때 0, 눌렀을때 1인거를 볼 수 있습니다.
*풀업저항
위의 사진은 풀업저항을 연결한 모습입니다. 버튼을 누르지 않았을때는 3.3V가 MCU 입력핀으로 가서 1이 됩니다.
버튼을 클릭하면 저항이 가장 낮은 GND로 down 됩니다.
* 기타 정보
1) 풀업, 풀다운을 사용할때 저항을 사용하는 이유
-> 저항을 사용하지 않으면 VCC와 GND가 연결이 되서 합선이므로 저항을 사용해줍니다
2) 풀업,풀다운 저항을 연결할때 저항 크기 선정 기준
보통 풀업저항은 입력회로에 많이 사용하고, 버튼의 전압/전류 규격을 보면 12V/50mA로써 최대 전류가 50mA입니다. 전원을 5V 사용한다고 보면 R=V/I , R = 5/0.05 = 100Ω이고 100Ω이상의저항을 달면 됩니다. 그래서 보통 1.5k~10kΩ정도사용합니다.
3) 보통의 MCU에서는 내부풀업이라고해서, 저항을 실제로 연결 안 해도 내부적으로 풀업저항이 연결되어 있어서, 풀업저항 효과를 낼 수 있습니다. 아두이노에서는 pinMode(2,INPUT) -> pinMode(2,INPUT_PULLUP) 이렇게 해주면 내부풀업을 사용하는 것입니다.
4) 버튼을 사용할 때 플로팅 현상 말고 신경 써야할 게 하나 더 있는데, 채터링현상 입니다. 채터링 현상이란 스위치의 상태가 변할 때 기계적인 진동에 의해 스위치가 붙었다 떨어지는 것을 반복하는 것을 의미합니다. 이 증상이 나타나게 된다면 사용자는 버튼을 한번 눌렀는데, 두세 번 누른 것처럼 나올 수 있고 채터링은 다음 포스팅 때 알아보겠습니다.
'지식 > MCU지식' 카테고리의 다른 글
엔디안이란?(빅엔디안, 리틀엔디안) (0) | 2023.03.26 |
---|---|
MCU GPIO 전류 측정하기 (0) | 2023.01.23 |
UART통신 알아보기 (1) | 2022.12.24 |
MCU-push pull 알아보기 (0) | 2022.06.02 |
MCU-GPIO구조 알아보기 (0) | 2022.05.22 |