Меню

Датчик bltouch своими руками

fb4s_howto

Upgrades for 3D printer FB4S

Подключение датчика BLTouch к robin nano v1.1

Датчик BLtouch используется для построения карты высот стола. Общую информацию о работе и подключении можно посмотреть в видео:

Краткое содержание

  • Подключение к плате MKS Robin Nano v1.*
  • Настройка Marlin
  • Регулировка положения стола
  • Построение сетки стола (AUTO_BED_LEVELING_UBL), настройка слайсера для быстрой коррекции перед печатью

Датчик

BLTouch от Trianglelab. В комплекте с датчиком идут провода, но их длины не хватает для подключения к плате на FB4S. Для удлинения проводов можно использовать еще один комплект удлинителя

Для надежного подключения к плате можно использовать JST XH 2.54 3 Pin коннектор.

Установка датчика

Для установки на другую голову, необходимо сделать кронштейн для датчика. Основные требования:

  • В убранном состоянии щуп должен быть выше сопла
  • В выдвинутом состоянии щуп должен быть ниже сопла
  • Положение щупа, в котором срабатывает концевик, должно быть ниже сопла

Принцип работы датчика

У датчика есть управляемый щуп, который он может выдвигать и задвигать по команде. Так же он может с высокой точностью и повторяемостью определять прохождение щупом “точки детекции”. Когда стол толкает вытянутый щуп, в определенный момент он достигает “точку срабатывания” и датчик фиксирует именно это. Bltouch не замеряет высоту от стола или насколько вытянут щуп. Он лишь сообщает МК, что щуп достиг “точки срабатывания”, но делает это с погрешностью в тысячные доли миллиметра. МК знает высоту по Z и по тому, где сработал датчик, определяет высоту до стола в этом месте.

В данном примере используется метод Unified Bed Leveling, который сочетает приемущества остальных способов, позволяет строить, редактировать и сохранять сетку.

Подключение

У датчика 5 проводов, которые можно разделить на две группы: управление щупом (серва) и концевик. Обычно провода обозначаются цветом.

  • Коричневый — GND
  • Красный — 5V
  • Оранжевый — сигнал управления

Для прогнозируемой и понятной работы Bltouch, парковку оси Z следует сделать по датчику, а не по концевику. В данном случае, чтобы не вносить лишних изменений и оставить возможность отключить Bltouch только прошивкой, не изменяя подключения проводов, датчик подключен в разъем ZMax (пин PC4).

Управление выдвиганием щупа подключено в разъем PB2 (обозначен на плате).

Выбор ног для подключения может быть произвольным, однако надо учитывать, что на плате Robin Nano разъемы ZMin, Zmax, PWR-DET, MT1-DET, MT2-DET выполненый как вход. Выражается это в схемотехнике на плате:

Резисторы R32 — R37 номиналом 10К. Это позволяет подключать к этим разъемам устройства с уровнем в 5V. В том числе и BLTouch.

Разъем PB2 выполнен как выход, с токоограничивающим резистором R38 номинало 100 Ом.

На плате разъемы расположены следующим образом:

Настройка Marlin

Настройки приведены для сборки под FB4S.

Ноги МК на которые подключен датчки (Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h):

Файл Marlin/Configuration.h, секция “Z Probe Options”.

Поскольку используется парковка по BLtouch, а не по концевику, то нужно включить:

Отключить ручной режим, включить BLTouch

Смещение сопла относительно датчика (зависит от физического положения датчика X,Y,Z). При первоначальной настройке Z можно поставить 0.

В моем случае, как видно из чертежа, датчик смещен на 37 мм по оси X в положительную сторону и на 20 мм по оси Y в отрицательную.

Измерять 3 раза и выпадающее значение отбрасывать:

Предел для установки Z Offset в мм. Эти параметры означают, что при замере датчиком срабатывание будет ожидаться в диапазоне от 3 до -3 мм. Если датчик сработает раньше или позже это будет расцениваться как ошибка.

Включение функции теста точности датчика (позволяет оценить точность работы датчика командой M48 ):

Задать способ построения сетки. Используется рекомендуемый метод Unified Bed Leveling

Включить Z_SAFE_HOMING и задать точку для парковки:

Для Z_SAFE_HOMING_X_POINT и Z_SAFE_HOMING_Y_POINT указывается точка по положению щупа, а не сопла. В данном случае, голова займет положение, в котором щуп датчика находится в X37 Y5. Учитывая настройку PROBE_OFFSET, положение сопла по оси X окажется Z_SAFE_HOMING_X_POINT — PROBE_OFFSET_X = 37 — 37 = 0. По оси Y: Z_SAFE_HOMING_Y_POINT — PROBE_OFFSET_Y = 5 — (-20) = 25

Читайте также:  Не работает датчик температуры фольксваген пассат б5

Задание границ для замеров

Можно задать отступы и границы, куда может дотянуться щуп датчика. При парковке головы по концевикам осей X и Y на FB4S сопло оказывается вне пределов стола по оси Y. По оси X сопло не может достигнуть край стола, в моем случае оно смещено на 13мм. Для упрощения расчетов, я применил коррекцию только по оси Y:

Исходят из этих настроек, точка 0,0 для сопла будет совпадать с позицией концевика по оси X, и на 6мм сдвинута по оси Y от точки, где срабатывает концевик.

В моем случае, никаких дополнительных ограничений по перемещению датчика нет:

Первичная настройка датчика

Или из меню принтера, “initialize eeprom”.

  • Проверить работоспособность датчика в меню Bltouch. По команде “deploy” щуп должен опускаться, по команде “stow” подниматься. При этом в выводе команды M119 должно меняться состояние для z_probe.
  • Сбросить Z PROBE OFFSET в 0. Это можно сделать или командой M851 Z0 или из меню принтера.
  • Выполнить команду G28 или Auto Home из меню. Первый раз, желательно подстраховаться, чтобы в случае, если датчик не работает, не упереться соплом в стол: предварительно опустить стол вниз и во время парковки оси Z рукой нажать на щуп датчика. Замер происходит несколько раз. Если стол остановился, можно попробовать выполнить парковку.
  • Предварительно определить Z PROBE OFFSET. Для этого сначала нужно выполнить парковку командой G28 или Auto Home из меню. По умолчанию, после парковки, стол опускается на 10мм. Отправляем стол в точку 0, или командой G1 Z0 или из меню движения. Если датчик установлен правильно, между соплом и столом будет какое-то расстояние. Кладем лист бумаги и небольшими шагами начинаем приближать стол к соплу. Большая точность не нужна, достаточно просто чтобы лист слегка закусывало, но он не был прижат. Текущую координату по Z можно посмотреть на экране или командой M114. Полученное значение со знаком минус нужно указать в Z PROBE OFFSET. При правильной установке датчика значение Z PROBE OFFSET должно быть отрицательным.

Выравнивание стола

Для лучшей геометрии моделей можно выровнять плоскость стола параллельно плоскости движения головы в плоскости XY. Для этого нужно выбрать 4 точки по краям стола. В моем случае это точки с координатами (0,25), (208,25), (208,200), (0,200).

Максимальнальная координата по Y, в моем случае, ограничена перемещением головы, я просто использовал максимальное значение (200).

По X максимальное значение определяется так: максимальное перемещение по X (245 в моем случае) — значение PROBE_OFFSET по X (37). Таким образом, при перемещении сопла в точку X208 щуп Bltouch окажется в точке X245.

Перемещение головы выполняется командой G1.

Замер высоты выполняется командой G30. Будет произведен замер в текущем положении головы и в ответе на команду будет текущая высота по Z.

Подкручивая винты, можно выставить стол, чтобы значения во всех 4 точках были одинаковые. Обычно нужно сделать проход по 4 точка несколько раз.

ASSISTED TRAMMING

В качестве альтернативы ручному методу с выполнением команды G30, можно использовать функцию ASSISTED TRAMMING. Работает это так: датчик замеряет высоту по 4 точкам и, зная шаг винтов регулировки стола, сообщает на сколько какой винт нужно повернуть.

Настройки функции в Marlin/Configuration_adv.h:

TRAMMING_POINT_XY — это координаты точек, куда должен приехать щуп Bltouch. В моем случае, посколько щуп смещен по оси X на 37мм, он не может делать замеры для значений X меньше 37. По Оси Y щуп смещен на 20мм, поэтому максимальное значение по Y, которое может достичь щуп — 180.

TRAMMING_SCREW_THREAD — это параметры резьбы винтов регулировки стола. В случае FB4S/5 используются винты с стандартной резьбой М3.

ASSISTED_TRAMMING_MENU_ITEM — добавляет запуск замера в меню. На данный момент COLOR_UI интерфейс не поддерживает вывод результатов, поэтому нужно подключиться к UART.

Запускается замер командой G35. После замера 4 точек будет выведен результат:

Читайте также:  Индуктивный или емкостной датчик для осциллографа

CW — повернуть на указанное количество оборотов и минут по часовой стрелке, CCW — против.

Построение сетки поверхности стола:

Начнется измерение высоты в точках, куда возможно дотянуться щупом. В моем случае, для сетки из 100 точек (10*10) щуп смог дотянуться до 72. Посмотреть результат измерения можно или командой “G29 T” или “M420 V”. После замера ответ выглядит приблизительно так:

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

Эта команда, заполняет “один шаг” в сетке, поэтому для заполнения сетки полностью, ее нужно выполнить несоклько раз. Между запусками, можно посмотреть результат командой “G29 T”. В моем случае, запустить команду нужно было дважды. В результате получилась полная сетка поверхности:

Теперь результат можно сохранить. Есть возможность сохранить несколько сеток, указав номер.

Fade Height — это высота в мм после которой не будет применяться коррекция.

Проверить, что настройки сохранены: перезагрузить принтер и посмотреть состояние:

В выводе команды должна быть сетка с актуальными значениями, состояние “Mesh is valid”, а так же “Bed Leveling ON”

В процессе эксплуатации стол может немного изменять свое положение. Для быстрой коррекции в стартовый код можно добавить команду измерения наклона стола по 3-м точкам. Датчик проведет измерение в 3 точках (можно указать больше) и сделает “наклон” сохраненной сетки под эти измерения. Для того, чтобы корреция происходила после нагрева стола, но до нагрева сопла, нужно настроить стартовый код в слайсере. Обычная логика такая: если слайсер не находит в стартовом коде команд управления температурой (M104, M109, M140, M190), он их добавит автоматически. Если какие-то из этих команд есть, он соответсвенно не будет добавлять команды для нагрева стола или сопла. Это позволяет управлять очередностью нагрева. А для того, чтобы не править стартовый код при изменении температуры, в командах можно указать макросы, которые слайсер заменит на соответствующие значения.

Для Prusaslicer/SuperSlicer есть две настройки стартового и финишного кода — в настройках принтера и в настройках филамента. Логика работы программы такая: в стартовом коде принтера включить нагрев стола, дождаться его, включить нагрев сопла и не ждать его нагрева, перейти к стартовому коду для филамента. Поэтому, для того чтобы сделать замеры стола перед печатью с нагретым столом, но холодным соплом (чтобы не оставлять следов), в стартовый код принтера нужно добавить:

А код для прочистки сопла разместить в стартовом g-код для филамента.

Настройка Z probe offset

Окончательная настройка Z probe offset делается на тестовой печати. Нужно запустить пробную печать небольшой модели с большим количеством линий юбки. Тестовый кубик с 30 линиями юбки отлично подойдет. Во время печати юбки из меню Tune-> BabyStepping изменяя высоту стола нужно добиться правильной укладки линий.

BabyStepping это возможность изменять высоту стола небольшими шагами (по умолчанию по 0.01 мм). Эти изменения не влияют на расчеты и никак не учитываются прошивкой, это просто возможность “подвигать” мотор оси Z, равносильно тому, что повернуть винт оси рукой. Поэтому значение BabyStepping сбрасывается при парковке.

Когда уровень стола будет устраивать, нужно запомнить итоговое значение BabyStepping и остановить печать. Полученное значение нужно прибавить к Z PROBE OFFSET и сохранить настройки в eeprom.

Сохранение сетки и восстановление после прошивки

Для того, чтобы после смены прошивки и сброса eeprom не проводить замер стола по новой, можно сохранить результаты. Посмотреть текущие значения можно командой:

А установить значение для конкретной точки:

Для того, чтобы не переписывать эти значения руками, я сделал небольшой скрипт на python. В скрипте нужно указать COM-порт к которому подключен принтер (/dev/ttyUSB0 в моем случае). Скрипт открывает порт, отправляет туда команду “M420 V T1”, получает ответ и выводит его ввиде набора команд M421 для всех точек (100 штук в данном случае). Эти команды можно сохранить в файл с расширением .gcode, добавить команды сброса сетки и сохранения в eeprom и положить на sd карту. Пример такого файла:

Читайте также:  Для чего делают адаптацию датчика коленвала

После обновления прошивки или просто сброса eeprom достаточно запустить этот файл “на печать” и нужные значения будут восстановлены.

Источник

BLTouch. Логика работы и проверка . без принтера

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

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

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

Как и многие тут по образованию я являюсь инженером, а перед любым инженером рано или поздно возникают задачи, которые надо решать ‘на бегу’. Вот вчера, например, получил ‘Auto Bed Leveling Sensor for 3D Printers’, в простонаречии BLTouch. Цеплять я его собираюсь на принтер ZAV (отличный кстати агрегат, кому интересно без труда найдет группу автора в vk). Но к установке ‘сию минуту’ я был не готов, потому что как надо было увеличить число жил шлейфа (читай — опять перетряхнуть всю внутрянку аппарата ;)), идущего к головке принтера минимум на несколько жил. Срок предьявления претензий на али между тем истекал. Решил проверить на скорую руку. Итак поехали.

Начнем с того что вообще это такое этот BLTouch.

Если коротко, то это как твикс – два в одном. Одна его часть подобна простому микровыключателю, который замыкается и размыкается в зависимости от касания штоком датчика поверхности (эта часть подключается к принтеру двухпроводным шлейфом), вторая собственно управляет выдвижением этого штока и его убиранием в нужные моменты времени, причем сделана она на базе электромагнита и логика ее работы эмулирует сервопривод (эта часть имеет трехпроводной интерфейс к принтеру). Иными словами, управляющая плата принтера общается с блоком выдвижения-уборки штока выдавая сигнал “повернуть сервопривод на угол X”. Внутри датчика величина X интерпретируется как одна из команд:

Угол X от 0 до 20 градусов — Push pin Down — Максимально выдвинуть шток

Угол X от 80 до 100 градусов — Push pin Up — Убрать шток внутрь датчика

Угол X от 110 до 130 градусов — Self Test — Тестирование (убрать/выдвинуть)

Угол X от 150 до 180 градусов — Alarm Release — Сброс режима тревоги

Угол X от 50 до 70 градусов — M119 Test Mode — Эмуляция теста концевиков принтера

Несколько уточнений. — Alarm — это режим тревоги, в котором датчик сигнализирует об ошибке мигающим красным цветом. Попасть в него можно, например, не дав штоку выдвинуться до конца в режиме Self Test. Чтобы сбросить ошибку и восстановить нормальную работу датчика как раз и служит команда Alarm Release. Режим M119 Test Mode служит для того, чтобы датчик стал выдавать состояние своего “микровыключателя” принтеру и мы смогли прочитать его, подав скажем в том же Pronterface ту самую управляющую команду M119.

С логикой работы вроде разобрались. Теперь будем проверять. Достаем из загашников любимую Arduino Mega.

Подключение датчика к любому микроконтроллеру предельно простое. В нашем случаи даже не надо паять никакие резисторы, согласующие логические уровни. Все что понадобится – это несколько dupont проводов папа-папа чтобы соединить колодки ардуино и датчик (на датчике обжаты разьемы мама).

Однако напоминаю, что прежде чем подать питание (воткнуть юсб разьем с компьютера) необходимо проверить схему. При определенном не правильном подключении проводов можете сжечь стабилизатор на ардуино или сам датчик. На всякий случай привожу картинку:

Далее загружаем ниже приведенный скетч в вашу ардуино (подобно тому как вы загружали прошивку вашего принтера), открываем SerialMonitor внутри среды ардуино

(кнопочка в правом верхнем углу), далее читаем вывод программы, ставим курсор в верхнюю строку ввода и начинаем тестировать девайс.

А я пока пойду поставлю китайцу 5 звезд и напишу хороший отзыв :D.

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

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

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

Источник

Adblock
detector