UBL ...или как получить идеальный первый слой

Подписаться на 3Dtoday
otumanov
Идет загрузка
Загрузка
11.09.17
9537
98
3D-печать
61
Здравствуй, дорогой друг!

В данной статье попробуем провести кое-какие не хитрые манипуляции с настройкой твоего принтера, чтобы получить идеальный первый слой. А первый слой -- он, как говорится, важный самый))

Многие из вас пользуются при печати на своих принтерах разного рода датчиками для "выравнивания" уровня стола: микро-выключатели на сервоприводах, индукционные, емкостные, более продвинутые BLTouch с датчиком холла. Но, все, что до этого нам могла предложить прошивка Marlin'а -- это было билинейное сканирование поверхности или сканирование по трем точкам. Все, что это давало -- определение самой верхней точки и самой нижней точки по оси Z в углах стола, чтобы построить себе виртуальную ЛИНЕЙНУЮ поверхность (читай ПЛОСКОСТЬ), по которой во время печати поднималась и опускалась голова по оси Z.

Как мы знаем -- идеальных ЛИНЕЙНЫХ поверхностей не бывает) Любое стекло или зеркало, на которых проходит печать имеет кривизну. На стекле могут быть впадины и бугры. Пусть еле заметные, но они есть всегда. И такие вот "буераки" не дают получить идеальный первый слой.
Как же с этим бороться? (далее речь пойдет исключительно о прошивке Marlin и версии не ниже 1.1.2)

С удивлением для себя обнаружил, что на данном ресурсе (да, и на многих других русскоязычных) обошли стороной освещение очень полезной и относительно свежей фишки в Marlin'e -- UBL (Unified Bed Leveling)
Вот что нам говорит мануал об этом --

The Unified Bed Leveling (UBL) system is a superset of the previous leveling systems.
The main improvements over the previous systems are:
  • Optimized line-splitting algorithm. For all mesh-based leveling methods, on Cartesians each linear move is split on grid line boundaries, respecting the best-known measured heights on the bed. UBL highly optimizes this boundary-splitting with pre-calculation, optimized handling of special cases, and avoiding recursion.
  • The user is able to fill in the portions of the mesh that can’t be reached by automated probing. This allows the entire bed to be compensated.
  • It allows the user to fine tune the system. The user is able to modify the mesh based on print results. Really good first layer adhesion and height can be achieved over the entire bed.
Т.е мы имеем дело с новой надстройкой унифицированной системы выравнивания стола, в основу которой были положены все предыдущие версии автовыравнивания. Замеряя уровень стола в разных точка прошивка создает полигональную модель (mesh) стола. Где для каждой границы пересечения вычисляется разница по оси Z, чтобы потом линейной интерполяцией вычислять необходимый уровень головы над столом в конкретной точке. При этом система позволяет вносить вручную точки, до которых не смог дотянуться ваш датчик. Так же, дает возможность редактировать точки, которые уже были просканированы ранее

Для успешной работы UBL требуется:
- хорошо отстроенная механика вашего принтера
- датчик уровня стола (емкостный, индукционный, BLTouch или микровыключатель на приводе сервы)
- изначально известный и настроенный offset по оси Z
- версия прошивки Marlin не ниже 1.1.2
- дисплей с энкодером

Настраиваем прошивку

Подразумеваю, что датчик у вас уже подключен и вы им уже пользовались ранее, т.к. подключение и настройка датчика -- это отдельная тема и тут я ее рассматривать не буду

Первым делом будет лучше разгрузить процессор вашей Меги, путем включения прерываний для обработки концевых выключателей, что даст нам более точную работу концевиков. Находим в конфиге прошивки --

// Enable this feature if all enabled endstop pins are interrupt-capable.
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
//#define ENDSTOP_INTERRUPTS_FEATURE

и убираем комментарий для последней строки. Ок, прерывания включены, но для их правильной работы теперь концевик Ymax или Ymin (который у вас используется) необходимо перенести на Xmax. Для этого идем в конфигурацию портов ввода\вывода (у меня pins_RAMPS.h) и переназначаем вашему концевику новую ногу

//
// Limit Switches
//
#define X_MIN_PIN 3
#ifndef X_MAX_PIN
#define X_MAX_PIN 15
#endif
#define Y_MIN_PIN 14
#define Y_MAX_PIN 2
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19


После этого заливаем прошивку и меняем ФИЗИЧЕСКИ на плате место подключения вашего Y-концевика в Xmax
(Отдельное спасибо за данную подсказку Саше, ака @Ressi)

Проверяем работу всех концевиков. Достаточно просто сделать AutoHome по всем осям. Получилось? Значит продолжаем дальше)

Теперь идем в конфигурацию прошивки и находим вот этом место --

//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING


и убираем комментарий с #define AUTO_BED_LEVELING_UBL
Если вы конфигурируете прошивку, ранее использовавшую какой-то иной метод автоуровня -- его нужно закомментировать (!)

Далее идем сюда --
//===========================================================================
//========================= Unified Bed Leveling ============================
//===========================================================================

#define UBL_MESH_INSET 20 // Mesh inset margin on print area
#define GRID_MAX_POINTS_X 5 // Don't use more than 15 points per axis, implementation limited.
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X

#define UBL_PROBE_PT_1_X 40 // Probing points for 3-Point leveling of the mesh
#define UBL_PROBE_PT_1_Y 250
#define UBL_PROBE_PT_2_X 40
#define UBL_PROBE_PT_2_Y 40
#define UBL_PROBE_PT_3_X 300
#define UBL_PROBE_PT_3_Y 0


#define UBL_MESH_INSET 20 -- расстояние, которое необходимо отступить от края стола при построении сетки.

#define GRID_MAX_POINTS_X 5 -- количество точек (разрешение) сетки. Тут настоятельно рекомендую начать с трех точек, а когда будет понятна механика работы системы -- сможете добавить.

В строках #define UBL_PROBE_PT_x необходимо указать точки (координаты точек) для 3х-точечного измерения уровня (не обязательно, лишь бы вписывались координаты в ваш стол с учетом положения установки датчика уровня относительно оси хотенда)

Теперь ищем вот это --

// Enable the M48 repeatability test to test probe accuracy
//#define Z_MIN_PROBE_REPEATABILITY_TEST


и убираем комментарий. Этим мы разрешаем тестирование "повторяемости" показаний вашего датчика уровня

Вроде, всё) Заливаем прошивку в принтер

Теперь запускаем вашу любимую софтину, которая может работать с принтером через консоль. Первым делом мы говорим принтеру --
M502
M500
M501
Это сделать необходимо для того, чтобы прошивка переинициировала EEprom, т.к данные о полигональной сетке стола будут теперь храниться именно там. Далее отправляем все оси домой --
G28
Теперь надо проверить работу нашего датчика уровня на "повторяемость" показаний. Говорим мы ему --
M48 P4 V2 E L2
Принтер радостно начинает подскакивать на месте и выводить в консоль показания датчика уровня.
6ac0737898e732260588c7a1b96a31da.png
Тут нас интересует строчка Standard Deviation
Чем меньше показания в этой строчке -- тем меньше разброс показаний датчика. В моем случае показывает 5 микрон. Что очень даже гуд )) Если у вас показания будут разнится в десятые доли миллиметра или больше -- такой датчик не годится для дальнейшего использования.
Выяснили, что с датчиком уровня все в порядке и приступаем к обучению системы унифицированного выравнивания стола. Для этого надо дать команду --
G29 P1 T
Теперь необходимо ОЧЕНЬ (!!!) внимательно следить за работой головы, чтобы она не воткнулась куда-нибудь (в профиль или не зацепила прищепку, которая держит стекло. Если зацепляется или ударяется -- снова заходим в конфигурацию прошивки и выставляем другое расстояние от края стола -- #define UBL_MESH_INSET x)
Если все в порядке -- в консоль будут выводится замеры точек полигональной сети вашего стола. Что-то подобное этому --
add10fa76a48b3897689e964d66ae85b.png
По окончанию данной процедуры принтер радостно пропищит и остановится. Обратите внимание на точки слева -- это то, что датчик автоуровня не смог замерить. И это мы сейчас поправим. Но это делать вовсе не обязательно,т.к. умная система автоуровня линейной интерполяцией может самостоятельно рассчитать эти точки. Но если хотите руками их дополнить, то говорим принтеру --
G29 P2
Голова отъезжает в первую точку, которую самостоятельно замерить не смогла. Тут требуется лист бумаги или калиброванный щуп. Подставляете его под сопло и начинаете вращать энкодер. При этом голова будет опускаться или подниматься. Щуп или лист бумаги под головой должен слегка прижаться к столу. Тут все так же, как вы руками стол свой крутите. Только крутим не болты крепления стола, а энкодер )) По окончании настройки энкодер необходимо нажать. Голова поедет на следующую точку и так до конца. Когда все точки будут заданы -- можно попробовать провести тестовую печать. И эту печать мы будем делать прямо из прошивки. Говорим нашему принтеру --
G29 S
этим мы внесли (сохранили) все наши точки в EEprom. Далее
G28
G26 Bxx Hyy F1.75 L0.2 S0.4

где B -- это температура нагрева стола, H -- температура нагрева экструдера, F -- диаметр филамента, L -- высота слоя и S -- диаметр сопла
Предположим, что у нас PLA, сопло 0.4 мм в диаметре, пластик 1.75мм, значит говорим --
G26 B60 H190 F1.75 L0.2 S0.4
Принтер начинает нагреваться до указанных температур и печатает тестовую сетку такого вида --
PREVIEW
По окончании печати сетки можно делать выводы о том, как была настроена система.
Если на печати были точки, которые утоплены в стол или наоборот печатались над столом --
то довольно легко теперь это исправить. С помощью софта или из меню отправляем голову принтера в район точки, которую необходимо отрегулировать и говорим --
G29 P4 T
голова сама встанет на нужную точку и вращением энкодера, глядя на экран, можно регулировать высоту этой точки
Не забываем сохранять то, что мы уже настроили командой
G29 S
После всех регулировок снова повторяем печать через команду G26 Bxx Hyy Fzz Laa Sbb

Таким образом доводите до идеальной печати всю рабочую поверхность стола.

Т.к наш mesh хранится в EEprom'е -- нет нужны перед каждой новой печатью запускать сканирование поверхности. Начальный g-код будет выглядеть довольно просто
G28
G29 A

PS^ возможно, в данной статье я раскрыл не все нюансы работы с новым автоуровнем. Тем не менее -- даже подобных статей в рунете я не нашел) Пришлось разбираться самостоятельно.
Если в последующем будут выявлены какие-то недочеты -- попрошу администратора или модераторов дать возможность внесите коррективы

Всем удачной печати и отличных первых слоев с UBL
Подписаться на 3Dtoday
61
Комментарии к статье

Комментарии

11 Сен 15:18
1
Без экрана с энкодером никак?
11 Сен 15:23
3
В мануале написано -- нет дисплея -- нет UBL
11 Сен 19:41
0
Без экрана с энкодером никак?
Про эту фичу - читал.
Это - первая доходчивая более-менее статья на эту тему.
Именно поэтому я вкрячиваю в мозги моего Геркулеса Ньюэ2016(pre-release edition) - не один, а два дисплейных модуля -
штатный - MKS-TFT28, и дополнительный - LCD2004.

А теперь - Догадайтесь, кто из них играет роль - консольного, а кто - клавиатуры и файлочиталки.

В мануале написано -- нет дисплея -- нет UBL
otumanov, а где ссылка на мануал?
Я должен на слово верить?
Вот эту - нашёл ( http://marlinfw.org/docs/features/unified_bed_leveling.html ),
однако не нашёл в виде оффлайнового .pdf .
Может, подскажете где?
11 Сен 19:50
1
Мануал в онлайне. Разве, мало?
В начале статьи эта же ссылка у меня указана
11 Сен 23:48
0
Разве, мало?
Маловато будет...

Да ладно, сам себе вордовскую копию сбацаю, ожидал что у Вас - получше, чем та, что в онлайне.
12 Сен 09:34
1
21 Сен 17:11
0
Благодарю!
Ski.
11 Сен 15:20
2
Проверяем работу всех концевиков. Достаточно просто сделать AutoHome по всем осям.
M119. А так если что не то, то вполне себе можно укатить бошку. Конечно обычно ни чего смертельного, так моторы пощелкают, но все же...
такой датчик не годится для дальнейшего использования.
Даже если заюзать микрики. Я просто снял коромысло и получается что теперь сама кнопка непосредственно упирается в стол. И все. Повторяемость стала в "допуске" (в допуске смузи).
Если зацепляется или ударяется -- снова заходим в конфигурацию
Так может сразу прогнать просто механику и записать крайние координаты?
Я пробовал в 1.1... вообще ни чего не работало. Наконец таки починили.
А так конечно довольно понятно. Спасибо.
11 Сен 15:28
1
M119. А так если что не то, то вполне себе можно укатить бошку. Конечно обычно ни чего смертельного, так моторы пощелкают, но все же...
Статья для "начинающих" )) А те, кто чего-то понимают -- давно уже сами все себе сделали))
Даже если заюзать микрики. Я просто снял коромысло и получается что теперь сама кнопка непосредственно упирается в стол. И все. Повторяемость стала в "допуске" (в допуске смузи).
Да, это очень удобно и эффективно
Так может сразу прогнать просто механику и записать крайние координаты?
Эмм... Тут вся фишка в том где расположен датчик уровня - сбоку\сзади\спереди.
Кстати, в расширенной конфигурации можно настроить вручную отступы для каждого из четырех сторон стола --


// @section leveling

// Default mesh area is an area with an inset margin on the print area.
// Below are the macros that are used to define the borders for the mesh area,
// made available here for specialized needs, ie dual extruder setup.
#if ENABLED(MESH_BED_LEVELING)
#define MESH_MIN_X (X_MIN_POS + MESH_INSET)
#define MESH_MAX_X (X_MAX_POS - (MESH_INSET))
#define MESH_MIN_Y (Y_MIN_POS + MESH_INSET)
#define MESH_MAX_Y (Y_MAX_POS - (MESH_INSET))
#elif ENABLED(AUTO_BED_LEVELING_UBL)
#define UBL_MESH_MIN_X (X_MIN_POS + UBL_MESH_INSET)
#define UBL_MESH_MAX_X (X_MAX_POS - (UBL_MESH_INSET))
#define UBL_MESH_MIN_Y (Y_MIN_POS + UBL_MESH_INSET)
#define UBL_MESH_MAX_Y (Y_MAX_POS - (UBL_MESH_INSET))
Я пробовал в 1.1... вообще ни чего не работало. Наконец таки починили.
Я сам озадачился только с версии 1.1.4. Ранее даже и не обращал внимания на это, т.к пользовался 1.1 RC7 или 8 (точно не помню)
11 Сен 16:42
3
Статья для "начинающих" ))
M119 не сильно сложнее G28
11 Сен 16:49
1
погоди)
M119 -- это статус концевиков
А G28 -- все оси домой
Т.к. в статье описывается перенос концевика по Y -- просто посмотреть статус не достаточно и не каждый с ходу поймет что эти "кракозябры" значат)
Опять же -- кто-то использует оптические концевики, для которых нужно указывать инверсивную работу. Кто-то обычные микрики -- для них инверсия не нужна. Проще и нагляднее указать G28 и увидеть -- сработало или нет ))
11 Сен 17:58
2
2 предложения объяснения и 2 скрина для наглядности. Я просто предложил более верное решение. Не научный тык ясен пень всегда даст результат...
11 Сен 18:07
2
Ну, я же не спорю) Конечно, можно и так
Кому как удобнее -- Так и поступит :)
11 Сен 15:52
1
Огромнейшее спасибо! Буду пробовать.
11 Сен 16:58
1
Ещё можно полностью откалибровать без датчика. Только енкодером в каждой из точек выставить уровень и сохранить. Остальное всё так же.

А скажите, кто уже разбирался, только первый слой компенсируется по оси Z или все последующие тоже?
11 Сен 18:00
1
Вот с этого места поподробнее пожалуйста
11 Сен 20:39
3
Похоже, я поторопился с ответом ))
В общем, есть возможность завдавать высоту выравнивания
Вот что в мануалах есть на эту тему
f014097d9416fb13ad3e141f66ec9298.PNG
11 Сен 17:00
1
А скажите, кто уже разбирался, только первый слой компенсируется по оси Z или все последующие тоже?
Все слои
11 Сен 17:50
1
Не совсем так, при печати, чем выше тем меньше компенсации по z.
Я так делал, но не на датчик а вручную, тоже с сохранением в eeprom. Не понравилось. Где то как то, все равно не так.
Поставил л китайский bltouch использую ubl но без сохранения. Стандартная команда g29. Тратится некоторое время, но результат устраивает полностью.
11 Сен 18:13
1
То есть в этом режиме стол будет постоянно прыгать вверх вниз при печати каждого слоя?! :)
11 Сен 18:17
1
Да. Так и будет ))
11 Сен 23:45
1
Скажу так. Делаю g29. Принтер строит поверхность. При перемещении на высоте 0.2 миллиметра ось z подруливает высоты, и это видно, а при высоте 100 мм ось z уже не подруливает. Стоит мёртво. Думаю, что компенсация выравнивается в зависимости от высоты модели. Хотя на выходных ещё раз проверю.
14 Сен 21:24
2
подтверждаю, компенсация отключается с ростом высоты и намного меньше 100мм, но засечь точно не смог
11 Сен 17:56
1
Стандартная команда g29
На сколько мне известно и судя по мануалу -- просто G29 ничего не делает в UBL
Уверены, что не билинейная система используется?
11 Сен 23:48
2
Уверен, так как сам переделывал прошивку под bltouch. При команде g29 принтер промеряет 9 точек, хотя можно и больше. Если не ошибаюсь, то до 15 на ось.хотя тут мануал глянуть можно
12 Сен 07:22
1
У вас 100% не UBL
12 Сен 08:33
1
Обоснуйте
12 Сен 09:20
1
В командах управления UBL'ом голый G29 не используется

f86c97e152e1d9929d2c98383af2b88e.png


Запуск сканирования поверхности в UBL начинается с G29 Px или G29 A
И на команду G29 принтер реагирует одиночным "пип" и больше никакой реакции
А вот билиниарная система активируется как раз по G29
12 Сен 12:29
2
На скрине который вы выложили в следующий абзац. Команда g29 производит автоматическую проверку поверхности.
14 Сен 14:05
3
сам дурак, (это про себя) . сейчас проверил прошивку, и действительно не ubl. признаюсь, что я балбес :D
11 Сен 18:04
1
Ещё можно полностью откалибровать без датчика. Только енкодером в каждой из точек выставить уровень и сохранить. Остальное всё так же.
Наверно, можно. Только концевик по Z нужен проходной -- т.е, например, оптический. И установить для него оффсет заведомой в минус, чтобы сопло можно было опускать энкодером и прошивке было от чего отталкиваться
11 Сен 19:44
0
Только концевик по Z нужен проходной -- т.е, например, оптический.
Мысль - хорошая, но - неконкретная.

Zmin или Zmax ?

А может - оба?
11 Сен 19:48
1
Конечно же, Zmin
Отсчёт с ноля начинается
11 Сен 23:54
0
Ok, понял.
Благодарю!
Ski.
11 Сен 20:40
2
Наверно, можно. Только концевик по Z нужен проходной -- т.е, например, оптический. И установить для него оффсет заведомой в минус, чтобы сопло можно было опускать энкодером и прошивке было от чего отталкиваться
Да нет же. Можно откалибровать совсем-совсем без датчиков. Вот тут хорошо описан процесс https://www.diytronic.ru/2017/06/12/3d-printer-bed-tuning-without-any-sensors/ . Я пробовал, работает. Из меню так вообще просто делается -- запустил, по всем точкам прошёл, записал и дальше само подхватывается. Но у меня стол ровный и калибровать я его худо-бедно и так научился, а перекалибровка нужна только после смены сопла...
13 Сен 20:53
1
очень заинтересовало меня это.... Проверил прям вечером ..... делал все по статье, в прошивке все что нужно пооткрывал - на ультумбочке от Ивана -все стандартно, стоит только три концевика один из них Zmax - вручную без всяких датчиков прям из меню прошел 9 точек на столе, под бумажку, сохранил, автоматом включился режим левелинга стола (я так понял что его можно и отключить ), указал LEVELING_FADE_HEIGHT = 5.00 мм (хотя совсем не прозрачно что мм )) ) и на печать большую коробочку(слайсил ее неделю назад - то есть никаких доп команд там и в помине нет ) = результат офигительный - на глазок у меня таких первых слоев на больших площадях чета не получалось (вероятно плохо калибровал или ленился )) ) СПАСИБО за статейку Вам bz007 плюс и естественно автору otumanov за поднятие темы этой
14 Сен 08:32
1
обманул - все таки добавил в код две команды ) - без них никуда после парковки G28 по всем осям надо вставить M501 чтобы прочитать значения из памяти EEPROM и M420 S1 - чтобы значения уровней применялись
12 Сен 00:04
1
Ну у автора индукционный датчик, если что. Да и марли конкретно требует не концевик а датчик.
12 Сен 06:51
1
Датчик ёмкостный)))
12 Сен 08:18
1
А вы уверены? "или я должен вам на слово верить"
12 Сен 08:24
1
LJC18A3-H-Z/BX
http://s.aliexpress.com/UFBfMbUn
ЗЫ: а себе-то вы верите?:D
12 Сен 10:49
1
какой лучше брать датчик?
12 Сен 12:27
1
Bltouch. За 1200 брал
8 Окт 19:32
0
Здравствуйте. Купил себе такой же датчик... Каждый раз перед печатью ЗАНОВО НАСТРАИВАЮ УРОВЕНЬ...
И почему то после выставки "нуля" приходится принудительно поднимать сопло на 2 мм, иначе сопло 5 слоев Шкрябает по стеклу...
11 Сен 21:52
1
реально оромное количество велосипедных решений, вместо того, чтобы на ось z поставить энкодер, сделать площадку без пружин и снимать соплом калибровку в ноль, а для печати тупо использовать правильное смещение от виртуальной поверхности.... ппц
11 Сен 23:59
1
Да, это именно велосипедные решение. Наиболее приемлемо для более менее жёстких принтеров, но с кривыми стёклами и без камер. Для менее жёстких оно не подойдёт. Для более жёстких это лишний геморрой. Самок забавное во всей этой истории, что автор забыл учесть температуры стола и экструдера. Небольшие изменения при нагрев присутствуют, как на столе так и на экструдере. То есть настраивая стол при 20 градусах и экструдере тоже 20, мы не получим необходимых значений для "стол 100 экструдер 245". И даже настроив для этих значений мы опять не получим нужный результат для "стол 70 экструдер 210". Именно из за этого я и перешёл на bltouch.
12 Сен 01:22
1
И как bltouch следит за температурным расширением экструдера?
12 Сен 08:22
1
А никак, просто уже в процессе пробной печати первого слоя если не нравится можно подправить офсет по z. Может я не прав но перед началом печати я прогреваю принтер до нужных температур.
12 Сен 05:41
5
Рабочая зона зона 1200 * 700 * 300 мм . Использую UBL. В качестве датчика bltouch. Стол кривой до ужаса отклонения от -1 мм до +1мм. в принципе полет нормальный но в UBL есть ограничения максимум сетка 15 на 15 .Для больших столов маловато будет (((
31366645f03503c9cd4d5286a96c152a.jpg
12 Сен 08:11
1
Не понял как из z -0,023 и -0,035 получается 5 микрон. Вроде бы 35-23=13? Хотя погрешность меньше 3 соток все
равно вполне достаточна.
12 Сен 08:16
1
Там же четыре измерения подряд, а не два
12 Сен 08:29
1
Поскольку реальные измерения при постройке UBL делаются один раз, а не 4, результат не усредняется как тесте повторяемости.
12 Сен 08:48
1
Проба берется 2 раза)
По-умолчанию в прошивке включено это --

// Use double touch for probing
#define PROBE_DOUBLE_TOUCH
12 Сен 08:57
1
Двойное касание это когда первый раз быстро спускается для грубого нахождения уровня, второй раз медленно касается для точного окончательного измерения. Усреднения нет и по двум замерам.
12 Сен 09:23
1
Странно...

Почему-то я думал, что именно обе пробы берутся для замера...
А оказалось иначе --
92a14432ac8f2f1f00dd23cfd5e245af.png

Извиняйюсь )
12 Сен 09:33
1
Вас смущает что скорость первого касания установлена визуально равной скорости второго касания? Она отдельно в прошивке ставится. Или что надо видеть на этом видео? Что второй тычок врезается в стол также как и первый? Так это вопрос к датчику, а не к алгоритму UBL.
12 Сен 09:37
1
Исправился выше ))
24 Сен 02:07
1
А что у вас за голова такая, с пружинкой?
24 Сен 13:11
1
На видео не моя голова
12 Сен 09:56
2
Простите за вопрос новичка. но прошу пояснить, правильно ли я понял.
После обмера и запоминания стола во время печати экструдер в разных точках стола на разной высоте находиться при постоянной толщине слоя и с каждым слоем эту разницу по Z уменьшает? то есть модель как бы "искривляется" под стол?
А если бы бралась средняя величина кривизны стола и первый слой регулировался бы подачей филамента, больше - меньше. или как?
21 Сен 14:40
1
Вот и мне это непонятное шаманство непонятно...
12 Сен 10:15
1
После обмера и запоминания стола во время печати экструдер в разных точках стола на разной высоте находиться при постоянной толщине слоя и с каждым слоем эту разницу по Z уменьшает? то есть модель как бы "искривляется" под стол?
Именно так и происходит
Только по-умолчанию распространяется на всю высоту детали
Чтобы кривизна не передавалась на всю высоту -- вот тут я выложил что надо делать --
http://3dtoday.ru/blogs/otumanov/ubl-or-how-to-get-a-perfect-first-layer/?commentId=283988#283839
12 Сен 10:46
1
Тогда получается разное межслойное расстояние. Наверное из за небольших величин не особо влияет на прочность изделий.
12 Сен 11:25
1
Не думаю, что глазами можно разглядеть разницу, т.к. он по 2% всего убавляет высоту выравнивания
12 Сен 13:34
2
То есть можно прописать не по оси Z движение, а подачу филамента увеличивать уменьшать и был бы второй слой уже в горизонте. почему интересно так не сделали?
21 Сен 14:43
1
Т.е. вместо того, чтобы напечатать толстый первый слой (0,3, например), который съест всю кривизну стола, мы шаманим, чтобы эту кривизну точно протранслировать на всю высоту детали?
"Во, дают!" (с) Крамаров
22 Сен 12:56
0
тоже не понял прикола. Логичнее так сделать, чем огород городить. Другое дело, у меня печать для конструткиных нужд, мне красота первого слоя не важна, может, кому-то важно, чтобы первый слой выглядел так же идеално как остальные
22 Сен 15:04
0
Т.е. вместо того, чтобы напечатать толстый первый слой (0,3, например), который съест всю кривизну стола, мы шаманим, чтобы эту кривизну точно протранслировать на всю высоту детали?
По-умолчанию происходит именно так -- через всю высоту передается кривизна.
А если сказать перед печатью "M420 Zxx", где хх -- высота, через которую должна пройти "компенсация" стола в мм, то на этой высоте и прекратится передача
24 Сен 02:08
0
По идеет там должен быть плавный fade компенсации. Ну как плавный, хотя бы линейный)
24 Сен 13:12
0
Написано, что по 2% на слой
21 Сен 13:32
1
А в Smoothieboard это уже давным давно есть. Только там смог выровнять свою дельту и заставить ещё нормально печатать первый слой.
22 Сен 10:30
0
На дельте кто нибудь пробовал UBL.
У меня после команды G29 P1 происходит частичное сканирование стола (только четверть от центра к краю).
Где копать?

ps.
Дельта Kossel датчик на голове, соплом об стол.
22 Сен 12:57
0
В любом случае автору спасибо. Заказал датчик, придёт, сравню.
22 Сен 15:22
0
Первым делом будет лучше разгрузить процессор вашей Меги, путем включения прерываний для обработки концевых выключателей, что даст нам более точную работу концевиков. Находим в конфиге прошивки --

// Enable this feature if all enabled endstop pins are interrupt-capable.
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
//#define ENDSTOP_INTERRUPTS_FEATURE
Я верно понимаю что это лучше сделать но не обязательно ?
24 Сен 13:18
0
Софтверные эндстопы (прерывания) в общем случае зависят от скорости/загруженности проца (надо постоянно опрашивать контакт по таймеру) и могут немного переубегать за границу, аппаратные ни от чего не зависят (на самом деле только от того находится ли проц в данный момент внутри другого прерывания и замаскированы ли они)
24 Сен 14:25
0
отличия одного от другого я прекрасно понимаю ) - просто не сильно хочется глубоко лезть в прошивку ) а попробовать UBL есть желание )
22 Сен 15:23
0
вопрос был автору статьи )
22 Сен 15:24
0
// Enable this feature if all enabled endstop pins are interrupt-capable.
// This will remove the need to poll the interrupt pins, saving many CPU cycles.
//#define ENDSTOP_INTERRUPTS_FEATURE
Первым делом будет лучше разгрузить процессор вашей Меги, путем включения прерываний для обработки концевых выключателей, что даст нам более точную работу концевиков. Находим в конфиге прошивки --
Я верно понимаю что это лучше сделать но не обязательно ?
23 Сен 09:26
0
Я верно понимаю что это лучше сделать но не обязательно ?
не обязательно
23 Сен 18:48
0
Добрый день, при этой команде ни чего не происходит G26 Bxx Hyy F1.75 L0.2 S0.4
а точнее у меня команда такая G26 B90 H210 F1.75 L0.2 S0.4
не надо ли снять комментарий с этого

//#define UBL_G26_MESH_VALIDATION // Enable G26 mesh validation
#define UBL_MESH_EDIT_MOVES_Z // Sophisticated users prefer no movement of nozzle

#elif ENABLED(MESH_BED_LEVELING)
23 Сен 21:17
0
конечно, надо 8)
23 Сен 21:57
0
Если снять комментарий то выдаёт ошибку...
24 Сен 00:42
0
Скин покажите
24 Сен 14:51
0
daf365900623176841ec5c13f84d1cba.jpg
29 Сен 22:35
0
Спасибо за статью !!! При смене стекла все операции надо повторить ?
30 Сен 17:23
0
А как учитывать положение датчика уровня относительно оси хотенда ?
6 Окт 07:06
0
Здравствуйте.
У меня такая проблема - когда даешь команду Домой G28 по оси z датчик не видит стола (за границами по X... X=-9) Как это исправить???
6 Окт 10:49
0
Для начала надо указать в прошивке правильное расположение датчика относительно хотенда --


/**
* Z Probe to nozzle (X,Y) offset, relative to (0, 0).
* X and Y offsets must be integers.
*
* In the following example the X and Y offsets are both positive:
* #define X_PROBE_OFFSET_FROM_EXTRUDER 10
* #define Y_PROBE_OFFSET_FROM_EXTRUDER 10
*
* +-- BACK ---+
* | |
* L | (+) P | R <-- probe (20,20)
* E | | I
* F | (-) N (+) | G <-- nozzle (10,10)
* T | | H
* | (-) | T
* | |
* O-- FRONT --+
* (0,0)
*/
#define X_PROBE_OFFSET_FROM_EXTRUDER 30 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 60 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER -3 // Z offset: -below +above [the nozzle]

И, так же, можно включить "безопасную парковку" головы --

// Use "Z Safe Homing" to avoid homing with a Z probe outside the bed area.
//
// With this feature enabled:
//
// - Allow Z homing only after X and Y homing AND stepper drivers still enabled.
// - If stepper drivers time out, it will need X and Y homing again before Z homing.
// - Move the Z probe (or nozzle) to a defined XY point before Z Homing when homing all axes (G28).
// - Prevent Z homing when the Z probe is outside bed area.
//
#define Z_SAFE_HOMING

#if ENABLED(Z_SAFE_HOMING)
#define Z_SAFE_HOMING_X_POINT ((X_MIN_POS + X_MAX_POS) / 2) // X point for Z homing when homing all axis (G28).
#define Z_SAFE_HOMING_Y_POINT ((Y_MIN_POS + Y_MAX_POS) / 2) // Y point for Z homing when homing all axis (G28).
#endif
6 Окт 10:57
1
Еще не могу никак понять - как приблизить сопло к столу...
Сопло на высоте примерно 3 мм ездит над стеклом...
6 Окт 11:01
1
какой датчик уровня используется?
6 Окт 11:04
1
Емкостной LJC18A3-H-Z/BX
6 Окт 11:18
0
на нем есть регулировка чувствительности. Так же -- в настройках принтера можно указать offset
#define Z_PROBE_OFFSET_FROM_EXTRUDER -3 // Z offset: -below +above [the nozzle]
6 Окт 11:24
0
А нельзя вручную в 0 выставить - и "сказать" "запомнить"?
6 Окт 11:43
0
Регулируй чувствительность на датчике, чтобы срабатывал, когда сопло на необходимом расстоянии от стола
6 Окт 12:47
0
Что бы нормально печатать - пришлось выбрать высоту сопла над стеклом примерно 3 мм...
Это нормально???
Почему бы наоборот - не выставить 0 - а потом чтобы поднялось на 0,1-0,2мм?
6 Окт 12:50
0
Еще, почему то, чувствительность датчика каждый раз - пусть немного - но изменяется...
Беда...
6 Ноя 14:59
0
Так что на счёт ошибки при заливки прошивки,

C:\Users\xXx\Documents\Arduino\libraries\U8glib\utility\u8g_rot.c:48:1: warning: (near initialization for 'u8g_dev_rot.dev_fn') [enabled by default]

sketch\G26_Mesh_Validation_Tool.cpp.o: In function `unified_bed_leveling::G26()':

sketch/G26_Mesh_Validation_Tool.cpp:238: undefined reference to `sync_plan_position_e()'

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции для платы Arduino/Genuino Mega or Mega 2560.
11 Ноя 02:38
0
Как только делаю режим UBL перестает компилироваться и выдает ошибку:

c:/program files (x86)/arduino/hardware/tools/avr/bin/. ./lib/gcc/avr/4.9.2/. ./. ./. ./. ./avr/bin/ld.exe: C:\Users\Vladimir\AppData\Local\Temp\arduino_build_10976/Marlin.ino.elf section `.text' will not fit in region `text'

c:/program files (x86)/arduino/hardware/tools/avr/bin/. ./lib/gcc/avr/4.9.2/. ./. ./. ./. ./avr/bin/ld.exe: region `text' overflowed by 60494 bytes

collect2.exe: error: ld returned 1 exit status

exit status 1
Ошибка компиляции для платы Sanguino.

При этом если включить режим 3POINT, то все компилируется нормально. Куда дальше копать уже не знаю.
Пробовал на версиях 1.1.4 и 1.1.6.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

E3DV6 Direct на Anet A6

Дом на колесах прицеп 3D печать

НАМИ - 0143 схз на базе УРАл - 375 3D печать

Превращение гадкого утенка в.... или инженер с дистанционным управлением

Осваиваю Компас-3D и вот сваял сувенирчик из оной игры.

Слайсинг для Химеры в три шага