Страница 5 из 5

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

Добавлено: 31 янв 2019, 15:20
Кулибин1437
я там выше поправил про бит направления.
А про код Грея в мануале чтото написано.
То есть полученные двоичный код надо как то преобразовать в грея?

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

Добавлено: 31 янв 2019, 15:22
Сергей Саныч
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.

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

Добавлено: 31 янв 2019, 15:27
Сергей Саныч
Кулибин1437 писал(а):полученные двоичный код надо как то преобразовать в грея?
Наоборот. Из Грея в двоичный. https://ru.wikipedia.org/wiki/%D0%9A%D0 ... 0%BE%D0%B4

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

Добавлено: 31 янв 2019, 15:50
Кулибин1437
если там код грея, то почему получалось
Сергей Саныч писал(а):16777215 = 2^24-1

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

Добавлено: 31 янв 2019, 16:13
Сергей Саныч
Кулибин1437 писал(а):если там код грея, то почему получалось

Сергей Саныч писал(а):
16777215 = 2^24-1
Мы же принимали код "все единицы" с выключенного энкодера :)

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

Добавлено: 31 янв 2019, 16:13
Кулибин1437
26 бит быстро.png (3237 просмотров) <a class='original' href='./download/file.php?id=155874&mode=view' target=_blank>Загрузить оригинал (120.9 КБ)</a>
После обнуления 26 бит быстро.png (3237 просмотров) <a class='original' href='./download/file.php?id=155873&mode=view' target=_blank>Загрузить оригинал (120.31 КБ)</a>
Сергей Саныч писал(а): То есть выведи все 26.
все 26 бит.png (3237 просмотров) <a class='original' href='./download/file.php?id=155872&mode=view' target=_blank>Загрузить оригинал (119.59 КБ)</a>
Я вывел все 26 бит
менял вращения. какая то картинка ускоренно выводила. Я уже стал путаться, похоже устал :yawn:

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

Добавлено: 31 янв 2019, 16:21
Кулибин1437
Сергей Саныч писал(а):Мы же принимали код "все единицы" с выключенного энкодера :)
да при выключенном энкодере :D :good:
теперь надо биты грея сперва превратить в нормальные а потом в десятичные или... :shock:

Короче надо почитать про грея :relsa:

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

Добавлено: 31 янв 2019, 16:45
Сергей Саныч
Значит, так. Имеем предположения по битам:

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

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

Но это не более чем домыслы, смотреть надо.

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

Добавлено: 01 фев 2019, 09:01
Кулибин1437
Я сегодня запрос китайцам отправил. Может распишут содержание бит.
Вот прилагаю инструкцию счётчика, который они предлагают с данным энкодером.
Там про биты чтото скудненько есть.
SMM1312 manual.pdf
(498.81 КБ) 480 скачиваний
.
И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((

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

Добавлено: 01 фев 2019, 10:03
Сергей Саныч
Кулибин1437 писал(а):И буду пытаться скетч составить про код грея, чтото ничего готового не нашёл(((
Так я ж приводил ссылку на вики, там готовый сишный код есть.

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

unsigned int graydecode(unsigned int gray) 
{
    unsigned int bin;
    for (bin = 0; gray; gray >>= 1) {
      bin ^= gray;
    }
    return bin;
}
Кстати, для выкладывания кода на форум советую пользоваться соответствующим тегом (пятый слева в строке тегов в полной форме ответа). Резко улучшает читабельность.

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

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

Диск уже набросал:
2019-09-16_122255.jpg (2784 просмотра) <a class='original' href='./download/file.php?id=168971&mode=view' target=_blank>Загрузить оригинал (241.61 КБ)</a>
Забыл добавить метки для обнуления (HOME): 1111.

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

Добавлено: 16 сен 2019, 13:37
N1X
Ну так перевести код Грея в двоичный, а дальше простое сравнение...

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

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