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

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

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

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

#61

Сообщение Sancho » 07.07.2020{, 14:33}

Davit07, В соответствующем разделе есть ПБ тахометр.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#62

Сообщение Davit07 » 07.07.2020{, 19:37}

av писал(а):
07.07.2020{, 14:33}
Davit07, когда вставляете код в сообщение используйте для этого соответствующий ВВ код или СПОЙЛЕР.
ПРИМЕРПоказать
Вставка кода.png
По теме... эти два кода абсолютно одинаковые за исключением переменной счетчика позволяющая считать до определенных значений соответствующее выбранному типу переменной. Но код в любом случае придется дорабатывать под ваши нужды(нет сброса счетчика по определённым промежуткам времени для замера количества оборотов в секунду или минуту)
Буду иметь в виду как правильно отправлять код.
По блоку думал подключить скоростной счётчик и все замеры производить в нем. Блок энкодера просто использовать как генератор импульса.
Подскажите как убрать монитор порта и буду пробовать его создавать .
Благодарю за ответ

Отправлено спустя 31 секунду:
Sancho писал(а):
07.07.2020{, 14:33}
Davit07, В соответствующем разделе есть ПБ тахометр.
Благодарю , буду искать

Аватара пользователя
Davit07
Сержант
Сообщения: 119
Зарегистрирован: 05.01.2020{, 03:39}
Репутация: 5
Имя: Давит

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

#63

Сообщение Davit07 » 07.07.2020{, 21:53}

av писал(а):
07.07.2020{, 20:44}
Davit07 писал(а):
07.07.2020{, 19:37}
По блоку думал подключить скоростной счётчик и все замеры производить в нем. Блок энкодера просто использовать как генератор импульса.
Как вы это себе представляете ? Код представленный вами работает с пинами внешнего прерывания (для нано пины 2 и 3), а так же на этих пинах работает скоростной счетчик. Уже прослеживается конфликт по пинам. Если использовать другие пины для энкодера, то блок не будет работать корректно так как код как раз использует внешние прерывания на пинах 2 и 3. И стоит вам занять эти пины как скоростной счетчик уже неможет выбрать входные пины для подсчета входных импульсов. Вот такие вот дела.
Да, об этом я не подумал. Согласен с Вами полностью. Код надо дописывать , как Вы писали в предыдущем сообщении и весь тот функционал добавлять, что вы указали. Код я писать не умею. :(. Буду думать, какое другое решение.
Sancho, подсказал как поискать на форуме. Есть очень интересные статьи, буду изучать .
Самое главное, что я не первый у кого появился подобный энкодер и давно решение найдено.

av, Спасибо за помощь и участие.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

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

#64

Сообщение Di123 » 11.08.2020{, 10:56}

возможно ли сделать блок энкодера 4 версии что бы он был и импульсный и считывающий ?
а то считывающий 3 версии норм когда ставишь лимиты что бы он больше не щитал внутри себя их это когда дошол до лимита и дальше крутишь а он не щитает а убавляешь и он убавляет сразу же
если использовать импульсный допустим в менюшке на выставление значений а потом в нагрузке с прикрученным щетчиком который делает его считывающим то у него проблема в том что в щётчике то я могу установить лимиты на подщёт импульсов а вот энкодер продолжает их щитать когда выходишь за лимит щетчика и когда начинаешь уменьшать крутить обратно то значения неубавляются сразу пока блок энкодера невернётся по импульсам где был лимит у щётчика
допустим лимит у щётчика 100 а энкодер крутанул на 110 и пока эти 10 неотмотаеш щётчик не сдвинется вниз

Отправлено спустя 2 минуты 28 секунд:
да и на входе ему надо будет добавить вход на разделение этих функций
а то получится что пока настраиваешь меню он меняет показания на нагрузке или если блочить нагрузку в этот момент то при выходе из меню он изменит нагрузку на число которое там накрутилось

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

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

#65

Сообщение Dryundel » 11.08.2020{, 12:43}

Di123 писал(а):
11.08.2020{, 10:58}
если использовать импульсный допустим в менюшке на выставление значений а потом в нагрузке с прикрученным щетчиком который делает его считывающим то у него проблема в том что в щётчике то я могу установить лимиты на подщёт импульсов а вот энкодер продолжает их щитать когда выходишь за лимит щетчика и когда начинаешь уменьшать крутить обратно то значения неубавляются сразу пока блок энкодера невернётся по импульсам где был лимит у щётчика
допустим лимит у щётчика 100 а энкодер крутанул на 110 и пока эти 10 неотмотаеш щётчик не сдвинется вниз
Проект где?

Отправлено спустя 8 часов 9 минут 32 секунды:
Di123 писал(а):
11.08.2020{, 10:58}
да и на входе ему надо будет добавить вход на разделение этих функций
а то получится что пока настраиваешь меню он меняет показания на нагрузке или если блочить нагрузку в этот момент то при выходе из меню он изменит нагрузку на число которое там накрутилось
Слишком специфично. Если реально необходимо - пишите в личку.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

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

#66

Сообщение Di123 » 12.08.2020{, 05:07}

он ещё на этапе проектирования
но уже при тесте заметны минусы

проблема вашего блока в том что он не выставляет мгновенно импульсы !
тоесть мне нужно выставить от 0 до 100 и вращаю быстро ручку а импульсы постепенно набегают и не знаешь остановится подождать их или ещё повращать и получается перевращаеш допустим до 120 но эти 20 надо потом отматывать назад что бы начать убавлять мощность
а убавить допустим чутка надо и крутишь с осторожностью потомучто не знаешь насколько ты перекрутил ручку
таже ситуация и вниз по лимиту

тут даже достаточно что бы версия блока 1,1 имела внутри себя лимиты которые можно задавать как в 3,1

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

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

#67

Сообщение Dryundel » 12.08.2020{, 13:18}

Di123 писал(а):
12.08.2020{, 05:07}
проблема вашего блока в том что он не выставляет мгновенно импульсы !
тоесть мне нужно выставить от 0 до 100 и вращаю быстро ручку а импульсы постепенно набегают и не знаешь остановится подождать их или ещё повращать
Это не проблема, а преимущество данных блоков тиковых энкодеров. В них заложен алгоритм который предотвращает пропускание импульсов при быстром прокручивании ручки.

А проблема заключается в вашем скетче который перегружает контроллер.

Любой код энкодера, каким бы он ни был, не сможет выдавать тики чаще чем цикл исполнения контроллером вашей программы (скетча) и если Вы визуально видите как выдаются тики после остановки вращения ручки энкодера, значит время затрачиваемое контроллером на один цикл программы весьма велико. А именно таково с какой скоростью идут тики после остановки вращения ручки энкодера. В этом случае алгоритм данного энкодера и догоняет пропущенные тики, которые прошли гораздо быстрее чем циклы вашей программы.
Di123 писал(а):
12.08.2020{, 05:07}
тут даже достаточно что бы версия блока 1,1 имела внутри себя лимиты которые можно задавать как в 3,1
Как Вы себе это представляете?
Предлагаете наложить ограничение на количество тиков выдаваемых эткодером? 1.1 это тиковый энкодер, а не считающий!
Не несите чушь!

дрон
Рядовой
Сообщения: 94
Зарегистрирован: 09.11.2017{, 19:25}
Репутация: 2
Откуда: Москва
Имя: Андрей

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

#68

Сообщение дрон » 25.08.2020{, 15:51}

Здравствуйте Dryundel , не могли бы Вы, переделать ваши блоки под ESP32. Уж больно они хороши. На подобии ваших, на просторах форума, ни чего не нашел.

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

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

#69

Сообщение Dryundel » 25.08.2020{, 21:23}

дрон писал(а):
25.08.2020{, 15:51}
Здравствуйте Dryundel , не могли бы Вы, переделать ваши блоки под ESP32. Уж больно они хороши. На подобии ваших, на просторах форума, ни чего не нашел.
Блоки сделаны на основе библиотеки Encoder.h , а она не поддерживает данный контроллер. Подробнее про библиотеку здесь.

дрон
Рядовой
Сообщения: 94
Зарегистрирован: 09.11.2017{, 19:25}
Репутация: 2
Откуда: Москва
Имя: Андрей

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

#70

Сообщение дрон » 26.08.2020{, 04:46}

Спасибо, буду искать,что то на подобии ваших. В программировании "CODE" не силен.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#71

Сообщение aidar_i » 26.08.2020{, 14:37}

дрон писал(а):
25.08.2020{, 15:51}
переделать ваши блоки под ESP32
Решается очень просто: Скачиваете библиотеку(уже добавлена поддержка ЕСП32) и ставите вместо старой
Выложил ниже
Encoder.rar
(14.53 КБ) 163 скачивания
Последний раз редактировалось aidar_i 26.08.2020{, 20:09}, всего редактировалось 2 раза.

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

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

#72

Сообщение Dryundel » 26.08.2020{, 15:34}

aidar_i писал(а):
26.08.2020{, 14:37}
дрон писал(а):
25.08.2020{, 15:51}
переделать ваши блоки под ESP32
Решается очень просто: Скачиваете библиотеку(уже добавлена поддержка ЕСП32) и ставите вместо старой

Выложил ниже
Encoder.rar
Да, действительно. Библиотека обновлялась. Последние изменения на Гитхабе 17 дней назад. :)
Так что теперь там все ок. С ней компилируется и на ESP32. За работу ничего пока сказать не могу.
Будет время перезалью блоки.

Вот свежая библиотека.
.
Encoder-master_26.08.20.zip
(17.11 КБ) 160 скачиваний
.
дрон, откройте блок для редактирования, удалите прикрепленную библиотеку и прикрепите новую.

И пожалуйста, отпишитесь по работоспособности блока на ESP32.
Последний раз редактировалось Dryundel 26.08.2020{, 23:17}, всего редактировалось 1 раз.

aidar_i
Полковник
Сообщения: 3120
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#73

Сообщение aidar_i » 26.08.2020{, 16:42}

Удалил
Последний раз редактировалось aidar_i 26.08.2020{, 20:08}, всего редактировалось 1 раз.

дрон
Рядовой
Сообщения: 94
Зарегистрирован: 09.11.2017{, 19:25}
Репутация: 2
Откуда: Москва
Имя: Андрей

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

#74

Сообщение дрон » 26.08.2020{, 17:29}

Спасибо, завтра на работе буду пробовать, дома нет энкодера.

Отправлено спустя 27 минут 2 секунды:
Компиляция и загрузка в ESP32 прошла нормально.

дрон
Рядовой
Сообщения: 94
Зарегистрирован: 09.11.2017{, 19:25}
Репутация: 2
Откуда: Москва
Имя: Андрей

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

#75

Сообщение дрон » 27.08.2020{, 09:26}

На ESP32 все работает, единственно пришлось менять подключение ножек на китайском энкодере. Спасибо огромное за помощь.
проверял блоки: PlusPlus v 3.1 и Plus v 3.0.
Еще плюс Ваших энкодеров в том, что они могут работать в одном проекте, по несколько штук.

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

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

#76

Сообщение shura2 » 14.09.2020{, 02:06}

проверил блоки на ESP8266. запустить не получилось
com порт пишет
load 0x4010f000, len 1392, room 16

tail 0

chksum 0xd0

csum 0xd0

v3d128e5c

~ld
подключение самого энкодера не влияет. библиотеку поставил последнюю
enkoder.png

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

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

#77

Сообщение Dryundel » 14.09.2020{, 09:05}

shura2 писал(а):
14.09.2020{, 02:06}
проверил блоки на ESP8266. запустить не получилось
com порт пишет
Ну так и разбирайтесь с COM портом. При чем здесь блоки?

ecoins
Полковник
Сообщения: 2923
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#78

Сообщение ecoins » 14.09.2020{, 10:08}

shura2 писал(а):
14.09.2020{, 02:06}
проверил блоки на ESP8266. запустить не получилось
com порт пишет
Dryundel писал(а):
14.09.2020{, 09:05}
Ну так и разбирайтесь с COM портом. При чем здесь блоки?
Блоки скорее всего ни при чем, но на ESP8266 они у #shura не работают, процессор уходит в перезагрузку.
В версии Arduino 1.8.13 используется SDK ESP8266 версии 2.7.1. Предполагаю, что так по иному обрабатываются прерывания.
У меня с библиотекой RT_HW_HC_SR04.h та же проблема - на ESP8266 уходит в перезагрузку (как у #shura), на ESP32 просто не работает.
Пока не разбирался.

shura2
Рядовой
Сообщения: 45
Зарегистрирован: 10.01.2020{, 00:26}
Репутация: 1
Имя: Александр

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

#79

Сообщение shura2 » 16.09.2020{, 21:55}

Dryundel писал(а):
14.09.2020{, 09:05}
Ну так и разбирайтесь с COM портом. При чем здесь блоки?
походу блок вешает еспешку. по крайней мере, если убрать блок энкодера из этого скетча,
enkoder2.png
на экране видна реакция на энкодер и кнопку. а при наличии блока энкодера реакции нет.


На нано блок работает замечательно.

ivansidor012
Сержант
Сообщения: 279
Зарегистрирован: 10.09.2020{, 14:37}
Репутация: 43
Имя: Иван

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

#80

Сообщение ivansidor012 » 16.09.2020{, 22:11}

ecoins писал(а):
14.09.2020{, 10:08}
В версии Arduino 1.8.13 используется SDK ESP8266 версии 2.7.1. Предполагаю, что так по иному обрабатываются прерывания
новое sdk нам всегда приносит больше проблем, чем пользы. То библиотеки не работают, то синтаксис изменился и т.п.
Но по-другому все равно не получится....вон и гугл уже API поднял...

Вот если б ассемблер менял синтаксис каждые полгода - какой бы сейчас мир был? :)

Ответить

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