Decoder For Rotary Encoder :) — «Железные» кокпиты

Всем привет!
Очень нужна схема декодера для Rotary Encoder…
Нужно преобразовать импусы с энкодера в обыкновенные замыкания контактов, что бы подключить вместо кнопок к Mjoy.. такое возможно?

Спасибо.


Ответов: 28

Всем привет!
Очень нужна схема декодера для Rotary Encoder…
Нужно преобразовать импусы с энкодера в обыкновенные замыкания контактов, что бы подключить вместо кнопок к Mjoy.. такое возможно?

Спасибо.

Не совсем понятен вопрос, но само применение Mjoy интересует, сам собираюсь делать. Если есть желаение, пожалуйста свяжитесь по valery_gb(собака)ptline.ru, обсудим эту тему.

С Уважением, Валерий.

http://www.avsim.su/…ndpost&p=151248
Прочитал этот пост раз 10 уже ..

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

К сожаению, я не обладаю достаточными знаниями, что бы самостоятельно что то подобное разработать. я думал что у кого-нибудь есть разработки в этой области..типа Mjoy..

А энкодер у вас какой? Оптический? Механический? Тип?

Энкодер механический, 3315..
Купил самые простые что бы попробовать.

О какой конкретно схеме идет речь? К чему вы хотите подключить энкодер? Можете дать ссылку на MJoy?

http://www.mindaugas…Joy/Article.php

Схема очень простая… я сделал джойстик на 24 кнопки..
Было бы очень классно ,если можно подключит энкодер так, что бы при повороте в одну сторону на 1 щелчок срабатывала , например, кнопка 1, а в другою сторону кнопка 2..

Я вот чего подумал. А что если обратиться непосредственно к разработчику MJoy? Он здесь на форуме появлялся.
Дело в том, что все необходимые операции можно легко осуществить программным путем и подключить энкодер непосредственно к микроконтроллеру. В любом случае, для создания электронного интерфейса, нужно знать алгоритм сканирования матрицы кнопок. К сожалению автор не публикует исходный код своей программы, так что изменения могут быть внесены только им. Думаю он мог бы зарезервировать место для, скажем, 4 энкодеров вместо 8 кнопок. Его e-mail адрес опубликован на указанной вами странице. Если есть необходимость, могу предоставить простой алгоритм обработки сигналов энкодера.

Спасибо! попробую ему написать.

Если не сложно, держите нас в курсе. :unsure:
Схема с сайта автора, думаю, ни чьих прав не нарушаю. А диоды там и не нужны, обычна на одной ноге устанавливается 0, состояние всех пересечений проверяется, если на какой либо из линий 0, то значит, кнопка нажата. На не нажатых должна быть единица. Затем проверяется следующая линия и так далее.

Само описание было на Сухой, но сейчас что-то Сухой не работает.

Прикрепленные изображения

  • schematic.gif

А может, алгоритм сканирования знать и не надо, в любом случае на кнопке создается перепад напряжения, где больше, а где меньше, можно узнать тестером, собрать вместо кнопки ключ на КТ315 и открывать его импульсом от декодера. Если же ключ на полевике сделать, то вообще не важно, что куда идет, ему по барабану, куда сигнал пропускать.

Валерий.

Оно конечно, только собранной схемы у меня не имеется, как впрочем и исходника программы. Так что узнать кто есть кто (вход/выход) не представляется возможным. А полевик неподготовленный человек убьет в три секунды. Кроме того, меня терзают смутные сомнения по поводу отсутствия развязочных диодов в матрице.

P.S. Может схемку набросаете?

2 Valery_B:
Допустим, что справа расположены входы, на которые поочередно подается 0, а внизу выходы, с которых снимается состояние кнопок. Рассмотрим случай когда на линию PD0 подан уровень 0, а на все остальные входы 1. См. схему. Кнопки S4, S7 и S8 нажаты (отмечены зеленым). Каково будет состояние выходов? :unsure: (Подсказка: PB3=1; PB4=1; PB5=0; PD7=0! Хотя в верхнем ряду нажата только одна кнопка). Более того, выход PD1 будет принудительно посажен на 0, что вполне может угробить контроллер. И таких комбинаций сколько угодно. Для обратной ситуации (входы внизу, выходы справа) сказанное так же справедливо.

2 Matrix:

Непонятно, какие сигналы появляются на выходе этого декодера. Лео говорит что его декодер выдаёт +5V в покое и GND когда крутишь энкодер.

К сожалению скачать файл не удалось.

2 Boriska:
Примерно этот алгоритм я и имел ввиду. Фактически выполняется логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) над текущим стабильным значением фазы А и предыдущим стабильным значением фазы В (или наоборот), если состояние входов изменилось. Результат операции 1 или 0 соответствует направлению вращения оси энкодера.

Прикрепленные изображения

  • Matrix.gif

Если я правильно понимаю, то матрица это кнопки :blink:

Без диодов невозможно будет нажимать несколько кнопок одновременно, а конкретно больше 6 штук.. :blink:

Вот нашёл ссылку на десодер на базе микроконтроллера PIC..автор Leo Lacava.
http://forums.avsim….ing_type=search
Решение интересное, файлик rd-pan16f есть :unsure:

Есть ещё Redec 0.9

http://hongkongfui.d…ec/redec09b.pdf

I’ve bought an empty IC laboratory plate
the 3 CMOS, and the 2 resistors and have sold and link them with
small bridge-wire according to the sheme.
That works

Непонятно, какие сигналы появляются на выходе этого декодера. Лео говорит что его декодер выдаёт +5V в покое и GND когда крутишь энкодер.
Пока ещё не паял ничего из этого.. сайт чип-дипа отвалился… да и к тому же не знаю точно какие детальки покупать…

Попробую внести свои 5 копеек. :unsure:
Это фрагмент кода (HT-PICC), который работает у меня на PICе для ввода с энкодера. Энкодер используется PEC12, можно PEC16 или 3315, без разницы. Схема включения проста до безобразия, общий вывод энкодера на землю, сигнальные на 2 входа порта В (у него в PICах есть встроенные подтягивающие резисторы).

volatile signed char Twisted1;

#define MIN_STABLE 	 24 // Кол-во повторов для устранения дребезга (подбирается по вкусу)
#define ENC_AB_MASK     0b11000000 // Собственно 2 бита которые соответствуют энкодеру

void enc (unsigned char kbd) // на входе текущее состояние порта к которому подключен энкодер
{
	byte_t sample;  
	byte_t debounced;
	static byte_t prev_sample;
	static byte_t stable_count;
	static byte_t prev_debounced;
	
	sample  = (~kbd & ENC_AB_MASK) >> 6;
	
 
	if (sample != prev_sample) {
     stable_count = 0;
     prev_sample = sample;
     return;
	} 
	else {
     if &#40;stable_count < MIN_STABLE&#41; {
 	 stable_count++;
 	 if &#40;stable_count == MIN_STABLE&#41; {
     	 debounced = sample;
 	 }
      else {
 	 return;
      }
     }
     else {
  return;
     }
	}

  if &#40;&#40;debounced & 0x02&#41; && !&#40;prev_debounced & 0x02&#41;&#41;
  if &#40;debounced & 0x01&#41; 
          Twisted1++;
     else 
          Twisted1--;
    
	prev_debounced = debounced;
}
        

Функция вызывается в главном цикле и ей передается считаное значение порта В.
В итоге в переменной Twisted1 имеем число «щелчков» со знаком. Ее можно анализировать в другом месте программы и как-то использовать в своих целях.
У меня она передается через USB в комп, после чего обнуляется, таким образом я имею приращение со знаком в зависимости от направления вращения.
Немного сумбурно, но думаю, разобраться можно.

Спаял сегодня redec 09b..
Всё работает… Когда не крутишь энкодер то контакты на выходе замкнуты.. сопротивление около 100Ом.. когда крутишь — сопротивление подскакивает до 300Ом.. джойстик Mjoy понимает это как отпускание кнопки.. только не всегда.. видимо разрывается не на долго..
Как увеличить время на которое прерывается цепь? впаивание сопротивления не помогает.

Схема вот тут: http://hongkongfui.d…ec/redec09b.pdf

Или может быть я слишком быстро врашаю энкодер? у него всего 100 об минуту максимум?

Скорее всего проблема в дребезге контактов. Указанная вами схема не имеет соответствующей защиты. 100 оборотов в минуту это примерно 1.6 оборота в секунду. Не думаю, что вы вращаете энкодер с такой скоростью.

Да, почту получил. Спасибо. К сожалению еще не удалось взглянуть.

Дребезг это ложное срабатывание или несрабатывание?

У меня имеет место быть несрабатывание.. млжет быть интервал опроса у Mjoy большой?
вороде как я слышал что 10ms.

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

А сколько импульсов на оборот имеет ваш энкодер? 10ms не так уж много. Как ни как 100 раз в секунду.

12 импульсов за оборот..
Энкодер фирмы bourns , модель PEC12-4220F-S0024.

Ну вот и посчитаем:

Дано&#58;
   Максимальная скорость вращения, Vmax= 100об/мин
   Количество импульсов на оборот,   n=12

Найти&#58;
   Длительность импульса t при максимальной скорости вращения.

Решение&#58;
   Определим максимальную частоту следования импульсов fmax&#58;
       fmax=Vmax*n=1200 импульсов в минуту или 1200/60=20Hz &#40;импульсов в секунду&#41;
   Определим длительность импульса, точнее его период&#58;
       t=1/f=1/20=0.05s=50ms

Следовательно при интервале опроса 10ms за один период произойдет 5 опросов состояния, что вполне достаточно для уверенного распознавания состояния входа.

Значит дребезг.. а как он него избавится? может есть какая — нибудь схема?

Почитайте, есть много интересного.

Формирователи и генераторы импульсов.

КМОП-схемы антидребезга с защитой от статики.

Техдокументация на микросхемы описанные в предыдущей ссылке. (Англ.)

12 импульсов за оборот..
Энкодер фирмы bourns , модель PEC12-4220F-S0024.

Последние цифры (S0024) — и есть количество импульсов за поворот, в данном случае — 24, а не 12. Цифра 12 в типе означает модификацию и заодно — длину оси. Это что касается именно этого типа энкодера.
страничка энкодеров сайта Bourns.

:)
Да… не доконца изучил документашку

Почитайте, есть много интересного.

Формирователи и генераторы импульсов.

КМОП-схемы антидребезга с защитой от статики.

Техдокументация на микросхемы описанные в предыдущей ссылке. (Англ.)

Не могу найти такие микросхемы :buy2:
В чип и дипе нету MAX 6467-6468.. Какие есть аналоги!?
Был сегодня там.. сказали: » У нас нету информации по аналогам» .. :buy2:

И что будет если я подключу эти микросхемы прям к выводам энкодера? работать будет? Или подключать уже на конечные выводы?