реклама на сайте
подробности

 
 
> A/B энкодер.
Jenya7
сообщение Feb 3 2016, 14:44
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



раньше у меня энкодер сидел на пине с внешним прерыванием. вобщем то довольно удобно.
Код
if (motror_dir == UP)
  position++;
if (motror_dir == DOWN)
position--;

ну и потом проверяем где мы
Код
if (position >= TOP_POS)
    Print(“Top position!”);

сейчас я решил считать аппаратно. скажем я посажу вход энкодера на пин таймера пусть считает за меня.
вопрос как лучше сделать. если взять STM32F1 то у него есть пин TIMx_ETR по моему довольно удобный по функционалу. а битом DIR можно менять направление счета +/-. или есть какие нибудь другие способы?
да и еще, чтоб избежать недоразумений - схемотехнически все решено – A/B декодирование и определение направления – XOR + D-FF.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
AlexandrY
сообщение Feb 3 2016, 15:08
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Jenya7 @ Feb 3 2016, 16:44) *
или есть какие нибудь другие способы?
да и еще, чтоб избежать недоразумений - схемотехнически все решено – A/B декодирование и определение направления – XOR + D-FF.


Да, вот новейший чип от NXP имеет аж два аппаратных декодера A/B
Никаких вычислений не надо делать.
Прикрепленное изображение

Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 3 2016, 15:15
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



то что доктор прописал. но не хочется пересаживаться на NXP. все таки есть наработки на STM.

Сообщение отредактировал Herz - Feb 3 2016, 21:47
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 3 2016, 15:26
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Feb 3 2016, 18:15) *
то что доктор прописал. но не хочется пересаживаться на NXP. все таки есть наработки на STM.

И не надо - у STM в таймере есть специальный режим для энкодера.
Подключаете A и B ко входам таймера без всяких XOR и триггеров, а он сам следит за порядком изменения фаз.
Счетчик импульсов бедет в CNT. Читать про регистр SMCR, если нужны подробности.

Полагаю, что xor+d-ff могут неплохо работать при больших перемещениях в одном направлении,
но дребезжание, например, фазы A туда-сюда при постоянном уровне на фазе B будет приводить
к ложным счетным импульсам. Или я чего-то не понимаю? Можно схему?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 3 2016, 15:28
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



спасибо. посмотрю. схема не со мной. ближе к вечеру выложу.

воссоздал. R-C цепочки ставим по вкусу.

Сообщение отредактировал Herz - Feb 3 2016, 21:47
Причина редактирования: Избыточное цитирование

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 4 2016, 07:39
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



вот не дожали ребята из ST. могли бы сделать TIMx_CH1/ TIMx_CH2 – encoder1, TIMx_CH3/ TIMx_CH4 – encoder2. а так для двух енкодеров нужно два таймера. я вот только не понимаю - если на CH1/CH2 сидит енкодер то CH3/CH4 можно использовать для PWM?
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 4 2016, 10:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Feb 4 2016, 10:39) *
вот не дожали ребята из ST. могли бы сделать TIMx_CH1/ TIMx_CH2 – encoder1, TIMx_CH3/ TIMx_CH4 – encoder2. а так для двух енкодеров нужно два таймера. я вот только не понимаю - если на CH1/CH2 сидит енкодер то CH3/CH4 можно использовать для PWM?

Конечно, нет. Ибо, CNT на всех один. И в режиме энкодера он будет считать фазы, а не делить тактовую частоту.

PS. Вам как знатоку STM32 должно быть известно, что ребята из STM дожали и пережали: есть модельки с десятком таймеров, так что "фи" не принимается.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 4 2016, 11:16
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(adnega @ Feb 4 2016, 15:36) *
Конечно, нет. Ибо, CNT на всех один. И в режиме энкодера он будет считать фазы, а не делить тактовую частоту.

PS. Вам как знатоку STM32 должно быть известно, что ребята из STM дожали и пережали: есть модельки с десятком таймеров, так что "фи" не принимается.

CNT один но CCR четыре. sm.gif

проблема то в чем. таймеров то много. ну занял я CH1/CH2 а с CH3/CH4 что делать.

Сообщение отредактировал Jenya7 - Feb 4 2016, 11:20
Go to the top of the page
 
+Quote Post
adnega
сообщение Feb 4 2016, 11:48
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Jenya7 @ Feb 4 2016, 14:16) *
CNT один но CCR четыре. sm.gif

Вам показать таймеры, у которых 1 или 2 CCR ?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th August 2025 - 03:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016