|
Обработка инкрементального энкодера |
|
|
|
Nov 17 2008, 09:15
|

Местный
  
Группа: Свой
Сообщений: 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--; } Точность ужасная. Погрешность видимо связана с высокочастотным дребезгом вала при завершении шага. Кто что может посоветывать по этому поводу?
--------------------
Если все, то не я...
|
|
|
|
|
 |
Ответов
|
Nov 17 2008, 09:43
|

Познающий...
     
Группа: Свой
Сообщений: 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.
--------------------
Выбор.
|
|
|
|
|
Nov 17 2008, 09:50
|

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

|
Цитата(haker_fox @ Nov 17 2008, 13:43)  Гм, а коим образом происходит расшифровка импульсов с двух каналов? Штука вся в том, что прерывание происходит по нарастающему фронту, а так как имульсы энкодеровые сдвинуты на 90 град, то на ножке PC1 будет 1 или 0 в зав. от направления вращения. Пальцами крутишь работает нормально. Спасибо за схемку попробуем поиграться с триггерами.
--------------------
Если все, то не я...
|
|
|
|
|
Nov 17 2008, 10:14
|

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

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

Местный
  
Группа: Свой
Сообщений: 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К к шине питания?
--------------------
Если все, то не я...
|
|
|
|
|
Nov 18 2008, 08:45
|

Познающий...
     
Группа: Свой
Сообщений: 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К к шине питания? Ну, наверно, это уже "классика", чтобы входы логики не болтались в воздухе
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|