Arduino и RS422 энкодер

Контроллеры, драйверы, датчики, управляющие устройства.
Кулибин1437
Новичок
Сообщения: 35
Зарегистрирован: 11 янв 2019, 07:51
Репутация: 0
Настоящее имя: Эдуард
Откуда: г.Уфа
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Кулибин1437 »

я там выше поправил про бит направления.
А про код Грея в мануале чтото написано.
То есть полученные двоичный код надо как то преобразовать в грея?
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 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 энкодер

Сообщение Сергей Саныч »

Кулибин1437 писал(а):полученные двоичный код надо как то преобразовать в грея?
Наоборот. Из Грея в двоичный. https://ru.wikipedia.org/wiki/%D0%9A%D0 ... 0%BE%D0%B4
Чудес не бывает. Бывают фокусы.
Кулибин1437
Новичок
Сообщения: 35
Зарегистрирован: 11 янв 2019, 07:51
Репутация: 0
Настоящее имя: Эдуард
Откуда: г.Уфа
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Кулибин1437 »

если там код грея, то почему получалось
Сергей Саныч писал(а):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 энкодер

Сообщение Кулибин1437 »

26 бит быстро.png (3227 просмотров) <a class='original' href='./download/file.php?id=155874&mode=view' target=_blank>Загрузить оригинал (120.9 КБ)</a>
После обнуления 26 бит быстро.png (3227 просмотров) <a class='original' href='./download/file.php?id=155873&mode=view' target=_blank>Загрузить оригинал (120.31 КБ)</a>
Сергей Саныч писал(а): То есть выведи все 26.
все 26 бит.png (3227 просмотров) <a class='original' href='./download/file.php?id=155872&mode=view' target=_blank>Загрузить оригинал (119.59 КБ)</a>
Я вывел все 26 бит
менял вращения. какая то картинка ускоренно выводила. Я уже стал путаться, похоже устал :yawn:
Кулибин1437
Новичок
Сообщения: 35
Зарегистрирован: 11 янв 2019, 07:51
Репутация: 0
Настоящее имя: Эдуард
Откуда: г.Уфа
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Кулибин1437 »

Сергей Саныч писал(а):Мы же принимали код "все единицы" с выключенного энкодера :)
да при выключенном энкодере :D :good:
теперь надо биты грея сперва превратить в нормальные а потом в десятичные или... :shock:

Короче надо почитать про грея :relsa:
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Сергей Саныч »

Значит, так. Имеем предположения по битам:

- младший (правый) - он всегда 0, это сигнал окончания пакета SSI
Далее (справа налево!)
- бит четности
- потом 12 бит кода Грея (поворот в пределах оборота)
- потом 11 бит - счетчик оборотов (не знаю, какой код - может двоичный, может Грея отдельно
- потом, возможно, бит направления

- а самый старший бит (левый, принятый первым), похоже, лишний, он до начала пакета принимается (всегда 1)

Но это не более чем домыслы, смотреть надо.
Чудес не бывает. Бывают фокусы.
Кулибин1437
Новичок
Сообщения: 35
Зарегистрирован: 11 янв 2019, 07:51
Репутация: 0
Настоящее имя: Эдуард
Откуда: г.Уфа
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Кулибин1437 »

Я сегодня запрос китайцам отправил. Может распишут содержание бит.
Вот прилагаю инструкцию счётчика, который они предлагают с данным энкодером.
Там про биты чтото скудненько есть.
SMM1312 manual.pdf
(498.81 КБ) 480 скачиваний
.
И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 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 энкодер

Сообщение Nikomas »

Друзья, ардуинщки, подскажите пожалуйста где бы подсмотреть код на работу ардуинки с кодом грея. Алгоритм работы такой, при поступлении тригерра опрашиваем оптопары энкодера, что бы знать в какую сторону вращать двигатель открыванием реле. Т.е. например, если пришел триггер, что надо ехать в позицию 4, опрашиваем диск с кодом Грея, и если мы находимся в поз.<4 то открываем реле FW, если в поз. >4, то открываем реле REV. Ну а если текущая поз.=4, ничего не делаем.

Диск уже набросал:
2019-09-16_122255.jpg (2774 просмотра) <a class='original' href='./download/file.php?id=168971&mode=view' target=_blank>Загрузить оригинал (241.61 КБ)</a>
Забыл добавить метки для обнуления (HOME): 1111.
Аватара пользователя
N1X
Мастер
Сообщения: 3653
Зарегистрирован: 16 фев 2015, 21:19
Репутация: 1646
Настоящее имя: Владимир
Откуда: Беларусь, Гомель
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение N1X »

Ну так перевести код Грея в двоичный, а дальше простое сравнение...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

Re: Arduino и RS422 энкодер

Сообщение Nikomas »

N1X писал(а):Ну так перевести код Грея в двоичный
Код буду писать сам и впервые. Подскажете ежели что? Пока жду с Али оптопары.
Ответить

Вернуться в «Электроника»