Когда использовать подтягивающие и подтягивающие резисторы

Изучив и поэкспериментировав с микроконтроллерами, я понял концепцию подтягивающих и подтягивающих резисторов. Теперь я понимаю, когда и как их использовать, и как они работают. В основном я использовал подтягивания, потому что меня этому учили, но мне это всегда казалось немного обратным, так как замыкание переключателя устанавливает вход MCU в НИЗКИЙ уровень. Я думаю, что было бы более разумно использовать подтягивающий резистор, чтобы вход был НИЗКИМ, когда переключатель разомкнут, но это только мое мнение.

Должен ли я поднимать или опускать однократные входы? Когда тянуть вниз предпочтительнее, чем тянуть вверх, и наоборот?

Как (другой) новичок в электронике я должен сказать, что этот вопрос никоим образом не глуп. Не стал тоже не знаю, а потому что: "Просмотрено: 1989 раз".
*потому что *12998 раз

Ответы (5)

Ответ зависит от того, какой вы хотите видеть конфигурацию «по умолчанию». Например, предположим, что у вас есть N-канальный полевой МОП-транзистор в нисходящем направлении, и вы хотите, чтобы он был отключен по умолчанию. Затем вы должны использовать подтягивающий резистор, чтобы обеспечить такое поведение, если вход становится высоким импедансом.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

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

схематический

смоделируйте эту схему

Существует также альтернативный случай, когда вы хотите, чтобы устройство было включено по умолчанию, и в этом случае два вышеуказанных случая будут обратными (подтягивание для N-канального MOSFET, понижение для P-канального MOSFET).

Несколько других соображений:

  1. В линиях I2C указаны подтягивающие резисторы, поскольку «ожидается», что устройства будут иметь открытый сток на землю и, следовательно, нуждаются в каком-то способе повышения потенциала линии.

  2. Аналоговые компараторы обычно конфигурируются как устройства с открытым стоком и, следовательно, также нуждаются в подтягивающих резисторах, чтобы получить выходной сигнал с высоким потенциалом.

  3. Вы можете потреблять больше тока, используя подтягивающие/подтягивающие резисторы, в зависимости от того, что подключено к входу/выходу.

  4. Любая конфигурация может одинаково хорошо работать в вашем приложении (т.е. нет существенного преимущества в том или ином случае).

... И любое количество очень специфичных для приложения причин, по которым одна конфигурация может быть предпочтительнее.

Если у сигнала еще нет спецификации, используйте ту, которая имеет для вас наибольшее значение. Это ваш выбор, чтобы сделать вход активным-высоким или активным-низким .

Если это кнопки, обязательно используйте схему устранения дребезга (или сделайте это в программном обеспечении).

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

+1 за единственное параллельное сравнение активного-высокого и активного-низкого, которое я видел. Красиво, проясняет ситуацию.

Если схема вашей схемы такова, что вы можете выбирать — другими словами, остальная часть схемы не требует от вас использовать подтягивание вверх или подтягивание вниз — тогда вам следует подумать о безопасности в случае сбоя.

Если ваш микроконтроллер выйдет из строя или выйдет из строя только этот выход, будет действовать подтягивание вверх или подтягивание вниз. Как это изменит работу вашего устройства? Не подвергнет ли это пользователя опасности, например, принудительно включив нагревательный элемент? Повлияет ли это на безопасность, например, на отключение дверного замка?

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

Если вы работаете с Arduino/ATmega328, вы можете использовать встроенный подтягивающий резистор .

В микросхему Atmega встроены подтягивающие резисторы номиналом 20 кОм, доступ к которым можно получить из программного обеспечения. Доступ к этим встроенным подтягивающим резисторам можно получить, установив для pinMode() значение INPUT_PULLUP. Это эффективно инвертирует поведение режима INPUT, где HIGH означает, что датчик выключен, а LOW означает, что датчик включен.

Значение этого подтягивания зависит от используемого микроконтроллера. На большинстве плат на базе AVR значение гарантированно находится в диапазоне от 20 кОм до 50 кОм. На Arduino Due оно составляет от 50 кОм до 150 кОм. Чтобы узнать точное значение, обратитесь к техническому описанию микроконтроллера на вашей плате.

При подключении датчика к контакту, настроенному с помощью INPUT_PULLUP, другой конец должен быть подключен к земле. В случае простого переключателя это приводит к тому, что на выводе отображается ВЫСОКИЙ уровень, когда переключатель разомкнут, и НИЗКИЙ, когда переключатель нажат.

У Raspberry Pi они тоже есть .

Вам часто нужны подтяжки или понижения — часто понижения — на выходах программируемых устройств, таких как микроконтроллеры, для определения их состояния во время последовательностей включения. Такие выходы часто имеют высокое сопротивление при включении питания, и подключенные устройства могут получать непреднамеренные сигналы, если этого не сделать. Если, например, задействовано несколько источников питания, лучше спроектировать каждую секцию как безопасную с нулевым напряжением на входах и использовать понижение напряжения.

Немного более неясно, чем другие ответы, но я видел примеры, связанные с синим дымом и угрозами судебного иска.

Уточнение: вопрос был не в том, почему следует использовать подтягивающие или подтягивающие резисторы, а в том, следует ли подтягивать вверх или вниз.