Аппаратные энкодеры STM32f103CB 4шт
Добавлено: 12 дек 2025, 10:50
-----------------------------------------------------------------------------------------------------------------------------------------------------
__ Добавлен ДИР
-----------------------------------------------------------------------------------------------------------------------------------------------------
---Тестовый вариант---
__На три энкодера, на выбор три таймера.
-----------------------------------------------------------------------------------------------------------------------------------------------------
__Все 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. Поэтому на высокоскоростных энкодерах слишком много ставить нельзя будут пропуски, но и не использовать тоже нельзя: входы реагируют на всё — включение холодильника или открытие дверки микроволновки...