Raspberry pi GPIO вхідні штифти дають випадкові значення


12

Останнім часом я багато грав з Raspberry Pi. Але у мене є проблема.

Коли я встановлюю вхідний контакт, щоб перевірити, надсилається чи електроенергія на нього, він дає мені досить нестабільні відповіді.

Кілька зауважень, які я зробив, щоб з’ясувати свою проблему:

  1. Коли я підключаю ланцюг, і електроенергія надходить на вхідний штифт, значення, яке вона дає мені, відповідає ІСТИНА або 1.

  2. Коли я розриваю ланцюг, видаляючи світлодіод, який є його частиною (коли вхідне значення повинно бути 0), він дає мені випадкові значення, зміщуючись між 0 і 1.

  3. Коли я виймаю всі кабелі з мого Pi, це дає мені постійне значення 0

  4. Якщо у мене зняті всі кабелі GPIO, це дає мені значення 0, але якщо я просто торкаюся вхідного штифта шматочком металу, що веде електроенергію (що призводить до нічого на іншому кінці), він починається з випадкових значень знову. Це не дає мені випадкових значень, якщо у мене теж є щось, що пов'язане з вихідним штифтом. Він не повинен нікуди вести, він просто повинен торкнутися вихідного штифта. І якийсь інший шматок металу повинен торкатися вхідного штифта. Жодного зв'язку між ними немає.

Цікаво, чому він починає давати мені випадкові значення, коли штифт Input GPIO торкається будь-якого металу.

І ще цікавіше, чому це дає мені консистенцію 1 або ІСТИНИ, коли я фактично надсилаю на нього електроенергію?


Змінити до заяви № 4: Він не дає мені випадкових значень, якщо у мене теж є щось, що підключено до виводу. Він не повинен нікуди вести, він просто повинен торкнутися вихідного штифта. І якийсь інший шматок металу повинен торкатися вхідного штифта. Жодного зв'язку між ними немає
Густаф

Ласкаво просимо до обміну стека Raspberry Pi! Ви знаєте, що можете відредагувати своє запитання, щоб виправити цю інформацію, а не коментувати її? Також час від часу заскакуйте у чат. Ми завжди любимо нову компанію, і це допоможе показати, що цей сайт корисний, зростає та має базу користувачів. Дякую!
RPiAwesomeness

1
Це тому, що штифти плавають. Більше інформації на електроніці.stackexchange.com
a/35705

Відповіді:


14

Проблема

Коли я підключаю ланцюг, і електроенергія надходить на вхідний штифт, значення, яке вона дає мені, відповідає ІСТИНА або 1.

Щоправда, але що відбувається, коли земля підключена до вхідного штифта GPIO? Значення, яке воно дало б, завжди було б помилковим .

  • Коли живлення підключено до вхідного штифта: вхідний штифт визначає 1 (вірно).
  • Коли земля підключена до вхідного штифта: вхідний штифт виявляє 0 (false).
  • Якщо до вхідного штифта нічого не підключено: вхідний контакт заплутається.

Коли нічого не підключено, штифт знаходиться у «плаваючому» стані, а вихід не передбачуваний. воно знаходиться у невизначеному стані, воно не є ні 0, ні 1, і виявлене значення може дивно змінюватися, отже, і ваші випадкові результати. В електроніці це відоме як третій стан .

Ще кілька деталей із статті у Вікіпедії :

У цифрових схемах високий імпеданс (також відомий як hi-Z, трійчастий або плаваючий) вихідний ланцюг не виводиться на будь-який визначений логічний рівень. Сигнал не приводиться ні до логічного високого, ні до низького рівня; ця третя умова призводить до опису "тризначно". Такий сигнал можна розглядати як розімкнутий ланцюг (або "плаваючий" провід).

Загальне рішення

Рішення - розсувний резистор . Подумайте про це як про додатковий компонент, який нічого не робить, коли рядок отримує 0 або 1. Але коли рядок простоює, він раптом починає дію і дає 0.

Розчин Raspberry Pi

На щастя для вас, у Rpi є вбудований розсувний механізм, його потрібно активувати програмно. Ось сценарій python для цього:

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.

Бічна примітка

Не підключайте живлення безпосередньо до штифта, як це було б небезпечно! Переконайтесь, що в ланцюзі є достатній опір. Крім того, ніколи не підключайте живлення напругою 5 В безпосередньо до GPIO, оскільки він приймає лише 3,3 В.


Чи знаєте ви еквівалентний код C # під час роботи на основній платформі Windows 10 IoT?
Віджай Чавда

Ця відповідь золота! Thx
domih
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.