GPIO: Почему кнопка заземления, а не + 3,3 В?


13

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

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


Примечание. Когда я говорил «подтягивающий резистор», я имел в виду либо физический внешний резистор, либо внутренний подтягивающий резистор, сконфигурированный в коде.
Howard10

Ответы:


17

Одна из главных причин, почему предпочтительнее подключить кнопки и логику к GND (а затем скопировать их по всему интернету), заключается в оптимизации энергопотребления.

  • Тяга НИЗКОГО с резистором к GND стоит 0 Вт.
  • Тяга ВЫСОКОГО резистора к + Vcc стоит энергии.

В сложных цепях или цепях, которые используют батареи, эта мощность очень ценна.

Другие причины включают низкую генерацию ЭДС. На беспроводных устройствах высокий уровень логики вызовет ненужные перекрестные помехи на чрезвычайно чувствительных радиочастотных приемниках. На таких приемопередатчиках есть плоскость GND, используемая для фильтрации шума, и именно здесь вся логика тянется к ней Затем процессор использует плоскость GND для фильтрации помех переключения.


3
Как тяга вверх или вниз с резистором стоит любой энергии? Ток подается на вход с очень высоким импедансом на Pi, который уменьшает любой ток до субмикроампер, что составляет микроватты мощности.
stefandz

Хорошо, но просто скажи мне, если я не прав. потяните булавку вниз, что является 0v = 0wattsиспользованием, но потяните булавку вверх >0watts- любой тип, микро, милли, нано, не имеет значения. Как уже упоминалось, от батареи помогает каждый нано ватт. Но, как уже ответили здесь ... на USB это ничего не значит. Я ошибаюсь?
Петр Кула

1
Не обязательно правда. Цифровые входы имеют высокое сопротивление заземления - правда. Но они не просто резисторы. Они являются входными воротами, обычно для полевых транзисторов, и эти ворота не идеальны. Они имеют токи утечки, и эти токи утечки могут быть в любом направлении, внутрь или наружу. Следовательно, ваше снижение может потреблять микроватт или два, столько же, сколько может подтягивание.
stefandz

Если вам приходилось проектировать встраиваемое устройство, работающее от батарей 2AA, и клиент требует, чтобы оно работало не менее 12 месяцев. И вы должны опустить / поднять GPIO. Что бы вы использовали, чтобы сохранить больше энергии. (Мы говорим о микроуправлении здесь)
Петр Кула

4
Для чего это стоит, я сделал некоторые замеры на этом - и выпадающий выигрывает (для энергопотребления), но только справедливо. Отвод 10 к до 3,3 В = 9 фВт (да, фемтаватт) - откат на 10 000 к земле = 5 фВт. Это, конечно, даже не в сохранении немного территории батареи.
stefandz

9

Существуют сложные исторические причины, по которым инженеры-электрики, как правило, поднимали входы высоко резисторами и использовали переключатели для их заземления.

Однако эти причины не имеют особого отношения к использованию Raspberry Pi для хобби. Используйте то, что имеет смысл для вас.

Если вы делаете коммерческий продукт или хотите, чтобы ваш дизайн был немного лучше, вы выберете подтягивания с заземлителем по следующим практическим причинам:

  • Длинный провод заземления представляет меньший риск излучения электромагнитных и электромагнитных помех, чем провод, подключенный к источнику питания
  • Заземление чего-либо и поиск точки заземления для подключения легче, чем линия электропередачи
  • Если коммутатор или проводка, обычно расположенная на некотором расстоянии от цепи, повреждается и либо замыкает провод или внутренние детали коммутатора на корпус или пользователя, никакого вреда не причиняется - все это на земле

2

Строго говоря, нет необходимости в подтягивающем резисторе, BMC GPIO имеет внутренние подтягивающие резисторы, которые активируются при программировании в качестве входа, хотя это не вредит.

Не рекомендуется подключать вывод GPIO напрямую к 3V3 или GND. GPIO является двунаправленным, и если его запрограммировать как ввод, это не вызовет проблем. С другой стороны, если он запрограммирован как выход, это приведет к чрезмерному току.

Хорошая (безопасная) конструкция будет использовать последовательный резистор (1 кОм) последовательно с кнопкой для ограничения тока. По причинам, изложенным Адамом Дэвисом, предпочтительно подключить кнопку к земле и расположить защитный резистор рядом с выводом GPIO.


Единственная проблема состоит в том, что во время фазы загрузки 1-3 эти контакты плавают (передача с графического процессора на процессор), а затем на фазе 4 во время загрузки ядра Linux PIN-коды устанавливаются в правильное состояние. Это может вызвать серьезные проблемы с воротами в ожидании логики. Так что желательно все равно их опустить, чтобы плавающий период во время загрузки не заставлял ваши схемы работать психически!
Петр Кула

1

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

При подключении цепи (с помощью проводов или печатной платы) можно просто выбрать тот, который удобнее, и перевести его в нужное значение в вашем программном обеспечении.


0

В старые времена TTL потребовалось гораздо больше тока, чтобы вытащить булавку, чем чтобы вытащить ее. Таким образом, нагрузочный резистор может иметь более высокое сопротивление (и, следовательно, меньше тратить энергию), чем нагрузочный резистор. Это не имеет значения с современной CMOS, но старые привычки тяжело умирают.


-1

Подключение контакта к земле с помощью внутреннего подтягивающего резистора означает, что вы используете меньше деталей. Все, что вам нужно, это кнопка; не нужен внешний резистор для ограничения тока.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.