Энкодер Pro

Encoder EncoderPro EncPro

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

Энкодер Pro

#1

Сообщение Dryundel » 10.09.2021{, 13:57}

Если возникли проблемы с компиляцией Читай пост #12 (временно)
Энкодер Pro (EncPro)
(AVR, ESP)
.
На самом деле эта тема является логическим продолжением:
Набор блоков ЭНКОДЕР
.
Новый блок EncPro содержит возможности всех ранее представленных блоков вместе взятых.
Полностью переработан алгоритм работы с используемой библиотекой Encoder, благодаря чему повысилась эффективность и надежность работы блока.

ВНИМАНИЕ! Для корректной работы блока, удалите старые библиотеки, такие как Encoder, Encoder-master, Encoder1.4.1. Данный блок работает с последней версией - Encoder1.4.2 Устанавливать ничего не нужно, библиотека вшита в блок.
Пути для удаления (по умолчанию):
1. ...\FLProg\ideV7\libraries
2. ...\FLProg\ideV7\portable\sketchbook\libraries

.
EncPro_1.jpg
EncPro_1.jpg (7.36 КБ) 15859 просмотров
Актуальная версия.
.
Энкодер_Pro_V1.5_(Code_-_Professional).ubi
- обновлена библиотека Encoder.h до 1.4.3
- Добавлен псевдо-абсолютный режим работы энкодера.
.
История версий.
.
Энкодер_Pro_V1.4_(Code_-_Professional).ubi
(2.44 МБ) 211 скачиваний
Добавлена возможность ограничения счета вверх и вниз.
.
Энкодер_Pro_V1.3_(Code_-_Professional).ubi
(2.35 МБ) 323 скачивания
- Исправлен конфликт, возникавший при использовании двух и более блоков в проекте. (19.07.2022)
.
Энкодер_Pro_V1.1_(Code_-_Professional).rar
(58.62 КБ) 445 скачиваний
- Добавлен параметр "Дополнительные настройки"
- Оптимизирован алгоритм компиляции
- Исправлена ошибка компиляции при отсутствии выходов Up и Down
.
Энкодер_Pro_V1.0_(Code_-_Professional).rar
(54.07 КБ) 221 скачивание
Данный релиз является бета-версией и будет дорабатываться, хотя и полностью работоспособен.
.
Краткое описание:

Энкодер Pro (EncPro) это универсальный блок с возможностью настройки.
Все настройки интуитивно понятны и имеют описание и подсказки.
Благодаря отличному алгоритму библиотеки Encoder (https://github.com/PaulStoffregen/Encoder/releases),
которую я по праву считаю лучшей в своем классе, пропуск шагов практически исключен.
В описании библиотеки гарантирована работа на частоте до 100 кГц - 127 кГц.
Если у вас нормальный, не убитый энкодер, имеющий RC фильтры, то при подключении
сигнальных пинов на пины контроллера, поддерживающие прерывания, качественная работа
блока гарантирована. Если же такой возможности нет, то используйте хотя бы один пин
поддерживающий прерывания. У таких контроллеров как UNO и NANO это D2 и D3.
Счетный выход блока Count выдает результат моментально.
Скорость работы импульсных выходов Up и Down зависит от вашей программы.
Блок физически не может выдавать больше одного импульса за два цикла.
Однако импульсов будет ровно столько, сколько покажет моментальный выход Count,
хотя они могут совершаться с задержкой.

Блок выдает количество шагов, направление и импульсы для каждого шага.

Возможности блока и работа с ним:

Пользовательские настройки блока позволяют настроить блок под свои нужды.
Код генерируемый блоком, включает в себя только включенные функции.
Внешний вид блока, так же не имеет ничего лишнего согласно примененных настроек.

Варианты настройки блока:
EncPro_Варианты.jpg
EncPro_Варианты.jpg (40.03 КБ) 15859 просмотров
.
Настройки:

- Pin1 и Pin2 - выбор пинов контроллера к которым подключены дата-пины энкодера (DT, CLK).
- Тиков на шаг - Количество тиков, выдаваемых энкодером, за один физический шаг(щелчок). Энкодер типа EC-11 ( KY-040) выдает 4 или 2 тика на шаг. Зависит от производителя. Если энкодер не имеет дискретного (ступенчатого) шага, можно ввести количество тиков, кратно которому будет выдаваться один импульс.
- Выходы импульсные Up и Down - это инкрементный и декрементный выходы. При правильно настроенном энкодере,на одном из этих выходов, в зависимости от направления вращения энкодера, появляются импульсы.
Один импульс на один шаг.
- Выход счетчика Count - это числовой выход счетчика импульсов. При вращении в одну стороку значение на нем увеличивается, в другую - уменьшается. Значения могут быть как положительными так и отрицательными. Макс и мин ограничены long ( -2 147 483 648 до 2 147 483 647 ).
- Вход сброса Reset - это вход сброса счетчика. При наличии на нем логической единицы, выход Count принимает значение "0".
- Вход предустановки Preset - это вход предустановки. При наличии на нем логической единицы, выход Count принимает значение со входа VP (Value Preset). Работает только с локальным выходом Count.
Это например, может быть актуально для использования начального значения из EEPROM.
- Количество групп выходов / входов - Блок может иметь несколько счетчиков и групп Up/Down.
Это актуально если с одного энкодера требуется передавать данные на разные блоки (входы блоков).
При использовании более одной группы таких выходов, Reset и Preset работают с активной группой.
Кроме этого можно использовать ResetAll и PresetAll - Общиt сброс и предустановка для всех счетчиков.
- Вход общего сброса ResetAll и Вход общей предустановки PresetAll - эти входы аналогичны Reset и Preset, но действуют на все группы выходов/входов одновременно.
Дополнительные настройки - Настраивается оптипизация прерываний и поднятие рабочей частоты до 127 кГц (только для AVR) или отключаются совсем (актуально если пины с прерыванием не задействованы, уменьшает размер).
Внимание! При оптимизации прерываний, другие прерывания в проекте, если таковые есть, перестанут работать.

- Вход Номер группы(NumGroup) появляется когда количество групп выходов/входов больше одного. В этом случае активной группой будет та, номер которой присутствует на этом входе.

Пример выбора номера активной группы с помощью штатного блока "Шифратор"
EncPro_Выбор группы.jpg
EncPro_Выбор группы.jpg (11.16 КБ) 15859 просмотров
.
- Входы Значение предустановки (VP, VP1, VP2, VP3, VP4) - появляются при установленной настройке "Вход предустановки Preset/PresetAll". При высоком логическом уровне на Preset/PresetAll выходы "Count" примут соответствующее значение.
EncPro_Preset.jpg
EncPro_Preset.jpg (21.23 КБ) 15859 просмотров
.
Последний раз редактировалось Dryundel 20.04.2023{, 11:01}, всего редактировалось 11 раз.

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

Энкодер Pro

#2

Сообщение Dryundel » 10.09.2021{, 13:58}

Резерв

shurik
Рядовой
Сообщения: 21
Зарегистрирован: 06.09.2019{, 13:59}
Репутация: 1
Имя: Александр

Энкодер Pro

#3

Сообщение shurik » 10.09.2021{, 22:39}

Здравствуйте, подскажите с esp32 будет работать ?

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

Энкодер Pro

#4

Сообщение Dryundel » 10.09.2021{, 23:04}

shurik писал(а):
10.09.2021{, 22:39}
Здравствуйте, подскажите с esp32 будет работать ?
Вероятно пока нет. Отлично работает. Авторская библиотека заточена под AVR, но позже добавлен ESP.
Вообще автор фанатеет от Teensy. Под него все и затевалось, году еще так в 2010.
https://www.pjrc.com/teensy/td_libs_Encoder.html

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

Энкодер Pro

#5

Сообщение Dryundel » 13.09.2021{, 20:17}

shurik писал(а):
10.09.2021{, 22:39}
Здравствуйте, подскажите с esp32 будет работать ?
Протестировал на ESP32 - ОТЛИЧНО РАБОТАЕТ!
Как ни старался добиться пропуска шагов, быстро крутя ручку энкодера, у меня не получилось. :)
Энкодер тестировался такой:Показать
2021-09-13_201113.jpg
Энкодер тестировался такой:

MM33
Рядовой
Сообщения: 41
Зарегистрирован: 23.06.2021{, 11:52}
Репутация: 7
Имя: Михаил

Энкодер Pro

#6

Сообщение MM33 » 14.09.2021{, 10:04}

что то я делаю не так .....
При удалении всех библиотек со словом Encoder при компиляции выдается сообщение о том что библиотека не найдена и на этом основании процесс остановлен.
скачиваю библиотеку 1.4.2. ..... при компиляции на отсутствие библиотеки не ругается ,но выдает pr13:51:20: error: stray '\275' in program.
У меня одного проблемы с блоком или кто то знает как это поправить?
МК -UNO , счетные ноги 2,3.
Всем спасибо

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

Энкодер Pro

#7

Сообщение vovka1973 » 14.09.2021{, 10:36}

MM33 писал(а):
14.09.2021{, 10:04}
что то я делаю не так .....
При удалении всех библиотек со словом Encoder при компиляции выдается сообщение о том что библиотека не найдена и на этом основании процесс остановлен.
скачиваю библиотеку 1.4.2. ..... при компиляции на отсутствие библиотеки не ругается ,но выдает pr13:51:20: error: stray '\275' in program.
У меня одного проблемы с блоком или кто то знает как это поправить?
МК -UNO , счетные ноги 2,3.
Всем спасибо
Нет! это и у меня проблема там в коде русский язык ,блок надо править
Изображение

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

Энкодер Pro

#8

Сообщение Dryundel » 14.09.2021{, 10:56}

vovka1973 писал(а):
14.09.2021{, 10:36}
при компиляции на отсутствие библиотеки не ругается ,но выдает pr13:51:20: error: stray '\275' in program.
vovka1973 писал(а):
14.09.2021{, 10:36}
Нет! это и у меня проблема там в коде русский язык ,блок надо править
Да. Подтверждаю. Возможны такие глюки.
Но связано это с глюками Pro-редактлра в последней версии FLProg.
В коде не должно быть русских букв.
Явно проблему не выявил. Разбираюсь.
Пока даже не могу сформулировать суть Сергею.

Отправлено спустя 2 минуты 11 секунд:
MM33, vovka1973, пришлите проект в котором это произошло.

MM33
Рядовой
Сообщения: 41
Зарегистрирован: 23.06.2021{, 11:52}
Репутация: 7
Имя: Михаил

Энкодер Pro

#9

Сообщение MM33 » 14.09.2021{, 11:15}

Так прислать то нечего . Голый блок с минимальными настройками . Разрешение и счетный выход и все.
Есть мечта потестить с промышленным энкодером.

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

Энкодер Pro

#10

Сообщение Dryundel » 14.09.2021{, 11:28}

MM33 писал(а):
14.09.2021{, 11:15}
Голый блок с минимальными настройками . Разрешение и счетный выход и все.
Вот это и пришлите.
И в какой версии FLProg Вы работаете? В портативной или нет?

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Энкодер Pro

#11

Сообщение rw6cm » 14.09.2021{, 11:41}

Dryundel писал(а):
14.09.2021{, 10:58}
Пока даже не могу сформулировать суть Сергею.
При частом редактировании, перемещении, или изменении, параметров, условий, входов/выходов,
происходит (не всегда) потеря привязки кода в редакторе блока.
Увидеть это можно просматривая весь код каждого экземпляра
СпойлерПоказать
2021_09_14_11_18_04_Редактор_пользовательского_блока_Professional.png
Не окрашенный код заключенный в скобки <код> говорит а том что связь потеряна.
Я выхожу из положения - вырезаю весь код в участке кода, перехожу на следующий участок,
возвращаюсь обратно и вставляю назад вырезанный код, после этой манипуляции код в этом участке привязывается по новой.
К стати чтобы не было пустых квадратиков в коде не пользуйтесь табом, отступы делайте пробелом
Win10-64, FLProg (portable)

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

Энкодер Pro

#12

Сообщение Dryundel » 14.09.2021{, 11:44}

Временное решение проблемы с компиляцией.
Если у вас при компиляции вылезла ошибка типа - <error: stray '\275' in program. >
а в коде вы видите русские теги типа - <Инкремент (Вверх)_1>
Не отчаивайтесь, это глюк компиляции блока.
Для исправления войдите в редактирование блока (правй клик >> Редактировать)
Найдите подраздел:
Пакет блоков >> Энкодер Pro V1 >> Основные настройки >> Код блока >> Код каждого экземпляра >> Секция "Loop" >> Место вставки блока "Loop"
Откройте поочередно все блоки кода и добавьте в конце любой строки пробел.
Добавление пробелаПоказать
Ошибка компиляции.jpg
Это надо сделать в каждой секции кода.
Нажмите "Сохранить" >> Обновить блок в библиотеке.

После этой манипуляции компиляция должна пройти успешно.
Это надо сделать только один раз.

Отправлено спустя 49 секунд:
rw6cm писал(а):
14.09.2021{, 11:41}
При частом редактировании, перемещении, или изменении, параметров, условий, входов/выходов,
Это другая проблема. Про ту я знаю.

Отправлено спустя 1 минуту 44 секунды:
rw6cm писал(а):
14.09.2021{, 11:41}
Я выхожу из положения - вырезаю весь код в участке кода, перехожу на следующий участок,
возвращаюсь обратно и вставляю назад вырезанный код, после этой манипуляции код в этом участке привязывается по новой.
Гемор, но по другому ни как )))
Решается так же, добавлением (или удалением) пробела в любой строчке блока кода и пересохранением.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Энкодер Pro

#13

Сообщение rw6cm » 14.09.2021{, 11:58}

Dryundel писал(а):
14.09.2021{, 11:47}
Решается так же, добавлением (или удалением) пробела в любой строчке блока кода и пересохранением.
С пробелом не всегда прокатвает. Бывает пока не удалишь код входа/выхода привязка по новой не происходит.
Win10-64, FLProg (portable)

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

Энкодер Pro

#14

Сообщение Dryundel » 14.09.2021{, 12:04}

rw6cm писал(а):
14.09.2021{, 11:58}
С пробелом не всегда прокатвает. Бывает пока не удалишь код входа/выхода привязка по новой не происходит.
Это было раньше. Теперь если есть хоть какие то изменения в блоке кода, то все связи обновляются. (Но только в этом блоке!)

MM33
Рядовой
Сообщения: 41
Зарегистрирован: 23.06.2021{, 11:52}
Репутация: 7
Имя: Михаил

Энкодер Pro

#15

Сообщение MM33 » 14.09.2021{, 14:48}

Спасибо, после проведения мероприятий с добавлением пробелов блок заработал.
Подключил инкрементальный промышленный датчик ТТЛ 2500 инкр/ оборот.
При вращении вала от руки все считает , направление определяет, но максимум который мне удалось достичь - это 5000 инкр/об. Либо он считает на обоих каналах только положительные /отрицательные фронты , либо оба фронта, но с одного канала.
Тем не менее первое впечатление очень хорошее.
Попробую увеличить скорость и размер кода в скетче , по результатам отпишусь.

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

Энкодер Pro

#16

Сообщение Dryundel » 14.09.2021{, 18:47}

MM33 писал(а):
14.09.2021{, 14:48}
Спасибо, после проведения мероприятий с добавлением пробелов блок заработал.
Подключил инкрементальный промышленный датчик ТТЛ 2500 инкр/ оборот.
При вращении вала от руки все считает , направление определяет, но максимум который мне удалось достичь - это 5000 инкр/об.
Я не понял в чем печаль?
Библиотека используемая в блоке сделала для вас невозможное. :)
ТТЛ 2500 по даташиту имеет 2500 инкр/ оборот.
Блок выдает 5000 инкр/ оборот. - в два раза больше! Разрешение увеличилось в 2 раза!
.
Суть в том, что алгоритм библиотеки несколько отличается от стандартного подхода подсчета импульсов.
Если очень интересно могу пояснить суть. Где то на иностранном форуме автор давал это пояснение, но вряд ли смогу найти.

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

Энкодер Pro

#17

Сообщение vovka1973 » 14.09.2021{, 20:19}

MM33 писал(а):
14.09.2021{, 14:48}
Либо он считает на обоих каналах только положительные /отрицательные фронты , либо оба фронта, но с одного канала.
так и раньше считалось на старой библиотеке ,если энкодер 1000 то импульсов будет 2000 ,если 2000 то импульсов будет 4000 просто раньше делал для промышленного энкодера столкнулся с неправильным подсчетом пока не понял что он все импульсы считает.

Отправлено спустя 30 секунд:
Dryundel писал(а):
14.09.2021{, 11:47}
Временное решение проблемы с компиляцией.
спасибо помогло!
Изображение

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

Энкодер Pro

#18

Сообщение Dryundel » 14.09.2021{, 22:35}

vovka1973 писал(а):
14.09.2021{, 20:19}
так и раньше считалось на старой библиотеке ,если энкодер 1000 то импульсов будет 2000 ,если 2000 то импульсов будет 4000 просто раньше делал для промышленного энкодера столкнулся с неправильным подсчетом пока не понял что он все импульсы считает.
Ок. Раз пошла такая пьянка... :)
Обрисую вкратце принципы работы декодеров сигнала с энкодера.
На каких принципах работают инкрементальные энкодеры, я останавливаться не буду, ибо в сети этой информации больше чем требуется и статьи есть и видосики. Так что если кто то еще не знает, поищите сначала эту информацию.
А вот как обрабатывается сигнал, мало кто объясняет, а если и рассказывает, то очень мутно.
.
Существует четыре метода подсчета импульсов:
- 4x count mode, 4 counts are made per pulse (low, rising, high, falling)
- 2x count mode, 2 counts are made per pulse (low, high)
- 1x count mode, 1 count is made per pulse (just the high I believe)

Ну и четвертый, это просто считать импульсы не учитывая направление вращения, его мы опустим.
.
1Х.jpg
.
Начнем с последнего 1x count mode.
Этот метод самый примитивный. Из плюсов то, что требует меньше всего аппаратных ресурсов. Из минусов - имеет низкое разрешение.
Сравниваем сигналы с двух каналов.
В зачет идут только RISING (рост) – изменение сигнала с LOW на HIGH
В зависимости на каком канале первым произошел RISING, в ту сторону и крутится энкодер. Если на первом раньше чем на втором, значит крутит вправо, если на втором раньше чем на первом, значит крутит влево. Если после срабатывания двух RISING на обеих линиях логический ноль, значит зачитываем один шаг, с ранее определенным направлением.
Логика такая:
Если последовательно (LOW_1 + LOW_2) > RISING_1 > RISING_2 > (LOW_1 + LOW_2) - значит один тик вправо.
Если последовательно (LOW_1 + LOW_2) > RISING_2 > RISING_1 > (LOW_1 + LOW_2) - значит один тик вправо.
Если последовательно (LOW_1 + LOW_2) > RISING_1 > (LOW_1 + LOW_2) или (LOW_1 + LOW_2) > RISING_2 > (LOW_1 + LOW_2) - то сброс, зачета тика не произошло
Соответственно получаем один тик с одного полного такта.
.
2x count mode
Этот метод похож на предыдущий, однако отслеживается не только RISING, но и FALLING (падение) – изменение сигнала с HIGH на LOW.
В данном случае логика усложняется:
Если последовательно RISING_1 > RISING_2 > FALLING_1 - значит один тик вправо.
Если последовательно RISING_2 > RISING_1 > FALLING_2 - значит один тик вправо.
Если последовательно FALLING _1 > FALLING _2 > RISING_1 - значит один тик вправо.
Если последовательно FALLING _2 > FALLING _1 > RISING_2 - значит один тик вправо.
Ну и соответственно вариантов незачета (сброса) немного больше.
Такой метод требует несколько больше аппаратных ресурсов, но за-то имеет в два раза больше разрешение (Два тика на один полный цикл) и считается оптимальным.
.
Ну и наконец 4x count mode.
Этот метод самый требовательный к аппаратным ресурсам и коду.
В основе его лежит сочетание всех возможных комбинаций двух каналов плюс последующее событие.
Таких комбинаций всего 4. А последующих событий у каждой комбинации может быть 2.
LOW_1 + LOW_2
HIGH _1 + LOW_2
HIGH _1 + HIGH _2
LOW_1 + HIGH _2
А вот последующее событие зависит от комбинации в настоящий момент.
Например:
Текущая комбинация HIGH _1 + LOW_2. Если после такой комбинации следует RISING_2 значит зачёт 1 клик вправо, если же следует FALLING_1, значит зачёт 1 клик влево. После каждого события возникает очередная комбинация и последующий зачёт зависит от следующего события.
Такой метод дает самое высокое разрешение - 4 тика на один полный цикл.
.
Алгоритмы подсчета импульсов могут быть описаны и немного другими зависимостями, но принцип работы декодера это не меняет.
В упомянутой выше библиотеке используется именно 4x count mode.
.
Для наглядности, визуально покрутить ручку энкодера можно здесь.

Ну как то так.
Надеюсь что у меня получилось не нагнать мути. :D
==============================================================================
PS К стати, в описании последнего алгоритма содержится ответ на реплики из предыдущей темы...
pan писал(а):
14.03.2019{, 12:05}
для энкодера более чем достаточно одного прерывания. я в упор не понимаю для чего пытаются задействовать оба прерывания.
pan писал(а):
14.03.2019{, 12:44}
всё что нужно для нормальной работы, это пара конденсаторов маленькой емкости. и всё будет работать прекрасно.
а 2 прерывания ( не удивлюсь если в библиотеку засунули программную защиту от дребезга для добавления тормозов ардуине) это видимо от не понимая что и как работает, или хз по какой причине.
pan писал(а):
14.03.2019{, 17:58}
это все понятно.
я про то ,что весь смысл определения направления, это во время прерывания одного пина "посмотреть" на состояние второго пина. ВСЁ! ))
чё там еще прерывать..
Именно прерывания на обоих пинах могут отследить последующее событие. Иначе никак. Иначе глюки, тормоза и пропуски шагов.

MM33
Рядовой
Сообщения: 41
Зарегистрирован: 23.06.2021{, 11:52}
Репутация: 7
Имя: Михаил

Энкодер Pro

#19

Сообщение MM33 » 16.09.2021{, 09:16}

]Dryundel.....
Библиотека используемая в блоке сделала для вас невозможное.
ТТЛ 2500 по даташиту имеет 2500 инкр/ оборот.
Блок выдает 5000 инкр/ оборот. - в два раза больше! Разрешение увеличилось в 2 раза!......

2500 инкр на оборот это число импульсов в каждом канале, итого 5000 имп. каждый импульс имеет передний и задний фронт, значит умножаем на 2 итого 10000 имп/ об.
Не нашел в коде, да сильно и не искал, но думаю что прерывание обрабатывается с процедурой RISING в каждом канале , либо CHANGE в одном.
А для получения 10000 нужно CHANGE в обоих.
Это ни в коем случае не претензия, а просто мои мысли вслух.
Блок отличный , работает хорошо.
Спасибо за ликбез по способам обсчета энкодеров
Удачи.

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

Энкодер Pro

#20

Сообщение Dryundel » 16.09.2021{, 10:19}

MM33 писал(а):
16.09.2021{, 09:16}
2500 инкр на оборот это число импульсов в каждом канале, итого 5000 имп. каждый импульс имеет передний и задний фронт, значит умножаем на 2 итого 10000 имп/ об.
Вы ошибаетесь. ТТЛ 2500 никогда не выдаст Вам 10 000 импульсов. Таких алгоритмов не существует. Ну или по крайней мере они мне не известны. :)

Отправлено спустя 7 минут 18 секунд:
Хотя почему не существует. Можно тупо считать все CHANGE на обоих каналах, но тогда направление вращения определить невозможно. А оно Вам надо?

Ответить

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