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

demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

Здравствуйте уважаемые форумчане и знатоки программы Flprog. Появилась необходимость подключить вот такой [spoiler]Изображение[/spoiler] подрулевой джойстик от рено к ардуино, ну с кнопками то все понятно, а вот с энкодером нет. Как определить направление вращения, ни как не могу сообразить, рассчитываю на вашу помощь. Буду благодарен в том числе и материально.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

это точно энкодер? или просто переключатель на самом деле.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

Энкодер, но факту при каждом щелчке переключается на следующий контакт и в покое остается замкнутый. Фото в разобранном виде[spoiler]Изображение[/spoiler]
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

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

Если схема типичная как для энкодера, то блок есть соответствующий.
Encoder_(CODE).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Serg_Grn 26 май 2018, 22:18, всего редактировалось 1 раз.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

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

Отправлено спустя 4 минуты 21 секунду:
Полный оборот 12 щелчков. Соответственно один щелчек 30 градусов. При вращении просто переключается с контакта на контакт, один щелчек один контакт. Перещелкнулся и остается замкнутым.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

Похоже общий (brown) при вращении в одну сторону замыкается в поледовательности 1-3-2 (и так по кругу), а в другую сторону 2-3-1 соответственно. Думаю если точки 1,2,3 подать на три входа ардуины и построить логическую цепь в соответствии с такими вариантами, то можно определять направление вращения.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

Сейчас в моей программке используется блок матричной клавиатуры. Линии джойстика 2, 3, 1 подключены к выходам контроллера. Линии 5, 4, 6 к входам. На входа подключенных к линиям 4, 5, мы понимаем какая из кнопок нажата. На входе подключенной к линии 6 понимаем какой из контактов энкодера замкнут. В программе условно принято обозначение контактов ABC. При вращении колесика влево идет перебор ABC ABC ABC и т.д.. В право CBA CBA CBA и т.д..
Последний раз редактировалось demid34 26 май 2018, 22:33, всего редактировалось 1 раз.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

[ref]Serg_Grn[/ref], Вы все правильно поняли, но вот у меня затык я никак не могу построить соответствующую логическую цепочку что бы определить направление вращения.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

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


Данный вариант не рабочий.
Последний раз редактировалось Serg_Grn 27 май 2018, 15:11, всего редактировалось 2 раза.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

Проверил, не работает как надо. Крутишь влево идут импульсы больше, больше, меньше. Вправо также больше, больше, меньше.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

Входы 1,2,3 ардуины нужно замыкать на Gnd, т.е. общий (brown) - это минус питания ардуины.
Возможно, защиту от дребезга нужно отключить, поиграться надо.
Последний раз редактировалось Serg_Grn 27 май 2018, 13:36, всего редактировалось 1 раз.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

[ref]Serg_Grn[/ref], все так же, к сожалению.

Отправлено спустя 2 часа 14 минут 38 секунд:
Вот нашел скетч в котором есть обработка сигналов такого энкодера. Но как это делается мне непонятно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

demid34 писал(а): 27 май 2018, 12:19все так же, к сожалению.
Вот вариант набросал, визуально вроде должно работать, к сожалению не могу проверить на железе.
При переключении на следующий контакт, должна на 10 мс. появляться "1" на выходе "больше" или "меньше", в зависимости от того, куда переключилось.
Проверьте и скажите выходит или нет, а то самому интересно :)
Определение напр. вращения.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

Спасибо за помощь. Как проверю сразу же отпишусь.
KSP
Лейтенант
Сообщения: 305
Зарегистрирован: 18 сен 2015, 14:00
Откуда: Саратов
Имя: Сергей
Поблагодарили: 1 раз

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

Сообщение KSP »

demid34 писал(а): 26 май 2018, 21:42Энкодер, но факту при каждом щелчке переключается на следующий контакт и в покое остается замкнутый.
Я правильно понял, что 6 контакт всегда остается замкнутым либо с 1 либо со 2 контактом в зависимости от щелчка. Или он остается замкнутым с 3?
S
demid34
Рядовой
Сообщения: 10
Зарегистрирован: 26 май 2018, 19:32
Имя: Dima

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

Сообщение demid34 »

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

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

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

Сообщение Serg_Grn »

Кстати надо заметить, что это не энкодер как таковой, а просто круговой переключатель с тремя контактами.
Не мешало бы схему эту в пользовательский блок впихнуть, может пригодиться в будущем.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

[spoiler=Код]

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

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;
}
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

Sancho писал(а): 28 май 2018, 10:08Можно проще сделать.
Не могу понять: если цифра предыдущая 2, новая 3, то 2-3= -1. В переменную "число" что -1 запишется? Там ведь числа от 0 до 255.
И вообще непонятно как при этом формируется импульс "больше", в общем не могу понять как работает схема...
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя