Что такое babystep z
UNI Форум
Babystep (Z-axis fine-tuning) для Lerdge и Marlin через OctoPrint
Babystep (Z-axis fine-tuning) для Lerdge и Marlin через OctoPrint
Сообщение demonlibra » 03 апр 2020, 14:05
Создать дополнительные кнопки со следующими командами:
Получить текущее значение: M851
Сохранить изменения: M500
Увеличить зазор: M290 Z0.05
Уменьшить зазор: M290 Z-0.05
В Lerdge для корректировки позиции оси Z без изменения координаты используется g-code G39 (Set the Z-axis fine-tuning value)
G39 (Set the Z-axis fine-tuning value)
Description: Set he fine-tuning value of Z-axis
Usage: G39 [S ] [R]
Parameters:
[S ] Holistic compensation value of Z axis
Например, чтобы опустить стол вниз на 0.05 мм (увеличить расстояние между соплом и столом), надо выполнить команду:
G39 S0.05 R
Создать дополнительные кнопки со следующими командами:
Увеличить зазор: G39 S0.05 R
Уменьшить зазор: G39 S-0.05 R Отрабатывает не моментально. Вероятно после завершения очередного перемещения G1/G0. Но пользоваться можно.
Установленное значение сохраняется и после выключения платы.
Дополнительные настройки в Marlin
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Статья относится к принтерам:
На ресурсе есть практически исчерпывающий материал по основным настройкам Marlin. Но дополнительные настройки там затронуты вскользь, и я решил восполнить это упущение. В английский умеют не все, поэтому представляю авторский перевод.
Дополнительные настройки термоконтроля горячего стола:
#define BED_HYSTERESIS 2 //просто выключает подогрев стола, если T>*целевая температура*+BED_HYSTERESIS и включает его, если T B F
Целевая температура устанавливается в значение мин_температура+фактор*se[шагов/сек] и ограничивается в пределах мин_температуры и макс_температуры
Отключается с помощью ввода команды М109 без F. Также, если температура установлена в ‘мин_температура’, то она не меняется с помощью этой функции
#define AUTOTEMP_OLDWEIGHT 0.98
Показ ADC-значений температуры. Команда M105 вместо привычной информации выдаст ADC-значения, прочитанные с датчиков температуры
Предотвращение износа экструдера. Если принтер простаивает, и температура выше, чем MINTEMP, экструдер будет выдавливать некоторое количество филамента с периодом, указанным в параметре SECONDS
#define EXTRUDER_RUNOUT_MINTEMP 190
#define EXTRUDER_RUNOUT_SECONDS 30.
#define EXTRUDER_RUNOUT_ESTEPS 14. //мм филамента
#define EXTRUDER_RUNOUT_SPEED 1500. //скорость экструзии
#define EXTRUDER_RUNOUT_EXTRUDE 100
Это поможет откалибровать датчик AD595, в случае, если он неправильно измеряет температуру.
измеряемая температура определяется как ‘текущая_температура = (измеренная температура * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET’
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 1.0
Эта функция отвечает за контроль над вентилятором охлаждения драйверов ШД. Как подключить доп.вентиляторы читайте здесь. Вентилятор будет включаться тогда, когда хотя бы один из драйверов будет активен и выключаться через установленное время после отключения последнего драйвера.
#define CONTROLLERFAN_SECS 60 //Сколько секунд будет вращаться вентилятор после отключения последнего драйвера
#define CONTROLLERFAN_SPEED 255 // == полная скорость. Можно поставить меньше, если задействованы выходы с PWM.
При первом старте вентилятора он запускается на полной скорости на некоторое время. Это дает уверенный старт перед установлением пониженного PWM-значения (не работает с программным PWM на Sanguinololu). Примечание: это правило, возможно, действительно только для того вентилятора, который включается по команде M106
#define FAN_KICKSTART_TIME 100 //кол-во мс полной скорости
Вентиляторы охлаждения тепловых барьеров экструдеров. Настройте пины-выходы для автоматического включения/выключения, когда соответствующий экструдер достигает температуры выше/ниже указанной в параметре EXTRUDER_AUTO_FAN_TEMPERATURE. Несколько экструдеров могут быть назначены на один и тот же пин, и вентилятор будет включаться тогда, когда любой из экструдеров достигает указанной температуры. О подключении доп.вентиляторов, опять же, смотрите здесь.
#define EXTRUDER_0_AUTO_FAN_PIN 4 (-1 для отключения)
#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255 // == полная скорость. Можно поставить меньше, если задействованы выходы с PWM.
При включении этой настройки концевые выключатели используются только для парковки
Включает драйвер ШД оси Z в последний момент. Нужна в случае перегрева соответствующего драйвера ШД.
Обычно используется один драйвер ШД для управления двумя моторами на оси Z. Раскомментируете для использования раздельных драйверов на каждый ШД Z-оси. Такую функцию поддерживают лишь некоторые платы, например, RAMPS, у которой есть поддержка 2 экструдеров (используется второй, обычно неиспользуемый драйвер ШД) Пины управления указаны для RAMPS, в случае другой платы исправьте их на свои. На 5-драйверной плате включение этой функции ограничит вас возможностью использования только одного экструдера
То же самое для Y-оси
Раскомментируйте, если есть необходимость, чтобы ШД по Y врашались в разные стороны
#define INVERT_Y2_VS_Y_DIR true
Функция поддержки принтеров с двойной Х-кареткой. Подобная конструкция имеет преимущество, т.к. неактивный экструдер может быть запаркован, что предотвратит вытекание горячего пластика из сопла, который загрязняет печать. Также это снижает общий вес каждой Х-каретки, позволяя печатать с более высокими скоростями
Конфигурация для второй Х-каретки
#define X2_MIN_POS 80 // устанавливает минимальное расстояние, при котором вторая Х-каретка не задевает запаркованную первую Х-каретку
#define X2_MAX_POS 353 // максимальное расстояние между соплами, когда обе каретки запаркованы
#define X2_HOME_DIR 1 // вторая каретка всегда паркуется в концевой выключатель максимальной позиции
Однако в этом режиме значение EXTRUDER_OFFSET_X для второго экструдера предоставляет программное переопределение для X2_HOME_POS. Это также позволяет выполнить рекалибровку расстояния между концевыми выключателями без модификации прошивки (через команду M218 T1 Xn).
Помните: вы должны установить смещение второго экструдера равным нулю в вашем слайсере.
Пины для драйвера ШД второй Х-каретки (задаются здесь, чтобы не усложнять pins.h)
#define X2_ENABLE_PIN 29
#define X2_STEP_PIN 25
#define X2_DIR_PIN 23
Есть несколько режимов движения для двойной Х-каретки, которые можно выбирать через команду M605 S
Режим 0: Полный контроль. Слайсер полностью контролирует обе Х-каретки и может достичь оптимальных траекторий, но только если он поддерживает двойные X-каретки. (M605 S0)
Режим 1: режима авто-парковки. Прошивка будет автоматически парковать и снимать с парковки Х-каретки при ‘смене инструмента’, поэтому отдельная поддержка слайсером не требуется. (M605 S1)
Режим 2: режим дупликации. Прошивка будет копировать все действия первой каретки второй кареткой. Это позволяет печатать 2 одинаковых модели одновременно. (смещение по X и разница температур задается как M 605 S2 [Xnnn] [Ryyy]. Обратите внимание, что параметр R, отвечающий за температуру, задается в относительных величинах. Например, при значении R2 второй объект будет напечатан пластиком, нагретым на 2 градуса выше).
Эта строка определяет режим по умолчанию для двойной Х-каретки, который может быть позже сменен командой М605.
#define DEFAULT_DUAL_X_CARRIAGE_MODE 0
Настройки по умолчанию в режиме авто-парковки
#define TOOLCHANGE_PARK_ZLIFT 0.2 // величина подъема Z при парковке экструдера
#define TOOLCHANGE_UNPARK_ZLIFT 1 // величина подъема Z при снятии с парковки экструдера
Смещение по умолчанию для оси Х в режиме дупликации (обычно устанавливается в половину ширины печатной области)
#define DEFAULT_DUPLICATION_X_OFFSET 100
При парковке каретка каждой из осей активирует концевой выключатель, а затем отъезжает обратно на указанную ниже дистанцию прежде, чем медленно запарковаться снова:
#define X_HOME_RETRACT_MM 5
#define Y_HOME_RETRACT_MM 7
#define Z_HOME_RETRACT_MM 3
#define QUICK_HOME //при активации этого параметра по команде G28 X Y оси одновременно совершат парковку, а не по отдельности.
Отсчет в относительных величинах для осей X, Y, Z, E
По умолчанию драйверы на основе А4988 требуют сигнал высокого уровня для шага. Однако, некоторые мощные драйверы могут требовать сигнал низкого уровня. Инверсия сигналов делается установлением параметра в true:
#define INVERT_X_STEP_PIN false
#define INVERT_Y_STEP_PIN false
#define INVERT_Z_STEP_PIN false
#define INVERT_E_STEP_PIN false
Время, по истечению которого отключаются драйверы ШД в простое. Выставьте 0 для отключения.
#define DEFAULT_STEPPER_DEACTIVE_TIME 60
Подачи для ручных движений с панели (X Y Z E) (для ultipanel)
#define MANUAL_FEEDRATE // устанавливает скорость для ручных движений (мм/мин)
Если файл распечатан, то функция отключает все шаговики
#define SD_FINISHED_STEPPERRELEASE true
Возможно, ось Z нужно будет удерживать, поэтому оси можно отключить по отдельности
#define SD_FINISHED_RELEASECOMMAND ‘M84 X Y Z E’
Функция для съемки процесса печати
#define CHDK 4 //пин для срабатывания CHDK, чтобы сделать фото. Как этим пользоваться см. здесь.
#define CHDK_DELAY 50 //насколько долго в мс пин будет находиться в логической единице перед переходом в ноль
Показывать полосу прогресса печати на дисплеях HD44780 при печати с SD
(только для функции #define LCD_PROGRESS_BAR)
Определяет, сколько времени в мс будет показыватьсяполоса
#define PROGRESS_BAR_BAR_TIME 2000
Определяет, сколько времени в мс будет показываться сообщение статуса
#define PROGRESS_BAR_MSG_TIME 3000
Время (мс) удержания статус-сообщения (0=навсегда)
#define PROGRESS_MSG_EXPIRE 0
Раскомментируйте это для того, чтоюы сообщений показывались в течение времени MSG_TIME, а потом скрывались
Аппаратный ‘наблюдатель’ перезагрузит контроллер и отключит все выходы, если прошивка зависнет и не сможет выполнять регулировку температуры
Если у вас случилась перезагрузка ‘наблюдателем’ в Arduino Mega2560, то устройство будет висеть ‘вечно’, т.к. перезагрузка ‘наблюдателем’ оставляет самого ‘наблюдателя’ включенным. Функция ‘WATCHDOG_RESET_MANUAL’ обходит это, не используя аппаратную перезагрузку. Однако, ЭТА ФУНКЦИЯ НЕБЕЗОПАСНА и будет работать только в том случае, если прерывания отключены. И код может зависнуть при выполнении прерывания с отключенными прерываниями.
Включает опцию остановки печати с SD при срабатывании концевых выключателей, требует включения через меню LCD-экрана при активации в прошивке.
Babystepping позволяет пользователю двигать осями в небольших пределах независимо от обычного процесса печати. Например, это может быть использовано для смены высоты по Z в реальном времени. Не зависит от концевых выключателей!
#define BABYSTEP_XY //не только по Z, но также и по XY в меню
#define BABYSTEP_INVERT_Z false //true для инверсии движений по Z
#define BABYSTEP_Z_MULTIPLICATOR 2 //более быстрые движения по Z
Адванс-константа экструдера. Или Velocity-режим экструдера. (Extruder advance constant (s2/mm3)) Эта настройка должна помочь избавиться от капель на периметрах детали при печати, может быть полезна для Bowden-экструдеров. Подробнее здесь, здесь, здесь и здесь Вкратце о ее работе: экструдер начинает и прекращает давить пластик несколько раньше, чтобы давление в сопле успевало нарастать и спадать в нужное время. Подобная функция есть в Slic3r и, возможно, других сласерах.
#define STEPS_PER_CUBIC_MM_E (количество шагов экструдера/площадь экструзии)
И еще несколько интересных строк из configuration.h:
Увеличение частоты ШИМ вентилятора. Убирает назойливый звук, гл увеличивает нагрев мосфета/микроконтроллера
Использование программного PWM для управления вентилятором, как и для подогревателей. При этом используется очень низкая частота, которая не так раздражает (звуком). С другой стороны, если частота слишком мала, ее нужно увеличить параметром SOFT_PWM_SCALE.
#define SOFT_PWM_SCALE 0
Еще одна функция для съемки процесса печати (активация командой M240) через эмуляцию Canon RC-1 Remote. Подробнее здесь #define PHOTOGRAPH_PIN 23
Поддержка кондитерского экструдера BariCUDA #define BARICUDA
Наиболее полезные, на мой взгляд, функции:
#define EXTRUDER_0_AUTO_FAN_PIN 4
Пара мелочей, которые, возможно, будут нужны при использовании вентилятора обдува на низкой скорости
#define FAN_KICKSTART_TIME 100
Можно поиграться с величиной ретракта при парковке, чтобы чуточку ускорить этот процесс
#define X_HOME_RETRACT_MM 5
#define Y_HOME_RETRACT_MM 7
#define Z_HOME_RETRACT_MM 3
Эта команда значительно ускоряет парковку
Уже неоднократно перезапускал печать из-за неправильного значения z-offset. С помощью этой функции можно будет в реальном времени опустить каретку и не перезапускать печать снова
Эта функция, вероятно, поможет побороться с рассинхроном Z-оси на Prusa i3
Настройки filament sensor’а не стал включать потому, что им будет посвящена отдельная статья.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Z-Babystepping Issue #6488
Comments
jasoncross commented Apr 28, 2017 •
I have the following in my advanced config:
Running the RCBugfix version from two days ago with UBL enabled.
The text was updated successfully, but these errors were encountered:
Roxy-3D commented Apr 28, 2017
I don’t have an answer for what you describe while printing. But I did verify what you see with an RCBugFix from two days ago running UBL.
If I power up the printer. And drop into Z-BabyStepping with a Double Click of the Encoder Wheel. The system will not adjust the Z-Height. However. Once I do a G28, Z-BabyStepping works as expected. It would seem to me Z-BabyStepping should work even with the printer in a non-homed state.
Roxy-3D commented Apr 28, 2017 •
This is not a UBL issue. I just tried it with all bed leveling turned off and the same thing happens.
But. That is what the code is intending to happen:
The author of the code very clearly did not want baby stepping to happen on an axis unless the axis had been homed. Probably. That was done for safety and to protect the machine. But, the baby steps are under the user’s control.. So I would be OK with relaxing that constraint. (At least right now, with what I know. )
jasoncross commented Apr 28, 2017
I just did a G28 and then went into baby stepping and still it didn’t actually change my z-axis.
@Roxy-3D Do you have #define BABYSTEP_ZPROBE_OFFSET enabled?
Roxy-3D commented Apr 28, 2017
No. Actually. I’m kind of scared of that option. I didn’t notice that when you posted your Configuration.h settings. If I had noticed that, I would have requested you turn that off.
The problem with that option in UBL is I have zero test time on what happens when the zprobe_zoffset number shifts. And in fact, when somebody is trying to bring up UBL, I urge them as a very first step to get their Z_PROBE_OFFSET_FROM_EXTRUDER number very accurately set because that helps things later.
jasoncross commented Apr 28, 2017
I wonder if it’s an issue when that is set. Will turn it off and test when I can.
jasoncross commented Apr 28, 2017 •
Confirmed! When BABYSTEP_ZPROBE_OFFSET is disabled in firmware, double-clicking changes the screen to «babystepping» and it DOES move the Z-axis in real time. When BABYSTEP_ZPROBE_OFFSET is enabled, the screen changes to «Z-Axis Offset» and it changes that, but not the Z-level itself.
Based on the comment in firmware of «// Enable to combine M851 and Babystepping» I’d say something is wrong there as I’d expect both to change.
Roxy-3D commented Apr 28, 2017
To fix this code before Sunday is much too complex. For now. Please just turn it off and we will circle back and try to figure out the right way to handle this after v1.1.0 gets tagged.
But until that time. if you want to shift the mesh height up or down with UBL. You can do a G29 P6 C #
Tannoo commented Apr 29, 2017
Tannoo commented Apr 29, 2017
And before that, it was discussed here: #5887
jasoncross commented Apr 29, 2017 •
Neither of those explain why BABYSTEP_ZPROBE_OFFSET being enabled is keeping babystepping from actually moving the z-axis.
Tannoo commented Apr 29, 2017
If it is homed, or knows it’s location, it should work fine. It did the last time I used it.
Tannoo commented Apr 29, 2017
I can check it again in the morning.
jasoncross commented Apr 29, 2017
It’s homed. It knows it’s location. It’s not moving the z-axis.
Tannoo commented Apr 29, 2017
I have found also that I had to set the multiplicator to 20 to get the movement I wanted.
jasoncross commented Apr 29, 2017
I have found also that I had to set the multiplicator to 20 to get the movement I wanted.
Tannoo commented Apr 29, 2017
It used to work just fine with the multiplicator at 4 for me. Something got changed and had to increase that.
Tannoo commented Apr 29, 2017
I will see what my printer does in the moring. Atm, I am at work.
jasoncross commented Apr 29, 2017
Cranking the wheel until it shows a new offset a full mm SHOULD BE noticeable regardless of how many clicks it takes. Plus as I also said in an earlier post, when the Z Probe offset option is disabled, I can tell it’s moving.
Tannoo commented Apr 29, 2017
Yeah, I do have my inductive probe offset in all three directions.
jasoncross commented Apr 29, 2017 •
#define BABYSTEP_ZPROBE_OFFSET // Enable to combine M851 and Babystepping
Is set. Not if the z probe offset is set in general.
jasoncross commented Apr 29, 2017
Are you sure planner.abl_enabled is being set to true with UBL? Not finding in code where it is.
Tannoo commented Apr 29, 2017 •
Tannoo commented Apr 29, 2017
Maybe someone else will find the «real» fix.
jasoncross commented Apr 29, 2017 •
I have confirmed that this issue is a combination of UBL and BABYSTEP_ZPROBE_OFFSET.
The root cause appears to be that when BABYSTEP_ZPROBE_OFFSET is set, the axis isn’t allowed to move unless planner.abl_enabled is set to true.
And now it moves the axis while babystepping with z-offset while using UBL.
A likely better fix would be to update the code in Marlin_main.cpp to set planner.abl_enabled to true when using UBL (as it does now with other leveling) but I don’t know if that was omitted intentionally due to some other issue or if it was an oversight.
jasoncross commented Apr 29, 2017
Doing it my way above throws a scope error when compiling without UBL, so it looks like planner.abl_enabled may be the only way to go.
tcm0116 commented May 4, 2017
The author of the code very clearly did not want baby stepping to happen on an axis unless the axis had been homed.
As the author of that change, I can confirm that. On my machine, trying to babystep a motor while it’s disabled results in a somewhat violent movement as the motor is enabled, stepped, and then disabled for each babystep.
I have confirmed that this issue is a combination of UBL and BABYSTEP_ZPROBE_OFFSET.
These two features were developed independently, so this make sense.
Doing it my way above throws a scope error when compiling without UBL
The following should work in Marlin_main.cpp with a similar approach being used in ultralcd.cpp :
Roxy-3D commented May 4, 2017
The author of the code very clearly did not want baby stepping to happen on an axis unless the axis had been homed.
As the author of that change, I can confirm that. On my machine, trying to babystep a motor while it’s disabled results in a somewhat violent movement as the motor is enabled, stepped, and then disabled for each babystep.
Hey. THANK YOU FOR YOUR BABYSTEP WORK! I love Z-BabyStepping.
tcm0116 commented May 4, 2017
Hey. THANK YOU FOR YOUR BABYSTEP WORK! I love Z-BabyStepping.
Just to clarify, I worked on the BABYSTEP_ZPROBE_OFFSET feature and also added the if (axis_known_position[axis]) one-liner 😁
[BUG] Babystep/Z probe offset problem #20706
Comments
ghost commented Jan 7, 2021 •
Marlin 2.0.7.2 (also with bugfix 2.0.x)
Baby stepping/Z probe offset doesn’t really work. No matter where I set it (plus or minus), the head not move from the table.
Z = Closed loop driver
Touch-Mi bed level sensor
BTT GTR v1.0
XYE = TMC2209
Previous answer:
«It’s working, your config that is «wrong». You set BABYSTEP_MULTIPLICATOR_Z to 1. so, each baby step command will move only one single step! You set 682 steps per mm in your Z. So you need to command 682 times to move a SINGLE MILLIMETER.»
The text was updated successfully, but these errors were encountered:
rq3 commented Jan 7, 2021
ghost commented Jan 8, 2021
No, Babystep (if you double-click on the menu) is already alive as you rotate the knob. No need to press.
rq3 commented Jan 8, 2021
No, Babystep (if you double-click on the menu) is already alive as you rotate the knob. No need to press.
Interesting. Our printers work differently. On mine, there are two ways to get to babystep. One is a double click from the main screen, and the other is through the «Tune» menu. In both cases, the babystep doesn’t actually happen until I enter the required Z axis distance, and THEN enter it. The z axis doesn’t actually move while the babysteps are being entered.
ghost commented Jan 8, 2021
No, Babystep (if you double-click on the menu) is already alive as you rotate the knob. No need to press.
Interesting. Our printers work differently. On mine, there are two ways to get to babystep. One is a double click from the main screen, and the other is through the «Tune» menu. In both cases, the babystep doesn’t actually happen until I enter the required Z axis distance, and THEN enter it. The z axis doesn’t actually move while the babysteps are being entered.
So far, in the case of double-clicking, Babystep from the main menu worked without pressing a button.
sortagreg commented Jan 10, 2021
I am having this exact same issue. I can spin that knob to be +-2.000mm and nothing changes.
Norien commented Jan 10, 2021
Posting to follow along as I also can’t get live z-offset or babystep to work. Thanks
rhapsodyv commented Jan 10, 2021
ghost commented Jan 11, 2021
Now works with this settings, but the Probe Z Offset not synchronized with babystep.
How can i syncronizing this two value?
rhapsodyv commented Jan 11, 2021
Because, having BABYSTEP_ZPROBE_OFFSET enable, it sincronizes with Probe Z Offset.
ghost commented Jan 11, 2021 •
Send: M851
Recv: Probe Offset X47.0000 Y-7.0000 Z-4.0000
In the first video see the problem. Baby step and Probe Z offset is not in syncron.
ghost commented Jan 23, 2021
ghost commented Jan 23, 2021
it doesn’t matter where I turn the Z-probe, the bed just moves down. It looks perfectly good in the video.
0-02-05-7B0bb669c69873efef84ef4cd291a173c0fff397152f0479a2f7f0ba9b2962b7.713945A5-1.mp4
rq3 commented Jan 23, 2021
kevinpawsey commented Feb 18, 2021
I had this similar issue, it wasn’t ‘live’ stepping. I had to set BABYSTEP_WITHOUT_HOMING and BABYSTEP_ALWAYS_AVAILABLE to get it to work.
One thing that I am finding is that I can’t do the double-click to get to the Z-Offset adjustment menu quickly (at the moment I am just living with it. although would be nice to have it back). If I try and enable DOUBLECLICK_FOR_Z_BABYSTEPPING, it conflicts with (I think) BABYSTEP_ALWAYS_AVAILABLE, which then means that there has to be movement for it to work.
Anyway, might be worth checking the first two options to make sure that they are enabled for live babystepping?
Sh8tan commented Mar 10, 2021
I get problem too with BABYSTEP_ZPROBE_OFFSET but looks like different for me.
BABYSTEP_ZPROBE_OFFSET are enable and replace babystep, no issues with movement, it goes up and down during print as expected for a perfect first layer but after print and doing a m500 the new offset is not applied for the next print, i still have to adjust the first layer.
When i check if the z probe offset was modified, there is no problems but not applied.
Or someone can explain what are expected when BABYSTEP_ZPROBE_OFFSET is uncommented