Страница 1 из 6

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

Добавлено: 13.03.2019{, 23:00}
Dryundel
Тема устарела и морально и технически.
Новый блок EncoderPro здесь.

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

Другие блоки для энкодера:
Тестер для энкодера
Блок энкодера для одноуровневого меню

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 14.03.2019{, 17:24}
AVGN
eugeneb писал(а):
14.03.2019{, 17:16}
За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
Так блоки на библиотеке сделаны. Правильно все вопросы задавать автору библиотеки вот здесь Encoder Library

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 14.03.2019{, 19:55}
pan
eugeneb, например?

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

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

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

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

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

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

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

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

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

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

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

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