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

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
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 КБ) 19928 просмотров
Эти два блока выдают тики на выходах 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 раза.

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

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

#2

Сообщение eugeneb » 14.03.2019{, 08:05}

Хорошо, когда всё в кучку собрано.
А есть количественные оценки быстродействия разных вариантов подключения?

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

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

#3

Сообщение Dryundel » 14.03.2019{, 11:23}

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

2. Один из пинов поддерживает прерывания.
3. Оба пина не поддерживают прерывания.
Последние два варианта в разной степени реагируют на загруженность контроллера. Хотя в тестовом варианте, когда в коде нет емких процессов, все варианты работают отлично. Исходя из этого, я пришел к выводу - если хочется большое хорошее меню управляемое энкодером, надо реализовывать его на отдельном контроллере. И если лишние 100-200р для проекта не накладно, это лучший вариант.

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

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

#4

Сообщение Dryundel » 14.03.2019{, 11:46}

Итак продолжаем. :)
Энкодер_считающий_v_2.0_(CODE).ubi
(134.42 КБ) 265 скачиваний
Энкодер_считающий_v_2.1_(CODE).ubi
(135.57 КБ) 310 скачиваний
3.jpg
3.jpg (6.55 КБ) 6400 просмотров
Как следует из названия, блоки считают количество импульсов. Энкодер_считающий v 2.1 отличается тем, что в нем можно настроить количество импульсов выдаваемых энкодером за один физический шаг. Это бывает полезно когда на один физический шаг энкодера приходится два импульса, как например у распространенного и дешевого EC-11 ( KY-040).
СпойлерПоказать
23.jpg
23.jpg (52.12 КБ) 6400 просмотров
Оба блока работают более чем адекватно. Имеют в коде всего пару строчек, всю работу делает библиотека Encoder.h

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

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

#5

Сообщение pan » 14.03.2019{, 12:05}

для энкодера более чем достаточно одного прерывания. я в упор не понимаю для чего пытаются задействовать оба прерывания.

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

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

#6

Сообщение Dryundel » 14.03.2019{, 12:08}

pan писал(а):
14.03.2019{, 12:05}
для энкодера более чем достаточно одного прерывания. я в упор не понимаю для чего пытаются задействовать оба прерывания.
Ну если библиотека так написана, значит ее автор имел на то основание. И практика показывает, что его основания не безосновательны. :)
.
Ответ здесь.
Последний раз редактировалось Dryundel 14.09.2021{, 23:07}, всего редактировалось 1 раз.

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

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

#7

Сообщение pan » 14.03.2019{, 12:40}

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

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

Отправлено спустя 4 минуты 23 секунды:
всё что нужно для нормальной работы, это пара конденсаторов маленькой емкости. и всё будет работать прекрасно.
а 2 прерывания ( не удивлюсь если в библиотеку засунули программную защиту от дребезга для добавления тормозов ардуине) это видимо от не понимая что и как работает, или хз по какой причине.

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

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

#8

Сообщение eugeneb » 14.03.2019{, 17:16}

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

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

За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

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

#9

Сообщение AVGN » 14.03.2019{, 17:24}

eugeneb писал(а):
14.03.2019{, 17:16}
За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
Так блоки на библиотеке сделаны. Правильно все вопросы задавать автору библиотеки вот здесь Encoder Library
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

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

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

#10

Сообщение Sancho » 14.03.2019{, 17:45}

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

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

Отправлено спустя 1 минуту 56 секунд:
Написать себе свой энкодер по этой азбуке, думаю, не составит труда.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

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

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

#11

Сообщение pan » 14.03.2019{, 17:58}

это все понятно.
я про то ,что весь смысл определения направления, это во время прерывания одного пина "посмотреть" на состояние второго пина. ВСЁ! ))
чё там еще прерывать..
и мне почему то кажется так даже быстрее будет..

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

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

#12

Сообщение vovka1973 » 14.03.2019{, 18:51}

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

Отправлено спустя 46 минут 11 секунд:
Dryundel писал(а):
14.03.2019{, 11:23}
Предполагаю, что не всем понятно зачем несколько копий одного блока (с одинаковыми пинами подключения) в проекте. А между тем это весьма полезная штука.
Пример:
не одно и тоже?
ее.JPG
Изображение

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

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

#13

Сообщение eugeneb » 14.03.2019{, 19:37}

AVGN писал(а):
14.03.2019{, 17:24}
Правильно все вопросы задавать автору библиотеки вот здесь
Да это я так, разговор поддержать :)
Не ответит ТС. Не исследовал он свои блоки на промышленных энкодерах.
Судя по фоткам - только с простыми (читай "медленными") "ручниками".

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

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

#14

Сообщение eugeneb » 14.03.2019{, 19:51}

pan писал(а):
14.03.2019{, 17:58}
чё там еще прерывать..
Это смотря какое разрешение хочешь получить от энкодера. Иногда критически важно реагировать на каждый фронт и каждый спад обоих квадратурных каналов.

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

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

#15

Сообщение pan » 14.03.2019{, 19:55}

eugeneb, например?

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

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

#16

Сообщение eugeneb » 14.03.2019{, 20:24}

Например, в станке с ЧПУ (в настоящем, не домашнем) разрешение энкодера определяет МИНИМАЛЬНО возможную скорость по этой оси. А от этого критически зависит точность станка при резании некоторых деталей (на пологих траекториях).

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

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

#17

Сообщение pan » 14.03.2019{, 20:50}

во первых, по моему вы путаете понятия. но не суть.
я просил пример необходимости
eugeneb писал(а):
14.03.2019{, 19:51}
реагировать на каждый фронт и каждый спад обоих квадратурных каналов.

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

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

#18

Сообщение eugeneb » 15.03.2019{, 07:46}

Я и привёл пример необходимости.
Что бы сделать точный станок с ЧПУ, нужен энкодер с максимальным разрешением. Приведёные блоки делят максимально возможное разрешение ЛЮБОГО энкодера на четыре, то есть ухудшают его характеристики. Обычно это допустимо. Но иногда - нет.

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

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

#19

Сообщение pan » 15.03.2019{, 09:02}

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

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

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

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

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

#20

Сообщение eugeneb » 15.03.2019{, 11:57}

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

Ответить

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