라즈베리 파이 GPIO 입력 핀은 임의의 값을 제공합니다


12

나는 최근에 Raspberry Pi와 많은 것을 연주했습니다. 하지만 문제가 있습니다.

전기가 전송되는지 여부를 확인하기 위해 입력 핀을 설정할 때 다소 불안정한 답변을 제공합니다.

내 문제를 명확히하기 위해 몇 가지 관찰을했습니다.

  1. 회로를 연결하고 전기가 입력 핀으로 흐를 때 나에게주는 값은 지속적으로 참 또는 1입니다.

  2. 회로의 일부인 LED를 제거하여 회로를 차단하면 (입력 값이 0이어야 함) 0과 1 사이에서 임의의 값을 가져옵니다.

  3. Pi에서 모든 케이블을 제거하면 일관된 값이 0이됩니다.

  4. 모든 GPIO 케이블을 제거하면 값이 0이되지만 전기 리드 금속 조각으로 입력 핀을 만지면 (다른 쪽 끝에 아무것도 없음) 임의의 값으로 다시 시작됩니다. 출력 핀에 무언가가 연결되어 있지 않으면 임의의 값을 제공하지 않습니다. 어디든 연결할 필요가 없으며 출력 핀을 터치하기 만하면됩니다. 그리고 다른 금속 조각은 입력 핀에 닿아 야합니다. 그들 사이에 전혀 연결이 없습니다.

입력 GPIO 핀이 금속에 닿아 서 왜 임의의 값을 갖기 시작하는지 궁금합니다.

더욱더 모욕적 인 이유는, 실제로 전기를 보낼 때 왜 일관된 1 또는 TRUE를 제공합니까?


명령문 번호 4로 편집 : 출력 핀에 무언가가 연결되어 있지 않으면 임의의 값을주지 않습니다. 어디든 연결할 필요가 없으며 출력 핀을 터치하기 만하면됩니다. 그리고 다른 금속 조각은 입력 핀에 닿아 야합니다. 그들 사이에 전혀 연결이 없습니다
Gustaf

Raspberry Pi Stack Exchange에 오신 것을 환영합니다! 정보를 주석 처리하는 대신 정보를 수정하기 위해 질문을 편집 할 수 있다는 것을 알고 있습니까? 또한 때때로 채팅에 참여합니다. 우리는 항상 새로운 회사를 좋아하며이 사이트가 유용하고 성장하며 관련 사용자 기반이 있음을 보여줍니다. 감사!
RPiAwesomeness

1
핀이 떠 있기 때문입니다. electronics.stackexchange.com/a/35705
Gerben

답변:


14

문제

회로를 연결하고 전기가 입력 핀으로 흐를 때 나에게주는 값은 지속적으로 참 또는 1입니다.

사실, 접지 가 GPIO 입력 핀에 연결 되면 어떻게됩니까 ? 그것이주는 값은 항상 false 입니다.

  • 전원이 입력 핀에 연결된 경우 : 입력 핀이 1 (참)을 감지합니다.
  • 접지가 입력 핀에 연결된 경우 : 입력 핀은 0 (거짓)을 감지합니다.
  • 되면 아무것도 입력 핀에 접속되지 않는다 : 입력 핀 혼란 얻는다.

아무것도 연결되어 있지 않으면 핀이 "부동"상태에 있고 출력을 예측할 수 없습니다. 정의되지 않은 상태이고 0도 1도 아니고 탐지 된 값이 이상하게 변경 될 수 있으므로 임의의 결과가 나타납니다. 전자 공학에서 이것은 제 3의 상태 로 알려져 있습니다.

Wikipedia 기사 에서 더 자세한 내용 :

디지털 회로에서 높은 임피던스 (hi-Z, 3 상 또는 플로팅이라고도 함) 출력은 출력 회로에 의해 정의 된 로직 레벨로 구동되지 않습니다. 신호는 논리적 인 하이 레벨 또는 로우 레벨로 구동되지 않습니다. 이 세 번째 조건은 "tri-stated"라는 설명으로 이어집니다. 이러한 신호는 개방 회로 (또는 "부동"와이어)로 볼 수 있습니다.

일반적인 해결책

해결책은 풀다운 저항 입니다. 이것을 회선이 0 또는 1을 얻을 때 아무것도하지 않는 추가 구성 요소로 생각하십시오. 그러나 회선이 유휴 상태 일 때 갑자기 작동하여 0을 제공합니다.

라즈베리 파이 솔루션

운 좋게도 Rpi에는 풀다운 기능이 내장되어 있으므로 프로그래밍 방식으로 활성화해야합니다. 그에 대한 파이썬 스크립트는 다음과 같습니다.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
//Now your input is stable.

사이드 노트

위험하므로 핀에 전원을 직접 연결하지 마십시오! 회로에 충분한 저항이 있는지 확인하십시오. 또한 5V 전원은 3.3V 만 수용하므로 GPIO에 직접 연결하지 마십시오.


Windows 10 IoT 코어 플랫폼에서 실행할 때 동등한 C # 코드를 알고 있습니까?
Vijay Chavda

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