обработка валкодера

VB> Рановато вроде как. Сомневаюсь. Проблема возникает именно при медленном VB> вращении, если крутить быстро, то все чисто.

В общем случае, это ничего не означает. Кроме того, при быстром кручении развивается, возможно, больший момент на оси валкодера, что влияет в свою очередь на возникновение дребезга. Также возможно, что при медленном вращении действительно имеют место колебания оси, и это никакой не дребезг. Причин масса *даже чисто механических*.

Reply to
Kirill Frolov
Loading thread data ...

Hi Vladislav, hope you are having a nice day!

28 Июл 04, Vladislav Baliasov wrote to Alex Torres:

AT>> любому фронту.

VB> Может быть, так и ме было бы превильнее, хотя все равно не очень VB> понятно, как в этом случае определять смену направления и отсчитывать VB> щелчки в условиях дребезга и произвольной скорости.

А собственно, зачем вообще фильтровать дребезг? Если есть гаратия, что дребезг не возникнет по двум сигналам одновременно (т.е. на одном из фронтов дребезг еще не закончился, а на фронте второй фазы уже начался), то все промежуточные состояний не имеют значения, просто нужно ввести гистерезис на один шаг для выходного значения, если это допустимо по условиям задачи (получается "люфт" в 1/4 шага декодера).

Я использовал такой алгортим для для оптического декодера (подключен к PORTB пика, interrupt on change, однократное считывание порта, выборка значения приращения по таблице). Второй счетчик (выход функции) изменяется только в том случае, если его значение отличается больше чем на 1 единицу основного.

Еще был другой вариант: после прихода interrupt on change, оное запрещается и запускается таймер, с периодом в несколько раз меньшим интервала дребезга. По прерыванию таймера считывается порт, если это дребезг (колебания +-1), то ждем n-стаблиных (неменяющихся) отсчетов, после чего фиксируем изменения и снова разрешаем interrupt on change. Если при опросе по таймеру было два приращения подряд с одним знаком, то изменение фиксируем (значит скорость большая и отдребежать контакт не успевает) и снова продолжаем работать по таймеру, ожидая n-стабильных отсчетов.

В моем случае оба алгоритма вели себя достаточно хорошо, но первый проще.

WBR, AVB

Reply to
Alexey V Bugrov

Здравствуй, Arcady!

Wednesday July 28 2004 08:45, you (2:5020/400) wrote to Alex Torres:

AS> Я помню что тут пролетала схемка такого валкодера из ШД но найти не AS> могу - а попросили подкинуть. Hельзя ли ссылочку дать если есть?

formatting link
Alex

Reply to
Alex Gavrikov
28-Jul-04 08:19 Vladislav Baliasov wrote to Alex Torres:

AT>> У меня сейчас - по изменению ножки порта, т.е. я работаю по любому AT>> фронту.

VB> Может быть, так и ме было бы превильнее, хотя все равно не очень понятно, VB> как в VB> этом случае определять смену направления и отсчитывать щелчки в условиях VB> дребезга и произвольной скорости.

А, IMHO, просто никак. Считать, что дребезг и покачивание вала вперёд-назад вблизи точки переключения - это одно и то же и не пытаться их разделить. При анализе всех перепадов это получается нормально -- дребезг на N всплесков просто даст эффект, например, N-кратного декремента и (N+1)-кратного инкремента. Если, конечно, такая толпа прерываний не давит.

wbr,

Reply to
Oleksandr Redchuk

Спасибо! И ведь есть у меня эта ссылка "во глубине сибирских руд"!

Reply to
Arcady Schekochikhin

Vladislav, ты ещё здесь сидишь?

Среда Июль 28 2004 08:19, Vladislav Baliasov wrote to Alex Torres:

AT>> У меня сейчас - по изменению ножки порта, т.е. я работаю по AT>> любому фронту. VB> Может быть, так и ме было бы превильнее, хотя все равно не очень VB> понятно, как в этом случае определять смену направления и отсчитывать VB> щелчки в условиях дребезга и произвольной скорости.

Как и обычно - по переходам между состояниями. Hо с учётом необходимости борьбы с дребезгом алгоритм куда проще реализуется на прерываниях по таймеру.

Hо лично тебе я ни в коем случае не запрещаю решать эту задачу как угодно, хоть на нейросетке ;)

Георгий

Reply to
George Shepelev

Как связь, _Arcady_ ? ;-)

formatting link
в разделе конструкции. Там их много разных - и мех. и из ШД от флопа и из мышки..

До связи, Arcady! /Edward/ LocalDate 02 Aug 04 - LocalTime 11:15 ...

formatting link
мыло на: nеdеliаеv(ухо)мэйл.ру

Reply to
Edward Nedeliaev

Привет Vladislav!

Втp Июл 27 2004 22:14, Vladislav Baliasov -> Alex Torres:

VB>>> Дальше закрываю прерывания на время антидребезга. AT>> Постой, что за валкодер? VB> А, я забыл сказать, что это механический контактный (PEC16 от Bourns).

VB>>> все равно при пошаговом переборе не очень надежно. Я имел дело с таким валкодеpом. Использовал опpос пpимеpно 500Гц и пpогpаммное подавление дpебезга по обоим каналам. Все pаботает. Единственный недостаток - в них плохая фиксация позиции, иногда останавливается на пол-шага и от вибpации на одну из соседних позиций слетает.

Hа этом все, пока. Anton Abrosimov. ... Hет повести печальнее на свете, чем повесть о заклинившем Reset'е

Reply to
Anton Abrosimov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.