Метки: Klipper, Marlin, RAMPS 1.4  
2025-10-24  
  
Раздел: Настройка, Прошивка  
Автор: AKDZG Просмотров: 2  
Нет комментариев
Пошаговый гайд перехода с прошивки Марлин на Клиппер для 3D принтера с RAMPS 1.4
Добавлено в закладки: 0
Итак, имеем, что имеем: старого коня, который, как известно, борозды не портит: фанерный СПринтер 233 на RAMPS 1.4 и одноплатный компьютер Paspberry Pi 2B с установленным Октопринтом (это не важно). Задача: повысить качество печати, используя имеющееся железо. В наше время (2025 год) качество печати софтово можно повысить двумя продвинутыми алгоритмами программного комплекса Klipper: Pressure Advance (компенсирует разбухание и растяжение прутка, делая углы более четкими ) и Input Shaper (активно гасит вибрации и “звон” на печатаемых деталях, что критически важно для скоростной печати ). Приступим.
Бэкап прошивки Marlin
1. Подключаем RAMPS к ПК кабелем USB.
2. Находим или устанавливаем на ПК Arduino IDE (у меня версия Arduino IDE 1.8.9, но это не точно).
3. Ищем в папке Arduino IDE файлы avrdude.exe и avrdude.conf
4. Сохраняем пути этих файлов
5. Запускаем Adduino IDE. Выбираем меню Инструменты\Плата плату Arduino MEGA 2560 и далее процессор соответствующий. В меню Порт появится подключенная Ардуинка. Например COM7 (у меня так). Всё это нужно для создания терминальной команды.
6. Заходим в Проводнике в папку с файлом avrdude.exe
7. Кликаем правой кнопкой мыши на пустом месте
8. Выбираем в Меню Открыть в Терминале
9. Вводим туда команды бэкапа. У меня такие:
.\avrdude -C “C:\Users\akdzg\Desktop\Arduino IDE\arduino-1.8.9\hardware\tools\avr\etc\avrdude.conf” -p m2560 -c wiring -P COM7 -b 115200 -U flash:r:flash_backup_file.hex:i
.\avrdude -C “C:\Users\akdzg\Desktop\Arduino IDE\arduino-1.8.9\hardware\tools\avr\etc\avrdude.conf” -p m2560 -c wiring -P COM7 -b 115200 -U eeprom:r:eeprom_backup_file.hex:i
Получаются файлы flash_backup_file.hex и eeprom_backup_file.hex . Это бэкапы прошивки и памяти EEPROM с настройками. Их можно будет обратно записать в Ардуинку, если что-то не будет получаться с Клиппером.
10. Теперь запускаем принтер с Октопринтом или Пронтерфейсом и вводим команду: M503. Принтер выдаст текстовый список настроек прошивки из памяти EEPROM. Сохраняем данные в текстовый файлик на случай, если придётся настраивать Klipper без конфигурационных файлов прошивки Марлин.
Расшифровка M503:
Установка операционной системы на Raspberry Pi
1. Скачиваем и запускаем утилиту Raspberry Pi Imager.
2. Вставляем microSD (4Гб точно мало) карту в кардридер ПК.
3. Заполняем первую страницу. Выбираем Raspberry Pi OS Lite (32-bit)
4. Нажимаем Далее -> Изменить параметры
5. Вкладка Общие. Обязательно указать Логин и пароль.
5. Вкладка Службы. Обязательно включить SSH и указать Использовать аутентификацию по паролю
6. Сохранить -> Да -> Да
7. Raspberry Pi OS Lite (32-bit) устанавливается на карту памяти
8. Закрываем Imager и вставляем карту памяти в Raspberry Pi
Подключаем Raspberry Pi к SSH терминалу
1. Подключаем Raspberry Pi к ПК по кабелю USB или по WiFi
2. Запускаем программу Advanced IP Scanner для поиска в сети IP Raspberry Pi
3. IP найден: 192.168.88.251

4. Устанавливаем и запускаем программу WinSCP
5. Создаём Новое подключение
6. Заполняем Имя хоста (у меня 192.168.88.251). Порт 22. Имя пользователя (у меня akdzg) и Пароль, которые задавали на этапе подготовки образа.
7. Сохранить.
8. Войти – > Да
9. Сейчас нам не нужна файловая система, но нужен доступ к терминалу по SSH. Для этого Заходим в верхнее меню Команды и кликаем на Открыть в PuTTY
10. Открывается окно PuTTY. Нужно ввести пароль такой же, как в WinSCP, но ввод не будет видно.
Установка Klipper и веб-интерфейса на RPi
Будем использовать KIAUH ([K]lipper [I]nstallation [A]nd [U]pdate [H]elper) – это по сути “менеджер пакетов” для экосистемы Klipper, который сильно упрощает жизнь пользователям, особенно тем, кто не хочет разбираться с ручной установкой через командную строку.
Что делает KIAUH:
1. Автоматизирует установку Klipper, Moonraker, Mainsail, а также устанавливает базовые пакеты и зависимости.
2. Упрощает обновление компонентов до последних версий
3. Управляет службами (запуск, остановка, перезагрузка)
4. Позволяет выбирать нужные компоненты через удобное меню
5. Решает проблемы совместимости и зависимостей
Moonraker – это сервер, который служит посредником между Klipper и веб-интерфейсом.
Mainsail — это современный веб-интерфейс, разработанный специально для работы с прошивкой Klipper.
Представь, что у тебя есть робот (это твой 3D-принтер), ты хочешь с ним взаимодействовать через интернет, и тебе нужен удобный способ управлять им. Вот как это работает с помощью Klipper, Moonraker и Mainsail:
Klipper – мозг робота. Он знает, как двигать все части робота (экструдер, стол) чтобы печатать. Он понимает команды, например “подними экструдер на 5 мм”, и выполняет их. Klipper работает непосредственно с аппаратными компонентами принтера.
Moonraker – переводчик. Klipper говорит на своем языке (специальном коде). Но Mainsail (это твой веб-интерфейс) не понимает этот язык. Moonraker как бы переводит команды от Mainsail на язык, понятный Klipper, и наоборот. Он также следит за состоянием робота (например, температурой экструдера) и передает эту информацию в Mainsail.
Mainsail – экран управления. Это веб-страница, которую ты смотришь на компьютере или телефоне. Через нее ты даешь команды роботу: “начни печатать”, “подними стол”, “измени температуру”. Когда ты даешь команду, она отправляется через Moonraker в Klipper, который выполняет ее. Mainsail также показывает тебе текущий статус робота – например, скорость печати или температуру экструдера.
Вводим строки по порядку в терминал PuTTY и нажимаем Enter (Копируем тут и кликаем правой кнопкой мыши в окне терминала для вставки строки). Ждём выполнения:
sudo apt update && sudo apt upgrade -y
sudo apt-get update && sudo apt-get install git -y
cd ~ && git clone https://github.com/dw-0/kiauh.git
Запуск KIAUH:
./kiauh/kiauh.sh
После этого откроется текстовый интерфейс KIAUH
Установка компонентов в KIAUH
1. Первое окно. Нажимаем рекомендуемую цифру 1 и Enter
2. Второе окно. Справа видно, что ничего не установлено. Нам нужно устанавливать, поэтому жмём 1 и Enter
3. Дале устанавливаем по порядку 1, 2 и 3: Klipper, Moonraker, Mainsail.
4. На вопросы нажимаем 1 или y
Все компоненты уже установлены. Нажимаем “B” и переходим в окно, где справа видно, что всё установлено. Если что-то написано жёлтым, то это нужно удалить тоже из KIAUH и заново установить. Далее вводим “Q” для выхода в командную строку.
Компиляция прошивки Klipper для RAMPS 1.4
1. Запускаем конфигурацию прошивки:
cd ~/klipper
make menuconfig
2. Выбираем конфигурацию, соответствующую нашей плате. У меня уже было правильно заполнено:
– Microcontroller Architecture: Atmega AVR
– Processor model: atmega2560 (для Arduino Mega 2560)
Жмём “Q” и “Y”для выхода и сохранения.
3. Команда для компиляции прошивки
make clean
make
В результате будет создан файл прошивки ~/klipper/out/klipper.elf.hex
Загрузка прошивки на Arduino Mega
1. Подключите Arduino Mega к Raspberry Pi с помощью USB-кабеля с отключенным питанием.
2. Включаем питание Raspberry Pi, а также для Ардуинки (принтера), если не запускается.
3. Опять заходим в PuTTY
4. Останавливаем сервис Klipper
sudo service klipper stop
5. Определяем serial-порт (уникальный идентификатор устройства). Он нам ещё пригодится. Вводим команду:
ls /dev/serial/by-id/*
У меня получился такой (Выделяем. Нажимаем правой кнопкой мыши для копирования. Очищаем командную строку.):
/dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_74132343530351801140-if00
6. Прошиваем со вставкой в команду нашего serial-порта (идентификатора устройства):
cd ~/klipper
make flash FLASH_DEVICE=/dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_74132343530351801140-if00
7. После прошивки запускаем сервис Klipper:
sudo service klipper start
Настройка конфигурационного файла printer.cfg
Файл printer.cfg — это основной файл конфигурации, в котором хранятся все настройки принтера для прошивки Klipper. У меня он находится по пути (Смотри в WinSCP):
/home/akdzg/printer_data/config
Примеры файла находятся в папке ~/klipper/config/ Конкретно на СПринтер (H-Bot) нужно смотреть example-corexy.cfg – это базовый шаблон для любой платы с кинематикой CoreXY или H-Bot. Копируем его себе в папку с основным файлом конфигурации (/home/akdzg/printer_data/config). Переименовываем и заменяем файл printer.cfg
Базовые секции конфигурации printer.cfg
Файл printer.cfg содержит секции в формате [section_name], внутри которых задаются параметры ПОЛЕ: ЗНАЧЕНИЕ. Вот список секций, который должен быть в каждом printer.cfg:
[mcu] – настройки подключения к микроконтроллеру
[printer] – общие параметры принтера (кинематика, ограничения)
[stepper_x] – настройки шагового двигателя оси X
[stepper_y] – настройки шагового двигателя оси Y
[stepper_z] – настройки шагового двигателя оси Z
[extruder] – настройки экструдера
[heater_bed] – настройки нагреваемого стола
[fan] – настройки вентилятора обдува (обычно кулер на экструдере)
Секция [mcu]
В секцию [mcu] нужно будет вставить наш serial-порт (уникальный идентификатор устройства) (смотри выше, как его определить)
[mcu]
serial: /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Mega_2560_74132343530351801140-if00
Уже можно сохранить конфиг и запустить веб-интерфейс в браузере по IP адресу Raspberry Pi (у меня 192.168.88.251). Конечно, он напишет, что конфигурация ещё не настроена, но что-то уже покажет.
Ещё нужно помнить, что Klipper читает конфигурацию сверху вниз. Если параметр определён дважды, то будет использоваться последнее значение.
Добавим в самое начало конфига строку
[include mainsail.cfg]
Рестарт Клиппера
sudo service klipper restart
Все ошибки пропали. Пора менять настройки на свои.
Секция [printer]
[printer]
# Кинематика: CoreXY (H-bot)
# Из Marlin: #define COREXY (раскомментировано в Configuration.h)
# Определяет математику движения для кинематики CoreXY
kinematics: corexy
# Максимальная скорость движения (мм/сек)
# Из Marlin: DEFAULT_MAX_FEEDRATE {300, 300, 10, 100}
# Берем максимальное значение по X/Y осям (300 мм/сек = 18000 мм/мин)
max_velocity: 300
# Максимальное ускорение (мм/сек²)
# Из Marlin: DEFAULT_MAX_ACCELERATION {2000,2000,200,10000}
# Берем значение для X/Y осей (2000 мм/сек²)
max_accel: 2000
# Максимальная скорость по Z (мм/сек)
# Из Marlin: DEFAULT_MAX_FEEDRATE {300, 300, 10, 100} – Z=10 мм/сек
# Конвертируем в мм/сек (10 мм/сек = 600 мм/мин)
max_z_velocity: 10
# Максимальное ускорение по Z (мм/сек²)
# Из Marlin: DEFAULT_MAX_ACCELERATION {2000,2000,200,10000} – Z=200 мм/сек²
max_z_accel: 200
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ (рекомендуемые)
# Скорость квадратного угла (аналог jerk в Marlin)
# Из Marlin: DEFAULT_XYJERK 20.0 (мм/сек)
# В Klipper это настройка плавности прохождения углов
square_corner_velocity: 5.0
AVR порты\пины
# Arduino формат (абстракция):
step_pin: ar54
# AVR порт (прямой доступ к регистру):
step_pin: PF0
AVR порты – это низкоуровневые аппаратные регистры микроконтроллера ATmega2560, которые напрямую управляют выводами чипа. Для шаговых двигателей критически важны точные временные интервалы. Arduino пины – это дополнительный слой преобразования в коде. AVR порты – это прямое обращение к аппаратным регистрам. Прямой доступ к портам обеспечивает:
- Минимальную задержку
- Предсказуемое время отклика
- Синхронное управление несколькими пинами
Смотрю, что и где подключено к RAMPS
Мои пины для драйверов шаговых двигателей. Смотреть в файле pins_RAMPS_13.h прошивки Марлин. У меня драйвер оси X переставлен в слот E1. В прошивке Клиппер смотреть файл примера example-corexy.cfg:
#define X_STEP_PIN 36 //54 – стандартный пин оси X
#define X_DIR_PIN 34 //55 – стандартный пин оси X
#define X_ENABLE_PIN 30 //38 – стандартный пин оси X
#define X_MIN_PIN 3
#define X_MAX_PIN 2
#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15
#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19
#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24
Таблица подключения концевиков для RAMPS 1.4:
Таблица преобразования пинов Arduino MEGA 2560 в порты AVR, для Клиппера
Соответствие пинов портам для других плат и процессоров смотри в файле config/sample-aliases.cfg
rotation_distance = (шаги_на_полный_оборот × микрошаги) / steps_per_mm_из_Marlin
Винт TR8x8: rotation_distance = 8 мм
Винт TR8x2: rotation_distance = 2 мм
Винт M8: rotation_distance = 1.25 мм (шаг резьбы)
Секции [stepper_x] [stepper_y] [stepper_z]
[stepper_x]
# Из Marlin: X_STEP_PIN=36 (PC1), X_DIR_PIN=34 (PC3), X_ENABLE_PIN=30 (PC7)
step_pin: PC1 # ar36
dir_pin: !PC3 # ar34 – INVERT_X_DIR false
enable_pin: !PC7 # ar30 – X_ENABLE_ON 0 (Active LOW)
# TMC2100 без перемычек = 1/16 микрошаг
microsteps: 16
# Расчет для CoreXY с шкивами GT2 20 зубьев
rotation_distance: 40
# Из Marlin: X_MIN_PIN=3 (PE5), X_MIN_ENDSTOP_INVERTING true
endstop_pin: ^!PE5 # ar3
# Из Marlin: X_MIN_POS=-14
position_endstop: -14
position_min: -14
# Из Marlin: X_MAX_POS=210
position_max: 210
# Из Marlin: HOMING_FEEDRATE {50*60, 50*60, 10*60, 0}
homing_speed: 50
[stepper_y]
# Из Marlin: Y_STEP_PIN=60 (PF6), Y_DIR_PIN=61 (PF7), Y_ENABLE_PIN=56 (PF2)
step_pin: PF6 # ar60
dir_pin: !PF7 # ar61 – INVERT_Y_DIR false
enable_pin: !PF2 # ar56 – Y_ENABLE_ON 0 (Active LOW)
microsteps: 16 # TMC2100 без перемычек
rotation_distance: 40
# Из Marlin: Y_MIN_PIN=14 (PJ1), Y_MIN_ENDSTOP_INVERTING true
endstop_pin: ^!PJ1 # ar14
# Из Marlin: Y_MIN_POS=-5
position_endstop: -5
position_min: -5
# Из Marlin: Y_MAX_POS=197
position_max: 197
homing_speed: 50
[stepper_z]
# Из Marlin: Z_STEP_PIN=46 (PL3), Z_DIR_PIN=48 (PL1), Z_ENABLE_PIN=62 (PK6)
step_pin: PL3 # ar46
dir_pin: !PL1 # ar48 – INVERT_Z_DIR true
enable_pin: !PK0 # ar62 – Z_ENABLE_ON 0 (Active LOW)
# DRV8825 с одной перемычкой = 1/16 микрошаг
microsteps: 16
# rotation_distance = (200 × 16) / 1600 = 3200 / 1600 = 2.0 мм
# Для TR8x8 винта (8 мм шаг, 2 мм заход) или аналогичного
rotation_distance: 8
# Из Marlin: Z_MIN_PIN=18 (PD3), Z_MIN_ENDSTOP_INVERTING true
endstop_pin: ^!PD3 # ar18
# Из Marlin: Z_MIN_POS=0
position_endstop: 0
position_min: 0
# Из Marlin: Z_MAX_POS=291.6
position_max: 291.6
homing_speed: 10
Секция [extruder]
Для прямого привода (Direct Drive) с шаговым двигателем 200 шагов/оборот и микрошагами 1/8, значение 140 шагов/мм соответствует передаточному отношению, которое учитывает:
- Диаметр приводного колеса экструдера
- Коэффициент передачи прямого привода
- Особенности конкретного хотэнда
Значение rotation_distance следует калибровать практическим путем с помощью измерения фактической экструзии прутка.
Термисторы:
T0 – A13 – PK5
T1 – A14 – PK6
T2 – A15 – PK7
[extruder]
# Из Marlin: E0_STEP_PIN=26 (PA4), E0_DIR_PIN=28 (PA6), E0_ENABLE_PIN=24 (PA2)
step_pin: PA4 # ar26
dir_pin: !PA6 # ar28 – INVERT_E0_DIR true
enable_pin: !PA2 # ar24 – E_ENABLE_ON 0 (Active LOW)
microsteps: 16 # TMC2100 без перемычек
# Из Marlin: DEFAULT_AXIS_STEPS_PER_UNIT {80,80,200*16/2,140}
# rotation_distance = (200 × 16) / 140 = 3200 / 140 = 22.857 мм
rotation_distance: 22.857
nozzle_diameter: 0.400
filament_diameter: 1.750
# Из Marlin: HEATER_0_PIN=10 (PB4)
heater_pin: PB4 # ar10
# Подключен к T0 = A13 = PK5
sensor_pin: PK5 # analog13
# Начальный тип термистора, требует проверки
sensor_type: Generic 3950
control: pid
# Из Marlin: DEFAULT_Kp=11.46, DEFAULT_Ki=0.79, DEFAULT_Kd=41.56
pid_Kp: 11.46
pid_Ki: 0.79
pid_Kd: 41.56
# Из Marlin: HEATER_0_MINTEMP=5, HEATER_0_MAXTEMP=275
min_temp: 5
max_temp: 275
# Из Marlin: DEFAULT_MAX_FEEDRATE {300, 300, 10, 100} – E=100
max_extrude_only_velocity: 100.0
# Из Marlin: DEFAULT_MAX_ACCELERATION {2000,2000,200,10000} – E=10000
max_extrude_only_accel: 10000.0
pressure_advance: 0.05
Секция [heater_bed]
[heater_bed]
# Из Marlin: HEATER_BED_PIN=8 (PH5)
heater_pin: PH5 # ar8
# Подключен к T1 = A14 = PK6
sensor_pin: PK6 # analog14
sensor_type: Generic 3950
control: pid
# Из Marlin: DEFAULT_bedKp=250.10, DEFAULT_bedKi=45.56, DEFAULT_bedKd=343.20
pid_Kp: 250.10
pid_Ki: 45.56
pid_Kd: 343.20
# Из Marlin: BED_MINTEMP=5, BED_MAXTEMP=130
min_temp: 5
max_temp: 130
Секции вентиляторов
[controller_fan my_controller_fan]
# Обдув RAMPS, пин D11, через RepRap RAMPS 1.4 RRD Fan Extender
# Из Marlin: CONTROLLERFAN_PIN=11 (PB5)
pin: PB5 # ar11
# Укажите шаговые двигатели, активность которых отслеживать
stepper: stepper_x, stepper_y, stepper_z, extruder
# Скорость вентилятора, когда двигатели активны
# Из Marlin: CONTROLLERFAN_SPEED=255
fan_speed: 1.0
# Время работы после остановки двигателей (в секундах)
# Из Marlin: CONTROLLERFAN_SECS=120
idle_timeout: 120
# Скорость вентилятора в период idle_timeout (0 = выключить)
idle_speed: 0
[heater_fan hotend_fan]
# Обдув хотэнда, пин D6, через RepRap RAMPS 1.4 RRD Fan Extender
# Из Marlin: EXTRUDER_0_AUTO_FAN_PIN=6 (PH3)
pin: PH3 # ar6
heater: extruder
# Из Marlin: EXTRUDER_AUTO_FAN_TEMPERATURE=50
heater_temp: 50.0
# Из Marlin: EXTRUDER_AUTO_FAN_SPEED=255
fan_speed: 1.0
Дисплей 2004
[display]
lcd_type: hd44780
# RS (Register Select) pin
# Arduino pin 16 → PORT H bit 1 (PH1)
rs_pin: PH1
# E (Enable) pin
# Arduino pin 17 → PORT H bit 0 (PH0)
e_pin: PH0
# Data pins (4-bit mode)
# Arduino pin 23 → PORT A bit 1 (PA1)
d4_pin: PA1
# Arduino pin 25 → PORT A bit 3 (PA3)
d5_pin: PA3
# Arduino pin 27 → PORT A bit 5 (PA5)
d6_pin: PA5
# Arduino pin 29 → PORT A bit 7 (PA7)
d7_pin: PA7
# Параметры дисплея 2004
line_length: 20
# Минимальные настройки энкодера
encoder_pins: PC0, PC2
click_pin: PC5
encoder_steps_per_detent: 2
Разбираюсь дальше. Продолжение следует
Ленточный экструдер | PET Tape Extruder      




































































































































































