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

 
 
> MEGA+энкодер
vetbaston
сообщение Sep 19 2006, 05:17
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 80
Регистрация: 21-08-06
Пользователь №: 19 702



Есть MEGA64 и инкрементальный энкодер PEC12-4220F , кто работал с энкодером посоветуйте , как правильно обстучать его? help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
XsanyaX
сообщение Sep 19 2006, 07:47
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 7-04-05
Из: Украина
Пользователь №: 3 948



Один из сигналов (А или В ) я заводил на внешнее прерывание, второй на любую ногу порта, сконфигурированую как вход. Прерывание - по любому логическому изменению сигнала. В обработчике, исходя из предыдущего и текущего значения сигналов А и В (предыдущее значение - значение А и В, при предыдущем вызове обработчика внешнего прерывания ) принимал решение в какую сторону происходит вращение и соотв. увеличивал или уменьшал значение требуемой переменной. Вот краткий алгоритм работы.. если нужно более подробное описание - обращайтесь...

Сообщение отредактировал XsanyaX - Sep 19 2006, 07:48


--------------------
Метрология - наука о достаточной точности.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Sep 19 2006, 08:25
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Обработка энкодера по прерываниям неудобна, так как требуется давить дребезг. Более того, чтобы корректно реализовать квадратурный декодер 1х (или 2х, 4х), прерывания должны происходить не по фронту или спаду одного из сигналов, а по любому изменению состояния энкодера. Отсюда следует порочность декодера типа "программный D-триггер, один сигнал энкодера на вход D, второй - на C". При такой реализации INC/DEC всегда происходит по фронту одного из сигналов энкодера, что есть неправильно. Если вал энкдера просто пошевелить на месте, может насчитаться куча импульсов. INC/DEC нужно делать по изменению состояния двух сигналов, чтобы и INC, и DEC происходили в одной и той же точке, но при её проходе с разными направлениями вращения. Информацию о построении правильных квадратурных декодеров можно почерпнуть из описания спец. микросхем, например, HCTL-2000.
Я обрабатываю энкодер и его кнопку в основном цикле программы. Если программа чем-то занята, то она всё равно не сможет отреагировать на вращение энкодера, а буферизовать проделанный поворот и откладывать его обрботку - это уже слишком. Практика показала, что для комфорного использования энкодера задержки на подавление дребезга не должны превышать 500 мкс, иначе становится заметным пропуск шагов при резком повороте ручки. Я использую 300 мкс. Столь малые времена, к сожалению, не могут быть сформированы системным таймером как большинство других временных интервалов в программе. Поэтому приходится применять "тупую" задержку в виде цикла. Для таких малых интервалов это вполне допустимо, потери производительности процессора будут минимальными. Тем более, что обработка энкодера - это общение с пользователем, который всегда является самым медленным звеном системы smile.gif Более того, если какая-то задача в основном цикле захочет временно забрать все ресурсы процессора (за вычетом потерь на прерывания), она сможет это сделать. В это время энкодер обслуживаться не будет. Для кнопки время подавления дребезга должно быть существенно большим, я использую 50 мс. Уж очень разные механические характеристики контактных групп кнопки и энкодера.

Сюда выложил пример обработки энкодера на асме для AVR:
http://upload.caxapa.ru/Enc.txt


--------------------
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Sep 21 2006, 07:18
Сообщение #4


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Леонид Иванович @ Sep 19 2006, 12:25) *
Обработка энкодера по прерываниям неудобна, так как требуется давить дребезг. Я обрабатываю энкодер и его кнопку в основном цикле программы.

А я наоборот отказался от полинга работы с энкодером
когда имеем достаточный загруз контроллера - иногда очень не аккуратно получалось ;-)
сейчас работаю по прерыванию как уже говорилось выше... но несколько застраховавшись от дребезга, введя переменную "чувствительности" энкодера - она, кстати, очень полезна..
хотя дребезг есть также последствие мех воздействия и его отметать тоже не стоит - а нужно проанализировать...
проблем уже как 3 года не наблюдаю причем даже с нонейм энкодерами, и энкодерами имеющие достаточный мех износ....
плюс ко всему под прерывание все прекрасно ложиться - и ресурсов кушает очень мало...
так что вот ещё автору, тема для обмозгования..


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Sep 21 2006, 09:07
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



А какой физический смысл несет переменная "чувствительность энкодера"?


--------------------
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vetbaston   MEGA+энкодер   Sep 19 2006, 05:17
||- - Kovrov   Цитата(Леонид Иванович @ Sep 21 2006, 13...   Sep 21 2006, 15:46
|- - Shurmas   Цитата(Kovrov @ Sep 21 2006, 11:18) пробл...   Sep 21 2006, 09:17
- - psw   Цитата(vetbaston @ Sep 19 2006, 10:17) Ес...   Sep 19 2006, 08:52
|- - Maik-vs   Цитата(psw @ Sep 19 2006, 12:52) здесь ку...   Sep 14 2007, 11:50
|- - qqqqqq   Цитата(Maik-vs @ Sep 14 2007, 17:50)...   Sep 14 2007, 15:17
|- - gte   Цитата(qqqqqq @ Sep 14 2007, 19:17) Да. Б...   May 16 2008, 17:29
|- - 777777   Цитата(gte @ May 16 2008, 21:29) Благо, н...   May 17 2008, 14:19
|- - gte   Ну так порекомендуйте ортронный по сносной цене.   May 17 2008, 19:45
|- - _Pasha   Цитата(777777 @ May 17 2008, 17:19) Так о...   May 18 2008, 06:17
|- - rx3apf   Цитата(777777 @ May 17 2008, 18:19) Ну вы...   May 18 2008, 10:52
|- - 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


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

 


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


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