Аппаратные энкодеры STM32f103CB 4шт
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Аппаратные энкодеры STM32f103CB 4шт
-----------------------------------------------------------------------------------------------------------------------------------------------------
__ Добавлен ДИР
-----------------------------------------------------------------------------------------------------------------------------------------------------
---Тестовый вариант---
__На три энкодера, на выбор три таймера.
-----------------------------------------------------------------------------------------------------------------------------------------------------
__Все 4 таймера +2 ремапа.
__Выбор подтяжки.
-----------------------------------------------------------------------------------------------------------------------------------------------------
Весь набор в 6 комбинаций.
Один таймер — один энкодер.
На выбранном таймере, на всех четырех каналах, не будет работать ШИМ:
Таймер-1:
Канал 1 (CH1): PA8 - энкодер А
Канал 2 (CH2): PA9 - энкодер В
Канал 3 (CH3): PA10 - можно будет использовать как вх/вых
Канал 4 (CH4): PA11 - можно будет использовать как вх/вых
Таймер-2:
Канал 1 (CH1): PA0 - энкодер А
Канал 2 (CH2): PA1 - энкодер В
Канал 3 (CH3): PA2 - можно будет использовать как вх/вых
Канал 4 (CH4): PA3 - можно будет использовать как вх/вых
Таймер-2: ремап
Канал 1 (CH1): PA15 - энкодер А
Канал 2 (CH2): PB3 - энкодер В
Канал 3 (CH3): PA2 - можно будет использовать как вх/вых
Канал 4 (CH4): PA3 - можно будет использовать как вх/вых
И отключается ДЖЕТЕГ.
Таймер-3:
Канал 1 (CH1): PA6 - энкодер А
Канал 2 (CH2): PA7 - энкодер В
Канал 3 (CH3): PB0 - можно будет использовать как вх/вых
Канал 4 (CH4): PB1 - можно будет использовать как вх/вых
Таймер-3: ремап
Канал 1 (CH1): PB4 - энкодер А
Канал 2 (CH2): PB5 - энкодер В
Канал 3 (CH3): PB0 - можно будет использовать как вх/вых
Канал 4 (CH4): PB1 - можно будет использовать как вх/вых
Таймер-4:
Канал 1 (CH1): PB6 - энкодер А
Канал 2 (CH2): PB7 - энкодер В
Канал 3 (CH3): PB8 - можно будет использовать как вх/вых
Канал 4 (CH4): PB9 - можно будет использовать как вх/вых
Работают в квадратурном режиме измерения. (максимальная точность)
Переход с ...-3,-2,-1,0,1,2,3... происходит без проблем.
На выходе сырые данные, а именно чтение фронтов:
Передний фронт канала A,
Задний фронт канала A,
Передний фронт канала B,
Задний фронт канала B.
Для полный импульс энкодера надо делить на 4.
Буфер по умолчанию имеет диапазон: от -2147483648 до +2147483647.
Энкодеры читаются на аппаратном уровне без нагрузки на ЦПУ и без прерываний.
Вывод данных зависит от всего кода в целом, а именно от длины цикла, на подсчёт импульсов он не влияет.
Встроенный аппаратный фильтр помех и дребезга контактов имеет 3 уровня делителя, плюс у каждого по 16 вариантов доп. фильтров с предделителями, итого 48 комбинаций.
Можно было и на каждый канал сделать, тогда комбинаций фильтров было бы 768.
RESET обнуляет таймер.
Step выход сырых данных, если не кратно 4 то есть помехи либо дребезг контактов. (либо скорость энкодера превышает скорость цыкла)
DIR направление вращения
При использовании ставить фильтр обязательно аппаратный.
Он представляет из себя делитель частоты, то есть у нас есть частота шины таймера: у таймера1 = 72 МГц, у таймера2, 3, 4 = 36 МГц. Выбираем, с каким периодом опрашивать энкодер.
К примеру, по умолчанию таймер 2 (36 МГц) = 1/36 МГц = 28 нс.
Далее выбираем предделитель предыдущей частоты плюс количество шагов на подтверждение импульса, а именно: к примеру, 8 пределитель х8 имп = 36 МГц / 8 = 4 МГц = 1/4 МГц = 250 нс * 8 = 2 мкс. То есть всё, что ниже 2 мкс, будет считаться как 0. Поэтому на высокоскоростных энкодерах слишком много ставить нельзя будут пропуски, но и не использовать тоже нельзя: входы реагируют на всё — включение холодильника или открытие дверки микроволновки...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось lfgjikjjyj 20 дек 2025, 06:19, всего редактировалось 9 раз.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратный энкодер STM32f103CB
После выхода в оси в "ноль" как правило необходимо записать в счетчик положения некое число. Это нужно для того чтобы привязать систему измерения для текущего инструмента к детали. Конечно можно это сваять внешним обвесом, но было бы здорово если бы возможность предустановки была на борту блока
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратный энкодер STM32f103CB
ну это уже скорее затачивание блока под уклон конкретикиMM33 писал(а): 13 дек 2025, 10:51 После выхода в оси в "ноль" как правило необходимо записать в счетчик положения некое число. Это нужно для того чтобы привязать систему измерения для текущего инструмента к детали. Конечно можно это сваять внешним обвесом, но было бы здорово если бы возможность предустановки была на борту блока
я думал эти пойдут как управление меню и прочим что бы несильно утежелять его для простых вещей
а там надо спецыфический блок делать связвать два таймера мастер-слейв ибо некоторые команды они могут посылать внутри себя не дергая кпу и без ожидания цыкла очереди
потестите лучше три таймера
стало немного потормознее гдето на 500-700нс
а там остальное подумаем
Re: Аппаратные энкодеры STM32f103CB 3шт
Протестил все три таймера. FLProg 7.3.8 (9.5.6 даже с отключенным автоформатированием у меня не компилятся) . Положение вывел через KaScada на планшет. Проверил точность на больших дистанциях ( более 1 миллиона отсчетов) и при частых реверсах. Позиция не убегает. С точки зрения пользователя - хорошие блоки. Спасибо.
Использовать такие блоки для меню конечно можно , но расточительно, а учитывая что прерывания вызовутся только при касании ручки энкодера, достаточно использовать программный обработчик, основной программный код от этого не пострадает.
32 Бита нужны для контроля позиции, скорости и ускорения в приложениях использующих перемещения.
Использовать такие блоки для меню конечно можно , но расточительно, а учитывая что прерывания вызовутся только при касании ручки энкодера, достаточно использовать программный обработчик, основной программный код от этого не пострадает.
32 Бита нужны для контроля позиции, скорости и ускорения в приложениях использующих перемещения.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратные энкодеры STM32f103CB 3шт
нет всеравно что то не так
вчера добавил защиту от прерываний скока не тестил но холодильник что старый стоит рядом своим вкл выкл постоянно накидывает ему цыфры рандомно
так не должно быть
пока разбираюсь потом продолжу
может свои напаяю на 2к хотя у меня провода 10см какие там наводки
ваш оптический датчик немного по другому работает у него уже готовые состояния
и для вас скорее всего не нужна подтяжка к плюсу и подключение внутрених резисторов они возможно даже пытаются мешать
у вас там нету случайно старого холодильника рядом поставить и запитать от одной розетки потестить
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Аппаратные энкодеры STM32f103CB 3шт
у вас явные проблемы с ЭМС . Что то на эту тему было на форуме. Если память не изменяет то там использовались RC цепи для борьбы с этим злом.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратные энкодеры STM32f103CB 3шт
Если считывать от щетчика на прямую без програмного расширения то норм вроде как
Значит таймер тут ни причом с энкодером
Тем более я его даже не трогаю стоит в одном положении
Как говорил ошибка может возникнуть когда скорость энкодера превысит цыкл
У вас 2500 на оборот это 10000 щета
Делаете 10 оборотов в сек уже 100000
Да там не совсем 32бит скорее 31 в минус и 31 в плюс
Вероятно конфликты в 9 версии начинаются раз в 7 норм всё
Что бы пошли прыжки рандомные нужно что бы таймер прислал значение на 1 больше чем мой накопитель в переменой
Но таймер то на месте стоит даже попробую вывести значение дополнитено с таймера на пару с програмным
Пока не пойму как мк может менять значение статическое в переменой через холодильник
Попробую удалить завтра всё от флпрога и чистовой код кинуть в уарт
Вариантов поиска много плохо когда их нету
Значит таймер тут ни причом с энкодером
Тем более я его даже не трогаю стоит в одном положении
Как говорил ошибка может возникнуть когда скорость энкодера превысит цыкл
У вас 2500 на оборот это 10000 щета
Делаете 10 оборотов в сек уже 100000
Да там не совсем 32бит скорее 31 в минус и 31 в плюс
Вероятно конфликты в 9 версии начинаются раз в 7 норм всё
Что бы пошли прыжки рандомные нужно что бы таймер прислал значение на 1 больше чем мой накопитель в переменой
Но таймер то на месте стоит даже попробую вывести значение дополнитено с таймера на пару с програмным
Пока не пойму как мк может менять значение статическое в переменой через холодильник
Попробую удалить завтра всё от флпрога и чистовой код кинуть в уарт
Вариантов поиска много плохо когда их нету
- bsn
- Лейтенант
- Сообщения: 425
- Зарегистрирован: 22 июл 2018, 07:24
- Откуда: Новошахтинск
- Имя: Сергей
- Благодарил (а): 256 раз
- Поблагодарили: 34 раза
Re: Аппаратные энкодеры STM32f103CB 3шт
Сталкивался с подобным.lfgjikjjyj писал(а): 15 дек 2025, 12:09 холодильник что старый стоит рядом своим вкл выкл постоянно накидывает ему цыфры рандомно
так не должно быть
Возможно у вас не заземлён корпус холодильника. Я, в своём случае, отбился от помех:
1)После того, как проверил и восстановил заземление всех бытовых приборов в доме;
2)Заземлил, через килоомное сопротивление, точку GND (минус питания) микроконтроллера.
Иногда, уменьшает помехи, простой переворот контактов вилки холодильника в розетке. Возможно это происходит потому, что есть разница, где контакты холодильника рвут индуктивную цепь его мотора - в фазном проводе, или в нулевом.
Без нормального заземления, защитить слаботочные цепи, от мощных помех в силовых цепях, будет весьма проблематично.
Делай как должно, и пусть всё будет как будет.
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратные энкодеры STM32f103CB 3шт
в общем флпрог тут нипричом
вывод чистового выхода с таймера показал что он скачет вместе с виртуальным щётчиком
попытка запустить чистовой код энкодера с дисплеем нерешила проблему
убрал дисплей заменил на уарт тоже не помогло
отключение самого энкодера тоже непомогает
значит дело не в переферии и антенками они не работают с наводками
выходит проблема в стм контролерах вероятно у них очень слабая защита таймера от любого чиха
оказалось что таймер прыгает даже когда поодаль включаю выключаю обычный блок питания на 24в 24вт
на ардуинах такогой проблемы нету но там по другому читает
на ардуино было несколько раз когда все значения в меню там 25 30 ... вдруг становились 4564867874531 8979645646456 и приходилось минут 10 стоять держать кнопку что бы оно отмоталось назад
это я уже потом после этого стал добавлять сброс меню к настройкам по умолчанию
вывод чистового выхода с таймера показал что он скачет вместе с виртуальным щётчиком
попытка запустить чистовой код энкодера с дисплеем нерешила проблему
убрал дисплей заменил на уарт тоже не помогло
отключение самого энкодера тоже непомогает
значит дело не в переферии и антенками они не работают с наводками
выходит проблема в стм контролерах вероятно у них очень слабая защита таймера от любого чиха
оказалось что таймер прыгает даже когда поодаль включаю выключаю обычный блок питания на 24в 24вт
на ардуинах такогой проблемы нету но там по другому читает
на ардуино было несколько раз когда все значения в меню там 25 30 ... вдруг становились 4564867874531 8979645646456 и приходилось минут 10 стоять держать кнопку что бы оно отмоталось назад
это я уже потом после этого стал добавлять сброс меню к настройкам по умолчанию
-
lfgjikjjyj
- Лейтенант
- Сообщения: 402
- Зарегистрирован: 27 мар 2025, 12:13
- Имя: Коля
- Поблагодарили: 134 раза
Re: Аппаратные энкодеры STM32f103CB 4шт
Так и не получилось справиться с помехами через правку кода, вроде бы всё там нормально. В общем, померил осциллографом канал энкодера, и там идёт жуткий всплеск при той же открытии дверки микроволновки в области 10-30 МГц, то есть он не выставляет число рандомно, а успевает посчитать эти помехи, и порой их доходит до 2000 за всплеск. И там не то что плюс-минус, а порой до середины и вниз, либо обратно вверх. То есть триггеры Шмитта там весьма желательны, это их профиль работы.
Помогло лишь выставление аппаратного фильтра. К примеру, помеха от дверки микроволновки лежит в области 1/10 МГц = 100 нс и ниже. Ставлю фильтр просто, без делителей, на 8 имп = 1*8/36 МГц = 222 нс, после чего микроволновка больше не беспокоит, а вот с холодильником надо побольше немного ставить, ну и другие приборы посмотреть.
Короче, STM — это очень далеко не промышленный контроллер, который даже с бытовухой сладить не может. Что ему на производстве делать? Увешать его ферритами и дросселями с конденсаторами?
С аппаратным фильтром проблем пока нет никаких.
По поводу механического энкодера тоже надо подумать: из-за квадросчитываний и отвратительной части изготовления энкодера стабильный круг не всегда получается. Нужно отслеживать аномалии некачественных зазоров.
Ну, а так очень понравился, прерывания с аппаратником даже близко не сравнится.
Ладно, надо подумать, как сделать опрос в лупе по мере необходимости, а не постоянно, ни хочу пихать туда прерывание.
Помогло лишь выставление аппаратного фильтра. К примеру, помеха от дверки микроволновки лежит в области 1/10 МГц = 100 нс и ниже. Ставлю фильтр просто, без делителей, на 8 имп = 1*8/36 МГц = 222 нс, после чего микроволновка больше не беспокоит, а вот с холодильником надо побольше немного ставить, ну и другие приборы посмотреть.
Короче, STM — это очень далеко не промышленный контроллер, который даже с бытовухой сладить не может. Что ему на производстве делать? Увешать его ферритами и дросселями с конденсаторами?
С аппаратным фильтром проблем пока нет никаких.
По поводу механического энкодера тоже надо подумать: из-за квадросчитываний и отвратительной части изготовления энкодера стабильный круг не всегда получается. Нужно отслеживать аномалии некачественных зазоров.
Ну, а так очень понравился, прерывания с аппаратником даже близко не сравнится.
Ладно, надо подумать, как сделать опрос в лупе по мере необходимости, а не постоянно, ни хочу пихать туда прерывание.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей