Arduino и RS422 энкодер
-
Кулибин1437
- Новичок
- Сообщения: 35
- Зарегистрирован: 11 янв 2019, 07:51
- Репутация: 0
- Настоящее имя: Эдуард
- Откуда: г.Уфа
- Контактная информация:
Re: Arduino и RS422 энкодер
я там выше поправил про бит направления.
А про код Грея в мануале чтото написано.
То есть полученные двоичный код надо как то преобразовать в грея?
А про код Грея в мануале чтото написано.
То есть полученные двоичный код надо как то преобразовать в грея?
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino и RS422 энкодер
Похоже на тоUAVpilot писал(а):Там похоже не обычное число, а код Грея...
Encoder output is Gray cyclic code, first, receiving device decode it into binary code by XOR way. AS Gray code is cyclic code, there are
mutations between maximum code value and 0, therefore, in order to avoid abrupt stroke data, recommended the middle of encoder position
data value as the start bit.
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino и RS422 энкодер
Наоборот. Из Грея в двоичный. https://ru.wikipedia.org/wiki/%D0%9A%D0 ... 0%BE%D0%B4Кулибин1437 писал(а):полученные двоичный код надо как то преобразовать в грея?
Чудес не бывает. Бывают фокусы.
-
Кулибин1437
- Новичок
- Сообщения: 35
- Зарегистрирован: 11 янв 2019, 07:51
- Репутация: 0
- Настоящее имя: Эдуард
- Откуда: г.Уфа
- Контактная информация:
Re: Arduino и RS422 энкодер
если там код грея, то почему получалось
Сергей Саныч писал(а):16777215 = 2^24-1
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino и RS422 энкодер
Мы же принимали код "все единицы" с выключенного энкодераКулибин1437 писал(а):если там код грея, то почему получалось
Сергей Саныч писал(а):
16777215 = 2^24-1
Чудес не бывает. Бывают фокусы.
-
Кулибин1437
- Новичок
- Сообщения: 35
- Зарегистрирован: 11 янв 2019, 07:51
- Репутация: 0
- Настоящее имя: Эдуард
- Откуда: г.Уфа
- Контактная информация:
Re: Arduino и RS422 энкодер
Я вывел все 26 битСергей Саныч писал(а): То есть выведи все 26.
менял вращения. какая то картинка ускоренно выводила. Я уже стал путаться, похоже устал
-
Кулибин1437
- Новичок
- Сообщения: 35
- Зарегистрирован: 11 янв 2019, 07:51
- Репутация: 0
- Настоящее имя: Эдуард
- Откуда: г.Уфа
- Контактная информация:
Re: Arduino и RS422 энкодер
да при выключенном энкодереСергей Саныч писал(а):Мы же принимали код "все единицы" с выключенного энкодера
теперь надо биты грея сперва превратить в нормальные а потом в десятичные или...
Короче надо почитать про грея

- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino и RS422 энкодер
Значит, так. Имеем предположения по битам:
- младший (правый) - он всегда 0, это сигнал окончания пакета SSI
Далее (справа налево!)
- бит четности
- потом 12 бит кода Грея (поворот в пределах оборота)
- потом 11 бит - счетчик оборотов (не знаю, какой код - может двоичный, может Грея отдельно
- потом, возможно, бит направления
- а самый старший бит (левый, принятый первым), похоже, лишний, он до начала пакета принимается (всегда 1)
Но это не более чем домыслы, смотреть надо.
- младший (правый) - он всегда 0, это сигнал окончания пакета SSI
Далее (справа налево!)
- бит четности
- потом 12 бит кода Грея (поворот в пределах оборота)
- потом 11 бит - счетчик оборотов (не знаю, какой код - может двоичный, может Грея отдельно
- потом, возможно, бит направления
- а самый старший бит (левый, принятый первым), похоже, лишний, он до начала пакета принимается (всегда 1)
Но это не более чем домыслы, смотреть надо.
Чудес не бывает. Бывают фокусы.
-
Кулибин1437
- Новичок
- Сообщения: 35
- Зарегистрирован: 11 янв 2019, 07:51
- Репутация: 0
- Настоящее имя: Эдуард
- Откуда: г.Уфа
- Контактная информация:
Re: Arduino и RS422 энкодер
Я сегодня запрос китайцам отправил. Может распишут содержание бит.
Вот прилагаю инструкцию счётчика, который они предлагают с данным энкодером.
Там про биты чтото скудненько есть. .
И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((
Вот прилагаю инструкцию счётчика, который они предлагают с данным энкодером.
Там про биты чтото скудненько есть. .
И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino и RS422 энкодер
Так я ж приводил ссылку на вики, там готовый сишный код есть.Кулибин1437 писал(а):И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((
Код: Выделить всё
unsigned int graydecode(unsigned int gray)
{
unsigned int bin;
for (bin = 0; gray; gray >>= 1) {
bin ^= gray;
}
return bin;
}Чудес не бывает. Бывают фокусы.
-
Nikomas
- Мастер
- Сообщения: 721
- Зарегистрирован: 07 янв 2012, 14:31
- Репутация: 64
- Откуда: Беларусь
- Контактная информация:
Re: Arduino и RS422 энкодер
Друзья, ардуинщки, подскажите пожалуйста где бы подсмотреть код на работу ардуинки с кодом грея. Алгоритм работы такой, при поступлении тригерра опрашиваем оптопары энкодера, что бы знать в какую сторону вращать двигатель открыванием реле. Т.е. например, если пришел триггер, что надо ехать в позицию 4, опрашиваем диск с кодом Грея, и если мы находимся в поз.<4 то открываем реле FW, если в поз. >4, то открываем реле REV. Ну а если текущая поз.=4, ничего не делаем.
Диск уже набросал: Забыл добавить метки для обнуления (HOME): 1111.
Диск уже набросал: Забыл добавить метки для обнуления (HOME): 1111.
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1646
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: Arduino и RS422 энкодер
Ну так перевести код Грея в двоичный, а дальше простое сравнение...
-
Nikomas
- Мастер
- Сообщения: 721
- Зарегистрирован: 07 янв 2012, 14:31
- Репутация: 64
- Откуда: Беларусь
- Контактная информация:
Re: Arduino и RS422 энкодер
Код буду писать сам и впервые. Подскажете ежели что? Пока жду с Али оптопары.N1X писал(а):Ну так перевести код Грея в двоичный