Arduino에서 핀을 당기는 방법에는 내부 및 외부 저항을 사용하는 두 가지 방법이 있습니다. INPUT_PULLUP 대신 언제 외부 저항기를 사용해야하는지 궁금합니다.
댓글
- 내 경험상 유일한 차이점은 " 외부 풀업 / 풀다운은 " 교체가 더 쉬우 며 " 회로 만 보면 외부를 볼 수 있습니다. 저항기 때문에 ' 몇 달 후에 설계를 더 쉽게 이해할 수 있습니다. "
답변
일반 애플리케이션에서는 내부 또는 외부 저항을 사용할 수 있습니다.
각 방법에는 다음과 같은 장점이 있습니다.
내부 저항기
- 장점 : 코드 변경으로 유연하게 변경 가능
- 장점 : PCB 크기 감소
- 장점 : 비용 절감 (매우 작음)
- 단점 : MCU를 뜨겁게 만들 수 있음
외부 저항기
- Pr os : MCU의 발열 감소
- 단점 : 내장 PCB 일 경우 교체가 쉽지 않음
- 단점 : PCB 크기 증가
게다가 , 풀업 및 풀다운 저항은 INPUT 포트뿐만 아니라 OUTPUT 포트에도 사용됩니다. OUTPUT 포트의 경우. 외부 저항에는 다른 장점이 있습니다. 즉, 서로 다른 I / O 전압으로 장치를 연결할 수있는 유연성입니다. 예를 들어, I2C 하드웨어에서 하드웨어 수준에서 I2C를 참조하세요 .
참고 : 내가 아는 한, 작성 시점에서 Arduino는 라이브러리는 INPUT_PULLDOWN을 지원하지 않습니다.
댓글
- 1. 내부 풀업에 의해 생성되는 열은 무시할 수 있습니다. 2. AVR 기반 보드가 아닌 일부 보드에는
INPUT_PULLDOWN
가 있습니다.
Answer
“단점 : MCU가 뜨거워 질 수 있습니다.”
그렇지 않습니다. P = V ^ 2 / R이므로 5 * 5 / 20,000 = 1.25mW이면 프로세서가 뜨거워지지 않습니다. Mega2560에서 80을 모두 돌려서 모두 낮게 당겨도 0.1W 만 소모됩니다.
“참고 : 내가 아는 한, 아두 이노 라이브러리는 작성 시점에 INPUT_PULLDOWN을 지원하지 않습니다.”즉 Atmega328P, “1284,”2560 등의 장치 제품군에는 내부 풀다운 저항이 없기 때문입니다. 풀업 만. 데이터 시트의 섹션 14, “I / O 포트”를 참조하십시오.
이 풀업은 일반적으로 I2C 풀업에 충분하지 않습니다. 20K에서 50K 내부 풀업에 의해 생성되는 상승 에지는 매우 느립니다. 외부 4.7K에서 약 2.2K (연결된 I2C 장치 수에 따라 다름)가 필요합니다. 그리고 I2C 버스 사양에 따르면 버스의 출처 (일반적으로 프로세서)가 아니라 버스의 끝에 있어야합니다.
버튼이나 스위치에서 나오는 긴 와이어가있는 경우 일반적으로 외부 풀업을 사용하여 높음과 낮음 사이의 좋은 전환 수준을 보장하는 것이 좋습니다.
답변
“Arduino Language “(예 : pinMode()
함수)는 INPUT_PULLUP 만 알고 있습니다.
따라서 PULLDOWN 저항을위한 외부 저항이 필요합니다.
OUTPUT 신호는 플로팅이 아니므로 PULLUP / PULLDOWN 저항이라는 용어는 실제로 적용되지 않습니다.
게다가 내부 풀업 저항의 값은 조정할 수 없습니다. 해당 값 (20 .. 50k)이 적절하지 않은 경우 (I²C에는 10k 미만의 값이 필요함) 외부 저항기가 필요합니다.
댓글
- 이전 답변에 대한 댓글에서 썼 듯이 일부 Arduino 코어는
INPUT_PULLDOWN
를 지원합니다.