Снизить разрешение энкодера

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Снизить разрешение энкодера

Сообщение Гагарин »

Всем привет! Подключаю энкодер в качестве штурвала. У него разрешение 2400 имп/об. В режиме setp encoder.0.x4-mode false получаем 600 имп/об. А нужно 100 имп/об. Подогнать через jog-scale не вижу возможным, так как получается число в периоде: 1/6 =0,1(6).

Как можно сделать так, чтоб счет шел только через каждые 6 импульсов?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Serg »

Вернитесь в реальный мир! Укажите коэф. 1.6666667 и посчитайте за сколько оборотов вы получите погрешность в 1 импульс. :)

Ну или соберите из триггеров счётчик-делитель на 6. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Гагарин »

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

Re: Снизить разрешение энкодера

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

Гагарин писал(а):У него разрешение 2400 имп/об. В режиме setp encoder.0.x4-mode false получаем 600 имп/об.
2400 отсчетов и получим. А при true - 9600.
Разрешение квадратурного энкодера, как правило, указывается в полных импульсах с одного выхода на оборот вала.
Чудес не бывает. Бывают фокусы.
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Гагарин »

У меня характеристик его не было. Это я сам так посчитал по показаниям после подключения. 2400 при true, 600 при false. Ну значит энкодер на 600 имп/об.
Пока поставлю 1,(6). А позже, может, компонент напишу для деления шага, раз нет готовых решений.
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Nikomas »

Гагарин писал(а):Подогнать через jog-scale не вижу возможным, так как получается число в периоде: 1/6 =0,1(6)
а дроби задать можно?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Serg »

Nikomas писал(а):а дроби задать можно?
Можно, десятичные. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Nikomas
Мастер
Сообщения: 721
Зарегистрирован: 07 янв 2012, 14:31
Репутация: 64
Откуда: Беларусь
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Nikomas »

Ну в усилках сервов то можно... Вот я и подумал.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11731
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение michael-yurov »

Nikomas писал(а):Ну в усилках сервов то можно... Вот я и подумал.
Там это важно - там может понадобиться движение на большое "расстояние" в одном направлении.
Например, при перемещении ленты транспортера.

А здесь - нет.
Гагарин
Опытный
Сообщения: 142
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение Гагарин »

Появилось у меня решение, как загрубить энкодер. К axis.0.jog-counts подключать не encoder.0.count, а encoder.0.position. Для него можно задать коэффициент position-scale , т.е. количество тиков на единицу перемещения. Но дополнительно надо будет его преобразовать из float в s32.

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

    loadrt encoder 
    addf encoder.update-counters base-thread
    addf encoder.capture-position servo-thread

    loadrt conv_float_s32 
    addf conv-float-s32.0 servo-thread
    

    setp encoder.0.x4-mode 0
    setp encoder.0.position-scale 6 # это то число, на которое мы хотим "загрубить" энкодер


    net conv_in  conv-float-s32.0.in <= encoder.0.position

    net axis_jog   conv-float-s32.0.out => axis.0.jog-counts axis.1.jog-counts axis.2.jog-counts # передаем осям количество "тиков" штурвала

npa
Новичок
Сообщения: 14
Зарегистрирован: 30 янв 2018, 08:20
Репутация: 0
Настоящее имя: Руслан
Контактная информация:

Re: Снизить разрешение энкодера

Сообщение npa »

Я на микроконтроллере делитель разработал как-то-была линия где жестко прописано 25 имп/оборот а родных датчиков не было, 200 имп/оборот поставили. До 20 оборотов в секунду оно работало без пропусков. Даже сделал версию где коэффициент деления джамперами задаётся.
А тут так здорово решается в самой системе...
Ответить

Вернуться в «LinuxCNC»