Использование внешнего pull-up резистора вместо INPUT_PULLUP

Когда предпочтительнее использовать внешний подтягивающий резистор вместо внутреннего:

pinMode(fanPin, INPUT_PULLUP);

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

Однако техническое описание ATmega32U4 В Таблице 29-1 указано, что сопротивление RPU или «подтягивающего резистора контакта ввода-вывода» составляет от 20 до 50 кОм.

В этом вопросе речь идет о внутренних и внешних подтягиваниях для простой кнопки, но я спрашиваю в общем случае.

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

По каким соображениям следует отдать предпочтение одному другому?

В настоящее время мой проект заключается в подключении датчика температуры AM2302/DHT22.

, 👍1

Обсуждение

Что такое «OUTPUT_PULLUP»? Повышение выходного сигнала не имеет особого смысла., @tkausl

Для I2C требуются подтягивающие резисторы меньшего номинала, поэтому в этом случае вам потребуются внешние резисторы. В условиях сильного шума может случайно сработать входной сигнал, если подтягивание слабое. Но в большинстве случаев внутреннее подтягивание подходит. И дешевле не добавлять резистор, особенно при крупносерийном производстве., @Gerben

Во время производства иногда меняют номинал подтягивающего резистора на номинал резистора, который уже есть на плате. Снижение стоимости установки., @Gerben

внутренние компоненты подходят для большинства задач, если только у вас нет полунизкого импеданса на выходе датчика. Импеданс больше сопротивления., @dandavis

@tkausl Спасибо, что указали на то, что OUTPUT_PULLUP не существует. Отредактировано., @Tom Hale


2 ответа


5

Насколько мне известно, OUTPUT_PULLUP не существует. Используйте INPUT_PULLUP для большинства вещей.

Добавьте внешние подтягивающие напряжения 3,3 К (3,3 В) или 4,7 К (5 В) для I2C. Если вы видели трассировку с напряжением I2C 10 К в системе 5 В и даже с коротким проводом, время нарастания очень медленное. 4,7 КБ намного быстрее.

10 КБ для внешнего подтягивания хорошо подходят для медленных вещей, таких как кнопки и переключатели. Если длина проводов больше, то можно использовать и 4,7 КБ, а если провода длинные, то даже 1 КБ. При работе от батареи лучше использовать 10 К, поскольку при низком входном сигнале ток течет меньше.

,

1

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

Самый простой способ ответить на ваш вопрос — спросить, чем вы хотите заниматься. Если вам нужен активный низкий уровень, используйте Pull Up. Активный максимум – это понижение. Некоторые транзисторы гораздо лучше работают с тем или иным способом, поэтому они могут определить, что вы используете. I2C использует слабые подтягивания для смещения линий передачи. Если вам нужна аппаратная фильтрация, гораздо проще спроектировать фильтр с известным резистором 25 кОм, чем с неизвестным резистором 20–50 кОм. Список можно продолжать, но это самые распространенные ситуации, с которыми я сталкивался.

,