Июнь 25

3D. Hypercube. Добавляем железную кнопку «Пауза».

Иногда появляется желание остановить выполнение задания печати и, например, сменить филамент на другой, или же убрать сопли.. Через экранное меню можно отменить печать, но возобновить уже невозможно. А как удобно ткнуть большую красную кнопку, сделать все что нужно, и продолжить печатать. Вот этим хаком и займемся..

Лично мне дико нехватает хардварных кнопок на принтере:
* пауза/продолжить;
* поуправлять экструдером туда-обратно;
* подвинуть головку в угол и опустить стол вниз на пару тройку сантиметров;
* отключить подачу тока на двигатели (disable stepper), я понимаю что руками двигать каретку не по феншую но из-за того что отсутствуют хардварные кнопки заранее заданных операций, двигать головку програмно через менюшку жутко неудобно.

На сайте smoothieware есть описания команд — линк, линк

Нас интересует команда Suspend или g-code M600:

Движение - Остановка по окончанию очереди команд
Экструдер - Вкл. / Выкл. опционально
Чтение файла - Пауза, может быть восстановлено
Продолжение печати - Да, командой Resume или M601, позиционирование сохраняется
Приостанавливает выполнение файла, воспроизводимого с SDCARD, или потока из хоста (octoprint поддерживает), все состояние сохраняется, а бег и экструзия разрешены. В основном используется для замены филамента. M601 возобновляет печать или команду возобновления

 

Выбираем свободный пин на схеме

Итак, что же нам необходимо получить от кнопки Пауза?

1. Отправить паузу на хост или приостановить, если печать с sd
2. Дождаться пустой очереди
3. Сохранить текущее положение, положение экструдера, температуру хотенда
4. Выключите нагреватели (Если в config нет параметра left_heaters_on_suspend true)
6. Запустить after_suspend gcode, например, переместить экструдер и опустить стол (установить в config определяет gcode для запуска, например, after_suspend G91G0E20G90)

ПРИМЕЧАНИЕ. Команда Home G28 после команды Suspend отменяет приостановление, и вы не сможете возобновить работу.

Пауза — это конечно хорошо, но как теперь продолжить работу ? В этом нам поможет кнопка «Продолжить», для которой выскажем свои пожелания:

Продолжение приостановленной печати:
1. Восстановит сохраненную температуру нагревателей.
2. Запустит before_resume gcode, если указано в конфигурации.
3. Восстановит положение осей, стола и любое другое сохраненное состояние.
4. Возобновит печать с sd или отправит запрос хосту на продолжение.

В конфигурации вписываем:

switch.pause.enable                true                     # Enable this module
switch.pause.input_pin             0.25^                    # Pin where pause button is connected
switch.pause.output_on_command     suspend                  # Suspend command
switch.pause.output_off_command    resume                   # Resume command
switch.pause.input_pin_behavior    toggle                   # This pin toggles between it's on and off states each time it is pressed and released

after_suspend_gcode                  G91_G0E-5_G0Z10_G90_G0X-50Y-50        # Gcode to run after suspend, retract then get head out of way
before_resume_gcode                  G91_G1E1_G90                          # Gcode to run after temp is reached but before resume - do a prime

В данном коде мы используем ОДНУ железную кнопку без фиксации, переключающую состояние пина 0.25 при каждом нажатии между ON и OFF, т.е. «Пауза» и «Продолжить». Также используем исполнение команды ПОСЛЕ Паузы — передвинем головку в угол, опустим стол и сделаем ретракт. И добавим команду ПЕРЕД Продолжить — восстановим положение головы по всем осям.

Есть вариант и для двух отдельных кнопок:

switch.suspend.enable                true                     # Enable this module
switch.suspend.input_pin             0.25^                    # Pin where pause button is connected
switch.suspend.output_on_command     suspend                  # Suspend command

switch.resume.enable                 true                     # Enable this module
switch.resume.input_pin              0.26^                    # Pin where resume button is connected
switch.resume.output_on_command      resume                   # Resume command

leave_heaters_on_suspend             true                     #  

#after_suspend_gcode G91_G0E-5_G0Z10_G90_G0X170Y50
#before_resume_gcode G1_E10_F225-G91_G1E1_G
after_suspend_gcode                  G91_G0E-5_G0Z10_G90_G0X-50Y-50        # Gcode to run after suspend, retract then get head out of way
before_resume_gcode                  G91_G1E1_G90                          # Gcode to run after temp is reached but before resume - do a prime

Дополнительно добавим эти функции в меню Custom:

# --Custom menu
custom_menu.pause_on.enable                true                 #
custom_menu.pause_on.name                  Pause_print          #
custom_menu.pause_on.command               suspend              #

custom_menu.resume_on.enable                true                #
custom_menu.resume_on.name                  Resume_print        #
custom_menu.resume_on.command               resume              #

 


Добавим железные кнопки экструдера, с заранее заданными параметрами, например, выдавить 30мм и втянуть 30мм — пригодится для смены филамента в процессе печати:

switch.extruder_extrude.enable                true                     # Enable this module
switch.extruder_extrude.input_pin             2.5^                     # Pin where ETXR button is connected
switch.extruder_extrude.output_on_command     G1 E30 F100              # Command to extrude 30mm on speed 100mm/min
switch.extruder_extrude.input_pin_behavior    momentary                #

switch.extruder_retract.enable                true                     # Enable this module
switch.extruder_retract.input_pin             2.6^                     # Pin where ETXR button is connected
switch.extruder_retract.output_on_command     G1 E-30 F100             # Command to retract 30mm on speed 100mm/min
switch.extruder_retract.input_pin_behavior    momentary                #

И вариант для одной кнопки с переменным действием — нажали = выдавило, вновь нажали = втянуло 🙂

switch.extruder_move.enable                true                     # Enable this module
switch.extruder_move.input_pin             1.22^                    # Pin where ETXR button is connected
switch.extruder_move.output_on_command     G1 E-30 F100             # Command to retract 30mm on speed 100mm/min
switch.extruder_move.output_off_command    G1 E30 F100              # Command to extrude 30mm on speed 100mm/min
switch.extruder_move.input_pin_behavior    toggle                   # This pin toggles between it's on and off states each time it is pressed and released

Дополнительно добавим эти функции в меню Custom:

# --Custom menu
custom_menu.extruder_extrude.enable                true             #
custom_menu.extruder_extrude.name                  Extrude          #
custom_menu.extruder_extrude.command               G1 E30 F100      #

custom_menu.extruder_retract.enable                true             #
custom_menu.extruder_retract.name                  Retract          #
custom_menu.extruder_retract.command               G1 E30 F100      #

 


Добавим железную Аварийную кнопку Reset:

 

switch.reset.enable                true                     # Enable this module
switch.reset.input_pin             1.22^                    # Pin where reset button is connected
switch.reset.output_on_command     reset                    # Command to reset the board

Используем команду Abort, g-code M26

Останавливает выполнение файла, воспроизводимого с SDCARD, он завершает текущий gcode, но сразу же останавливается, остальные команды в очереди отбрасываются. Он пытается сохранить правильное положение после отмены.

В конфигурации вписываем:

kill_button_enable        true             # set to true to enable a kill button
kill_button_pin           2.12 / 1.22^   # kill button pin (Add ^ for external buttons)
unkill_enable             false            # do not unkill when button held or released

Добавим в меню Custom тест-калибровку стола

Особенно калибровка стола и решил я добавить подобие этой калибровки на свой принтер…
В итоге получился данный код.. Его нужно вставить в config.txt в самый конец файла.
После чего в меню custom появится 3 дополнительных пункта.
Числа после X и Y подправьте под себя.

custom_menu.bed_near.enable         true         # Калибровка стола правый ближний 
custom_menu.bed_near.name           Bed:_Near
custom_menu.bed_near.command        G1Z10F600|G1X190Y10F4500|G1Z0.1F600

custom_menu.bed_left.enable         true         # Калибровка стола левый дальний
custom_menu.bed_left.name           Bed:_Left
custom_menu.bed_left.command        G1Z10F600|G1X10Y190F4500|G1Z0.1F600

custom_menu.bed_right.enable        true         # Калибровка стола правый дальний 
custom_menu.bed_right.name          Bed:_Right
custom_menu.bed_right.command       G1Z10F600|G1X190Y190F4500|G1Z0.1F600

Если кратко, то стол опускается на 10мм, потом башка подъезжает к координатам где винт регулировочный находится и затем стол поднимается обратно к соплу с зазором 0.1мм, чтобы можно было откалибровать листочком.

 


Быстренько собираем кнопки на макетке, набрасываем в tinkercad корпус.

GND кнопок объединены, к IN каждой кнопки припаиваем провода со штекером типа «мама».

На схеме MKS Smini есть несколько незадействованных пинов, используем P0.25, P0.26, P1.22, P2.5, P2.6 колодки J1, ну и GND оттуда же.

 

 

 

 

 


7. Пользователь может бегать или удалять и вставлять нить в этот момент, выдавливая или оттягивая при необходимости.
Это может быть вызвано модулем Switch для установки простого из детектора нити.


Замену филамента реализуем через меню Custom, для чего добавим следующий код:

# меню 
custom_menu.filament_change_c.enable               true                               #
custom_menu.filament_change_c.name                 Change Filament                    #
custom_menu.filament_change_c.command              G91|G1_Z0.6_F12000|G90|G1_X0_Y0|G91|G1_Z-0.6|G90|M25   # этой командой установим положение хотэнда в позицию Home

# M207 S10  # retract 10mm
# M208 S10  # retract recover 10mm с избытком относительно M207

custom_menu.filament_change_r.enable               true              #
custom_menu.filament_change_r.name                 Resume            #
custom_menu.filament_change_r.command              M24               #

# Firmware retract settings when using G10/G11, these are the defaults if not defined, must be defined for each extruder if not using the defaults
#extruder.hotend.retract_length                  3            # Retract length in mm
#extruder.hotend.retract_feedrate                45           # Retract feedrate in mm/sec
#extruder.hotend.retract_recover_length          0            # Additional length for recover
#extruder.hotend.retract_recover_feedrate        8            # Recover feedrate in mm/sec (should be less than retract feedrate)
#extruder.hotend.retract_zlift_length            0            # Z-lift on retract in mm, 0 disables
#extruder.hotend.retract_zlift_feedrate          6000         # Z-lift feedrate in mm/min (Note mm/min NOT mm/sec)

 

 

http://smoothieware.org/switch

 

 

Далее я буду не единожды упоминать код G92. Как он работает, поясню на примере: G92 X100 заставляет принтер считать, что его текущая координата X равна 100, и дальше он будет плясать от этой установки.

По мотивам — линк, линк,



Copyright 2019. All rights reserved.

Опубликовано 25.06.2017 admin в категории "CNC", "Без рубрики", "Железо

Добавить комментарий