GPIO: Чому дротова кнопка заземлена, а не + 3,3 В?


14

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

Я підключаю кнопки до + 3,3 В, тому сигнал високий, оскільки, здається, це має більше сенсу і зберігає код більш логічним, але повинна бути причина, що більшість людей віддають перевагу підключенню до землі. Які переваги?


Примітка: Коли я кажу "підтягуючий резистор", я мав на увазі або фізичний зовнішній резистор, або внутрішній підтягуючий резистор, налаштований у коді.
howard10

Відповіді:


19

Однією з головних причин, чому переваги підключення кнопок і логіки до GND (а потім скопійовані по всьому Інтернету) є оптимізацією живлення.

  • Витягнення штифта LOW з резистором до GND коштує 0 Вт.
  • Потягнення штифта ВИСОКО з резистором до + Vcc коштує енергії.

На складних схемах або схемах, які покладаються на акумулятори, ця потужність дуже дорогоцінна.

Інші причини включають низьку генерацію ЕРС. На бездротових пристроях підтягування логіки високого рівня спричинить непотрібні перехресні розмови на надзвичайно чутливих радіочастотних приймачах. На таких приймачах є площина GND, яка використовується для фільтрації шуму, і саме тут впадає вся логіка. Потім процесор використовує площину GND для фільтрування комутаційних шумів.


3
Як підтягування резистором вгору або вниз коштує будь-якої потужності? Струм надходить на дуже високий вхід імпедансу на Pi, який збирається зменшити будь-який струм до субмікроАмп, що є потужністю мікро Вт.
stefandz

Гаразд, але просто скажи мені, якщо я помиляюся. тягнути шпильку вниз, що є 0v = 0wattsвживанням, але тягнути шпильку вгору >0watts- будь-який вид, мікро, мілі, нано, не має значення. Як уже згадувалося, на потужність батареї допомагає кожен нано-ват. Але як уже тут відповіли ... на USB це нічого не означає. Я помиляюся?
Пьотр Кула

1
Не обов'язково правда. Цифрові входи - це високий опір до заземлення. Але вони не просто резистори. Вони є вхідними воротами, як правило, для БНТ, і ці ворота не є ідеальними. У них є струми витоку, і ці струми витоку можуть бути в будь-якому напрямку, в або назовні. Отже, ваше випадання могло б споживати мікрохвильову енергію або два, стільки, скільки могло зробити це.
stefandz

Якщо вам довелося розробити вбудований пристрій, який працював на батареях 2AA та вимагає замовник, він працює щонайменше 12 місяців. І вам доведеться знищити / підняти GPIO. Який би ви використали для економії більшої енергії. (Ми говоримо про мікроуправління тут)
Пьотр Кула,

4
Для чого це варто, я зробив кілька вимірювань щодо цього - і вигравання виграє (для споживання електроенергії), але тільки справедливо. 10k підтягування до 3.3V = 9fW (так, фемтоват) - 10k спад на землю = 5fW. Це, звичайно, навіть не в економії небагато батареї території.
stefandz

10

Існують складні історичні причини, через які інженери-електрики, як правило, піднімали входи високо за допомогою резисторів і використовували комутатори для їх заземлення.

Однак ці причини не особливо стосуються хобі використання Raspberry Pi. Використовуйте все, що для вас має сенс.

Якщо ви робите комерційний продукт або хочете, щоб ваш дизайн був трохи кращим, ви вибираєте підтяжки із заземлюючим перемикачем з наступних практичних причин:

  • Довгий провід заземлення становить менший ризик випромінювання EMI / EMC, ніж той, що підключений до живлення
  • Що-небудь заземлити і знайти точку заземлення для підключення - простіше, ніж електромережу
  • Якщо вимикач або електропроводка, зазвичай розміщена на деякій відстані від ланцюга, пошкоджується і або замикає дріт або внутрішні деталі комутатора до корпусу або користувача, шкоди не буде - це все на місці

2

Суворо резистор BMC GPIO суто не потребує, BMC GPIO має внутрішні підтягуючі резистори, які активуються, коли запрограмовані як вхід, хоча це не шкодить.

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

Хороший (безпечний) дизайн буде використовувати серійний резистор (1 кОм) послідовно з кнопкою для обмеження струму. З причин, викладених Адамом Девісом, бажано підключити кнопку заземлення та встановити захисний резистор близько до штифта GPIO.


Єдина проблема полягає в тому, що під час фаз завантаження 1-3 ці штифти плавають (передача GPU на процесор), а потім на Фазі 4 під час завантаження Linux Kernel PIN-коди встановлюються на правильний стан. Це може спричинити серйозні проблеми з воротами, які чекають логіки. Тож бажано все-таки витягнути їх вниз, щоб плаваючий період під час завантаження не змусив ваших ланцюгів думати!
Пьотр Кула

1

Я не думаю, що є причина віддавати перевагу одному над іншим на RPi. Більшість людей, ймовірно, просто копіюють або переносять схеми, які вони бачили в інших місцях.

При підключенні схеми (за допомогою дротів або друкованої плати) добре вибрати те, що зручніше, і перекласти його на потрібне значення у вашому програмному забезпеченні.


0

За старих часів TTL потрібно було набагато більше струму, щоб тягнути шпильку низько, ніж тягнути її високо. Таким чином, резистор, що підтягується, може мати більший опір (а отже, і менший витрата енергії), ніж резистор, що випадає. Це не має значення для сучасних CMOS, але старі звички важко вмирають.


-1

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

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