Коротко о KY-040
KY-040 — модуль инкрементального поворотного энкодера с кнопкой для ручного ввода команд в микроконтроллерных проектах. При вращении формируются квадратурные сигналы CLK и DT, по которым программа определяет направление и изменение значения, а нажатие на ось замыкает отдельный контакт SW.
Ключевые характеристики
- Тип
- инкрементальный поворотный энкодер с кнопкой
- Выход
- квадратурный, каналы CLK и DT
- Импульсов за оборот
- 20
- Питание
- 3,3–5 В
- Контакты
- 5: GND, +, SW, DT, CLK
- Потребляемый ток
- 10 мА
Подробное описание и особенности
Как энкодер определяет направление
При вращении два цифровых канала CLK и DT переключаются со сдвигом во времени. Контроллер сравнивает последовательность переходов и увеличивает или уменьшает программное значение. Если направление в готовой программе отображается наоборот, достаточно поменять местами CLK и DT либо изменить правило обработки в коде.
Энкодер формирует 20 импульсов за оборот. Количество программных отсчётов за один оборот может отличаться в зависимости от того, считает ли код один фронт, оба фронта или все переходы двух квадратурных каналов.
Кнопка на оси
При нажатии формируется отдельный сигнал SW. В программе ему можно назначить подтверждение выбора, переход между пунктами меню, возврат или сброс счётчика до нуля. Сам модуль не хранит значение и не выполняет сброс без логики контроллера.
Практическая обработка сигнала
Механические контакты KY-040 могут создавать короткие лишние переходы, из-за которых возникает двойной отсчёт или ошибочное определение направления.[2] Чтобы уменьшить влияние дребезга контактов, используйте квадратурный декодер или библиотеку с debounce и проверяйте работу при необходимой скорости вращения.
Подойдёт / не подойдёт
Подойдёт
- для прокрутки меню и подтверждения выбора нажатием;
- для цифровой регулировки громкости, яркости, скорости или заданного значения через микроконтроллер;
- для учебных схем с квадратурными сигналами, прерываниями и обработкой кнопок;
- для панелей управления, где ручка должна вращаться без конечных упоров.
Не подойдёт
- как аналоговая замена потенциометра без микроконтроллера;
- для определения абсолютного угла после включения или сохранения положения без программной памяти;
- как измерительный энкодер вала двигателя, когда необходимы подтверждённые скорость, ресурс или точность позиционирования;
- для непосредственной коммутации двигателя, лампы или другой нагрузки.
Полные характеристики
| Параметр | Значение |
|---|---|
| Модель модуля | KY-040 |
| Принцип работы | инкрементальный, квадратурный |
| Напряжение питания | 3,3–5 В |
| Количество импульсов за оборот | 20 |
| Вращение | без конечных упоров, в двух направлениях |
| Сигнальные линии | CLK, DT, SW |
| Все контакты | GND, +, SW, DT, CLK |
| Потребляемый ток | 10 мА |
| Размеры | 26,3 × 19 × 22,2 мм |
| Рабочая температура | −40…+85 °C |
При проектировании корпуса оставьте место для вращения и нажатия оси.
Подключение
Обесточьте схему
Подключайте модуль без поданного напряжения. Соедините GND модуля с общей землёй контроллера.
Выберите напряжение питания
Подключите контакт «+» к 3,3 или 5 В в соответствии с логическим уровнем GPIO контроллера. Для контроллера с GPIO 3,3 В питайте KY-040 от 3,3 В; для 5-вольтовой платы можно использовать 5 В.
Подключите каналы вращения
CLK и DT подключите к двум цифровым входам. Программа должна сравнивать их состояния, чтобы определять направление.
Подключите кнопку
SW подключите к цифровому входу и настройте его с подтяжкой к питанию, например в режиме INPUT_PULLUP. Нажатие следует обрабатывать как активный низкий уровень.
Настройте считывание
Опрашивайте CLK и DT достаточно часто. Если основной цикл содержит длительные задержки, используйте прерывания или библиотеку энкодера, иначе быстрые переходы можно пропустить.[1]
Примеры применения
Меню устройства
Вращение перемещает курсор или изменяет значение, а нажатие SW подтверждает выбор. Один модуль заменяет несколько отдельных кнопок в компактной панели управления.
Цифровая регулировка
Контроллер может преобразовывать шаги энкодера в команду изменения громкости, яркости, частоты или другого программного параметра. KY-040 при этом задаёт команду, а не коммутирует нагрузку.
Счётчик с ручным сбросом
CLK и DT позволяют увеличивать и уменьшать значение, а кнопке SW можно назначить возврат к нулю. Пределы, шаг и сохранение результата определяются программой.
Ограничения и безопасность
Согласуйте логические уровни
Не питайте модуль от 5 В, если его выходы подключены к GPIO, которые не допускают 5-вольтовых уровней. Для ESP32, RP2040 и других 3,3-вольтовых контроллеров безопаснее питать KY-040 от 3,3 В.
Не полагайтесь на необработанный сигнал
Механические контакты могут создавать дребезг, а медленный опрос — пропускать переходы. Перед использованием в готовом устройстве проверьте debounce и считывание при реальной скорости вращения.
Это не абсолютный датчик положения
После включения модуль не сообщает абсолютный угол и не восстанавливает предыдущее значение. Если состояние необходимо сохранять, реализуйте начальное значение и память в контроллере.
Берегите механику
При монтаже оставьте оси свободный ход для вращения и нажатия. Не прикладывайте боковое усилие и не используйте модуль как силовой механический узел.
Совместимые товары и аксессуары
Для 5-вольтового прототипа можно выбрать Nano V3.0 на ATmega328P. Для проекта с Wi-Fi или Bluetooth подойдёт ESP32 MiniKit, но KY-040 в такой схеме следует питать от 3,3 В.
Для беспаечного тестирования удобно использовать макетную плату на 170 отверстий; провода-перемычки подбираются отдельно в соответствии с разъёмами контроллера.
FAQ
Можно ли подключить KY-040 к контроллеру с логикой 3,3 В?
Да. Модуль поддерживает питание 3,3–5 В. Для GPIO с логикой 3,3 В питайте модуль от 3,3 В, чтобы не подавать на вход контроллера более высокий логический уровень.
Почему счётчик иногда перескакивает или изменяется не в ту сторону?
Чаще всего это следствие дребезга механических контактов или слишком медленного опроса. Используйте квадратурный декодер с debounce, уберите длительные delay и проверьте результат при необходимой скорости.
Кнопка автоматически сбрасывает счётчик?
Нет. Нажатие только изменяет состояние линии SW. Сброс до нуля, подтверждение или другое действие нужно назначить в программе контроллера.
Можно ли определить абсолютный угол поворота?
Нет. KY-040 передаёт только последовательность шагов и направление движения; начальное значение задаёт программа.
Документы и источники
- Wokwi — KY-040 Rotary Encoder Reference: модель симулятора, назначение контактов и рекомендация по частому опросу или использованию прерываний.
- Big Dan — Using a KY040 Rotary Encoder with Arduino, 16.08.2014: исследование одного образца KY-040 логическим анализатором и пример влияния дребезга контактов.