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

Аппаратные энкодеры STM32f103CB 4шт

Добавлено: 12 дек 2025, 10:50
lfgjikjjyj
2025-12-12_144008.png

Энкодер_stm-103CB_v1.0_(Code_-_Professional).ubi
-----------------------------------------------------------------------------------------------------------------------------------------------------
Энкодер_stm-103CB_v1.1_(Code_-_Professional).ubi
__ Добавлен ДИР

-----------------------------------------------------------------------------------------------------------------------------------------------------
Энкодер_stm-103CB_v2.0.ubl
---Тестовый вариант---
__На три энкодера, на выбор три таймера.

-----------------------------------------------------------------------------------------------------------------------------------------------------
Энкодер_stm-103CB_v2.1.ubl
__Все 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. Поэтому на высокоскоростных энкодерах слишком много ставить нельзя будут пропуски, но и не использовать тоже нельзя: входы реагируют на всё — включение холодильника или открытие дверки микроволновки...

Re: Аппаратный энкодер STM32f103CB

Добавлено: 12 дек 2025, 19:07
lfgjikjjyj
есть у кого программный энкодер для стм на библиотеке ?

Re: Аппаратный энкодер STM32f103CB

Добавлено: 13 дек 2025, 10:51
MM33
После выхода в оси в "ноль" как правило необходимо записать в счетчик положения некое число. Это нужно для того чтобы привязать систему измерения для текущего инструмента к детали. Конечно можно это сваять внешним обвесом, но было бы здорово если бы возможность предустановки была на борту блока

Re: Аппаратный энкодер STM32f103CB

Добавлено: 14 дек 2025, 09:49
lfgjikjjyj
MM33 писал(а): 13 дек 2025, 10:51 После выхода в оси в "ноль" как правило необходимо записать в счетчик положения некое число. Это нужно для того чтобы привязать систему измерения для текущего инструмента к детали. Конечно можно это сваять внешним обвесом, но было бы здорово если бы возможность предустановки была на борту блока
ну это уже скорее затачивание блока под уклон конкретики
я думал эти пойдут как управление меню и прочим что бы несильно утежелять его для простых вещей

а там надо спецыфический блок делать связвать два таймера мастер-слейв ибо некоторые команды они могут посылать внутри себя не дергая кпу и без ожидания цыкла очереди

потестите лучше три таймера
стало немного потормознее гдето на 500-700нс
а там остальное подумаем

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 15 дек 2025, 10:57
MM33
Протестил все три таймера. FLProg 7.3.8 (9.5.6 даже с отключенным автоформатированием у меня не компилятся) . Положение вывел через KaScada на планшет. Проверил точность на больших дистанциях ( более 1 миллиона отсчетов) и при частых реверсах. Позиция не убегает. С точки зрения пользователя - хорошие блоки. Спасибо.
Использовать такие блоки для меню конечно можно , но расточительно, а учитывая что прерывания вызовутся только при касании ручки энкодера, достаточно использовать программный обработчик, основной программный код от этого не пострадает.
32 Бита нужны для контроля позиции, скорости и ускорения в приложениях использующих перемещения.

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 15 дек 2025, 12:09
lfgjikjjyj
2025-12-15_155637.png

нет всеравно что то не так
вчера добавил защиту от прерываний скока не тестил но холодильник что старый стоит рядом своим вкл выкл постоянно накидывает ему цыфры рандомно
так не должно быть
пока разбираюсь потом продолжу
может свои напаяю на 2к хотя у меня провода 10см какие там наводки

ваш оптический датчик немного по другому работает у него уже готовые состояния
и для вас скорее всего не нужна подтяжка к плюсу и подключение внутрених резисторов они возможно даже пытаются мешать
у вас там нету случайно старого холодильника рядом поставить и запитать от одной розетки потестить

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 15 дек 2025, 12:31
MM33
у вас явные проблемы с ЭМС . Что то на эту тему было на форуме. Если память не изменяет то там использовались RC цепи для борьбы с этим злом.

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 15 дек 2025, 16:34
lfgjikjjyj
Если считывать от щетчика на прямую без програмного расширения то норм вроде как

Значит таймер тут ни причом с энкодером
Тем более я его даже не трогаю стоит в одном положении
Как говорил ошибка может возникнуть когда скорость энкодера превысит цыкл
У вас 2500 на оборот это 10000 щета
Делаете 10 оборотов в сек уже 100000
Да там не совсем 32бит скорее 31 в минус и 31 в плюс

Вероятно конфликты в 9 версии начинаются раз в 7 норм всё
Что бы пошли прыжки рандомные нужно что бы таймер прислал значение на 1 больше чем мой накопитель в переменой
Но таймер то на месте стоит даже попробую вывести значение дополнитено с таймера на пару с програмным
Пока не пойму как мк может менять значение статическое в переменой через холодильник
Попробую удалить завтра всё от флпрога и чистовой код кинуть в уарт
Вариантов поиска много плохо когда их нету

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 16 дек 2025, 04:44
bsn
lfgjikjjyj писал(а): 15 дек 2025, 12:09 холодильник что старый стоит рядом своим вкл выкл постоянно накидывает ему цыфры рандомно
так не должно быть
Сталкивался с подобным.
Возможно у вас не заземлён корпус холодильника. Я, в своём случае, отбился от помех:
1)После того, как проверил и восстановил заземление всех бытовых приборов в доме;
2)Заземлил, через килоомное сопротивление, точку GND (минус питания) микроконтроллера.
Иногда, уменьшает помехи, простой переворот контактов вилки холодильника в розетке. Возможно это происходит потому, что есть разница, где контакты холодильника рвут индуктивную цепь его мотора - в фазном проводе, или в нулевом.
Без нормального заземления, защитить слаботочные цепи, от мощных помех в силовых цепях, будет весьма проблематично.

Re: Аппаратные энкодеры STM32f103CB 3шт

Добавлено: 16 дек 2025, 06:49
lfgjikjjyj
в общем флпрог тут нипричом
вывод чистового выхода с таймера показал что он скачет вместе с виртуальным щётчиком

попытка запустить чистовой код энкодера с дисплеем нерешила проблему
убрал дисплей заменил на уарт тоже не помогло
отключение самого энкодера тоже непомогает
значит дело не в переферии и антенками они не работают с наводками

выходит проблема в стм контролерах вероятно у них очень слабая защита таймера от любого чиха
оказалось что таймер прыгает даже когда поодаль включаю выключаю обычный блок питания на 24в 24вт

на ардуинах такогой проблемы нету но там по другому читает
на ардуино было несколько раз когда все значения в меню там 25 30 ... вдруг становились 4564867874531 8979645646456 и приходилось минут 10 стоять держать кнопку что бы оно отмоталось назад
это я уже потом после этого стал добавлять сброс меню к настройкам по умолчанию

Re: Аппаратные энкодеры STM32f103CB 4шт

Добавлено: 19 дек 2025, 16:06
lfgjikjjyj
Так и не получилось справиться с помехами через правку кода, вроде бы всё там нормально. В общем, померил осциллографом канал энкодера, и там идёт жуткий всплеск при той же открытии дверки микроволновки в области 10-30 МГц, то есть он не выставляет число рандомно, а успевает посчитать эти помехи, и порой их доходит до 2000 за всплеск. И там не то что плюс-минус, а порой до середины и вниз, либо обратно вверх. То есть триггеры Шмитта там весьма желательны, это их профиль работы.

Помогло лишь выставление аппаратного фильтра. К примеру, помеха от дверки микроволновки лежит в области 1/10 МГц = 100 нс и ниже. Ставлю фильтр просто, без делителей, на 8 имп = 1*8/36 МГц = 222 нс, после чего микроволновка больше не беспокоит, а вот с холодильником надо побольше немного ставить, ну и другие приборы посмотреть.

Короче, STM — это очень далеко не промышленный контроллер, который даже с бытовухой сладить не может. Что ему на производстве делать? Увешать его ферритами и дросселями с конденсаторами?
С аппаратным фильтром проблем пока нет никаких.

По поводу механического энкодера тоже надо подумать: из-за квадросчитываний и отвратительной части изготовления энкодера стабильный круг не всегда получается. Нужно отслеживать аномалии некачественных зазоров.

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

Ладно, надо подумать, как сделать опрос в лупе по мере необходимости, а не постоянно, ни хочу пихать туда прерывание.