Конcтруктор конфигурации для принтеров FBG4S, FBG5 и FBR под платы MKSRNv1.1, MKSRNv1.3 и MKSRN-Sv1.3:
GitHub
По ссылке более актуальные конфигурации. Конфигурация ниже представлена для ознакомления и частично устарела.
Моё подключение BLTouch к FB основано на инструкции Сергея Терентьева.
Предполагается, что вы уже знаете, что такое BLTouch и с чем его едят.
Я подключал сенсор в разъём MT_DET2, а серву в разъём PB2 на MKSRNv1.1 или в специальный разъём для BLTouch на MKSRNv1.3 и MKSRN-Sv1.3.
Варианты подключения:
Сенсор (sensor_pin):
Серва(control_pin):
Файл конфигурации fb-ВАШ-ПРИНТЕР-bltouch.cfg
нужно включить в файле printer.cfg
. При этом происходит перезапись параметров из конфигурации по умолчанию. Останется только удалить параметр position_endstop
в секции [stepper_z]
файла printer.cfg
. Обратите внимание на то, что стартовый скрипт START_PRINT
тоже перезаписывается - теперь в нём отсутствует частичный преднагрев стола, но присутствует построение новой сетки стола после его нагрева параллельно нагреву сопла, или загрузка сохранённой ранее сетки с названием, соответствующим значению температуры нагрева стола. Всё это регулируется параметром MESH_DO
в вызове макроса. Если MESH_DO=0
будет загружена имеющаяся сетка, если MESH_DO=1
будет вызвано построение новой, а если MESH_DO
отсутвует, действия с сеткой будут пропущены и печать начнётся таким же образом как и без BLTouch.
Значения пинов берутся из файла в папке boards
, который включён в printer.cfg
. Останется указать офсеты по X и Y и откалибровать офсет по Z как описано в разделе «Определение x_offset
и y_offset
» ниже.
[bltouch]
sensor_pin: ^BLTOUCH_SENSOR_PIN
control_pin: BLTOUCH_CONTROL_PIN
x_offset: 0
y_offset: 0
z_offset: 0
Большинство координат в настройке BLTouch требуют поправку на офсеты. Для удобства я создал простой калькулятор, который поможет определить, какие значения указывать. Скопируйте себе файл, чтобы иметь возможность редактирования.
Секция шаговиков перезаписывает датчик парковки по Z и допустимое отрицательное значение координат по Z, что необходимо для калибровки офсета.
Блок настройки парковки оси Z по датчику BLTouch. В home_xy_position
обычно указывается центр стола с поправкой на офсет - нужно указать координаты, где будет находиться сопло, если датчик будет находиться в центре.
[safe_z_home]
home_xy_position: 175,155
Настройки сетки, которую строит датчик во время калибровки. Координаты mesh_min
и mesh_max
- это координаты датчика в крайних возможных положениях головы.
[bed_mesh]
mesh_min: 0,0
mesh_max: 350,310
[screws_tilt_adjust]
позволяет сделать замеры в центрах регулировочных винтов стола и указывает, как и на сколько оборотов надо повернуть эти винты для выравнивания стола. Требует координаты сопла.
x_offset
и y_offset
Определить офсеты по X и Y можно по чертежам - если у вас есть чертёж модели крепления, либо автор указал офсеты. Либо экспериментально по инструкции.
Отправляете голову в центр стола командой G28. Под датчиком на стол наклеиваете малярный скотч. Опускаете щуп датчика командой BLTOUCH_DEBUG COMMAND=pin_down
. Отмечаете маркером центр стержня на скотче. Вводите GET_POSITION
чтобы получить текущие координаты по X/Y. Затем передвигаете голову командами G1 X<value> Y<value>
или стрелками в веб-интерфейсе так, чтобы центр сопла оказался над отметкой. Командой GET_POSITION
снова получаете текущие координаты и вычисляете: x_offset = позиция сопла по X - позиция датчика по X
. Аналогично y_offset = позиция сопла по Y - позиция датчика по Y
. Вносите в конфигурацию и перезапускаете Klipper (Save & Restart
).
z_offset
Эта калибровка напоминает обычный «бумажный тест». По инструкции №1 и инструкции №2 настраиваем z_offset
.
G28
PROBE_CALIBRATE
TESTZ Z=-<value>
, или поднимаем TESTZ Z=+<value>
пока лист бумаги не начнёт тереться об него.ACCEPT
SAVE_CONFIG
Выполняем пробную печать и корректируем значение, если нужно.
Создание сетки вызывается командой BED_MESH_CALIBRATE
. Созданную сетку можно сохранить в отдельный профиль для повторного использования. Сохранить последовательностью команд BED_MESH_PROFILE SAVE=имя
и SAVE_CONFIG
. Загрузить командой BED_MESH_PROFILE LOAD=name
.
В слайсере это можно использовать для автоматической загрузки сетки, слегка модифицировав стартовый G-code. Для этого сначала нужно определить, к какому параметру вы будете привязывать имена профилей. Например, имеет смысл привязывать к температуре стола или к названию профиля филамента.
Например, для варианта с температурой стола 70℃:
После калибровки вводим
BED_MESH_PROFILE SAVE=70
SAVE_CONFIG
Для более быстрого построения можно увеличить скорость передвижения и отключить втягивание щупа между точками замера.
[bltouch]
stow_on_each_sample: False
speed: 20
[safe_z_home]
speed: 200
[bed_mesh]
speed: 200
horizontal_move_z: 5
Учтите, что
stow_on_each_sample: False
не втягивает щуп датчика и может повредить его при передвижениях. Используйте на свой страх и риск.
Как и «BED SCREWS», позиционирует каретку так, чтобы голова находилось над винтами. В процессе замеряет высоту стола с помощью датчика BLTouch и подсказывает, куда и на какое количество оборотов вращать регулировочные винты. Позволяет отрегулировать уровень стола точнее, чем с помощью бумаги. Запускается командой SCREWS_TILT_CALCULATE
. К сожалению, координаты не учитывают offset и задают позицию сопла, а не датчика. Поэтому при внесении настроек рассчитайте вручную координаты с учётом offset чтобы датчик находился точно над винтами. Или максимально близко, насколько позволяют размеры головы принтера.
[screws_tilt_adjust]
screw1: 45,42.5
screw1_name: front left screw
screw2: 305,42.5
screw2_name: front right screw
screw3: 305,267.5
screw3_name: back right screw
screw4: 45,267.5
screw4_name: back left screw
speed: 100
horizontal_move_z: 10
screw_thread: CW-M4
Только для столов с двумя (и более) независимыми винтами. Т.е. для FBReborn. Требует виртуальные координаты центров осей винтов в координатной сетке стола. Делает серию последовательных замеров в указанных точках (лучше указывать максимально близкие к винтам) и выравнивает высоту этих точек.
Обратите внимание, что в моём случае шаговик справа оказался подключённым в третий разъём, т.е. в тот, куда подключается единственный шаговик Z на FBG4S и FBG5. Для корректной работы алгоритма в конфиге FBReborn пины указаны так, чтобы stepper_z был слева, а stepper_z1 справа.
[z_tilt]
z_positions: # virtual XY position of:
-42,176 # stepper_z
425,176 # stepper_z1
points:
0,176 # CAUTION! ? probe_xy = nozzle_xy + offset_xy
350,176 # CAUTION! ? probe_xy = nozzle_xy + offset_xy
speed: 100
horizontal_move_z: 10
retries: 10
retry_tolerance: 0.01
Пошаговая установка Klipper на альтернативные одноплатные компьютеры. Я проводил опыты на Orange Pi 3. Из-за специфики китайских одноплатников и их ПО, установка может сильно отличаться для других устройств и даже устройств того же производителя.
Ваш опыт может отличаться от моего, поэтому дальнейшее - не инструкция, а описание моих действий.
Перед выполнением остальных инструкций решите, какой способ подключения планируется.
Самое простое - подключение по USB, надёжно и не требует объяснений.
Подключение по UART зависит от вашей возможности найти соответствующие пины на плате или в документации Именно из-за того, что я столкнулся со сложностями на этом этапе, этот пункт идёт первым.
Для OPi3 информацию о пинах и UART я искал по следующему алгоритму:
gpio readall
, которая показала мне следующее:По идее, у OPi3 должен быть UART на тех же пинах, что и у RPi: 8 и 10 (Physical). Но у меня он почему-то не завёлся. В итоге я использовал UART3, подключившись к 11(RX) и 13(TX) пинам, GND можно подключить к соседнему пину 9. В конфиге я указал serial: /dev/ttyS3
. Причём подключение заработало только после перезагрузки в конце всех приготовлений, но при этом проверка 6) [Get MCU ID]
в KIAUH как показывала ошибку в ходе всего процесса поиска UART, так и продолжала показывать ошибку, не смотря на то, что OPi3 и MCU уже видели друг друга. Инструкции будут указаны в следующих пунктах.
Ищем дистрибутив Armbian на сайте. Нам нужен Debian-дистрибутив. На момент написания статьи это Armbian Buster. Копируем ссылку на «Direct download».
Записываем на карту памяти с помощью balenaEtcher через «Flash from URL».
Инструкции по настройке WiFi до переключения SD в Pi я не нашёл. Подключаем проводной интернет и заходим по ssh или подключаем экран и клавиатуру. Запускаем. По умолчанию логин: root
, пароль: 1234
. Сразу меняем пароль по запросу, выбираем оболочку bash и затем создаём нового пользователя с удобным для вас юзернеймом (дальше используется пользователь pi
во избежание путаницы в инструкциях). Во избежание возможных проблем в будущем, я отказался от установки языка исходя из местоположения и оставил английский.
Запускаем утилиту настройки:
sudo armbian-config
Если принтер будет подключён к беспроводной сети на постоянной основе, то переходим Network -> WiFi и подключаемся. В Personal -> Hostname можно сменить доменное имя апельсинки.
Если нужен статический IP, то вводим в Network -> IP -> eth0 или wlan0 -> Static
Если собираемся подключаться к принтеру по UART, то переходим System -> Hardware и включаем нужный UART (в моём случае это UART3).
На предложение перезагрузиться пока отказываемся. Выходим из утилиты и обновляем систему:
sudo apt update && sudo apt upgrade -y
Перезагружаемся
sudo reboot
и заходим по ssh уже под новым пользователем.
Добавляем пользователя в главные группы:
sudo usermod -aG sudo pi
sudo usermod -aG tty pi
Убираем дополнительные запросы пароля для команд, требующих root-прав.
sudo visudo
После строчки %sudo ALL=(ALL:ALL) ALL
добавляем:
pi ALL=(ALL) NOPASSWD: ALL
И сохраняем Ctrl+X -> Y -> Enter
Устанавливаем всё, что нужно для Klipper с помощью KIAUH - скрипта с пользовательским интерфейсом. Для этого (можно сразу скопировать и вставить все строчки) вводим:
cd ~
git clone https://github.com/th33xitus/kiauh.git
cd ~/kiauh
chmod +x kiauh.sh scripts/*
./kiauh.sh
В открывшемся окне сначала вводим 1
- переходим в установку, затем по очереди устанавливаем:
1) [Klipper]
- Подтверждаем путь для файлов конфигурации и вводим «1» для количества копий Klipper, ждём окончания установки (минуты 3-4)2) [Moonraker]
- Создаём 1 копию Moonraker и ждём (тоже 3-4 минуты)4) [Fluidd]
(или 3) [Mainsail]
по желанию)- Подтверждаем установку MJPG-Streamer, если собираетесб подключать камеру, макросы не нужныВыходим из KIAUH. Для того, чтобы можно было перезапускать Moonraker и Klipper из веб-интерфейса, необходимо применить фикс. Выполняем:
sudo sh /home/pi/moonraker/scripts/sudo_fix.sh
Перезапускаем Pi:
sudo reboot
Прошивка платы принтера используется из главной инструкции в соответствии выбранному подключению: USB или UART и не зависит от Pi.
В вебинтерфейсе переходим к конфигурационным файлам и правим moonraker.conf
. Для мониторинга обновлений KIAUH добавляем блок:
[update_manager client kiauh]
type: git_repo
origin: https://github.com/th33xitus/kiauh.git
path: ~/kiauh
Далее добавляем или правим файл printer.cfg
Иногда для проверки лучше сначала внести обрезанную версию конфигурации, где будут присутствовать только критические разделы [stepper_x]
, [stepper_y]
, [stepper_z]
, [mcu]
и [printer]
. Так вы сможете отделить ошибки подключения от ошибок конфига. К примеру, если поэтому я вынес разделы, посвящённые [mcu rpi]
, TMC-UART, Input Shaping, управлению питанием и макросам в отдельные файлы, чтобы быстро отключать их.
Я использовал камеру «Logitech C270». Повторяю, что в зависимости от камеры и одноплатника ваш опыт может значительно отличаться от моего.
Включаем камеру в настройках веб-интерфейс Fluidd: Settings -> Cameras -> Default -> Enable.
Я уже установил MJPG-Streamer во время установки Klipper, но, он не подключает эту камеру так как пытается получить сигнал с /dev/video0
а он, как я понял, занят под HDMI, а камера подключается к /dev/video1
. Порты, к которым подключается камера можно найти командой ls /dev/video*
сначала с отключённой, а потом уже подключённой камерой и определив появившиеся во второй раз порты.
Для диагностики попробуйте запустить вручную сервис камеры из терминала:
/usr/local/bin/webcamd
Мне он выдал
Для того, чтобы исправить это, рядом с файлом printer.cfg ищем файл webcam.txt, который может быть знаком тем, кто уже настраивал камеру на Octoprint. Ничего не трогаем, а в конце файла добавляем для переназначения порта
camera="usb"
camera_usb_options="-d /dev/video1"
Снова запускаем /usr/local/bin/webcamd
Теперь видим, что используется правильный порт. Ещё видим сообщение Camera model 046d:0825 is known to not work with -f parameter, stripping it out
, это значит, что управлять частотой кадров камеры не получится. В документации для «Logitech C270» сказано, что она работает в разрешении 720p, т.е. 1280x720. Если хочется качество получше, а мощность Pi и сеть позволяют, повышаем разрешение и частоту кадров
camera="usb"
camera_usb_options="-d /dev/video1 -r 1280x720"
Запускаем /usr/local/bin/webcamd
в третий раз и видим
Наслаждаемся.
В будущем камеру можно перезапускать через веб-интерфейс Fluidd: Services -> Restart Webcam.
Если позже после переподключения камеры изображение пропадёт, проверьте снова порты командой ls /dev/video*
. Если /dev/video1
отсутствует, то перезагрузите апельсину. Если и это не поможет, скорректируйте, если надо, файл webcam.txt.
Подходит только ADXL345 и то, не все варианты.
Крепление акселерометра вместо сопла в хитблок.
Для такого положения оси X и Z у акселерометра будут инвертированы, поэтому в конфиге нужно будет указать:
[adxl345]
cs_pin: rpi:None
axes_map: -x,y,-z
[resonance_tester]
accel_chip: adxl345
probe_points:
125,105,20