m07-04 теория 6 мин

Подтяжка: почему линия «висит в воздухе»

Вход «висит в воздухе» — это не ноль. У него нет определённого уровня: он ловит наводки, касания и заряды, и микроконтроллер читает случайные значения.

Решение — подтяжка: резистор между входом и питанием (pull-up) или землёй (pull-down). Он задаёт уровень, когда ничего не подключено, и ток мизерный (микроамперы), но достаточный, чтобы вход не «плавал».

Номинал: 10 кОм — стандарт. Меньше (1–4.7 кОм) — сильнее держит, но больше ток; больше (47–100 кОм) — меньше ток, но слабее защита от помех и медленнее фронт (RC с ёмкостью входа).

При кнопке к земле: подтяжка к питанию (pull-up). Нажал — 0, отпустил — 1. Логика инверсная, но так делают почти всегда, потому что подтяжка внутри микроконтроллера уже есть.

Внутренние подтяжки: у AVR 20–50 кОм, у ESP32 45 кОм, у STM32 30–50 кОм. Их хватает для кнопки на столе, но не хватает для длинного провода или сильных помех — тогда ставят внешний резистор 4.7–10 кОм.

Тонкости:

— Подтяжка нужна и на линиях I2C, но там 4.7 кОм — не для кнопки: шина должна быстро заряжаться, поэтому номинал считают от ёмкости линии.
— Кнопку лучше подключать через 100 нФ параллельно (аппаратный антидребезг) плюс резистор 100–330 Ом последовательно, если провод длинный.
— Вход с подтяжкой нельзя оставлять подключённым к выходу микроконтроллера — два выхода подерутся.

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

Подтяжка задаёт уровень, когда кнопка отпущена
Подтяжка задаёт уровень, когда кнопка отпущена
Зачем

Без подтяжки не работает ни одна кнопка, ни одна шина — это базовый навык, а не тонкость.

Сделай сейчас

Возьми кнопку, подключи между GPIO и землёй, включи внутреннюю подтяжку и читай состояние. Потом отключи подтяжку — увидишь хаотичные 0 и 1.

Проверь себя

Почему для кнопки 10 кОм, а для I2C 4.7 кОм?

Кнопка — медленный сигнал, важен только уровень. I2C работает на сотнях килогерц: линия должна зарядиться за доли микросекунды, поэтому резистор меньше, иначе фронт «заваливается».

Пройти тест 5 заданий
0 из 102 · 0%
Источники
  1. Wikipedia: Pull-up resistor
    подтягивающий резистор
  2. SparkFun: Pull-up Resistors
    как выбрать номинал
Сначала прочитать
0 и 1 — это уровни напряжения
Теги
подтяжка кнопка pull-up