|
MEGA+энкодер |
|
|
|
 |
Ответов
|
Sep 19 2006, 08:52
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 8-06-06
Пользователь №: 17 866

|
Цитата(vetbaston @ Sep 19 2006, 10:17)  Есть MEGA64 и инкрементальный энкодер PEC12-4220F , кто работал с энкодером посоветуйте , как правильно обстучать его?  здесь кусок обслуживающий кодер, кнопку сам допишешь. Полностью согласен с Леонидом Ивановичем, поэтому функцию вызываю из основной программы примерно раз в 20мСек, избавляюсь от дребезга и слишком быстрого вращения define PIN_Coder PIND//PD0,PD1 char status,encoder = 0; //----------------------------------------------------------------------------------- signed char ReadEncoder(void) { register signed char temp = 0; encoder = (~PIN_Coder & 0x03);//ïðîâåðÿåì PD0,PD1 if(status != encoder) { switch(encoder) { case 0: if(status == 1) temp = 1; else if(status == 2) temp = -1; break; case 1: if(status == 3) temp = 1; else if(status == 0) temp = -1; break; case 2: if(status == 0) temp = 1; else if(status == 3) temp = -1; break; case 3: if(status == 2)temp = 1; else if(status == 1) temp = -1; break; } status = encoder; } return temp; } //-----------------------------------------------------------------------------------
|
|
|
|
|
Sep 14 2007, 11:50
|
Местный
  
Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101

|
Цитата(psw @ Sep 19 2006, 12:52)  здесь кусок обслуживающий кодер, кнопку сам допишешь. Полностью согласен с Леонидом Ивановичем ..... Вот здесь, в самом начале обсуждения, и был приведён правильный алгоритм, и соображения начёт скорости опроса. Сам я категорически не люблю программных задержек и фильтрации дребезга по времени. Сегодня дребезг один, затра другой. Сегодня енкодер - ручка пользователя о 16 позициях, завтра - мышка какая-нибудь быстробегающая... Поэтому. Если рассмотреть все фазы енкодера (00 01 10 11) то видно, что последовательность фаз в одну сторону 01320132... в другую 10231023.... Другие переходы (0132-3-2-3-20) есть дребезг. Т.е. нужен fifo на 3 двухбитных числа (1 байт/регистр) и анализ его 64 состояний (всего 2 значимые - шаг влево и шаг вправо). А уже как отслеживать - по прерыванию, поллингом - это каждый сам порешает.
|
|
|
|
|
Sep 14 2007, 15:17
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 17-01-06
Пользователь №: 13 277

|
Цитата(Maik-vs @ Sep 14 2007, 17:50)  Вот здесь, в самом начале обсуждения, и был приведён правильный алгоритм, и соображения начёт скорости опроса. Сам я категорически не люблю программных задержек и фильтрации дребезга по времени. Сегодня дребезг один, затра другой. Сегодня енкодер - ручка пользователя о 16 позициях, завтра - мышка какая-нибудь быстробегающая... Поэтому. Если рассмотреть все фазы енкодера (00 01 10 11) то видно, что последовательность фаз в одну сторону 01320132... в другую 10231023.... Другие переходы (0132-3-2-3-20) есть дребезг. Т.е. нужен fifo на 3 двухбитных числа (1 байт/регистр) и анализ его 64 состояний (всего 2 значимые - шаг влево и шаг вправо). А уже как отслеживать - по прерыванию, поллингом - это каждый сам порешает. Да. Без сомнений, кусок тот самый. Ни в каких модификациях не нуждается. Помнить больше 4 бит смысла нет. Из них только 2 бита во время пребывания снаружи этого кода. Переходы 3-2-3-2-3-2 отлавливаются по 4м битам. Со счётчиком будет происходить +1,-1,+1,-1,+1,-1 - что на конечный результат отрицательно не скажется. Прошу прощения, если кого-то ввёл в заблуждение... Тема исчерпана...
|
|
|
|
|
May 16 2008, 17:29
|
Гуру
     
Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613

|
Цитата(qqqqqq @ Sep 14 2007, 19:17)  Да. Без сомнений, кусок тот самый. Ни в каких модификациях не нуждается. Помнить больше 4 бит смысла нет. Из них только 2 бита во время пребывания снаружи этого кода. Переходы 3-2-3-2-3-2 отлавливаются по 4м битам. Со счётчиком будет происходить +1,-1,+1,-1,+1,-1 - что на конечный результат отрицательно не скажется. Прошу прощения, если кого-то ввёл в заблуждение... Тема исчерпана... Пробую использовать энкодер PEC16 BOURNS. Предварительно заготовленный код не пошел. Решил попробовать упоминаемый код, сбоит. Снял несколько осциллограм. Это с установленными RC цепочками. Без них иголки полноразмерные. Попробую использовать прерывания, с многократным считыванием в течении 5 мсек для принятия решения о состоянии уровня. Благо, на 4 энкодера и кнопки целая Мега88.
Эскизы прикрепленных изображений
|
|
|
|
|
May 18 2008, 10:52
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(777777 @ May 17 2008, 18:19)  Ну вы даете! Я успешно обрабатываю с помощью ATtiny13 программой из 100 байт. Правда, не покупной энкодер (долгий поиск выявил, что все они - полное говно), Вот так прямо и все ? Что-то не замечал... Видел разок истирание пары позиций в валкодере трансивера от Yaesu, а так - работают годами, без проблем. В некоторых готовых изделиях - бывает пропуск или забывчивость, но совершенно однозначно чисто программная проблема. Тоже, видимо, кто-то посчитал, что раз энкодеры г..., то и утруждать себя правильной обработкой не стоит. А вот если головой подумать (или хоть начало топика прочитать, где как раз все разжевано) - то все получится просто, надежно, и будет работать много лет. Цитата а оптрон TCUT1300. А нахрена ? Еще и оптическую часть городить, юстировать... Оптическая мышь стоит от сотни рублей, вытаскивается сенсор с подсветкой - и вот все готово. Бонусом еще и отдельный оптический кодер на колесико. С трещеткой. Цитата Так он еще и не оптический?! Выкинуть на помойку немедленно! Разрешите выполнять ?! Вот сейчас прямо бегом все помчались... А кто будет делать трещетку, кнопку на шток ? Кто обеспечит микропотребление ? Предложите что-то оптическое в ту же цену, что изделия от Boirns или ALPS ? Нет ? Тогда, может быть, стоит поумерить категоричность ? Цитата А я еще удивляюсь, какой у энкодера может быть дребезг... А еще дребезг бывает у кнопок, переключателей и реле. Если драйвер руки.sys настроен правильно - не мешает.
|
|
|
|
Сообщений в этой теме
vetbaston MEGA+энкодер Sep 19 2006, 05:17 XsanyaX Один из сигналов (А или В ) я заводил на внешнее ... Sep 19 2006, 07:47 Леонид Иванович Обработка энкодера по прерываниям неудобна, так ка... Sep 19 2006, 08:25  Kovrov Цитата(Леонид Иванович @ Sep 19 2006, 12... Sep 21 2006, 07:18   Леонид Иванович А какой физический смысл несет переменная "чу... Sep 21 2006, 09:07    Kovrov Цитата(Леонид Иванович @ Sep 21 2006, 13... Sep 21 2006, 15:46   Shurmas Цитата(Kovrov @ Sep 21 2006, 11:18) пробл... Sep 21 2006, 09:17     gte Ну так порекомендуйте ортронный по сносной цене. May 17 2008, 19:45     _Pasha Цитата(777777 @ May 17 2008, 17:19) Так о... May 18 2008, 06:17      777777 Цитата(rx3apf @ May 18 2008, 14:52) Видел... May 18 2008, 17:04       rx3apf Цитата(777777 @ May 18 2008, 21:04) И что... May 18 2008, 18:03        777777 Цитата(rx3apf @ May 18 2008, 22:03) Основ... May 19 2008, 09:09         rx3apf Цитата(777777 @ May 19 2008, 13:09) Так в... May 19 2008, 18:51          777777 Цитата(rx3apf @ May 19 2008, 22:51) Но ес... May 20 2008, 07:27           gte Цитата(777777 @ May 20 2008, 11:27) Ты пр... May 20 2008, 09:06 vetbaston Спасибо всем! Буду пробовать! Sep 19 2006, 11:12 Nikola Kirov Не невозможно сделат на 2 перервания.
Вот я делал.... Sep 19 2006, 11:16 Shurmas советую апноут микрочип AN696 - там схемотехника и... Sep 19 2006, 11:37 xemul Для устранения дребезга по нескольким входам с оди... Sep 21 2006, 09:42 Vladimir_T Еще есть такое решение:
По тику таймерного прерыва... Sep 21 2006, 11:31 Леонид Иванович Если частота опроса 20 Гц, то получится страшно то... Sep 21 2006, 12:09  Vladimir_T Цитата(Леонид Иванович @ Sep 21 2006, 15... Sep 22 2006, 04:48   qqqqqq Цитата(Vladimir_T @ Sep 22 2006, 10:48) Э... Sep 13 2007, 12:08  sitafern Цитата(Леонид Иванович @ Sep 21 2006, 15... May 18 2008, 11:23   Леонид Иванович Цитата(sitafern @ May 18 2008, 14:23) Про... May 20 2008, 09:03 Kovrov Цитата(Vladimir_T @ Sep 21 2006, 15:31) Е... Sep 22 2006, 07:10  Леонид Иванович С чувствительностью энкодера понятно. Я обычно дел... Sep 22 2006, 08:30   Kovrov Цитата(Леонид Иванович @ Sep 22 2006, 12... Sep 22 2006, 11:57    Леонид Иванович Цитата(Kovrov @ Sep 22 2006, 14:57) Могу ... Sep 22 2006, 21:23     Kovrov конечно же спорить не о чем, да мы и не спорим - о... Sep 23 2006, 04:00      Stas633 Хочу поделиться результатами опытов с энкодером...... Nov 6 2006, 12:20 _artem_ Наверно загадочность заключается в том что :
- при... Sep 21 2006, 17:34 _artem_ Если нужно несколько таймеров а возиться неохота ... Sep 22 2006, 09:25 Kovrov 0.15 это очень много...
попробуйте использовать ин... Nov 7 2006, 07:13 676038 Перечитал эту ветку и хочу предложить свой алгорит... Dec 6 2006, 13:28 wired Цитата(676038 @ Dec 6 2006, 16:28) Перечи... Jun 17 2008, 11:06  676038 Цитата(wired @ Jun 17 2008, 17:06) взял з... Jun 17 2008, 13:45   wired Цитата(676038 @ Jun 17 2008, 16:45) Я счи... Jun 17 2008, 14:11  Палыч Цитата(wired @ Jun 17 2008, 14:06) взял з... Jun 17 2008, 14:51   wired Цитата(Палыч @ Jun 17 2008, 17:51) Достал... Jun 17 2008, 15:01    676038 Цитата(wired @ Jun 17 2008, 21:01) но на ... Jun 17 2008, 15:09     676038 Цитата(676038 @ Jun 17 2008, 21:09) Добав... Jun 17 2008, 15:12      Палыч Цитата(676038 @ Jun 17 2008, 18:12) Может... Jun 17 2008, 15:32    Палыч Цитата(wired @ Jun 17 2008, 18:01) но на ... Jun 17 2008, 15:09     wired Цитата(Палыч @ Jun 17 2008, 18:09) Чего и... Jun 18 2008, 07:54 Kovrov ничего не упустилию
просто процессор лишний раз па... Dec 6 2006, 19:58 aforestman Посмотрите на "хвостатый экодер". Может ... Dec 8 2006, 13:39 OlegIvanov Нарисуйте на бумажке работу энкодера и сгенерируйт... Dec 13 2006, 05:15 _Pasha Ниасилил выделенный участок осциллограммы. Что это... May 17 2008, 05:04 gte Вероятнее всего моя рука дрогнула. Т.е. в этом мес... May 17 2008, 06:34  _Pasha Цитата(gte @ May 17 2008, 09:34) На один ... May 17 2008, 07:21 gte Смотрел на одном. Но исходя из вида плоскости конт... May 17 2008, 07:51 gte Ради справедливости. Оптические есть с фиксацией и... May 19 2008, 05:15 676038 В своем последнем варианте - по изменению состояни... Jun 17 2008, 15:48 Maik-vs Цитата(676038 @ Jun 17 2008, 19:48) Прост... Jun 18 2008, 09:41  wired Цитата(Maik-vs @ Jun 18 2008, 12:41)... Jun 18 2008, 11:36   Maik-vs Цитата(wired @ Jun 18 2008, 15:36) какое ... Jun 18 2008, 14:33    wired Цитата(Maik-vs @ Jun 18 2008, 17:33)... Jun 18 2008, 15:01    wired Цитата(Maik-vs @ Jun 18 2008, 17:33)... Jun 23 2008, 06:39     Maik-vs Цитата(wired @ Jun 23 2008, 10:39) я прав... Jun 26 2008, 12:46      wired Цитата(Maik-vs @ Jun 26 2008, 15:46)... Jun 26 2008, 14:48 Палыч Цитата(676038 @ Jun 17 2008, 18:48) Прост... Jun 18 2008, 12:47  gte Цитата(Палыч @ Jun 18 2008, 16:47) грамоз... Jun 18 2008, 12:58   Палыч Цитата(gte @ Jun 18 2008, 15:58) При испо... Jun 18 2008, 13:10 gte Именно такой. Я смотрел анализатором переключая по... Jun 18 2008, 13:19 Палыч Посмотрел DS. В нём есть рисунок "Quadrature ... Jun 18 2008, 14:25  gte Цитата(Палыч @ Jun 18 2008, 18:25) Посмот... Jun 18 2008, 15:14 ozzy Цитата(wired @ Jun 18 2008, 14:36) ...
и... Jun 20 2008, 20:37 haker_fox Использую датчики от мышки для управления двигател... Jun 24 2008, 03:33 tremor Читать всю тему влом, поэтому просто приведу свой ... Jun 24 2008, 18:08 haker_fox Цитата(tremor @ Jun 25 2008, 03:08) PEC16... Jun 25 2008, 01:44 tremor ЦитатаТолько вряд ли он выдержит вращения на высок... Jun 25 2008, 01:54 haker_fox Цитата(tremor @ Jun 25 2008, 10:54) В ДШ ... Jun 25 2008, 04:27 sansnotfor мой вариант. энкодер опрашиваю в прерывании таймер... Nov 12 2008, 09:51 Genadi Zawidowski Ух ты... А тема ещй жива... Попробую предложиьть и... Nov 13 2008, 16:41 Andrew O. Shadoura Добавлю немного в копилку. Знаю, не самый лучший в... Nov 15 2008, 12:41 Павлик Приложу свою первую подпрограмку для работы с Энк... Nov 15 2008, 14:14 sansnotfor оооо... заметил, что мой код можно сократить в это... Nov 21 2008, 06:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|