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

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

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

Сообщение Dryundel »

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

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

Описание:
Энкодер_импульсный_v1.0
[spoiler]Энкодер импульсный 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[/spoiler]

Энкодер_импульсный_v1.1

[spoiler]Энкодер импульсный 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
[/spoiler]

Другие блоки для энкодера:
Тестер для энкодера
Блок энкодера для одноуровневого меню
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Dryundel 10 сен 2021, 14:44, всего редактировалось 3 раза.
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

Хорошо, когда всё в кучку собрано.
А есть количественные оценки быстродействия разных вариантов подключения?
С уважением,
Евгений Бобков
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

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

Сообщение Dryundel »

eugeneb писал(а): 14 мар 2019, 08:05А есть количественные оценки быстродействия разных вариантов подключения?
Что означает "количественные оценки", я так и не понял.
Про разные варианты подключения: Блоки можно подключать тремя вариантами. Все работают весьма удовлетворительно.
1. Используются два пина поддерживающие прерывания. В этом случае энкодер работает нормально, даже если контроллер весьма нагружен. Но есть в данном подключении одно ограничение. Нельзя использовать в проекте более одной копии блока. Перестает работать либо один либо другой. Предполагаю, что не всем понятно зачем несколько копий одного блока (с одинаковыми пинами подключения) в проекте. А между тем это весьма полезная штука.
Пример:
21.jpg
Ну или ваще так:
[spoiler]
22.jpg
[/spoiler]
Как я не пытался заставить такой вариант работать, когда энкодер подключен к двум пина поддерживающим прерывания, у меня не получилось. Однако если хотя бы один из подключенных пинов не поддерживает прерывание, схема работает на ура.
В связи с чем, вопрос к гуру. Может кто подскажет как исправить данный недочет?

2. Один из пинов поддерживает прерывания.
3. Оба пина не поддерживают прерывания.
Последние два варианта в разной степени реагируют на загруженность контроллера. Хотя в тестовом варианте, когда в коде нет емких процессов, все варианты работают отлично. Исходя из этого, я пришел к выводу - если хочется большое хорошее меню управляемое энкодером, надо реализовывать его на отдельном контроллере. И если лишние 100-200р для проекта не накладно, это лучший вариант.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

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

Сообщение Dryundel »

Итак продолжаем. :)
Энкодер_считающий_v_2.0_(CODE).ubi
Энкодер_считающий_v_2.1_(CODE).ubi
3.jpg
Как следует из названия, блоки считают количество импульсов. Энкодер_считающий v 2.1 отличается тем, что в нем можно настроить количество импульсов выдаваемых энкодером за один физический шаг. Это бывает полезно когда на один физический шаг энкодера приходится два импульса, как например у распространенного и дешевого EC-11 ( KY-040).
[spoiler]
23.jpg
[/spoiler]
Оба блока работают более чем адекватно. Имеют в коде всего пару строчек, всю работу делает библиотека Encoder.h
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

для энкодера более чем достаточно одного прерывания. я в упор не понимаю для чего пытаются задействовать оба прерывания.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

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

Сообщение Dryundel »

pan писал(а): 14 мар 2019, 12:05для энкодера более чем достаточно одного прерывания. я в упор не понимаю для чего пытаются задействовать оба прерывания.
Ну если библиотека так написана, значит ее автор имел на то основание. И практика показывает, что его основания не безосновательны. :)
.
Ответ здесь.
Последний раз редактировалось Dryundel 14 сен 2021, 23:07, всего редактировалось 1 раз.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

Dryundel писал(а): 14 мар 2019, 12:08Ну если библиотека так написана
мало ли кто и как пишет.
библиотека для энкодера эт ваще весело...
там кода 2 строчки надо.

я уверяю что 1 прерывания более чем достаточно.

Отправлено спустя 4 минуты 23 секунды:
всё что нужно для нормальной работы, это пара конденсаторов маленькой емкости. и всё будет работать прекрасно.
а 2 прерывания ( не удивлюсь если в библиотеку засунули программную защиту от дребезга для добавления тормозов ардуине) это видимо от не понимая что и как работает, или хз по какой причине.
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

Dryundel писал(а): 14 мар 2019, 11:23Что означает "количественные оценки", я так и не понял.
Когда Вы говорите:
Dryundel писал(а): 13 мар 2019, 23:00Есть три варианта подключения (из описания библиотеки):
1. Лучший результат - ...
2. Хорошая производительность - ...
3. Низкая поизводительность - ...
- это качественная оценка.

А когда Вы скажете:
- при первом варианте частота энкодера может достигать 30кГц; на DUE - 120кГц;
- при втором - 25 кГц;
- при третьем - 5 кГц.
это будет количественная оценка. (цифры я взял с потолка).

За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
С уважением,
Евгений Бобков
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

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

Сообщение AVGN »

eugeneb писал(а): 14 мар 2019, 17:16За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
Так блоки на библиотеке сделаны. Правильно все вопросы задавать автору библиотеки вот здесь Encoder Library
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Народ, смысл библиотеки:
Пины прерываний заняты, а их у нано всего 2, к примеру фазорезом и сигналом от микрухи расширения, вот автор библиотеки и предложил свой вариант.
Возможно, в нём используются прерывания, обозначенные на картинках как PCINT (Pin Change Interrupts).

Отправлено спустя 2 минуты 25 секунд:
Вот нормально описано

Отправлено спустя 1 минуту 56 секунд:
Написать себе свой энкодер по этой азбуке, думаю, не составит труда.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

это все понятно.
я про то ,что весь смысл определения направления, это во время прерывания одного пина "посмотреть" на состояние второго пина. ВСЁ! ))
чё там еще прерывать..
и мне почему то кажется так даже быстрее будет..
vovka1973
Подполковник
Сообщения: 1202
Зарегистрирован: 14 фев 2016, 14:16
Откуда: kazahstan
Благодарил (а): 32 раза
Поблагодарили: 6 раз

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

Сообщение vovka1973 »

pan писал(а): 14 мар 2019, 17:58и мне почему то кажется так даже быстрее будет..
а как себя будет вести промышленный энкодер ? не будет пропусков ? в проекте управлением станком у меня оба на прерываниях сидят и супер.Увидел у меня не эти блоки стоят :D

Отправлено спустя 46 минут 11 секунд:
Dryundel писал(а): 14 мар 2019, 11:23Предполагаю, что не всем понятно зачем несколько копий одного блока (с одинаковыми пинами подключения) в проекте. А между тем это весьма полезная штука.
Пример:
не одно и тоже?
ее.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

AVGN писал(а): 14 мар 2019, 17:24Правильно все вопросы задавать автору библиотеки вот здесь
Да это я так, разговор поддержать :)
Не ответит ТС. Не исследовал он свои блоки на промышленных энкодерах.
Судя по фоткам - только с простыми (читай "медленными") "ручниками".
С уважением,
Евгений Бобков
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

pan писал(а): 14 мар 2019, 17:58чё там еще прерывать..
Это смотря какое разрешение хочешь получить от энкодера. Иногда критически важно реагировать на каждый фронт и каждый спад обоих квадратурных каналов.
С уважением,
Евгений Бобков
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

[ref]eugeneb[/ref], например?
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

Например, в станке с ЧПУ (в настоящем, не домашнем) разрешение энкодера определяет МИНИМАЛЬНО возможную скорость по этой оси. А от этого критически зависит точность станка при резании некоторых деталей (на пологих траекториях).
С уважением,
Евгений Бобков
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

во первых, по моему вы путаете понятия. но не суть.
я просил пример необходимости
eugeneb писал(а): 14 мар 2019, 19:51реагировать на каждый фронт и каждый спад обоих квадратурных каналов.
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

Я и привёл пример необходимости.
Что бы сделать точный станок с ЧПУ, нужен энкодер с максимальным разрешением. Приведёные блоки делят максимально возможное разрешение ЛЮБОГО энкодера на четыре, то есть ухудшают его характеристики. Обычно это допустимо. Но иногда - нет.
С уважением,
Евгений Бобков
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

[ref]eugeneb[/ref], мы говорим о разных вещах.
блоки ни чего не делят.
а вот
eugeneb писал(а): 14 мар 2019, 19:51реагировать на каждый фронт и каждый спад обоих квадратурных каналов.
это для умножения количества импульсов на 4.

но я думаю эти (и подобные блоки) для использования энкодеров "крутилок". и они с этим прекрасно справляются.

а если взять пром энкодер с высоким разрешением в несколько тысяч имп. на оборот, умноженных на 4 и который будет быстро вращаться, то ардуина "окуклится". да и не предназначена для этого.
Аватара пользователя
eugeneb
Лейтенант
Сообщения: 486
Зарегистрирован: 15 авг 2016, 11:20
Откуда: Нижний Новгород
Имя: Евгений
Благодарил (а): 1 раз

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

Сообщение eugeneb »

pan писал(а): 15 мар 2019, 09:02блоки ни чего не делят.
Как это не делят! Они из четырёх последовательных состояний энкодера делают один импульс (вместо четырёх). Именно делят.
pan писал(а): 15 мар 2019, 09:02и который будет быстро вращаться, то ардуина "окуклится".
Дк я и просил количественную оценку - чтоб знать когда "окуклится" :)
С уважением,
Евгений Бобков
Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя