Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

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

#1

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

Сколько ни пытался найти удовлетворяющий меня блок энкодера, не получилось.
Выкладываю свои варианты. Здоровая критика приветствуется.
1.jpg
Скачать все одним архивом:
Энкодеры от Dryundel.ubl
(664.68 КБ) 423 скачивания
Блоки написаны на основе библиотеки Encoder.h
Могут работать на любых пинах, но на пинах поддерживающих прерывание результат самый лучший.
***
Энкодер_импульсный_v1.0_(CODE).ubi
(119.81 КБ) 210 скачиваний
Энкодер_импульсный_v1.1_(CODE).ubi
(135.99 КБ) 285 скачиваний
2.jpg
2.jpg (6.11 КБ) 4214 просмотров
Эти два блока выдают тики на выходах 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 02.09.2019{, 18:30}, всего редактировалось 2 раза.

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

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

#21

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

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

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

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

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

#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 КБ) 1316 просмотров
И то это можно как то сопоставить лишь с работой блока Энкодер_считающий_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
Полковник
Сообщения: 2847
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 192
Имя: 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
Лейтенант
Сообщения: 474
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 15
Откуда: Нижний Новгород
Имя: Евгений

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

#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
Лейтенант
Сообщения: 581
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 195
Откуда: Ярославль
Имя: Андрей

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

#25

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

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

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

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

#26

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

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

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

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

#27

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

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

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

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

#28

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

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

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

pan
Полковник
Сообщения: 2847
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 192
Имя: 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
Лейтенант
Сообщения: 474
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 15
Откуда: Нижний Новгород
Имя: Евгений

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

#31

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

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

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

pan
Полковник
Сообщения: 2847
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 192
Имя: 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
Полковник
Сообщения: 3409
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 436
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#34

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

slesar, подключите свою линейку к блокам энкодеров с прерываниями, pan давал ссылки выше.
Калибровочную метку, сигнал 50мм, используйте по своему усмотрению.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

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

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

#35

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

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

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

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

#36

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

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

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

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

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

#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
Лейтенант
Сообщения: 581
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 195
Откуда: Ярославль
Имя: Андрей

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

#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 КБ) 56 скачиваний

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

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

#40

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

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

Ответить

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