Трех-контактный энкодер

Не могу сообразить как работать с таким энкодером

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#1

Сообщение demid34 » 26.05.2018{, 20:26}

Здравствуйте уважаемые форумчане и знатоки программы Flprog. Появилась необходимость подключить вот такой
СпойлерПоказать
Изображение
подрулевой джойстик от рено к ардуино, ну с кнопками то все понятно, а вот с энкодером нет. Как определить направление вращения, ни как не могу сообразить, рассчитываю на вашу помощь. Буду благодарен в том числе и материально.
Вложения
джой.flp
(159.25 КБ) 75 скачиваний

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Трех-контактный энкодер

#2

Сообщение pan » 26.05.2018{, 21:16}

это точно энкодер? или просто переключатель на самом деле.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#3

Сообщение demid34 » 26.05.2018{, 21:42}

Энкодер, но факту при каждом щелчке переключается на следующий контакт и в покое остается замкнутый. Фото в разобранном виде
СпойлерПоказать
Изображение

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#4

Сообщение Serg_Grn » 26.05.2018{, 22:09}

На какой угол поворачивается колесо при одном щелчке?

Если схема типичная как для энкодера, то блок есть соответствующий.
Encoder_(CODE).ubi
(117.59 КБ) 119 скачиваний
Последний раз редактировалось Serg_Grn 26.05.2018{, 22:18}, всего редактировалось 1 раз.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#5

Сообщение demid34 » 26.05.2018{, 22:15}

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

Отправлено спустя 4 минуты 21 секунду:
Полный оборот 12 щелчков. Соответственно один щелчек 30 градусов. При вращении просто переключается с контакта на контакт, один щелчек один контакт. Перещелкнулся и остается замкнутым.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#6

Сообщение Serg_Grn » 26.05.2018{, 22:27}

Похоже общий (brown) при вращении в одну сторону замыкается в поледовательности 1-3-2 (и так по кругу), а в другую сторону 2-3-1 соответственно. Думаю если точки 1,2,3 подать на три входа ардуины и построить логическую цепь в соответствии с такими вариантами, то можно определять направление вращения.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#7

Сообщение demid34 » 26.05.2018{, 22:31}

Сейчас в моей программке используется блок матричной клавиатуры. Линии джойстика 2, 3, 1 подключены к выходам контроллера. Линии 5, 4, 6 к входам. На входа подключенных к линиям 4, 5, мы понимаем какая из кнопок нажата. На входе подключенной к линии 6 понимаем какой из контактов энкодера замкнут. В программе условно принято обозначение контактов ABC. При вращении колесика влево идет перебор ABC ABC ABC и т.д.. В право CBA CBA CBA и т.д..
Последний раз редактировалось demid34 26.05.2018{, 22:33}, всего редактировалось 1 раз.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#8

Сообщение demid34 » 26.05.2018{, 22:33}

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

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#9

Сообщение Serg_Grn » 27.05.2018{, 00:07}

Попробовал собрать что-то похожее... Знаю что использование строк - не лучшее решение, но как иначе сравнивать комбинации придумать не смог...
Задумка такая: контакт замыкается, при этом запоминается соответствующая цифра, дальше этот контакт размыкается и вместо него замыкается другой, при этом прежняя цифра запоминается на 1 мс., в течение этого времени анализируется комбинация двух цифр и результат подается на один из выходов. Через 1 мс. "старая" цифра сбрасывается и может быть замкнут следующий контакт для сравнения.
Ну и получается, что на одном из выходов сигнал будет в течение 1 мс. после замыкания очередного контакта.
(Номера входов "1","2","3" соответствуют номерам проводов в схеме, на которые замыкается общий).


Данный вариант не рабочий.
Последний раз редактировалось Serg_Grn 27.05.2018{, 15:11}, всего редактировалось 2 раза.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#10

Сообщение demid34 » 27.05.2018{, 07:19}

Проверил, не работает как надо. Крутишь влево идут импульсы больше, больше, меньше. Вправо также больше, больше, меньше.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#11

Сообщение Serg_Grn » 27.05.2018{, 08:59}

Входы 1,2,3 ардуины нужно замыкать на Gnd, т.е. общий (brown) - это минус питания ардуины.
Возможно, защиту от дребезга нужно отключить, поиграться надо.
Последний раз редактировалось Serg_Grn 27.05.2018{, 13:36}, всего редактировалось 1 раз.

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#12

Сообщение demid34 » 27.05.2018{, 10:05}

Serg_Grn, все так же, к сожалению.

Отправлено спустя 2 часа 14 минут 38 секунд:
Вот нашел скетч в котором есть обработка сигналов такого энкодера. Но как это делается мне непонятно.
Вложения
keypad.zip
(18.54 КБ) 90 скачиваний
DusterJoystickToTerranoV5.ino
(6.8 КБ) 89 скачиваний

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#13

Сообщение Serg_Grn » 27.05.2018{, 13:06}

demid34 писал(а):
27.05.2018{, 12:19}
все так же, к сожалению.
Вот вариант набросал, визуально вроде должно работать, к сожалению не могу проверить на железе.
При переключении на следующий контакт, должна на 10 мс. появляться "1" на выходе "больше" или "меньше", в зависимости от того, куда переключилось.
Проверьте и скажите выходит или нет, а то самому интересно :)
Определение напр. вращения.flp
(412.16 КБ) 121 скачивание

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#14

Сообщение demid34 » 27.05.2018{, 13:09}

Спасибо за помощь. Как проверю сразу же отпишусь.

KSP
Лейтенант
Сообщения: 304
Зарегистрирован: 18.09.2015{, 14:00}
Репутация: 28
Откуда: Саратов
Имя: Сергей

Трех-контактный энкодер

#15

Сообщение KSP » 27.05.2018{, 13:38}

demid34 писал(а):
26.05.2018{, 21:42}
Энкодер, но факту при каждом щелчке переключается на следующий контакт и в покое остается замкнутый.
Я правильно понял, что 6 контакт всегда остается замкнутым либо с 1 либо со 2 контактом в зависимости от щелчка. Или он остается замкнутым с 3?
S

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26.05.2018{, 19:32}
Репутация: 0
Имя: Dima

Трех-контактный энкодер

#16

Сообщение demid34 » 27.05.2018{, 13:55}

KSP, контакт 6 замыкается и остается замкнутым либо с 1 либо с 2 либо с 3. Один щелчек один контакт.

Отправлено спустя 5 часов 1 минуту 57 секунд:
Serg_Grn писал(а):
27.05.2018{, 13:06}
demid34 писал(а):
27.05.2018{, 12:19}
все так же, к сожалению.
Вот вариант набросал, визуально вроде должно работать, к сожалению не могу проверить на железе.
При переключении на следующий контакт, должна на 10 мс. появляться "1" на выходе "больше" или "меньше", в зависимости от того, куда переключилось.
Проверьте и скажите выходит или нет, а то самому интересно :)
Определение напр. вращения.flp
Все отлично! Премного благодарен! Сам бы ни за что не додумался. Блок-схема получилась весьма насыщенная.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#17

Сообщение Serg_Grn » 27.05.2018{, 19:05}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Трех-контактный энкодер

#18

Сообщение Sancho » 28.05.2018{, 10:08}

demid34 писал(а):
27.05.2018{, 18:57}
Блок-схема получилась весьма насыщенная.
Можно проще сделать.
На выходах 1 на один цикл.
На второй плате счётчик, для теста, как и переменная дельта.
Переменная chislo - обязательна, так как явно указывает на размерность числа - байт.
Проверен.
КодПоказать

Код: Выделить всё

byte new_chislo, old_chislo, chislo;
bool Down = 0, Up = 0 ; // выходы 
bool Input_1, Input_2, Input_3; // входы
void setup(){}
void loop()
{
if (Input_1) {new_chislo = 1;}
if (Input_2) {new_chislo = 2;}
if (Input_3) {new_chislo = 3;}
chislo = old_chislo - new_chislo;
Down = ( (chislo == (1) || (chislo == 254) );
Up = ( (chislo == 2) || (chislo == 255) );
old_chislo = new_chislo;
}
Вложения
Определение напр. вращения_v3.flp
Самое нужное, убрано тестовое. Антидребезг тоже можно убрать.
(151.42 КБ) 92 скачивания
Определение напр. вращения_v2.flp
С тестовыми блоками, индикатором, счётчиком.
(233.21 КБ) 84 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

Трех-контактный энкодер

#19

Сообщение Serg_Grn » 28.05.2018{, 19:53}

Sancho писал(а):
28.05.2018{, 10:08}
Можно проще сделать.
Не могу понять: если цифра предыдущая 2, новая 3, то 2-3= -1. В переменную "число" что -1 запишется? Там ведь числа от 0 до 255.
И вообще непонятно как при этом формируется импульс "больше", в общем не могу понять как работает схема...

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Трех-контактный энкодер

#20

Сообщение Sancho » 28.05.2018{, 20:04}

Serg_Grn писал(а):
28.05.2018{, 19:53}
Не могу понять: если цифра предыдущая 2, новая 3, то 2-3= -1. В переменную "число" что -1 запишется? Там ведь числа от 0 до 255.
И вообще непонятно как при этом формируется импульс "больше", в общем не могу понять как работает схема...
У байта нет отрицательных чисел, всё "по кругу" - в сторону уменьшения 2, 1, 0, 255, 244....
Поэтому приходится явно указывать - результат должен быть байтом, переменная "число".
Всё работает - проверенно в железе. Проект приложен. :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ответить

Вернуться в «Помогите, а то я "нимагу"»