Укрощение строптивого или тонкая настройка энкодера в Marlin

energuda
Идет загрузка
Загрузка
30.03.2020
4130
10
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Статья относится к принтерам:
Tronxy X5

Укрощение строптивого или тонкая настройка энкодера в Marlin

   Привет всем 3D печатникам и не только!

   Сегодня я хочу поведать вам о настройке энкодера в прошивке Marlin. Точнее о настройке ускорений изменения значений при увеличении скорости вращения ручки энкодера. Дело в том, что во всех инструкциях по настройке прошивки Marlin попавшихся мне на глаза до сего дня говорилось, что настройка энкодера осуществляется в двух строчках файла Configuration.h

Укрощение строптивого или тонкая настройка энкодера в Marlin   В этих строках можно настроить количество шагов на один "щелчок" энкодера (#define ENCODER_PULSES_PER_STEP 1) и сколько шагов надо сделать для перехода на следующий/предыдущий пункты меню (#define ENCODER_STEPS_PER_MENU_ITEM 3).

   И, вроде бы, всё понятно и работает. Проблемы у меня возникают при ручной настройке численных значений имеющих большой диапазон, допустим температура сопла. Если вращать ручку быстрее, то скорость нарастания значений тоже увеличивается. Конкретно на моём Full Graphics Smart Controller практически невозможно настроить точную температуру сопла. Например я хочу выставить 223 градуса, но не получается. То перелёт, то недолёт, а то и вовсе значение убегает в край диапазона 260 градусов.

   В строке #define ENCODER_PULSES_PER_STEP значение можно записать дробное значение, например 1/2. Это приведёт к тому, что энкодер придётся вращать с частотой увеличенной в 2 раза. Но это замедлит энкодер во всех режимах и не приведёт к изменению ускорений при быстром вращении.

   Оказывается, настройка ускорений находится в файле ultralcd.cpp в строчках:

if (encoderStepRate >= ENCODER_100X_STEPS_PER_SEC) encoderMultiplier = 100;

else if (encoderStepRate >= ENCODER_10X_STEPS_PER_SEC) encoderMultiplier = 10;

   Верхняя строка отвечает за быстрое вращение (100 шагов в секунду), а вторая за более медленное (10 шагов в секунду). После знака равенства стоит число, во сколько раз ускоряется нарастание значения при ускоренном вращении. По умолчанию 100 и 10. Я заменил на 30 и 3 соответственно, и теперь могу настраивать температуру с точностью до градуса в любом диапазоне, причём ускорения достаточные, чтобы долго не приходилось крутить ручку энкодера.

Укрощение строптивого или тонкая настройка энкодера в Marlin

   На этом всё. Спасибо за внимание!

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Комментарии к статье