Jump to content

Українська 3D спільнота

Створено телеграм канали. Підписавшись на них ви будете отримувати повідомлення про появу нових тем на форумі. Також там Ви знайдете посилання на канал допомоги для вирішення термінових питань по друку та принтерам.
3DUA_Help 3DUA.info
KomAndr

Налаштування профілю під SKR1.3+TMC2130 SPI (частина3)

Recommended Posts

Ось ми і підійшли до налаштування Klipper. Подальша інструкція відноситься для материнки SKR1.3, але по аналогічно можливо налаштувати під будь яку материнку.

У цьому описі я буду користуватися плагіном Octoklipper. У ньому і буду конфігурувати свій принтер.

На гітхабі проекту є вже створені конфіги принтеру під певні материнки. 

 

image.thumb.png.48b2ddd71c69ff71d754938dbcb345ba.png

 

Відкриваємо цей файл, копіюємо все, шо в ньому,та вставляємо у вікно конфігурування OktoКlipper

 

image.thumb.png.6c426ead71fe6d55e1ab18f8c01e43bd.png

 

Як ми бачимо у блоках вже прописані піни нашої материнки. 

Давайте більш детально розглянемо що до чого. Приведу аналогію до Марлін.

Назва блоку починаеться з квадратних скобках в яких записана назва. Послідовність блоків не має значення, але щоб не плутатись що де розташовано, бажано об'єднувати блоки по напрямкам, або функціям.

# така решітка коментує все, що знаходиться за нею, тоб-то программа не бере до уваги все що після решітки аж до наступного рядку. Можно вписувати свої коментарі.

! - знак оклику інвертує значення на протилежне. 

 

[stepper_x] -назва блоку - налаштування драйверу вісі "Х"

step_pin: P2.2                   #define X_STEP_PIN         P2_02

dir_pin: !P2.6                    #define X_DIR_PIN          P2_06

enable_pin: !P2.1             #define X_ENABLE_PIN       P2_01

step_distance: .00625    #define DEFAULT_AXIS_STEPS_PER_UNIT   { 160, Y, Z, E} У Klipper відстань вимірюеться по уньшому. Треба вказати відстань у мм на один крок. Так як у мене мотори 0,9град/оберт, у Марлін було 160 кроків на 1мм. Тоді для Кліппера 1/160=0,00625 

endstop_pin: P1.29          # P1.28 for X-max  - #define X_MIN_PIN          P1_29   Як що кінцевик стоїть в МАХ - тоді треба замість Р1.29 вписати Р1.28

position_endstop: -13    #define X_MIN_POS -13

position_max: 270         #define X_BED_SIZE 270

position_min: -13           #це значення вказує на скільки каретка по Х може поїхати від позиції Х0 Для вісі ХУ це значення повинно дорівнювати position_endstop:

homing_speed: 80         #define XY_PROBE_SPEED 8000

 

Як ми бачимо, можно з легкістю налаштувати параметри маючи конфіг та карту пінов з Марліна. 

По аналогії налаштовується всі останні вісі та екструдер. Як що треба змінити напрямок обертання любого мотору треба змінити значення dir_pin: за допомогою ! перед вказаним піном, або його прибирання, якщо він там вже стоїть.

 

[heater_bed]
heater_pin: P2.5        #define HEATER_BED_PIN     P2_05
max_power: 0.75      #define MAX_BED_POWER 160 у мене стіл 12, а живлення 24в. Цей рядок обмежує напругу завдяки PWM Значення від 0.0 до 1.0
sensor_type: ATC Semitec 104GT-2
sensor_pin: P0.23     #define TEMP_BED_PIN       0
control: watermark  # bang-bang  Якщо треба ввімкнути PID  пишемо pid
min_temp: 0               #define HEATER_0_MINTEMP   5
max_temp: 150          #define BED_MAXTEMP      150

 

Більш детально зупинемось на блоці 

 

[mcu]

serial: /dev/serial/by-id/usb-Klipper_lpc1768_1BF00004852036AF755C695BC62000F5-if00

Тут нам треба вписати порт в який під'єднан наш принтер. Відкриваємо Putty та заходимо на наш мінікомп на якому стоїть Octoprint. Пишемо:

ls /dev/serial/by-id/*

image.thumb.png.74edff749952599002de9a80acaebf53.png

 

По цьому порту буде проходити з'єднання Кліппера з материнською платою. Як що ви змінюєте USB порт на мінікомпі треба знову зробити цю процедуру, та вписати новій, робочий порт.

Після внесення змін у конфіг обов'язково кнопку "SAVE"

image.thumb.png.4ab5efc9f34316bb4089ff18a53d0830.png

тоді всі зміни будуть збережені і перезагружен конфіг, а в деяких випадках ще перезапишеться прошивка принтера.

 

Вказуємо кінематику принтера та його основні налаштування швидкості. Я маю принтер з кінематикою Core_XY, для прусоподібних принтерів треба вказати kinematics: cartesian та зменьшити швидкості.

[printer]
kinematics: corexy
max_velocity: 300
max_accel: 3000
max_z_velocity: 25
max_z_accel: 30

Налаштування ТМС2130 SPI  прибираєми решітки, тоб-то розкоментуємо налаштування драйверів.

 

[tmc2130 stepper_x]
cs_pin: P1.17 
spi_software_miso_pin: P0.5
spi_software_mosi_pin: P4.28
spi_software_sclk_pin: P0.4

#diag1_pin: P1.29                      #пін #define SENSORLESS_HOMING 
microsteps: 16
run_current: 0.900                    #струм драйвера у мА
hold_current: 0.500
stealthchop_threshold: 250   # швидкість після якої драйвер перейде в режим SpreadCycle Якщо закоментувати цю строчку - драйвер буде постійно працювати у режимі SpreadCycle

Так само налаштовуємо останні драйвери.

 

Якщо використовуєте графічний дісплей 12864 - дописуємо цей блок:

 

[display]
lcd_type: st7920
cs_pin: EXP1_4
sclk_pin: EXP1_5
sid_pin: EXP1_3
encoder_pins: ^EXP2_3, ^EXP2_5
click_pin: ^!EXP1_2
#kill_pin: ^!EXP2_8

[output_pin beeper]
pin: EXP1_1

 

Так як я використовую управління вентилятором охолодження екструдеру, та обдуву електроніки - то я дописав це в конфіг, створивши два блоки:

 

# Additional fans

[heater_fan nozzle_fan]
pin: P1.26
max_power: 1 
shutdown_speed: 0
#cycle_time:
#hardware_pwm:
#kick_start_time:
heater: extruder
heater_temp: 50.0
            #температура при якій вимкнеться вентилятор обдуву радіатора екструдеру
fan_speed: 1.0

 

[controller_fan Case_controller_fan]
pin: P1.24
max_power: 1
shutdown_speed: 0
#cycle_time:
#hardware_pwm:
#kick_start_time:
idle_timeout: 5       
           #через 5 сек після вимкнення двигунів - вимкнути вентилятор обдуву електроніки.
idle_speed: 1.0
 

Зондом автовимірювання я використовую BFPtouch. Він зроблений на основі сервоприводу. Треба його прописати у налаштуваннях. Дуже дякую за допомогу в його налаштуванні пану@Deniss

 

# Servos
[servo bftouch]
pin: P1.28
maximum_servo_angle = 180
minimum_pulse_width = 0.0005
maximum_pulse_width = 0.0025

 

Для використання автокалібровки висоти під час друку створюємо наступні блоки. ОБОВ'ЯЗКОВО перед SET_SERVO поставити пробіл!!!

[probe]
pin: P1.25
x_offset: -11   #define NOZZLE_TO_PROBE_OFFSET { -11, 71, 0 }
y_offset: 70    #define NOZZLE_TO_PROBE_OFFSET { -11, 71, 0 }
#z_offset: 0
speed: 5.0
activate_gcode: 
 SET_SERVO SERVO=bftouch ENABLE=1    #активуємо керування сервою
 SET_SERVO SERVO=bftouch angle=200   #опустити щуп #define Z_SERVO_ANGLES {200,117}
 G4 P400                             #пауза
 SET_SERVO SERVO=bftouch ENABLE=0    #вимкнути керування сервою
deactivate_gcode: 
 SET_SERVO SERVO=bftouch ENABLE=1    #активуємо керування сервою
 SET_SERVO SERVO=bftouch angle=115   #підняти щуп #define Z_SERVO_ANGLES {200,115}
 #G4 P300                            #пауза
 SET_SERVO SERVO=bftouch ENABLE=0    #вимкнути керування сервою

 

Якщо не писати рядки з активацією та деактивацією - серва буде постійно пританцьовувати. 

Щоб зонд проводив заміри висоті столу при команді додому добавляємо

 

[safe_z_home]
home_xy_position: 146,34  #координати сопла при яких щуп зонду буде знаходитись в центрі столу
speed: 80
z_hop: 10                                  # Move up 10mm
z_hop_speed: 5
 

Налаштовуємо координати точок промірів зонду. Вказуємо координати сопла!!!  Вам треба врахувати offset_XY вашого зонду. Так, щоб зонд не віходив за межи столу.

 

[bed_tilt]
speed: 90
points:
    16,-3
    100,-3
    184,-3
    269,-3
    269,46
    184,46
    100,46
    16,46
    16,92
    100,92
    184,92
    269,92
    269,137
    184,137
    100,137
    16,137

Створюємо макрос команди G29

[gcode_macro G29]
gcode:
 BED_TILT_CALIBRATE
 G0 X-10 Y6 F4000

BED_TILT_CALIBRATE  - запустити вимірювання сітки столу

G0 X-10 Y6 F4000            - по закінчені встановити сопло у задані координати.

 

Вказуємо в блоці [stepper_z] що ми використовуємо занд автовимірювання.

endstop_pin: probe:z_virtual_endstop

Основні налаштування зроблені. Можно провіряти рух каретки. Треба відправити кожну вісь у дом. Як що каретка їде не в ту сторону - інвертуємо пін на відповідному моторі. Писав вище. Коли провірите всі мотори та нагрів екструдеру і столу - можно приступати до пробного друку.

Нижче закріплюю свій конфіг.

Config_EvA.cfg

 

 

 

 

 

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

Доповнення 1

 

Налаштування для освітлення принтера звичайною світлодіодною стрічкою. Я використовую для цього канал вентилятору другого екструдеру. Треба пам'ятати, що живлення принтеру 24в, а стрічка розрахована на 12в живлення. Тому треба увімкнути регулювання PWM, та не перевищувати значення у половину потужності.

добавляємо блок курування пінами та обзиваємо його case_light

 

[output_pin case_light]  
pin: P2.4                                                   #
define FAN1_PIN   P2_04
pwm: 1                                                      #активація PWM (ШІМ регулювання)
value: .02                                                 #значення при підключенні принтеру. Діапазон від 0.0 до 1.0
shutdown_value: 0                                
cycle_time: 0.010   
                              #встановлення частоти ШІМ довжина імпульсу 100мс

 

З такими значеннями ні око ні камера не помічають миготіння. На марліні я не зміг подолати миготіння. :classic_blush:

 

Управління освітленням через команду у терміналі:

 

SET_PIN PIN=case_light VALUE=.02                 #ввімкнути з вказанною потужністю. 0 - вимкнути.

 

У октопринті можливо налаштувати свої кнопки з значеннями

image.thumb.png.58d4000730689160026162104fcb8187.png

 

  • Like 1

Share this post


Link to post
Share on other sites

Доповнення 2  Babystepping

 

Klipper не розуміє деякі команди Марлін. Наприклад той самий бебистепінг М290 Тому є варіант навчити його цьому

  • Використовуючи плагін до Октопринту "Castom controll commands" Створюємо кнопки з текстом SET_GCODE_OFFSET Z_ADJUST=0.02  Ця команда підніме сопло при друку на 0,02 мм Як що додати мінус тоді сопло опуститься. У попередньому допису є зображення як виглядають кнопки у октопринті. Яку відстань прописати в команді то на Ваш розсуд. Найбільш ходові параметри, на мою думку це 0,05 мм та 0,1 мм

 

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Доповнення 3  Калібровка термісторів хотенду та столу.

Як завжди портібно мультіметр с термопарою. Термопару прилаштовуємо на нагрівальній кубік поруч із соплом та робимо три заміри температури. Кімнатна температура, приблизно 20-25С, 200, та 280С.

Калібрувати будемо знаходячи опір термістора при ціх температурах. В терміналі вводимо команду:

 

QUERY_ADC name=extruder pullup=4700

Ми отримаємо відповідь

image.thumb.png.f36987463f2d08f0aa451d36af597ee0.png

 

Як бачимо при температурі 18,7 С опір на термісторі 105595.129 Ом Робимо для себе табличку - показники термопари та опір термістора. На скріншоті вже виправлені показники. Температуру записуємо ту, що показав мультіметр, а опір з виводу вікна терміналу.

Далі нагріваємо єкструдер так, щоб термопара стабільно показувала 200С, знову відправляємо команду та записуємо опір для температурі 200С за мультіметром. Так само робимо і для 280С. Може статися так, що кліппер зупинить принтер з помилкою - низькє значення АЦП. Тоді перезавантажуємо його кнопкою Firmware, та зменьшуємо температуру на пару градусів, чекаємо, щоб вона нормалізувалася та знімаємо останній показник.

Коли маємо на руках всі три показники вносимо їх у конфігурацію принтеру. Відкриваємо плагін OctoKlipper та записуємо перед секцією "extruder" як у зразку. Тільки  пишіть свої значення опору термістора

 

[thermistor NTC100K]
temperature1: 21
resistance1: 94700.904
temperature2: 200
resistance2: 358.545
temperature3: 280
resistance3: 84.414

Замість NTC100K можно написати свою назву термістора. Далі в секції екструдера міняємо стандартну назву термістора на свою

 

sensor_type: NTC100K 

Повинно получитися приблизно як на скріншоті

 

image.thumb.png.29bd542ce9fbb8edfda8578c0534de06.png

 

Натискаємо збереження конфігурації. Принтер перезавантажиться і на дісплеї, як що він використовується, маємо показники температурі, а не значення в "папугах" 🤣

 

image.thumb.png.551533e42de94b504a6f3fcdfbd2b2cf.pngimage.thumb.png.3d516f3fcf485cc433aefa4022330716.png 

 

За таким самим принципом калібрується термістер столу тільки команда для відображення опору термістера столу віглядае так:

 

QUERY_ADC name=heater_bed pullup=4700

 

Значення записати треба перед блоком [heater_bed] , змінити назму термістера, щоб не повторювалася, та в цьому блоці замінити назву стокового термістера на свій.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×