일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pyTorch
- Softmax
- assignment
- neural net
- leetcode
- softmax backpropagation
- autoencoder
- pullup
- #9
- Backpropagation
- error
- KNN
- Big size image
- NotFoundError
- cs231n
- Features
- backward pass
- Floating
- TensorFlow
- two-layer neural net
- assignment1
- 풀다운저항
- Solution
- palindrome
- Circuit
- atmega128
- 회로
- 풀업저항
- pulldown
- impl
- Today
- Total
코딩공부
풀업저항, 풀다운저항 본문
아...글을 한번 날려먹으니까 정말 쓰기싫다... 일단 다시 시작해보자면, 아직 풀업저항, 풀다운 저항을 완전히 이해했다고 하기는 어려우나 다음에 보고서 내가 이렇게 생각했었구나 하기 위해서 글을 우선 써본다!
글의 신뢰도는 정말 낮은 수준이니까 보고 아니 이거아니잖아요ㅡㅡ 하지는 말아주셨으면... 알려주시는 내용이나 질문은 다 환영입니다!!
¶ 1. Floating 상태
내가 사용하는 Atmega128을 예로 들어보자.
Atmega128 데이터시트의 318페이지이다. 맨 위를 보자. 사실 맞는지는 아직 의문이다.
VIL의 경우 Input Low Voltage except XTAL1 and RESET pins 이니까 XTAL1 즉 크리스탈과 RESET 리셋 핀을 제외한 Input Low Voltage는(그 두개를 빼고 나머지라는건 GPIO의 이야기가 아닐까 싶은데... 일단 이것도 좀 더 알아봐야 겠다.) 두개 빼고 나머지 맞다!
알았다!!!! Atmega128의 Port A등에는 Pull-up 저항이 이미 내재되어 있다! 그래서 신호가 나갈때(Output을 해줄때) 전압이 Floating상태가 아닌 정상적인 값으로 나간다! 정상적인 값의 기준은 표에 나와있는대로 Low값을 보내주면 0.7V미만으로 나가고 High값을 보내주면 4.2V이상으로 나간다!! 이해했다!!!
그래 그렇다면 이제부터 다시 Floating 상태에 대해 설명하겠다!
Floating상태란 신호를 보내줘야할 곳이 전원에도 그라운드에도 연결되지 않은 상태, open input상태에 있어서 MCU에서 받는 값이 얼마인지 모르는 상태이다! 조금 말이 다른것 같은데 Low도 High도 아닌 VIL즉, 0.2Vcc이상 VIH 즉, 0.6Vcc이하인 저항값이 걸릴 수 있게 된다는 것이다! 큰 문제다! 이렇게 될 경우 정상적인 작동이 불가능 하므로 pull-up 또는 pull-down 저항을 쓰는것이다!
그림으로 floating 상태를 보자.
그림판짱짱ㅎㅎ 그림상에 보이는 스위치가 Open되어 있을경우 MCU의 핀에는 전원도, 그라운드도 연결되어 있지 않은 상태이므로 floating status가 되는 것이다! 만약 스위치가 closed된다면 MCU의 Port는 GND에 연결되어 있으니 0v를 받게 되겠지만 스위치가 Open되어 있을때 floating 상태에 빠지게 되므로 Pull-up 또는 Pull-down 저항을 써 주어야 한다.
지금부터는 본격적으로 풀업저항, 풀다운 저항에 대해 알아보자.
참고로 위와 아래에 나오는 모든 회로그림들은 MCU에 적용되는 전원(+5v)와 GND는 제외하고 그려졌다. 있다고 생각하고 봐주면 되겠다!
¶ 2. Pull-up 저항
이번엔 ORCAD를 이용해서 그려보았다. 2년만에 했더니 이 간단한거 그리는데
VCC랑 GND를 못찾아서 20분은 걸린거같다... 어쨌든 그림상에 보이는 R1 저항이 바로 PULL-UP 저항이다! 이제 설명을 해 보겠다.
이 그림은 그러면 Vcc를 업애면 되지 않을까!? 하는 생각에 나온 그림이다. 물론이런 회로의 경우 우선 스위치가 closed되었을 경우를 생각하면 Port에는 GND값, 0V의 값이 들어갈테니 문제가 없어 보일수 있지만, 스위치가 Open상태일때 MCU의 Port에는 +5v도, GND도 연결되어 있지 않으므로 floating상태에 빠지게된다.(그러면 안된다.)
¶ 3. Pull-down 저항
이번에는 Pull-down 저항이다. Pull-up의 반대방향이므로 신호값이 애매할때 (floating상태)일때 신호 값을 아래로(GND)방향으로, 0V로 만들어주는 것이다! 그림을 보도록 하자.
이 그림이 풀다운 저항이 적용된 회로이다. 그림에서 SWITCH가 OPEN되었을때 MCU의 Port는 GND에 연결되어 있으므로 LOW신호, 0V가 MCU로 입력된다고 생각 할 수 있다. SWITCH가 CLOSED되었을 때에는 물론 HIGH신호, 5V가 MCU로 입력되는 것이다. 그렇다면 이러한 풀다운저항이 적용되지 않았을 경우를 생각해보자.
첫번째 경우이다. 어디서 많이 보던 경우 아닌가? 위의 Pull-up 저항에서 보던 경우와 생긴것이 거의 비슷하다.(당연하지만) 이 때 SWITCH가 Open상태라면 MCU의 Port는 GND에 연결되어 있으므로 Low신호, 0V의 값이 입력된다. 그렇다면 SWITCH가 closed된 상황을 생각해보자. 회로는 연결되어있는데(전위차는 존재하는데) 회로상에 저항이 없으므로 쇼트가 날 것이다!
두번째 경우를 보자.
이제 익숙할 것 같으니 바로 시작하자. SWITCH가 Closed될 경우에는? Port는 5V가 연결되어 있으므로 High, +5V의 신호가 들어오게 될 것이다. SWITCH가 Open될 경우 Port는 +5V에도, GND에도 연결되지 못 한 상황이므로, floating 상태의 신호가 들어오게 될 것이다. 그러면 안된다!!
이런 방식으로 풀다운 저항 또한 신호값의 모호함과 쇼트가 날 수 있는 가능성을 배제하게 해주는 역할을 한다.
¶ 4. 정리
정리를 하기엔 솔직히 아직 긴가민가 한 부분들이 많을 것이다. 나 또한 그랬지만 전기, 회로적 기초 지식이 부족해서 생길수도 있으니 기초 지식을 몇가지 설명하겠다!
우선 MCU의 각 핀은 어느 정도 저항값을 가지고있다. 이 저항값은
사진에서 보다시피 I/O Pin들을 기준으로 20~50kΩ의 값을 가진다. 그런데 회로상에 사용하는 저항은 내부 회로에 흘러야 할 전류값을 기준으로 결정되는데 일반적으로 수 kΩ정도의 값이므로 I/O Pin의 저항이 훨씬 큰 값을 가지고 있다고 할 수 있다.
두번째, 스위치는 매우 작은 저항값을 가지고있다!(무시해도 될정도)
세번째, 이걸 위해서 첫번째와 두번째에서 저항값에 대한 설명을 조금 했는데, 이유는 전류는 저항값이 적은 쪽으로 흐르려는 성질이 있어서 어느 한 쪽의 저항값이 0에 가까울경우 그쪽으로 거의 모든 전류가 흘러버린다!
이 세가지를 염두에 두고 글을 다시 본다면 이해가 될지도 모르겠다! 사실 나도 다시 봐야할듯싶다 ㅎㅎ... 어렵다 풀업 풀다운저항...
혹시 글을 읽고 잘못된 점이있으면 수정해줬으면 정말 감사할것 것 같고 궁금한 점이 있다면 같이 생각하면서 공부했으면 좋겠습니다! 글은 존댓말로 쓰면 나중에 읽을때 힘들것 같아 반말로 작성했습니다.ㅠㅠ... 불편하게 생각되시면 죄송합니다 ㅠㅠ... 우선 꼬박 이틀걸린 풀업, 풀다운 저항 정리는 여기까지!