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

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

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

#1

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

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

Аватара пользователя
pan
Полковник
Сообщения: 2745
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 177
Откуда: Воронеж
Имя: Алексей
Контактная информация:

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

#21

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

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

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

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

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

#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 КБ) 722 просмотра
И то это можно как то сопоставить лишь с работой блока Энкодер_считающий_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
Полковник
Сообщения: 2745
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 177
Откуда: Воронеж
Имя: Алексей
Контактная информация:

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

#23

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

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

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

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

#25

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

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

Аватара пользователя
pan
Полковник
Сообщения: 2745
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 177
Откуда: Воронеж
Имя: Алексей
Контактная информация:

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

#26

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

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

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

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

#27

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

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

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

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

#28

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

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

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

Аватара пользователя
pan
Полковник
Сообщения: 2745
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 177
Откуда: Воронеж
Имя: Алексей
Контактная информация:

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

#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
Лейтенант
Сообщения: 473
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 15
Откуда: Нижний Новгород

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

#31

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

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

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

Аватара пользователя
pan
Полковник
Сообщения: 2745
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 177
Откуда: Воронеж
Имя: Алексей
Контактная информация:

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

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

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

#34

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

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

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: verbilo и 0 гостей