Металл2024 Реклама
Метобр2024 Реклама

Мой вариант BLinTouch

chernykh986
Идет загрузка
Загрузка
24.06.2019
7058
36
Техничка

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

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

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

23

Мой принтер – TronXY P 802 системы Priusa i 3 изначально не был оснащен автоуровнем. Наличие механического конечного выключателя по оси Z приводило к тому, что стол чуть-ли не перед каждой печатью приходилось подстраивать. Ну, и стол у меня «кривоват», хоть и немного. Исследуя, какие датчики можно использовать для построения автоуровня, пришел к выводу, что, возможно, лучшим является датчик BLTouch. Однако этот датчик требует отдельного выхода платы для управления им, и желательно, отдельного разъема для подключения самого датчика. Ни того ни другого на моей плате Melzi V 2.05 нет. Найти в Internet примеры подключения BLTouch к такой плате тоже не удалось. Но тут на глаза попалась статья о самодельном датчике со щупом – BlinTouch: https://3dtoday.ru/blogs/mad3d/blintouch/ . Датчик подключается в разъем Z - STOP, а опускание щупа датчика производится вручную один раз перед началом печати. Втягивание щупа производится автоматически с помощью постоянного магнита при опускании датчика до определенного уровня. Таким образом, данный датчик можно подключить к такому «динозавру» как Melzi V 2.05. Придумать как по-простому установить на своем принтере разработанную автором конструкцию, я не смог. Щуп (Г-образный шестигранный ключ) у меня в наличии был размером 2.5 и длиной 48мм. Под него и спроектировал корпус. В качестве оптического датчика использовал инфракрасный датчик https://ru.aliexpress.com/item/32886394063.html?spm=a2g0s.9042311.0.0.274233edfkzjJB :

Мой вариант BLinTouch

Важно отметить, что питание датчика +5В. При срабатывании выход датчика замыкается на землю, т.е. он работает как обычный механический конечный выключатель.

В целом конструкция датчика получилось такой:

Мой вариант BLinTouch



Магнит, к которому притянут щуп в нерабочем состоянии имеет диаметр 8 мм и толщину 3 мм, неодимовый: https://ru.aliexpress.com/item/32860947243.html?spm=a2g0s.9042311.0.0.274233ed4JK6Hx

Эксперименты показали, что щуп притягивается при приближении к магниту на 4 мм.

BlinTouch я решил подключить параллельно датчику ENDSTOP Z, дабы иметь возможность печатать и без автоуровня. Причем, существующий механический датчик убрать, а сделать оптический. Схема подключения датчиков к плате принтера получилась такой:

Мой вариант BLinTouch

Выходные сигналы датчиков объединены по «И» (элемент DD 1.1 микросхемы 155ЛА3). Есть возможность переключения выходного сигнала с «прямого» на «инверсный» (перемычка PLS -3). Светодиод HL1 своим «погасанием» сигнализирует о срабатывании датчиков. Поскольку от Melzi идет напряжение питания +12В, а датчики и микросхема требуют +5В, пришлось поставить модуль преобразователя 12В->5В (K 78 L 05-500 R 3).

Далее схема была собрана на макетной плате:

Мой вариант BLinTouch

Проверена, отлажена, испытана.

В Sprint Layout разработана печатная плата:

Мой вариант BLinTouch

И ЛУТ-методом изготовлена:

Мой вариант BLinTouch

Мой вариант BLinTouch

Дорожки облужены, элементы установлены и пропаяны:

Мой вариант BLinTouch

Дополнительно еще была изготовлена шторка датчика ENDSTOP Z .

И, наконец, все установлено на принтер:

Мой вариант BLinTouch

Сам BlinTouch крепится к печатающей головке с помощью фигурной (дабы не перекрывать поток воздуха от вентилятора) пластины из текстолита.

Шток датчика смещен относительно сопла по оси X на -45 мм, и по оси Y на -31 мм. Определить это несложно – достаточно положить на стол лист бумаги, опустить сопло «в ноль», опустить щуп и замерять расстояния по X и по Y. Особая точность здесь не нужна.

Точка срабатывания BLinTouch смещена относительно нижней точки сопла на -16.67 мм. С этим параметром не сложнее, но муторнее. Кладем на стол лист бумаги. Перемещаем экструдер в середину стола и опускаем «в ноль». Винтами стола настраиваем расстояние между столом и соплом, чтобы лист перемещался с небольшим усилием (в общем, как обычно…). Далее поднимаем экструдер и перемещаем его так, чтобы щуп оказался в центре стола (т.е. на 45 мм по X и 31 мм по Y). Убираем лист. Опускаем (лучше из Repetier - Host или аналогичного терминала) сначала по 1 мм, потом по 0.1 мм, и потом по 0.01 мм. Как только датчик сработает (светодиод погаснет) смотрим расстояние по Z. Отнимаем от него 0.1 мм (толщина листа). Это и будет нужное расстояние. У меня получилось 16.65 – 0.1 = 16.55 мм. Это значение не является окончательным. В процессе пробных печатей, я изменил это расстояние до 16.67 мм (предпочитаю, чтобы первый слой слегка был «вмазан» в стол).

Далее прошивка. Скачал Marlin 1.1.9 и сконфигурировал его под автоуровень. За основу взял эту инструкцию: https://3dua.info/topic/9-nastroyka-induktsionnogo-i-emkostnogo-zondov-v-marlin/ .

Итак, изменения в прошивке, в секции Z Probe Options:

// Выбираем способ подключения датчика (в разъем Z_MIN):

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

// Выбираем тип датчика. Датчик не требующий команды для включения.

// Для BLinTouch - аналогично индуктивному, подключаемому в разъем датчика Zmin.

#define FIX_MOUNTED_PROBE

// Пробы берутся при горячем столе и экструдере. Комментарий не убираем.

// #define PROBING_HEATERS_OFF // Turn heaters off when probing

// Вентилятор должен быть выключен. Комментарий не убираем.

// #define PROBING_FANS_OFF // Turn fans off when probing

// Задаем смещение штока датчика относительно сопла со знаком 'минус' (левее сопла на 45 мм ) по оси X:

#define X_PROBE_OFFSET_FROM_EXTRUDER -45 // X offset: -left +right [of the nozzle]

// Задаем смещение штока датчика относительно сопла со знаком 'минус' (ближе сопла на 31 мм ) по оси Y:

#define Y_PROBE_OFFSET_FROM_EXTRUDER -31 // Y offset: -front +behind [the nozzle]

// Задаем смещение точки срабатывания датчика относительно сопла со знаком 'минус' (ниже сопла на 16.67 мм ) по оси Z:

#define Z_PROBE_OFFSET_FROM_EXTRUDER -16.67 // Z offset: -below +above [the nozzle]

// Задаем минимальное расстояние от штока датчика до края стола

#define MIN_PROBE_EDGE 10

// Задаем скорость перемещения по X и Y между замерами (в мм/мин ):

#define XY_PROBE_SPEED 8000

// Задаем количество замеров в каждой точке

#define MULTIPLE_PROBING 2

// Задаем возможность проводить замеры точности командой M48. Например: 'M48 P10 X100 Y100 V4 E L2'.

#define Z_MIN_PROBE_REPEATABILITY_TEST

// Отключаем срабатывание датчика при движении по оси Z. Дает возможность отрицательных перемещений по оси Z.

//#define MIN_SOFTWARE_ENDSTOP_Z

// Задаем величину на которую поднимется экструдер перед выполнением команды G29.

// Величина выбирается достаточно большой, чтобы опущенный шток не зацепился за стол:

#define Z_CLEARANCE_DEPLOY_PROBE 30 // Z Clearance for Deploy

// Выбираем режим автокалибровки стола

#define AUTO_BED_LEVELING_BILINEAR

// Включаем режим расчета в промежуточных точках

#define ABL_BILINEAR_SUBDIVISION

//Задаем перемещение экструдера после калибровки в нужную точку

//#define Z_PROBE_END_SCRIPT 'G1 X110 Y110

G1 Z1.5

G1 Z10'

Вполне возможно, что размер прошивки окажется слишком большим и она не поместится в память. Тогда:

// Освобождаем ~2700 байт памяти:

#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM

Или,

// Отключаем использование EEPROM:

//#define EEPROM_SETTINGS // Enable for M500 and M501 commands

//#define EEPROM_CHITCHAT

Это, конечно, крайняя мера, но может понадобиться, если включены дополнительные функции в прошивке (например, ПИД-регулирование стола и экструдера, THERMAL_PROTECTION_HOTENDS и THERMAL_PROTECTION_BED, LIN_ADVANCE, а также S_CURVE_ACCELERATION) как у меня.

Прошивку выполнил с помощью программатора: https://3dtoday.ru/blogs/chernykh986/backup-the-firmware-on-your-board-melzi-v205/ , https://3dtoday.ru/blogs/chernykh986/connection-board-melzi-v205-to-arduino-ide/?commentId=567672#567672 .

Для слайсинга я использую Simplify 4.0.1. Стартовый код:



G28 Y0 X0 Z0 ; Home extruder X and Y and Z

G29; Autolevel

G1 Z3;

G1 X0 Y0 Z0; Go Home

Процесс запуска печати весьма прост:

1. Включаем принтер.

2. Нагреваем стол и эструдер до нужных температур.

3. Prepare ->Auto home

4. Опускаем шток датчика.

5. Print from SD.

При выполнении 5-го пункта датчик промеряет стол, затем экструдер опускается и перемещается в «Дом». В процессе этого перемещения по мере опускания экструдера шток датчика автоматически притягивается магнитом. И начинается собственно печать.

Какова же точность такого датчика?

Результаты выполнения команды M 48 :

20:47:43.333 : M48 Z-Probe Repeatability Test

20:49:00.907 : Finished!

20:49:00.907 : Mean: 12.485899 Min: 12.479 Max: 12.496 Range: 0.016

20:49:00.907 : Standard Deviation: 0.005328

Результаты выполнения команды M 48 P 10 X 100 Y 100 V 4 E L 2 :

20:50:50.646 : M48 Z-Probe Repeatability Test

20:50:50.646 : Positioning the probe...

20:51:00.617 : Bed X: 100.000 Y: 100.000 Z: 12.425

20:51:00.618 : Starting radius: 14.00 angle: 34.00 Direction: Clockwise

20:51:00.618 : Going to: X158.98 Y131.73 Z29.09

20:51:14.574 : 1 of 10: z: 12.443 mean: 12.4430 sigma: 0.000000 min: 12.443 max: 12.443 range: 0.000

20:51:14.574 : Starting radius: 11.00 angle: 142.00 Direction: Counter-Clockwise

20:51:14.574 : Going to: X134.17 Y132.91 Z29.10

20:51:28.449 : 2 of 10: z: 12.429 mean: 12.4360 sigma: 0.007001 min: 12.429 max: 12.443 range: 0.014

20:51:28.450 : Starting radius: 13.00 angle: 149.00 Direction: Counter-Clockwise

20:51:28.450 : Going to: X132.05 Y129.87 Z29.09

20:51:42.376 : 3 of 10: z: 12.438 mean: 12.4368 sigma: 0.005836 min: 12.429 max: 12.443 range: 0.014

20:51:42.377 : Starting radius: 8.00 angle: 51.00 Direction: Counter-Clockwise

20:51:42.377 : Going to: X145.42 Y138.99 Z29.11

20:51:56.160 : 4 of 10: z: 12.439 mean: 12.4374 sigma: 0.005141 min: 12.429 max: 12.443 range: 0.014

20:51:56.161 : Starting radius: 11.00 angle: 252.00 Direction: Counter-Clockwise

20:51:56.161 : Going to: X146.72 Y120.14 Z29.11

20:52:10.039 : 5 of 10: z: 12.423 mean: 12.4345 sigma: 0.007362 min: 12.423 max: 12.443 range: 0.020

20:52:10.040 : Starting radius: 15.00 angle: 305.00 Direction: Counter-Clockwise

20:52:10.040 : Going to: X159.67 Y127.88 Z29.09

20:52:24.016 : 6 of 10: z: 12.413 mean: 12.4308 sigma: 0.010601 min: 12.413 max: 12.443 range: 0.030

20:52:24.016 : Starting radius: 23.00 angle: 303.00 Direction: Clockwise

20:52:24.017 : Going to: X141.01 Y108.35 Z29.07

20:52:38.167 : 7 of 10: z: 12.439 mean: 12.4320 sigma: 0.010222 min: 12.413 max: 12.443 range: 0.030

20:52:38.168 : Starting radius: 10.00 angle: 183.00 Direction: Counter-Clockwise

20:52:38.168 : Going to: X136.91 Y125.12 Z29.10

20:52:52.015 : 8 of 10: z: 12.437 mean: 12.4326 sigma: 0.009677 min: 12.413 max: 12.443 range: 0.030

20:52:52.015 : Starting radius: 5.00 angle: 284.00 Direction: Counter-Clockwise

20:52:52.016 : Going to: X148.28 Y127.23 Z29.11

20:53:05.681 : 9 of 10: z: 12.435 mean: 12.4328 sigma: 0.009155 min: 12.413 max: 12.443 range: 0.030

20:53:05.681 : Starting radius: 26.00 angle: 219.00 Direction: Clockwise

20:53:05.682 : Going to: X119.19 Y127.83 Z29.10

20:53:19.880 : 10 of 10: z: 12.439 mean: 12.4335 sigma: 0.008880 min: 12.413 max: 12.443 range: 0.030

20:53:19.880 : Finished!

20:53:19.880 : Mean: 12.433451 Min: 12.413 Max: 12.443 Range: 0.030

20:53:19.881 : Standard Deviation: 0.008880

Результаты, конечно, не «блеск», но вполне удовлетворительные.

При печати, если стол выставлен ровно, то вращения двигателей оси Z практически нет. Если перекосить стол (я опускал правую сторону стола на 2 оборота винтов стола), то видно вращение двигателей. Первый слой при этом ложится ровно и прилипает хорошо.

Печатаю с автоуровнем уже, примерно, месяц - полет нормальный!

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

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

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

23
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама