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

 
 
> Обработка инкрементального энкодера
PhX
сообщение Nov 17 2008, 09:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Мат. часть: Вал шагового двигателя соединен с оптическим инкрементальным энкодером посредством эластичной трубки. Двигатель работает на холостом ходусо скоростью 2 об/мин.
Энкодер обрабатывается atmegoй следующим образом:
Сигнал с канала A вызывает прерывание INT1. В зависимости от сигнала на ножке PC1 инкрементируется или декрементируется переменная pulses
Код
/* Внешнее прерывание INT1 (счетчик импульсов энкодера) */
// На вход INT1 приходят импульсы от выхода A энкодера
// На вход PC1 приходят импульсы от выхода B энкодера
ISR(INT1_vect)
{
  if (PINC & 0x02) pulses++; else pulses--;
}

Точность ужасная. Погрешность видимо связана с высокочастотным дребезгом вала при завершении шага. Кто что может посоветывать по этому поводу?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Nov 17 2008, 09:43
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 17 2008, 17:15) *
Мат. часть: Вал шагового двигателя соединен с оптическим инкрементальным энкодером посредством эластичной трубки. Двигатель работает на холостом ходусо скоростью 2 об/мин.
Энкодер обрабатывается atmegoй следующим образом:
Сигнал с канала A вызывает прерывание INT1. В зависимости от сигнала на ножке PC1 инкрементируется или декрементируется переменная pulses
Код
/* Внешнее прерывание INT1 (счетчик импульсов энкодера) */
// На вход INT1 приходят импульсы от выхода A энкодера
// На вход PC1 приходят импульсы от выхода B энкодера
ISR(INT1_vect)
{
  if (PINC & 0x02) pulses++; else pulses--;
}

Точность ужасная. Погрешность видимо связана с высокочастотным дребезгом вала при завершении шага. Кто что может посоветывать по этому поводу?

Гм, а коим образом происходит расшифровка импульсов с двух каналов? Что-то программный код очень простой. Сигналы с каналов A и B сдвинуты на 90 градусов друг относительно друга. И нужно реагировать на изменения состояния в любой фазе! Т.е. прерываний только от канала A недостаточно. Могу порекомендовать схематехническое решение в этом посту (№99). Но все равно нужно два прерывания (или два таймера), зато вся обработка сведется к действительно инкременту/декременту переменной pulses.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 17 2008, 09:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(haker_fox @ Nov 17 2008, 13:43) *
Гм, а коим образом происходит расшифровка импульсов с двух каналов?

Штука вся в том, что прерывание происходит по нарастающему фронту, а так как имульсы энкодеровые сдвинуты на 90 град, то на ножке PC1 будет 1 или 0 в зав. от направления вращения. Пальцами крутишь работает нормально.
Спасибо за схемку попробуем поиграться с триггерами.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 17 2008, 10:08
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 17 2008, 17:50) *
Штука вся в том, что прерывание происходит по нарастающему фронту, а так как имульсы энкодеровые сдвинуты на 90 град, то на ножке PC1 будет 1 или 0 в зав. от направления вращения. Пальцами крутишь работает нормально.
Спасибо за схемку попробуем поиграться с триггерами.

ну направление отследить да, можно. Но как померить координату, что-то не могу сообразить. При обработке только одной фазы, не выходит( Может быть плохо соображаю? sad.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 17 2008, 10:14
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(haker_fox @ Nov 17 2008, 14:08) *
ну направление отследить да, можно. Но как померить координату, что-то не могу сообразить. При обработке только одной фазы, не выходит( Может быть плохо соображаю? sad.gif

Да почему одной-то??? прерывания по наростающему фронту с канала А.
На ножку PC1 приходят импульсы с канала B.
Энкодер один выводов у него 4:
1 +5
2 А
3 В
4 GND


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 18 2008, 03:27
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 17 2008, 18:14) *
Да почему одной-то??? прерывания по наростающему фронту с канала А.
На ножку PC1 приходят импульсы с канала B.
Энкодер один выводов у него 4:
1 +5
2 А
3 В
4 GND

Все понял! Спасибо за объяснение! Просто я хотел сказать, что мы не заметим промежуточных состояний энкодера: например, энкодер с 45 "лепестками" на диске, даст 45 импульсов на один оборот вала, а если отслеживать все изменения (изменение в каждой фазе), то получим 4 * 45 = 180 имп/оборот вала. Вот об этих "дополнительных" импульсах речь и шла.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 18 2008, 04:05
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Цитата(haker_fox @ Nov 18 2008, 07:27) *
Все понял! Спасибо за объяснение! Просто я хотел сказать, что мы не заметим промежуточных состояний энкодера: например, энкодер с 45 "лепестками" на диске, даст 45 импульсов на один оборот вала, а если отслеживать все изменения (изменение в каждой фазе), то получим 4 * 45 = 180 имп/оборот вала. Вот об этих "дополнительных" импульсах речь и шла.

Ну для данной задачи мне импульсов энкодера хватит вполне. А вообще в следующий раз буду выбирать МК с соответствующей переферией на борту.

p.s. Да, haker_fox, ваша схема также дает разрешение 1x. А зачем подтяжки 2.7К к шине питания?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 18 2008, 08:45
Сообщение #8


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PhX @ Nov 18 2008, 12:05) *
p.s. Да, haker_fox, ваша схема также дает разрешение 1x.

Да, это так. Но на МК поступает частота в 4 раза меньшая, чем мы снимаем с любой фазы энкодера. В моем случае это было довольно существенно.
Цитата(PhX @ Nov 18 2008, 12:05) *
А зачем подтяжки 2.7К к шине питания?

Ну, наверно, это уже "классика", чтобы входы логики не болтались в воздухе smile.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- PhX   Обработка инкрементального энкодера   Nov 17 2008, 09:15
||- - evgeny_ch   Цитата(PhX @ Nov 18 2008, 08:05) Ну для д...   Nov 18 2008, 04:22
|||- - PhX   Цитата(evgeny_ch @ Nov 18 2008, 08:22) Ес...   Nov 18 2008, 04:31
||||- - evgeny_ch   Цитата(PhX @ Nov 18 2008, 08:31) Евгений,...   Nov 18 2008, 04:52
|||- - dxp   Цитата(evgeny_ch @ Nov 18 2008, 10:22) Ес...   Nov 18 2008, 05:11
|||- - dpss   Цитата(dxp @ Nov 18 2008, 08:11) Только (...   Nov 18 2008, 17:04
|||- - haker_fox   Цитата(dpss @ Nov 19 2008, 01:04) у таких...   Nov 19 2008, 03:22
|||- - dpss   Цитата(haker_fox @ Nov 19 2008, 06:22) ИМ...   Nov 19 2008, 18:12
|||- - haker_fox   Цитата(dpss @ Nov 20 2008, 02:12) Посмотр...   Nov 20 2008, 02:45
|||- - PhX   Цитата(haker_fox @ Nov 20 2008, 06:45) По...   Nov 20 2008, 04:09
|||- - haker_fox   Цитата(PhX @ Nov 20 2008, 12:09) Я знаю ч...   Nov 20 2008, 07:03
|- - Adviser   Цитата(PhX @ Nov 17 2008, 12:50) Спасибо ...   Nov 17 2008, 11:01
- - _Pasha   Цитата(PhX @ Nov 17 2008, 13:15) Точность...   Nov 17 2008, 11:22
|- - PhX   Цитата(_Pasha @ Nov 17 2008, 15:22) Вы то...   Nov 17 2008, 11:34
- - evgeny_ch   Цитата(PhX @ Nov 17 2008, 13:15) Мат. час...   Nov 17 2008, 11:40
|- - PhX   Цитата(evgeny_ch @ Nov 17 2008, 15:40) Уж...   Nov 17 2008, 11:56
|- - evgeny_ch   Цитата(PhX @ Nov 17 2008, 15:56) Абсолютн...   Nov 17 2008, 12:57
- - Vokchap   Обработку на логике ИМХО сделать удобнее всего, ес...   Nov 17 2008, 11:59
|- - PhX   Цитата(Vokchap @ Nov 17 2008, 15:59) Обра...   Nov 17 2008, 12:51
|- - Vokchap   Цитата(PhX @ Nov 17 2008, 15:51) Что-то с...   Nov 17 2008, 13:04
- - Alex11   Вот еще вариант программной реализации. Код вызыва...   Nov 18 2008, 11:10
- - evgeny_ch   ЦитатаAny sin/cos-encoder, with analog output sign...   Nov 19 2008, 04:03
- - PhX   Добавление НЧ фильтра не помогло. Хотя прямоугольн...   Nov 19 2008, 04:11
- - MaslovVG   Цитата(PhX @ Nov 17 2008, 12:15) Мат. час...   Nov 19 2008, 08:18
|- - PhX   Цитата(MaslovVG @ Nov 19 2008, 12:18) У в...   Nov 19 2008, 09:05
|- - haker_fox   Цитата(PhX @ Nov 19 2008, 17:05) Вот СПАС...   Nov 19 2008, 09:13
|- - PhX   Цитата(haker_fox @ Nov 19 2008, 13:13) Да...   Nov 19 2008, 09:49
- - arisov   При изготовлении своего варианта сервоконтроллера ...   Feb 7 2009, 13:00
|- - haker_fox   Цитата(arisov @ Feb 7 2009, 21:00) При из...   Feb 7 2009, 17:24
- - blackfin   Может, уже была ссылка на обсуждение, но все же: ....   Feb 7 2009, 13:35
|- - arisov   Итогов пока я там не заметил, но может плохо искал...   Feb 7 2009, 13:55
- - _Pasha   Вопрос с подвохом : а всегда ли сигналы с энкодер...   Feb 8 2009, 12:23
- - arisov   Цитата(haker_fox @ Feb 7 2009, 20:24) Ваш...   Feb 8 2009, 20:50
|- - _Pasha   Цитата(arisov @ Feb 9 2009, 00:50) Если В...   Feb 9 2009, 11:11
- - arisov   Спасибо, про ферриты как то подзабыл, хотя своё вр...   Feb 9 2009, 11:33
|- - _Pasha   Цитата(arisov @ Feb 9 2009, 14:33) Надо ...   Feb 9 2009, 11:41
- - arisov   Да я видел такие схемы на SN75115N, например. Толь...   Feb 9 2009, 11:49


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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 07:14
Рейтинг@Mail.ru


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