Ky 040 энкодер: Подключение энкодера KY-040 к Arduino – RobotChip
|Содержание
Энкодер ky-040 приручаем сноровистую лошадку.
Мне очень нравятся энкодеры. Гениальная штука для управления. Везде хорош, хоть в крошечном самодельном устройстве, хоть в BMW. В большинстве случаев ничего больше для управления не нужно. И при этом мы имеем дело не с холодными цифровыми кнопками, а с теплой ламповой крутилкой. Хочу рассказать о том, как я дрессировал одного из представителей славного семейства энкодеров. У ky-040 есть несомненное преимущество- он очень дешевый и мелкий недостаток- он очень капризный. Работает кое-как, лажает и глючит. Попробуем приручить и обуздать его скверный характер.
Кто-то подумает, что это схема зачатия робота. Но на самом деле это приблизительная схема работы энкодера.
Представим, что голубой диск электро проводящий, белые окна — изолятор, а синий, красный и зеленый кружки — контакты.
Когда крутишь ручку энкодера, явно ощущаются щелчки. Энкодер фиксируется в определенных положениях. На нашей схеме этот механизм обозначен выемками и, типа, шариком на пружинке, который в этих выемках фиксируется. А вы что подумали?
Диск привязан к ручке и крутится вместе с ней. Что же происходит в момент вращения? Если диск крутится по часовой стрелке, то сперва красный контакт подключенный к выводу А замыкается на диск и, соответственно, на зеленый контакт С, потом синий контакт В также замыкается на диск. Диск фиксируется в следующем положении, когда оба контакта, красный и синий оказываются замкнуты на диск. В следующий шаг сперва красный контакт разомкнется с диском, вслед за ним синий. И так в цикле будет продолжаться до тех пор, пока вы крутите ручку энкодера по часовой стрелке, если вы крутите ручку против часовой стрелки, все происходит точно также, но с точностью до наоборот. В данном случае контакты замыкаются и размыкаются в обратной последовательности.
Что нам надо? Понять в какую сторону крутиться ручка и подсчитать количество шагов. Подключаем наш энкодер к контролеру.
Контакт С подключаем к массе, или минусовому проводу. Контакт А будет у нас ведущим, подключаем его к GPIO которое можно настроить на прерывание по изменению уровня сигнала. Контакт В к любому GPIO на котором можно проверить цифровой уровень сигнала.
Я буду иллюстрировать работу с энкодером на примере конторлера esp8266, на основе прошивки NODEMCU LUA. Но это в принципе не имеет особого значения, если понять суть, то не так важно каким языком и каким контролером вы пользуетесь. А суть в том, что наша функция обработки будет вызвана в тот момент когда изменится потенциал на контакте А, и в этот момент, мы измерим потенциал на контакте В. Если диск крутится по часовой стрелке. То в тот момент когда контакт А замкнется на диск, контакт В не будет замкнут, или на следующем шаге, когда контакт А разомкнется с диском, контакт В еше будет замкнут на диск. То-есть потенциал на контактах А и В будет разным. Еслиже диск крутиться против часовой стрелки. То сперва на диск будет замкнут контакт В и когда замкнется контакт А и мы будем обрабатывать и проверять, оба контакта уже будут замкнуты на диск. На следующем шаге, в тот момент когда придет прерывание на контакт А, контакт В уже будет разомкнут. Значит оба контакта будут в одинаковом состоянии.
Это значит в момент прерывания на контакте А, проверяем потенциал контакта В и если они не совпадают, значит ручка крутится по часовой стрелке, иначе против часовой.
gpio.mode(4,gpio.INT,gpio.PULLUP) -- Устанавливает 4 вывод в режим прерывания. Если на этом выводе изменится потенциал прерывании вызовет нашу функцию и мы обработаем ситуацию. gpio.trig(4, "both",function(level) -- Собственно сама функция которая будет вызвана if gpio.read(3)==level -- level - состояние контакта А. Проверяем равно ли оно контакту В? then print('left') -- если потенциалы равны, значит крутиться против часовой else print('rigth') -- иначе крутится по часовой end end)
Но так происходит в идеальном мире. В реальности с энкодером ky-040 это работать не будет. Точнее будет глючить дергаться и дрыгаться в разные стороны. Первая проблема дребезг контактов. Это такая неприятность, когда вместо одного четкого сигнала, на контакты приходит серия беспорядочных всплесков. Она решается использованием таймера.
TM=tmr.now() -- запоминаем текущее время gpio.mode(4,gpio.INT,gpio.PULLUP) gpio.trig(4, "both",function(level) if tmr.now()-TM<50000 then return end -- если прошло меньше чем 50000 микросекунд ничего не обрабатываем TM=tmr.now() -- запоминаем новую метку времени if gpio.read(3)==level then print('left') else print('rigth') end end)
Если функция будет вызвана повторно через слишком маленький промежуток времени, ничего не случится, функция не отработает. Это самая легкая проблема. Есть более серьезная. Данный энкодер периодически выдает ошибки. Например, когда ручка крутиться против часовой стрелки, при срабатывании прерывания на контакте А ожидается точно такой же потенциал на контакте В. Но этого не происходит. Происходит ошибочное срабатывание алгоритма программы. К счастью такие ошибки обычно выглядят как одиночная аномалия, и можно попытаться их предупредить.
Я сделал это примерно так
VL=1 Эта переменная будет хранить направление движения на предыдущем шаге. TM=tmr.now() gpio.mode(4,gpio.INT,gpio.PULLUP) gpio.trig(4, "both",function(level) if tmr.now()-TM<50000 then return end TM=tmr.now() if VL==1 then -- Если предыдущий шаг был вращением против часовой if gpio.read(3)==level -- Если Сигнал на контакте В соответствует движению против часовой then print('left') -- Тогда фиксируем поворот против часовой else VL=0 return -- Иначе устанавливаем поворот по часовой, но при этом пока ничего не фиксируем, это может быть ошибка end else -- Иначе, если предыдущий шаг был вращением по часовой происходит аналогичная обработка поворота по часовой стрелки. if gpio.read(3)~=level then print('Right') else VL=1 return end end end)
В чем тут фокус? Если меняется направление вращения то первый сигнал не фиксируется программой и не учитывается и только если последующим сигналом будет подтверждено что направление действительно поменялось, происходит фиксация шагов поворота энкодера. Другими словами, мы считаем шаги энкодера парами, и фиксируем только в том случае если значение совпадает с предыдущим.
Я использовал энкодер пока для управлением ШИМ регулировкой яркости TFT дисплея.
Энкодер модуль шилд KY-040 Arduino
Энкодер модуль шилд KY-040 Arduino
Контакты
Заказать звонок
Написать письмо
Оптовикам
Статьи
34
890
Описание
Модуль KY-040 представляет собой плату с простым механическим энкодером, и предназначен для простого добавления энкодера к любой отладочной плате (ARM, PIC, STM8, AVR, Arduino и т.п.). Конструкция модуля позволяет легко добавить его к любой макетной плате. Угол поворота энкодера не ограничен (в отличие от потенциометра, которые часто применяют для задания уровня какого либо параметра), поэтому Применение энкодера часто дает более удобный и понятный интерфейс управления. Эта особенность часто применяется для реализации удобного вариативного управления в меню разрабатываемого прибора, но может также применяться для любых других задач.
Технические характеристики
- Рабочее напряжение: 3-15В
- Число импульсов на оборот: 20
- Размеры: 2х3х3 см
Дополнительно
Материал корпуса | Пластик + металл |
Совместимость | Windows |
Страна регистрации бренда | Китай |
Страна-производитель товара | Китай |
Тип | Аксессуары для Роботов |
Комментарии
0
Пока не было комментариев.
Прокомментировать
Для покупки регистрация не обязательна! Если хотите сделать заказ, — просто добавьте нужные вам товары в корзину, укажите свои данные и нажмите кнопку «Оформить заказ». Мы свяжемся с вами в ближайшее время. Оплата — перевод на карту-ключ счета ПБ — онлайн без комиссии картой любого банка (LiqPay) — безналичный расчет без НДС для юридических лиц — наличными или картой при доставке (только Новой Почтой при заказе от 100 грн) — наличными или через терминал в нас в магазине Нашли дешевле? Напишите нам об этом в чат — кнопка в левом нижнем углу экрана. В сообщении укажите ссылку на активную страницу такого же товара в украинском интернет-магазине и мы пересмотрим цену. Доставка — Новая Почта — Укрпочта (только при предоплате) — Самовывоз (можете также вызвать курьера Глово по Ивано-Франковску) Отправка товара происходит каждый рабочий день. В большинстве случаев, ваш заказ уедет в день заявки/оплаты или на следующий день.. Заказы самовывозом можно забрать в нашем магазине, после заявки позвоним вам и скажем, когда посылка с заказом будет готова к выдаче. Гарантия и возврат — возврат в течение 14 дней, если товар не подошел — гарантия от 6 месяцев на товары собственного изготовления |
KY-040 Rotary Encoder Module Pinout, Features, Datasheet, Work, Applications, Alternatives
27 мая 2021 — 0 комментариев
Описание энкодера KY-040
KY-040 энкодер представляет собой устройство, генерирующее электрический сигнал в зависимости от0029
вращающееся устройство ввода (ручка) вращается и указывает направление, в котором оно вращается. Это датчик положения с ручкой, который можно использовать для точного управления шаговыми двигателями или серводвигателями.
Характеристики и характеристики модуля поворотного энкодера KY-040
Ниже приведены некоторые характеристики и технические характеристики модуля поворотного энкодера KY-040:
- Рабочее напряжение: 5 В
- Механический угол: 360 градусов
- Выход: 2-битный код Грея
- Позиций на оборот: 30
Конфигурация контактов энкодера KY-040
Модуль KY-040 имеет 5 выходных контактов. Два из которых относятся к мощности модуля, а 3 — к выходным данным об оборотах и направлении ручки. В таблице ниже описаны типы контактов и функции каждого контакта в поворотном модуле.
Тип контакта | Описание |
КЛК | Контакт А энкодера |
ДТ | Контакт В энкодера |
SW | Нет кнопочного выключателя |
ВКК(+) | Вход напряжения (+5 В) |
ЗЕМЛЯ | Заземление (контакт C энкодера) |
Альтернативы для поворотного энкодера KY-040
M274, PEL12S-2024S
Подробнее см. в технической информации 60025 KY-040 Rotary Encoder Лист данных приведен внизу этой страницы.
Подключение модуля поворотного энкодера KY-040 к MCU/MPU
Подключить модуль поворотного энкодера KY-040 к микроконтроллеру или микропроцессору довольно просто. Как упоминалось в разделе выше, на модуле энкодера имеется 5 контактов.
Два контакта питания, + и заземления модуля энкодера могут быть подключены к клемме VCC и клемме заземления MCU/MPU соответственно. Контакты CLK и DT генерируют цифровой выход и могут быть подключены к цифровым контактам MCU/MPU.
Принцип работы поворотного энкодера KY-040
Модуль энкодера генерирует цифровой сигнал (прямоугольные импульсы) при вращении ручки, давайте посмотрим, как работает модуль энкодера.
Энкодер имеет диск с равномерно расположенными друг от друга контактными выводами, которые подключены к общему выводу C (земля). Когда мы начинаем вращать ручку, диск также перемещается и входит в контакт с выходными контактами A и B один за другим, тем самым одновременно генерируя две прямоугольные волны. Просто подсчитав количество генерируемых прямоугольных волн, можно определить повернутое положение. Можно написать простую программу для контроля количества сгенерированных волн и извлечь выходные данные.
Чтобы узнать направление вращения, важно определить, как переключатель меняет свое положение.
Если выход A изменил свое состояние первым, переключатель вращается по часовой стрелке, а если выход B меняет свое состояние первым, мы знаем, что переключатель вращается против часовой стрелки.
Применение для энкодера KY-040
Вот некоторые области применения модуля энкодера KY-040:
- Контроллер робота-манипулятора
- Управление сервоприводом и шаговым двигателем
- Точное движение двигателя
2D-модель поворотного энкодера KY-040
В этом разделе представлена 2D-модель поворотного модуля вместе с его размерами. Эта информация может быть использована для разработки пользовательских посадочных мест модуля, которые в дальнейшем могут быть использованы для проектирования печатных плат и моделей САПР.
Метки
Поворотный энкодер
Электрооборудование и расходные материалы KY-040 Модуль поворотного энкодера Brick Sensor Совет по развитию для промышленных поворотных энкодеров Arduino_c
Электрооборудование и расходные материалы KY-040 Модуль поворотного энкодера Brick Sensor макетная плата для промышленных поворотных энкодеров Arduino_c
- Бизнес и промышленность
- Электрооборудование и расходные материалы
- Датчики org/Breadcrumb»> Промышленные поворотные энкодеры
- KY-040 Модуль поворотного энкодера Brick Sensor Development Board для Arduino_c
Бесплатная доставка для многих продуктов. Найдите множество отличных новых и бывших в употреблении вариантов и получите лучшие предложения на макетную плату модуля датчика вращения KY-040 для Arduino_c — по лучшим онлайн-ценам на.
KY-040 Rotary Encoder Module Brick Sensor Совет по развитию для Arduino_c
- Мужская мода Двухслойная бархатная свадьба Галстук-бабочка Галстук-бабочка Предварительно завязанный галстук
- Нержавеющая сталь Мелкая сетка Масляный фильтр Мука Дуршлаг Сито Сито для Kitj4
- Перьевая ручка Wing Sung 629 Torpedo из полимерного поршня с иридиевым наконечником F/EF Ручка с чернилами для письма
- МОДУЛЬ УПРАВЛЕНИЯ ПОДУШКОЙ БЕЗОПАСНОСТИ FORD FOCUS 2012, ЧАСТЬ № CM5T-14B321-AF
- 12V Электрический полупроводниковый охладитель кондиционера Охлаждающий холодильный модуль
- Authentic NWT Eric Javits Designer NYC Женская сумка Mini Leigh изумрудного цвета
- Мужская обувь для шеф-повара Нескользящие безопасные кухонные сабо для повара Mule Restaurant Hotel Work
- КЛС КЛ Компрессор кондиционера для КО 11245К 0002306511 02-13 Мерседес К Э КЛК
- Chevrolet GM OEM 16-18 Malibu 1. 5L-L4 Верхняя перегородка радиатора 84089228
- Для Mercedes C280 CLK320 3.2L 2.8L V6 Верхний шланг охлаждающей жидкости радиатора НОВЫЙ
Карточка щетки Держатель угольной щетки в сборе для перфоратора AEG Milwaukee M18 M12. Кулисный рычаг подходит для AUDI A4 A6 A8 SKODA Superb VW Passat Variant 2.5L 1997-2005. KY-040 Rotary Encoder Module Brick Sensor Совет по развитию для Arduino_c . Бытовые швейные принадлежности Катушка с нитками 38 шт. Набор полиэфирных материалов Новый, 2 шт. ATV Светодиодная мигалка Реле мигания 3-контактный 12 В Автомобильный мотоцикл Контроллер сигнала, KY-040 Модуль поворотного кодировщика Модуль датчика кирпича Совет по развитию для Arduino_c , выхлоп двигателя O2 02 Датчик кислорода Прямая посадка вверх по течению для Ford Lincoln, Rustler/Stampede ST Racing Concepts Алюминиевый передний шарнирный кронштейн, серебристый, KY-040 Rotary Encoder Module Brick Sensor Совет по развитию для Arduino_c . Для Mazda Protege Protege5 передние тормозные диски и керамические колодки. Блестящая Эспеон Плюшевая Мягкая Игрушка Кукла Тедди Мягкое Животное 7,5 «СЗТ.
- 2 ШТ. Мусульманские Женщины Джилбаб Абая Бурка Хиджаб Исламское Макси Платье Молитвенный Кафтан Халат
- Женское платье-рубашка Maison Jules в полоску с пышной юбкой в полоску с сердечками 14
- игры Genshin Impact Rosaria косплей костюм наряд обувь костюм на Хэллоуин Новый
- Комплект фильтров автоматической коробки передач Beck/Arnley 044-0316
- Совершенно новые подлинные солнцезащитные очки Smith Optics CRUSADER Squall S37 CP Frame
- Задние левые и правые шарнирные оси подходят для YAMAHA 4×4 Grizzly 400 450 2007-2010
Lorem fistrum por la gloria de mi madre esse jarl aliqua llevame al sircoo. Де ла pradera ullamco Qué dise usteer está la cosa muy malar.
KY-040 Rotary Encoder Module Brick Sensor Совет по развитию для Arduino_c
Электрооборудование и расходные материалы KY-040 Модуль поворотного энкодера Brick Sensor Совет по развитию для промышленных поворотных энкодеров Arduino_c, наслаждайтесь быстрой доставкой и возвратом в течение 365 дней! Бесплатная доставка для многих продуктов.