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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

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

Сообщение Гагарин » 02 фев 2017, 17:39

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

Как можно сделать так, чтоб счет шел только через каждые 6 импульсов?
Гагарин
Опытный
 
Сообщения: 120
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий

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

Сообщение UAVpilot » 02 фев 2017, 21:29

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

Ну или соберите из триггеров счётчик-делитель на 6. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17017
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4188
Медальки:
Настоящее имя: Сергей

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

Сообщение Гагарин » 03 фев 2017, 07:03

Если не будет простого решения, так сказать в пару строк, то вариант с 1,66666667 применю))))))
Гагарин
Опытный
 
Сообщения: 120
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий

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

Сообщение Сергей Саныч » 03 фев 2017, 07:57

Гагарин писал(а):У него разрешение 2400 имп/об. В режиме setp encoder.0.x4-mode false получаем 600 имп/об.
2400 отсчетов и получим. А при true - 9600.
Разрешение квадратурного энкодера, как правило, указывается в полных импульсах с одного выхода на оборот вала.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8019
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2500
Медальки:

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

Сообщение Гагарин » 03 фев 2017, 10:07

У меня характеристик его не было. Это я сам так посчитал по показаниям после подключения. 2400 при true, 600 при false. Ну значит энкодер на 600 имп/об.
Пока поставлю 1,(6). А позже, может, компонент напишу для деления шага, раз нет готовых решений.
Гагарин
Опытный
 
Сообщения: 120
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий

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

Сообщение Nikomas » 03 фев 2017, 10:08

Гагарин писал(а):Подогнать через jog-scale не вижу возможным, так как получается число в периоде: 1/6 =0,1(6)

а дроби задать можно?
Nikomas
Мастер
 
Сообщения: 471
Зарегистрирован: 07 янв 2012, 14:31
Откуда: Беларусь
Репутация: 31

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

Сообщение UAVpilot » 03 фев 2017, 10:32

Nikomas писал(а):а дроби задать можно?

Можно, десятичные. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 17017
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4188
Медальки:
Настоящее имя: Сергей

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

Сообщение Nikomas » 03 фев 2017, 15:31

Ну в усилках сервов то можно... Вот я и подумал.
Nikomas
Мастер
 
Сообщения: 471
Зарегистрирован: 07 янв 2012, 14:31
Откуда: Беларусь
Репутация: 31

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

Сообщение michael-yurov » 03 фев 2017, 15:55

Nikomas писал(а):Ну в усилках сервов то можно... Вот я и подумал.

Там это важно - там может понадобиться движение на большое "расстояние" в одном направлении.
Например, при перемещении ленты транспортера.

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

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

Сообщение Гагарин » 30 сен 2017, 19:56

Появилось у меня решение, как загрубить энкодер. К 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 # передаем осям количество "тиков" штурвала

Гагарин
Опытный
 
Сообщения: 120
Зарегистрирован: 18 июн 2015, 17:25
Репутация: 13
Настоящее имя: Юрий

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

Сообщение npa » 30 янв 2018, 08:41

Я на микроконтроллере делитель разработал как-то-была линия где жестко прописано 25 имп/оборот а родных датчиков не было, 200 имп/оборот поставили. До 20 оборотов в секунду оно работало без пропусков. Даже сделал версию где коэффициент деления джамперами задаётся.
А тут так здорово решается в самой системе...
npa
Новичок
 
Сообщения: 13
Зарегистрирован: 30 янв 2018, 08:20
Репутация: 0
Настоящее имя: Руслан


Вернуться в LinuxCNC

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

Зарегистрированные пользователи: alaken, avalter1987, Bing [Bot], euthon, Google [Bot], HPend, ignv, john1987887, Keman, kens, Lafayette, niksooon, Quark, Гагарин, Sashalex24, SDAMASK, Uda4LIVEc, Valek811, verser, Yandex [bot]

Поделиться

Reputation System ©'