Страница 2 из 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 КБ) 19948 просмотров
Эти два блока выдают тики на выходах 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

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

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

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

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

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

Добавлено: 15.03.2019{, 13:05}
Dryundel
Вау!!! Какой хайп! :)

Теперь по порядку.
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 КБ) 3627 просмотров
И то это можно как то сопоставить лишь с работой блока Энкодер_считающий_v_2.0 по причине того что только он фактически не обрабатывает данные полученные от библиотеки.
Данные блоки лишь предоставляют возможность полноценно использовать ручные (медленные) энкодеры, без пропусков и глюков. Чего на этом форуме я во всяком случае не нашел.
eugeneb писал(а):
14.03.2019{, 17:16}
За одно уж скажите сколько импульсов выдают Ваши блоки за один квадратурный период - 1, 2 или 4?
Если этот вопрос таки актуален отвечу - 2.
pan писал(а):
15.03.2019{, 09:02}
но я думаю эти (и подобные блоки) для использования энкодеров "крутилок". и они с этим прекрасно справляются.

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

Итак резюме: Обязательно напишу в шапке. "НЕ ДЛЯ ПРОМЫШЛЕННЫХ ЭНКОДЕРОВ" и "Есть ограничения, посоветуйтесь с врачом"

А вообще, дядьки бородатые, если считаете данные блоки полным Г, сделайте свои варианты или укажите где на форуме найти лучше. Может тогда народ, особенно новички, скажет вам спасибо. :)

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

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

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

Добавлено: 15.03.2019{, 14:38}
eugeneb
Dryundel писал(а):
15.03.2019{, 13:05}
если считаете данные блоки полным Г
Никакое это не Г. Вас даже похвалили в первом же ответе.
Просто в работе с энкодерами есть много тонкостей.
Вот мы их слегка и обсудили. Никакого хайпа (А чё это такое?)

Отправлено спустя 4 минуты 45 секунд:
Dryundel писал(а):
15.03.2019{, 13:05}
Итак резюме: Обязательно напишу в шапке. "НЕ ДЛЯ ПРОМЫШЛЕННЫХ ЭНКОДЕРОВ"
А это Вы сделали совершенно правильный вывод.
Dryundel писал(а):
15.03.2019{, 13:05}
Не проверял и не собираюсь этого делать. Не вижу в этом смысла.
А это - любительский подход. Дк этож не позор. Чай не в МО сдавать :)

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

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

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

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

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

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

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

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

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

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

Добавлено: 15.03.2019{, 15:22}
pan
Dryundel, я рад. это хорошо что все работает.
просто у меня подход другой, не пишу в коде лишнего если это решается установкой копеечной детали, экономия времени и ресурсов.
но это не всем надо.
поэтому вам + за работу

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

Добавлено: 15.03.2019{, 21:14}
slesar
Мужики я тут случайно :smile390: на ваш разговор набрёл. У меня подобная проблема только у меня вот https://ru.aliexpress.com/item/Free-shi ... e6085f7777 тоже не могу подключить через эти блоки, можете чё-нить посоветовать?

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

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

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

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

Добавлено: 15.03.2019{, 23:12}
pan
slesar, а у вас какой тип сиганала?
Изображение

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

Добавлено: 15.03.2019{, 23:32}
slesar
После такого ответа мне самому дифебрилятор надо, я ещё маленький в FLProg :senile: мне бы попроще типа схемы или рисунка.

Отправлено спустя 53 секунды:
TTL

Отправлено спустя 1 минуту 55 секунд:
Второй сигнал идет уже с блока индикации куда линейка подключается

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

Добавлено: 16.03.2019{, 09:51}
Sancho
slesar, подключите свою линейку к блокам энкодеров с прерываниями, pan давал ссылки выше.
Калибровочную метку, сигнал 50мм, используйте по своему усмотрению.

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

Добавлено: 26.10.2019{, 22:55}
Alexander1
Dryundel, Привет! Почему у меня блок тестера энкодера нормально считает, а EncTic1.1 считает как хочет? То 3, то 2, то 4 тика показывает.

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

Добавлено: 27.10.2019{, 01:05}
Dryundel
Alexander1 писал(а):
26.10.2019{, 22:55}
Dryundel, Привет! Почему у меня блок тестера энкодера нормально считает, а EncTic1.1 считает как хочет? То 3, то 2, то 4 тика показывает.
Вы параметр TicStep выставили?
Какой контроллер?
К каким пинам подключаете?
Какой энкодер?
Конденсаторы подключаете?

EncTic1 ничего не считает, а лишь выдает тики. Чем Вы их считаете? и зачем?

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

Добавлено: 31.10.2019{, 21:56}
Alexander1
Dryundel, Вопрос снят. Надо просто на "сброс" подавать сигнал через Р-триггер. А цифры прыгали наверное я в схеме намудрил...

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

Добавлено: 01.12.2019{, 18:39}
Олега
Подскажите, использую блок 3.0. Кручу энкодер. Все хорошо. Потом по условию задачи мне надо, что бы он блокировался и не позволял изменить данные. Делаю это убирая единицу со входа En. Да, показания на выходе при вращении не меняются! но если опять дать на En единицу, то на выходе показания будут другие :smile37:
Допустим на выходе 10. убираю с En единицу, кручу энкодер. Потом даю на En единицу, а на выходе становиться 7 или 12. смотря куда я крутил. Так и должно быть? Получается счет внутри блока идет, но на выходе не меняется. А когда даешь разрешение, то он и прыгает.

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

Добавлено: 01.12.2019{, 21:32}
Dryundel
Олега писал(а):
01.12.2019{, 18:39}
Подскажите, использую блок 3.0. Кручу энкодер. Все хорошо. Потом по условию задачи мне надо, что бы он блокировался и не позволял изменить данные. Делаю это убирая единицу со входа En. Да, показания на выходе при вращении не меняются! но если опять дать на En единицу, то на выходе показания будут другие
Да, вероятно так и будет происходить при Еn = true .
А почему бы Вам не использовать min и max блока для этих целей, а не останавливать блок?

Отправлено спустя 30 минут 40 секунд:
Олега, вот, исправил, попробуйте.
.
Энкодер_считающий_Plus_v_3.0.1_(CODE).ubi
(173.17 КБ) 163 скачивания

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

Добавлено: 02.12.2019{, 07:21}
Олега
Понятно. Да, помудрю с мин.макс. У меня видите, такая задача. Энкодером выбираю шаг резьбы для нарезания на токарном станке. По этому во время работы очень не желательно его изменить. вот и хотел блокировать. Все понятно, спасибо большое. Блоки просто отличные!! Удачи!