Набор блоков ЭНКОДЕР

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#1

Сообщение Dryundel » 13.03.2019{, 23:00}

Тема устарела и морально и технически.
Новый блок EncoderPro здесь.

Сколько ни пытался найти удовлетворяющий меня блок энкодера, не получилось.
Выкладываю свои варианты. Здоровая критика приветствуется.
1.jpg
Скачать все одним архивом:
Энкодеры от Dryundel.ubl
(664.68 КБ) 1107 скачиваний
Блоки написаны на основе библиотеки Encoder.h
Могут работать на любых пинах, но на пинах поддерживающих прерывание результат самый лучший.
***
Энкодер_импульсный_v1.0_(CODE).ubi
(119.81 КБ) 501 скачивание
Энкодер_импульсный_v1.1_(CODE).ubi
(135.99 КБ) 698 скачиваний
2.jpg
2.jpg (6.11 КБ) 19936 просмотров
Эти два блока выдают тики на выходах Up и Down (Вперед / Назад)
Отличие Энкодер_импульсный_v1.1 в том, что в нем можно настроить количество импульсов выдаваемых энкодером за один физический шаг.

Описание:
Энкодер_импульсный_v1.0
СпойлерПоказать
Энкодер импульсный v1.0

EncTic v1.0 - отслеживает импульсы датчиков энкодера, используея квадратурный медот подсчета импульсов и определяет напавление вращения.
В зависимости от направления вращения, на выходах Up или Down формируются импульсы, соответствующие одному физическому шагу энкодера..
В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера.

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой можно поставить подтягивающий резистор 1К.

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все

На основе библиотеки http://www.pjrc.com/teensy/td_libs_Encoder.html

Энкодер_импульсный_v1.1
СпойлерПоказать
Энкодер импульсный v1.1

EncTic v1.1 - отслеживает импульсы датчиков энкодера, используея квадратурный медот подсчета импульсов и определяет напавление вращения.
В зависимости от направления вращения, на выходах Up или Down формируются импульсы, соответствующие одному физическому шагу энкодера..
В параметрах пользователя необходимо:
1. Указать 2 пина к которым подключены CLK и DT энкодера.
2. Установить значение TicStep соответствующее количеству тиков на один физический шаг энкодера.
Пример: При использовании энкодера EC-11 ( KY-040) на один физический шаг EncTic выдает 2 тика, поэтому надо поставить TicStep = 2.

Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - используются два пина поддерживающие прерывания.
2. Хорошая производительность - один из пинов поддерживает прерывания.
3. Низкая поизводительность - оба пина не поддерживают прерывания.

Ограничения:
1, Не рекомендуется использовать пины к которым подключена светодиодная индикация (в большинстве случаев Pin 13)!!!
2. Если одним энкодером задействованы два пина пина поддерживающие прерывание, то в проекте нельзя использовать более одного блока. Если хотя бы один из пинов к которому подключен энкодер не поддерживает прерывание, ограничение снимается.

При использовании длинных проводов между энкодером и платой можно поставить подтягивающий резистор 1К.

Пины поддерживающие прерывания на различных платах Arduino:
UNO - Pin 2,3
LEONARDO - Pin 0,1,2,3
MEGA - Pin 2,3,18,19,20,21
DUE - все

На основе библиотеки http://www.pjrc.com/teensy/td_libs_Encoder.html

Другие блоки для энкодера:
Тестер для энкодера
Блок энкодера для одноуровневого меню
Последний раз редактировалось Dryundel 10.09.2021{, 14:44}, всего редактировалось 3 раза.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Набор блоков ЭНКОДЕР

#21

Сообщение pan » 15.03.2019{, 12:28}

eugeneb писал(а):
15.03.2019{, 11:57}
делают один импульс
так определитесь уже, импульсы или состояния.

импульс. число / на 1 оборот, которые и указаны на энкодере , а не количество состояний. в плане импульсов блоки ни чего не делят,
другое дело если из данного кол-ва импульсов надо выжать бОльшую точность (что б, не брать энкодер по дороже) то
используя 2 прерывания + учитывая и фронты и спады, получим в 4 раза больше ))

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#22

Сообщение Dryundel » 15.03.2019{, 13:05}

Вау!!! Какой хайп! :)

Теперь по порядку.
pan писал(а):
14.03.2019{, 12:44}
я уверяю что 1 прерывания более чем достаточно.
Не сомневаюсь в Вашей компетентности. Ни в коем случае не хотел Вас как то задеть.
eugeneb писал(а):
14.03.2019{, 17:16}
А когда Вы скажете:
- при первом варианте частота энкодера может достигать 30кГц; на DUE - 120кГц;
- при втором - 25 кГц;
- при третьем - 5 кГц.
это будет количественная оценка. (цифры я взял с потолка).
Не проверял и не собираюсь этого делать. Не вижу в этом смысла. Блоки делались не для скоростного счета и не для промышленных энкодеров. Функции библиотеки на то не заточены. Хотя ее автор уверяет в следующем:
2019-03-15_123635.jpg
2019-03-15_123635.jpg (27.32 КБ) 3622 просмотра
И то это можно как то сопоставить лишь с работой блока Энкодер_считающий_v_2.0 по причине того что только он фактически не обрабатывает данные полученные от библиотеки.
Данные блоки лишь предоставляют возможность полноценно использовать ручные (медленные) энкодеры, без пропусков и глюков. Чего на этом форуме я во всяком случае не нашел.
eugeneb писал(а):
14.03.2019{, 17:16}
За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
Если этот вопрос таки актуален отвечу - 2.
pan писал(а):
15.03.2019{, 09:02}
но я думаю эти (и подобные блоки) для использования энкодеров "крутилок". и они с этим прекрасно справляются.

а если взять пром энкодер с высоким разрешением в несколько тысяч имп. на оборот, умноженных на 4 и который будет быстро вращаться, то ардуина "окуклится". да и не предназначена для этого.
Золотые слова Юрий Венедиктович.

Итак резюме: Обязательно напишу в шапке. "НЕ ДЛЯ ПРОМЫШЛЕННЫХ ЭНКОДЕРОВ" и "Есть ограничения, посоветуйтесь с врачом"

А вообще, дядьки бородатые, если считаете данные блоки полным Г, сделайте свои варианты или укажите где на форуме найти лучше. Может тогда народ, особенно новички, скажет вам спасибо. :)
Последний раз редактировалось Dryundel 15.03.2019{, 15:01}, всего редактировалось 1 раз.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Набор блоков ЭНКОДЕР

#23

Сообщение pan » 15.03.2019{, 13:21}

Dryundel, вовсе не Г.
каждый делает под себя. как удобнее.
Dryundel писал(а):
15.03.2019{, 13:05}
сделайте свои варианты или укажите где на форуме найти
не рекламы ради viewtopic.php?f=74&t=2953&p=37935#p37935
или может вы их видели, но они вам не подошли

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Набор блоков ЭНКОДЕР

#24

Сообщение eugeneb » 15.03.2019{, 14:38}

Dryundel писал(а):
15.03.2019{, 13:05}
если считаете данные блоки полным Г
Никакое это не Г. Вас даже похвалили в первом же ответе.
Просто в работе с энкодерами есть много тонкостей.
Вот мы их слегка и обсудили. Никакого хайпа (А чё это такое?)

Отправлено спустя 4 минуты 45 секунд:
Dryundel писал(а):
15.03.2019{, 13:05}
Итак резюме: Обязательно напишу в шапке. "НЕ ДЛЯ ПРОМЫШЛЕННЫХ ЭНКОДЕРОВ"
А это Вы сделали совершенно правильный вывод.
Dryundel писал(а):
15.03.2019{, 13:05}
Не проверял и не собираюсь этого делать. Не вижу в этом смысла.
А это - любительский подход. Дк этож не позор. Чай не в МО сдавать :)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#25

Сообщение Dryundel » 15.03.2019{, 14:51}

pan писал(а):
15.03.2019{, 13:21}
не рекламы ради viewtopic.php?f=74&t=2953&p=37935#p37935
или может вы их видели, но они вам не подошли
Пробовал. В принципе рабочий блок. Но побыстрей крутнешь - шаги пропускает и обратные тики выдает.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Набор блоков ЭНКОДЕР

#26

Сообщение pan » 15.03.2019{, 14:58}

Dryundel, там есть ссылка БОЛЬШИМИ буквами где подробное описание
и там картинка со схемой. 2 конденсатора которые найдутся под рукой. и все прекрасно работает. это проще чем городить программную защиту от дребезга. потому как в китайских "крутилках" сигнал не такой четкий как на пром. энкодерах
viewtopic.php?f=43&t=2578

Аватара пользователя
ViktorPetrov
Лейтенант
Сообщения: 673
Зарегистрирован: 09.04.2018{, 23:56}
Репутация: 46
Имя: Виктор

Набор блоков ЭНКОДЕР

#27

Сообщение ViktorPetrov » 15.03.2019{, 15:04}

Как насчет для начало "железо" правильно подключить ? Схема восстанавливает импульс по фронту и спаду:
СпойлерПоказать
arduino235-6.jpg
Внешний вид:
СпойлерПоказать
arduino235-9.jpg
График:
СпойлерПоказать
1500955498_schmitt2.jpg

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#28

Сообщение Dryundel » 15.03.2019{, 15:18}

pan писал(а):
15.03.2019{, 14:58}
потому как в китайских "крутилках" сигнал не такой четкий как на пром. энкодерах

pan, Не поверишь, на этой либе блок отрабатывает прекрасно даже эти китайские без всяких танцев с бубнами. И даже тики не пропускает при нагруженном контроллере.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Набор блоков ЭНКОДЕР

#29

Сообщение pan » 15.03.2019{, 15:22}

Dryundel, я рад. это хорошо что все работает.
просто у меня подход другой, не пишу в коде лишнего если это решается установкой копеечной детали, экономия времени и ресурсов.
но это не всем надо.
поэтому вам + за работу

slesar
Рядовой
Сообщения: 2
Зарегистрирован: 15.03.2019{, 00:09}
Репутация: 0
Имя: Валерий

Набор блоков ЭНКОДЕР

#30

Сообщение slesar » 15.03.2019{, 21:14}

Мужики я тут случайно :smile390: на ваш разговор набрёл. У меня подобная проблема только у меня вот https://ru.aliexpress.com/item/Free-shi ... e6085f7777 тоже не могу подключить через эти блоки, можете чё-нить посоветовать?

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 21
Откуда: Нижний Новгород
Имя: Евгений

Набор блоков ЭНКОДЕР

#31

Сообщение eugeneb » 15.03.2019{, 22:49}

slesar, ТС написал:
Dryundel писал(а):
15.03.2019{, 13:05}
Обязательно напишу в шапке. "НЕ ДЛЯ ПРОМЫШЛЕННЫХ ЭНКОДЕРОВ"
И это правда.

Вам нужна аппаратная поддержка. Нужно организовать дифференциальные входы каналов A, B и Z и подать эти сигналы на реверсивные счётчики (тоже аппаратные). И когда Вы это сделаете, Вам уже не понадобятся эти блоки :)

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Набор блоков ЭНКОДЕР

#32

Сообщение pan » 15.03.2019{, 23:12}

slesar, а у вас какой тип сиганала?
Изображение

slesar
Рядовой
Сообщения: 2
Зарегистрирован: 15.03.2019{, 00:09}
Репутация: 0
Имя: Валерий

Набор блоков ЭНКОДЕР

#33

Сообщение slesar » 15.03.2019{, 23:32}

После такого ответа мне самому дифебрилятор надо, я ещё маленький в FLProg :senile: мне бы попроще типа схемы или рисунка.

Отправлено спустя 53 секунды:
TTL

Отправлено спустя 1 минуту 55 секунд:
Второй сигнал идет уже с блока индикации куда линейка подключается

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Набор блоков ЭНКОДЕР

#34

Сообщение Sancho » 16.03.2019{, 09:51}

slesar, подключите свою линейку к блокам энкодеров с прерываниями, pan давал ссылки выше.
Калибровочную метку, сигнал 50мм, используйте по своему усмотрению.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Набор блоков ЭНКОДЕР

#35

Сообщение Alexander1 » 26.10.2019{, 22:55}

Dryundel, Привет! Почему у меня блок тестера энкодера нормально считает, а EncTic1.1 считает как хочет? То 3, то 2, то 4 тика показывает.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#36

Сообщение Dryundel » 27.10.2019{, 01:05}

Alexander1 писал(а):
26.10.2019{, 22:55}
Dryundel, Привет! Почему у меня блок тестера энкодера нормально считает, а EncTic1.1 считает как хочет? То 3, то 2, то 4 тика показывает.
Вы параметр TicStep выставили?
Какой контроллер?
К каким пинам подключаете?
Какой энкодер?
Конденсаторы подключаете?

EncTic1 ничего не считает, а лишь выдает тики. Чем Вы их считаете? и зачем?

Alexander1
Рядовой
Сообщения: 72
Зарегистрирован: 09.11.2018{, 00:48}
Репутация: 2
Откуда: Краснодар
Имя: Александр

Набор блоков ЭНКОДЕР

#37

Сообщение Alexander1 » 31.10.2019{, 21:56}

Dryundel, Вопрос снят. Надо просто на "сброс" подавать сигнал через Р-триггер. А цифры прыгали наверное я в схеме намудрил...

Олега
Рядовой
Сообщения: 3
Зарегистрирован: 09.01.2018{, 21:29}
Репутация: 0
Имя: Олег

Набор блоков ЭНКОДЕР

#38

Сообщение Олега » 01.12.2019{, 18:39}

Подскажите, использую блок 3.0. Кручу энкодер. Все хорошо. Потом по условию задачи мне надо, что бы он блокировался и не позволял изменить данные. Делаю это убирая единицу со входа En. Да, показания на выходе при вращении не меняются! но если опять дать на En единицу, то на выходе показания будут другие :smile37:
Допустим на выходе 10. убираю с En единицу, кручу энкодер. Потом даю на En единицу, а на выходе становиться 7 или 12. смотря куда я крутил. Так и должно быть? Получается счет внутри блока идет, но на выходе не меняется. А когда даешь разрешение, то он и прыгает.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Набор блоков ЭНКОДЕР

#39

Сообщение Dryundel » 01.12.2019{, 21:32}

Олега писал(а):
01.12.2019{, 18:39}
Подскажите, использую блок 3.0. Кручу энкодер. Все хорошо. Потом по условию задачи мне надо, что бы он блокировался и не позволял изменить данные. Делаю это убирая единицу со входа En. Да, показания на выходе при вращении не меняются! но если опять дать на En единицу, то на выходе показания будут другие
Да, вероятно так и будет происходить при Еn = true .
А почему бы Вам не использовать min и max блока для этих целей, а не останавливать блок?

Отправлено спустя 30 минут 40 секунд:
Олега, вот, исправил, попробуйте.
.
Энкодер_считающий_Plus_v_3.0.1_(CODE).ubi
(173.17 КБ) 163 скачивания

Олега
Рядовой
Сообщения: 3
Зарегистрирован: 09.01.2018{, 21:29}
Репутация: 0
Имя: Олег

Набор блоков ЭНКОДЕР

#40

Сообщение Олега » 02.12.2019{, 07:21}

Понятно. Да, помудрю с мин.макс. У меня видите, такая задача. Энкодером выбираю шаг резьбы для нарезания на токарном станке. По этому во время работы очень не желательно его изменить. вот и хотел блокировать. Все понятно, спасибо большое. Блоки просто отличные!! Удачи!

Ответить

Вернуться в «Датчики и энкодеры»