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

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

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

#1

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

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

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

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

#2

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

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

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

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

#3

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

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

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

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

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

#4

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

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

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

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

#5

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

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

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

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

#6

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

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

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

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

#7

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

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

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

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

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

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

#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}
Репутация: 53

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

#9

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

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

Sancho
Полковник
Сообщения: 2678
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Имя: Sancho
Контактная информация:

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

#10

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

Сообщение отредактировал автор поста
Сообщение отредактировал автор поста. Все.

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

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

#11

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

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

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

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

#13

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

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

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

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

#14

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

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

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

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

#15

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

eugeneb, например?
Если вам здесь помогли, можете отблагодарить . "Сказать" спасибо проекту!

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

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

#16

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

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

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

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

#17

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

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

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

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

#18

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

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

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

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

#19

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

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

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

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

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

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

#20

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

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

Ответить

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

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

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