GPIO : 왜 + 3.3v가 아닌 와이어 버튼을 접지에 연결해야합니까?


13

대부분의 예제에서 GPIO 입력에 버튼을 배선하는 것을 보았을 때, 버튼이 닫히면 핀과 접지 사이에 회로가 ​​완성되어 핀에서 낮은 입력을 생성하도록 배선됩니다. 풀업 저항은 입력 값을 높은 값으로 설정하는 데 사용됩니다. Pi의 코드는 버튼 누름으로 낮음을 감지 할 수 있습니다.

버튼을 + 3.3v에 연결했기 때문에 신호가 높고 코드가 더 논리적으로 유지되는 것처럼 보이지만 대부분의 사람들이 접지에 연결하는 것을 선호하는 이유가 있습니다. 장점은 무엇입니까?


참고 : '풀업 저항'이라고 말하면 물리적 외부 저항 또는 내부 풀업 저항을 코드로 구성했습니다.
howard10

답변:


18

GND에 배선 버튼과 로직을 선호하는 주된 이유 중 하나는 전력 최적화 때문입니다.

  • GND에 저항을 사용하여 LOW 핀을 당기면 0 와트가 소비됩니다.
  • + Vcc에 저항이있는 핀을 HIGH로 당기면 전력이 소모됩니다.

배터리에 의존하는 복잡한 회로 나 회로에서이 전력은 매우 소중합니다.

다른 이유는 낮은 EMF 생성을 포함합니다. 무선 장치에서 로직을 높이면 매우 민감한 RF 수신기에서 불필요한 크로스 토크가 발생합니다. 이러한 트랜시버에는 노이즈를 필터링하는 데 사용되는 GND 평면이 있으며 여기에서 모든 로직이 풀다운됩니다. 그런 다음 프로세서는 GND 평면을 사용하여 스위칭 노이즈를 필터링합니다.


3
저항으로 올리거나 내릴 때 어떤 전력이 소비됩니까? 전류는 Pi의 매우 높은 임피던스 입력으로 흐르고 있습니다.이 전류는 마이크로 와트의 전력 인 서브 마이크로 암페어로 전류를 줄입니다.
stefandz

좋아,하지만 내가 틀렸다면 말해줘. 핀을 아래로 당기면 0v = 0watts사용법이지만 >0watts마이크로, 밀리, 나노 등 어떤 종류 의 핀도 중요하지 않습니다. 언급 한 바와 같이, 배터리 전력에서 모든 나노 와트가 도움이됩니다. 그러나 이미 여기에서 대답했듯이 USB에서는 아무것도 의미하지 않습니다. 내가 착각 했니?
Piotr Kula

1
반드시 사실 일 필요는 없습니다. 디지털 입력은 접지에 대한 높은 임피던스입니다. 그러나 그들은 단지 저항이 아닙니다. 이들은 일반적으로 FET에 대한 입력 게이트이며 이러한 게이트는 비 이상적입니다. 누설 전류가 있으며이 누설 전류는 어느 방향이든, 내부 또는 외부 일 수 있습니다. 따라서 풀다운은 풀업만큼 마이크로 와트를 소비 할 수 있습니다.
stefandz

2AA 배터리로 작동하는 내장형 장치를 설계해야했고 고객이 최소 12 개월 동안 작동해야하는 경우. 그리고 GPIO를 풀다운해야합니다. 가장 많은 전력을 절약하는 데 사용할 것입니다. (우리는 여기서 미세 관리를 이야기합니다)
Piotr Kula

4
가치있는 것을 위해, 나는 이것에 대해 약간의 측정을했습니다-그리고 풀다운 승리 (전력 소비)지만 단지. 3.3V = 9fW로 10k 풀업 (예 펨토 와트)-접지로 10k 풀다운 = 5fW. 이것은 확실히 약간의 배터리 영역을 절약 할 수있는 것은 아닙니다.
stefandz

9

전기 엔지니어가 일반적으로 저항으로 입력을 끌어 당기고 스위치를 사용하여 접지하는 복잡한 역사적 이유가 있습니다.

그러나 이러한 이유는 특히 Raspberry Pi의 취미 사용과 관련이 없습니다. 말이되는 것을 사용하십시오.

상용 제품을 만들거나 디자인이 약간 나아지기를 원하는 경우 다음과 같은 실용적인 이유로 접지 스위치가있는 풀업을 선택합니다.

  • 접지선이 길면 전원에 연결된 전선보다 EMI / EMC 방사 위험이 적습니다.
  • 전선을 접지하는 것보다 무언가를 접지하고 연결할 접지점을 찾는 것이 더 쉽습니다.
  • 일반적으로 회로에서 일정 거리를두고 배치 된 스위치 또는 배선이 손상되거나 와이어 또는 내부 스위치 부품이 케이스 나 사용자에게 단락되면 해가 발생하지 않습니다-모두 접지에 있습니다

2

풀업 저항이 필요하지 않은 BMC GPIO에는 내부 풀업 저항이있어 입력으로 프로그래밍 할 때 활성화되지만 해롭지는 않습니다.

GPIO 핀을 3V3 또는 GND에 직접 연결하는 것은 좋지 않습니다. GPIO는 양방향이며 입력으로 프로그래밍 된 경우 아무런 문제가 없습니다. 반면에 출력으로 프로그래밍 된 경우 과도한 전류가 흐르게됩니다.

양호한 안전 설계는 푸시 버튼과 직렬로 직렬 저항 (1kΩ)을 사용하여 전류를 제한합니다. Adam Davis가 만든 이유 때문에 푸시 버튼을 접지에 연결하고 보호 저항을 GPIO 핀에 가깝게 배치하는 것이 좋습니다.


유일한 문제는 부팅 단계 1-3 동안 이러한 핀이 부동 상태 (GPU에서 CPU로 핸드 오버) 한 다음 Linux 커널 부팅 동안 단계 4에서 PIN이 올바른 상태로 설정된다는 것입니다. 이로 인해 게이트가 로직을 기다리는 데 심각한 문제가 발생할 수 있습니다. 따라서 부팅하는 동안 부동 기간으로 인해 회로가 마음에 들지 않도록 어쨌든 풀다운하는 것이 좋습니다.
Piotr Kula

1

RPi에서 다른 것을 선호하는 이유는 없다고 생각합니다. 대부분의 사람들은 아마도 다른 곳에서 본 회로를 복사하거나 포팅하는 것입니다.

회로 (와이어 또는 PCB로)를 연결할 때 더 편리한 것을 선택하고 소프트웨어에서 올바른 의미로 변환하는 것이 좋습니다.


0

TTL의 옛날에는 핀을 끌어 당기는 것보다 핀을 끌어 당기는 데 훨씬 더 많은 전류가 필요했습니다. 따라서 풀업 저항은 풀다운 저항보다 높은 저항 (따라서 전력 소모가 적을 수 있음) 일 수 있습니다. 현대 CMOS에서는 중요하지 않지만 오래된 습관은 열심히 죽습니다.


-1

내부 풀업 저항으로 핀을 접지에 연결하면 더 적은 부품을 사용할 수 있습니다. 버튼 만 있으면됩니다. 전류를 제한하기 위해 외부 저항이 필요하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.