From b977e164a643f21c59a1d8cce2b59455083f18e5 Mon Sep 17 00:00:00 2001 From: Zach Schimke Date: Sun, 15 Aug 2021 23:07:03 -0700 Subject: [PATCH] Initial commit for testing --- README.md | 8 +- calibration.cfg | 7 + display.cfg | 172 +++++++++++++++++++++ homing.cfg | 48 ++++++ idle_timeout.cfg | 10 ++ input_shaper.cfg | 136 ++++++++++++++++ machine.cfg | 239 +++++++++++++++++++++++++++++ macros.d/dumps.cfg | 69 +++++++++ macros.d/functions.cfg | 57 +++++++ macros.d/gcodes.cfg | 122 +++++++++++++++ macros.d/macros.cfg | 188 +++++++++++++++++++++++ macros.d/purge.cfg | 209 +++++++++++++++++++++++++ macros.d/start_end.cfg | 91 +++++++++++ macros.d/tunes.cfg | 110 +++++++++++++ other.cfg | 21 +++ pi.cfg | 8 + pinouts.d/btt-skr-mini-e3-v2.o.cfg | 44 ++++++ printer.cfg | 94 ++++++++++++ webclient.cfg | 131 ++++++++++++++++ 19 files changed, 1763 insertions(+), 1 deletion(-) create mode 100644 calibration.cfg create mode 100644 display.cfg create mode 100644 homing.cfg create mode 100644 idle_timeout.cfg create mode 100644 input_shaper.cfg create mode 100644 machine.cfg create mode 100644 macros.d/dumps.cfg create mode 100644 macros.d/functions.cfg create mode 100644 macros.d/gcodes.cfg create mode 100644 macros.d/macros.cfg create mode 100644 macros.d/purge.cfg create mode 100644 macros.d/start_end.cfg create mode 100644 macros.d/tunes.cfg create mode 100644 other.cfg create mode 100644 pi.cfg create mode 100644 pinouts.d/btt-skr-mini-e3-v2.o.cfg create mode 100644 printer.cfg create mode 100644 webclient.cfg diff --git a/README.md b/README.md index 48d7a04..3cd4be3 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,16 @@ Hardware: Mods/Deviations (W.R.T. Stock V0.1): - Changed controller chamber fans to be controlled by each SKR (fans only operate when the drivers are active). - Cork insulation directly under hotbed to protect electronic chamber from direct/radiated heat. +- Mathematical Potato's [V0.1 Belted Z Drive](https://github.com/VoronDesign/VoronUsers/tree/master/printer_mods/MathematicalPotato/v0.1_belted_z_drive) +- Ch4relsB's [Slim V0 Handles](https://github.com/VoronDesign/VoronUsers/tree/master/printer_mods/Ch4rlesB/V0_Handles_Slim) +- Andre's [Neopixel Front Bed Mount](https://github.com/VoronDesign/VoronUsers/tree/master/printer_mods/Andre/V0_Neopixel_Front_Bed_Mount) +- Andre's [Mini AB ADXL345 Mount](https://github.com/VoronDesign/VoronUsers/tree/master/printer_mods/Andre/Mini_Afterburner_ADXL345_Mount) +- Thiagolocatelli's [V0 Utility Belt](https://github.com/thiagolocatelli/VoronUsers/tree/master/printer_mods/DoubleT/v0_utility_belt) +- Timmit99's [V0 Ubilical](https://github.com/timmit99/Voron-Hardware/tree/V0-Umbilical/V0-Umbilical) Updates: - Inital config. Build in progress. - - - -This repo based on f0or1s' [cr10_klipper repo](http://github.com/fl0r1s/cr10_klipper), rpanfili's [woron-ht repo](http://github.com/rpanfili/voron-ht), and Zellneralex's [klipper_config repo](http://github.com/zellneralex/klipper_config) among many others. +This repo based on f0or1s' [cr10_klipper repo](http://github.com/fl0r1s/cr10_klipper), rpanfili's [voron-ht repo](http://github.com/rpanfili/voron-ht), and Zellneralex's [klipper_config repo](http://github.com/zellneralex/klipper_config) among many others. It is a work in progress as I keept finding new and better ways to organize/tune my setup. diff --git a/calibration.cfg b/calibration.cfg new file mode 100644 index 0000000..134d4dc --- /dev/null +++ b/calibration.cfg @@ -0,0 +1,7 @@ +[bed_screws] +screw1: 60,5 +screw1_name: front screw +screw2: 5,115 +screw2_name: back left +screw3: 115,115 +screw3_name: back right diff --git a/display.cfg b/display.cfg new file mode 100644 index 0000000..eaa284d --- /dev/null +++ b/display.cfg @@ -0,0 +1,172 @@ +##################################################################### +# Display +##################################################################### + +[display] +lcd_type: ssd1306 +i2c_bus: i2c1a +contrast: 63 +display_group: __voron_display + + +##################################################################### +# Custom Glyph Definitions +##################################################################### + +[display_glyph chamber] +data: + ................ + **************** + *....*....*....* + *....*....*....* + *....******....* + *..............* + *..............* + *.....****.....* + *.***.*..*.***.* + *.....****.....* + *......**......* + *..............* + *.************.* + *...*......*...* + **************** + ................ + +[display_glyph thermometer] +data: + 0000000000000000 + 0000000000000000 + 0000000000111000 + 0000000001000100 + 0000000010010100 + 0000000100100100 + 0000001001001000 + 0000010010010000 + 0001100100100000 + 0010001001000000 + 0100100010000000 + 0101110100000000 + 0100100100000000 + 0010001000000000 + 0001110000000000 + 0000000000000000 + +[display_glyph voron] +data: + ......***....... + ....*******..... + ...*********.... + .*************.. + *****..***..***. + ****..***..****. + ***..***..*****. + **..***..******. + ******..***..**. + *****..***..***. + ****..***..****. + ***..***..*****. + .*************.. + ...*********.... + ....*******..... + ......***....... + + +##################################################################### +# Display Template/Definition +##################################################################### + +[display_template _chamber_temperature] +text: + {% set chamber = printer['temperature_sensor chamber'] %} + ~chamber~ + { "%3.0f" % (chamber.temperature,) } + ~degrees~ + +[display_template _vprint_status] +text: + {% if printer.display_status.message %} + { printer.display_status.message } + {% elif printer.idle_timeout.printing_time %} + {% set pos = printer.toolhead.position %} + { "X%-4.0fY%-4.0fZ%-5.2f" % (pos.x, pos.y, pos.z) } + {% else %} + ~voron~ + {" V2.823"} + {% endif %} + +[display_data __voron_display extruder] +position: 0, 0 +text: { render("_heater_temperature", param_heater_name= printer.toolhead.extruder) } + +[display_data __voron_display fan] +position: 0, 10 +text:{ render("_fan_speed") } + +[display_data __voron_display heater_bed] +position: 1, 0 +text: { render("_heater_temperature", param_heater_name="heater_bed") } + +[display_data __voron_display chamber] +position: 1, 10 +text: { render("_chamber_temperature") } + +[display_data __voron_display print_progress] +position: 2, 0 +text: { "{:^10.0%}".format(printer.display_status.progress) } + +[display_data __voron_display progress_bar] +position: 2, 1 # Draw graphical progress bar after text is written +text: { draw_progress_bar(2, 0, 10, printer.display_status.progress) } + +[display_data __voron_display printing_time] +position: 2, 10 +text: { "%6s" % (render("_printing_time").strip(),) } + +[display_data __voron_display print_status] +position: 3, 0 +text : { render("_vprint_status") } + + +##################################################################### +# Display Specific Macros +##################################################################### + +## Clear display after Duration +[delayed_gcode _CLEAR_DISPLAY] +gcode: + M117 + + +[delayed_gcode _LCD_INIT_OFF] +initial_duration: 10 +gcode: + SET_GCODE_VARIABLE MACRO=DISPLAY VARIABLE=state VALUE='"off"' + + +[gcode_macro DISPLAY] +variable_state: 'on' +gcode: + {% if printer["gcode_macro DISPLAY"].state == 'on' %} + _DISPLAY_OFF + {% else %} + _DISPLAY_ON + {% endif %} + + +[gcode_macro _display_state] +gcode: + {action_respond_info("LCD display %s" % (printer["gcode_macro DISPLAY"].state))} + + +[gcode_macro _DISPLAY_OFF] +## Display off to hinder burn in +gcode: + SET_GCODE_VARIABLE MACRO=DISPLAY VARIABLE=state VALUE='"off"' + _display_state + + +[gcode_macro _DISPLAY_ON] +## Display on +gcode: + SET_GCODE_VARIABLE MACRO=DISPLAY VARIABLE=state VALUE='"on"' + _display_state diff --git a/homing.cfg b/homing.cfg new file mode 100644 index 0000000..ac1b7b0 --- /dev/null +++ b/homing.cfg @@ -0,0 +1,48 @@ +##################################################################### +# Homing definition +##################################################################### +[safe_z_home] +home_xy_position: 120,120 +speed: 50.0 +z_hop: 5 + + +##################################################################### +# Macros +##################################################################### +## conditional home +[gcode_macro SMARTHOME] +gcode: + {% if printer.toolhead.homed_axes != "xyz" %} + G28 + {% endif %} + +[gcode_macro _SET_ACC] +default_parameter_VAL: RUN +default_parameter_HOMING_ACCEL: 500 +variable_accel: 0 +variable_accel_to_decel: 0 +variable_last_val: 'RUN' +gcode: + {% if VAL == 'HOME' %} + # store old values and apply home value + SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=accel VALUE={printer.toolhead.max_accel} + SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=accel_to_decel VALUE={printer.toolhead.max_accel_to_decel} + {% set accel = HOMING_ACCEL %} + {% set accel_to_decel = HOMING_ACCEL %} + {% elif VAL == 'CONFIG' %} + # set all to config values + SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=accel VALUE={printer.configfile.settings.printer.max_accel} + SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=accel_to_decel VALUE={printer.configfile.settings.printer.max_accel} + {% set accel = printer.configfile.settings.printer.max_accel %} + {% set accel_to_decel = printer.configfile.settings.printer.max_accel %} + {% else %} + # load stored values + {% set accel = printer["gcode_macro _SET_ACC"].accel %} + {% set accel_to_decel = printer["gcode_macro _SET_ACC"].accel_to_decel %} + {% endif %} + {% if VAL != printer["gcode_macro _SET_ACC"].last_val|string %} + SET_GCODE_VARIABLE MACRO=_SET_ACC VARIABLE=last_val VALUE='"{VAL}"' + {action_respond_info("VELOCITY_LIMIT set ACCEL: %d ACCEL_TO_DECEL: %d" % (accel|int, accel_to_decel|int))} + SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel_to_decel} + {% endif %} diff --git a/idle_timeout.cfg b/idle_timeout.cfg new file mode 100644 index 0000000..a929b74 --- /dev/null +++ b/idle_timeout.cfg @@ -0,0 +1,10 @@ +##################################################################### +# Idle/Timeout Routine +##################################################################### + +[idle_timeout] +timeout: 7200 #1 hour +gcode: + TURN_OFF_HEATERS + M84 + _CASELIGHT_OFF diff --git a/input_shaper.cfg b/input_shaper.cfg new file mode 100644 index 0000000..75def75 --- /dev/null +++ b/input_shaper.cfg @@ -0,0 +1,136 @@ +## Input Shaping +[input_shaper] +shaper_freq_x: 35 +shaper_freq_y: 149.8 +shaper_type_x: zv +shaper_type_y: zv + +[adxl345] +cs_pin: rpi:None +axes_map: z,y,x + +[resonance_tester] +accel_chip: adxl345 +probe_points: + 50,50,20 + 50,300,20 + 300 ,50,20 + 300,300,20 + 175,175,20 # Dead Center +min_freq: 5 +max_freq: 120 +accel_per_hz: 75 +hz_per_sec: 1 + + +##################################################################### +# Macros +##################################################################### +[gcode_macro resonance_test] +gcode: + # Set variables for axis centers + {% set midx = printer.configfile.config.stepper_x.position_max|float / 2 %} + {% set midy = printer.configfile.config.stepper_y.position_max|float / 2 %} + + G28 + TEST_VIBRATIONS X={ midx } Y={ midy } Z=20 AXIS=X FREQ_START=10 FREQ_END=100 FREQ_STEP=0.5 OUTPUT=/tmp/vib-x.csv + TEST_VIBRATIONS X={ midx } Y={ midy } Z=20 AXIS=Y FREQ_START=10 FREQ_END=100 FREQ_STEP=0.5 OUTPUT=/tmp/vib-y.csv + TEST_VIBRATIONS X={ midx } Y={ midy } Z=20 VIB_X=1 VIB_Y=1 FREQ_START=10 FREQ_END=100 FREQ_STEP=0.5 OUTPUT=/tmp/vib-b.csv + TEST_VIBRATIONS X={ midx } Y={ midy } Z=20 VIB_X=-1 VIB_Y=1 FREQ_START=10 FREQ_END=100 FREQ_STEP=0.5 OUTPUT=/tmp/vib-a.csv + + +[gcode_macro vibration_test] +gcode: + # Set variables for axis centers + {% set midx = printer.configfile.config.stepper_x.position_max|float / 2 %} + {% set midy = printer.configfile.config.stepper_y.position_max|float / 2 %} + + # Store the user's intial input_shaper frequency parameters + {% set initShapeX = printer.configfile.config.input_shaper.shaper_freq_x %} + {% set initShapeY = printer.configfile.config.input_shaper.shaper_freq_y %} + + G28 + #X Vibration - With Input Shaper + G1 X{ midx - 25 } Y{ midy } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-x-input-shaper.csv + G1 X{ midx + 25 } Y{ midy } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-x-input-shaper.csv + + #Y Vibration - With Input Shaper + G1 X{ midx } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-y-input-shaper.csv + G1 X{ midx } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-y-input-shaper.csv + + #B Vibration - With Input Shaper + G1 X{ midx - 25 } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-b-input-shaper.csv + G1 X{ midx + 25 } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-b-input-shaper.csv + + #A Vibration - With Input Shaper + G1 X{ midx + 25 } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-a-input-shaper.csv + G1 X{ midx - 25 } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-a-input-shaper.csv + + SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0 + + #X Vibration - Stock + G1 X{ midx - 25 } Y{ midy } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-x-stock.csv + G1 X{ midx + 25 } Y{ midy } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-x-stock.csv + + #Y Vibration - Stock + G1 X{ midx } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-y-stock.csv + G1 X{ midx } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-y-stock.csv + + #B Vibration - Stock + G1 X{ midx - 25 } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-b-stock.csv + G1 X{ midx + 25 } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-b-stock.csv + + #A Vibration - Stock + G1 X{ midx + 25 } Y{ midy - 25 } Z20 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=3200 OUTPUT=/tmp/accel-a-stock.csv + G1 X{ midx - 25 } Y{ midy + 25 } F6000 + M400 + G4 P300 + ACCELEROMETER_MEASURE CHIP=rpiaccel RATE=0 OUTPUT=/tmp/accel-a-stock.csv + + # Restore user's input shaper frequency parameters + SET_INPUT_SHAPER SHAPER_FREQ_X={ initShapeX } SHAPER_FREQ_Y={ initShapeY } diff --git a/machine.cfg b/machine.cfg new file mode 100644 index 0000000..6e0ba2e --- /dev/null +++ b/machine.cfg @@ -0,0 +1,239 @@ +## Voron Design V0.1 +## ========================= +## SKR Minie E3 V2.0 Controller +## TMC2209 (UART mode) Drivers + +[printer] +kinematics: corexy +max_velocity: 300 +max_accel: 4000 +max_z_velocity: 50 +max_z_accel: 1000 +square_corner_velocity: 6.0 + +## Uncomment if tuning input shaping +#max_accel: 7000 +#max_accel_to_decel: 7000 + + +##################################################################### +# Microcontroller Definitions +##################################################################### + +[mcu] +#serial: /dev/serial/by-id/ +restart_method: command + + +##################################################################### +# Stepper Settings +##################################################################### + +## X Stepper +[stepper_x] +step_pin: X_STEP +dir_pin: X_DIR +enable_pin: !X_ENABLE +# 2mm (GT2-6mm) Belt +# GT2 20T Pully +rotation_distance: 40 +microsteps: 16 +endstop_pin: X_ENDSTOP +position_min: 0 +position_endstop: 120 +position_max: 120 +homing_speed: 20 #70; Max 100 +homing_retract_dist: 5 +homing_positive_dir: true + +[tmc2209 stepper_x] +uart_pin: X_UART +tx_pin: X_TX +uart_address: 0 +interpolate: True +run_current: 0.5 +hold_current: 0.25 +sense_resistor: 0.110 +stealthchop_threshold: 500 + +## Y Stepper +[stepper_y] +step_pin: Y_STEP +dir_pin: Y_DIR +enable_pin: !Y_ENABLE +# 2mm (GT2-6mm) Belt +# GT2 20T Pully +rotation_distance: 40 +microsteps: 16 +endstop_pin: Y_STOP +position_min: 0 +position_endstop: 120 +position_max: 120 +homing_speed: 20 #70; Max 100 +homing_retract_dist: 5 +homing_positive_dir: true + +[tmc2209 stepper_y] +uart_pin: Y_UART +tx_pin: Y_TX +uart_address: 2 +interpolate: True +run_current: 0.5 +hold_current: 0.25 +sense_resistor: 0.110 +stealthchop_threshold: 500 + +## Z Stepper +[stepper_z] +step_pin: Z_STEP +dir_pin: Z_DIR +enable_pin: !Z_ENABLE + +# 2mm (GT2-6mm) Belt +# GT2 20T Pully -> GT2 80T Pully -> 20T Pully +rotation_distance: 40 +gear_ratio: 80:20 + +microsteps: 16 +endstop_pin: Z_ENDSTOP +position_endstop: -0.10 +position_max: 120 +position_min: -1.5 +homing_speed: 10 #40; Max 100 +second_homing_speed: 3.0 +homing_retract_dist: 3.0 + +[tmc2209 stepper_z] +uart_pin: Z_UART +tx_pin: Z_TX +uart_address: 1 +interpolate: true +run_current: 0.75 # TL-42BYGH23 1.0A 2.1N-cm +hold_current: 0.5 +sense_resistor: 0.110 +stealthchop_threshold: 500 + + +##################################################################### +# Extruder +##################################################################### + +## E0 +[extruder] +step_pin: E0_STEP +dir_pin: E0_DIR +enable_pin: !E0_ENABLE + +rotation_distance: 22.23 # TL/Bondtech 5mm Drive Gears +gear_ratio: 50:10 # Mini Afterburner +microsteps: 16 +full_steps_per_rotation: 200 # 200 for 1.8° motor + # 400 for 0.9° motor + +nozzle_diameter: 0.400 +max_extrude_cross_section: 1.44 # Let's pretend that I have a 0.6mm nozzle (IE Stop trying to save me Klipper) +filament_diameter: 1.75 +heater_pin: HEAT_0 +sensor_type: EPCOS 100K B57560G104F +sensor_pin: TEMP_0 +min_temp: 0 +max_temp: 270 +min_extrude_temp: 170 +max_extrude_only_distance: 780.0 +max_extrude_cross_section: 0.8 +#control = pid +#pid_kp = 26.213 +#pid_ki = 1.304 +#pid_kd = 131.721 +pressure_advance: 0.0 +pressure_advance_smooth_time: 0.040 + +## E0 on MCU +[tmc2209 extruder] +uart_pin: E0_UART +tx_pin: E0_TX +uart_address: 3 +interpolate: True +run_current: 0.3 +hold_current: 0.2 +sense_resistor: 0.110 +stealthchop_threshold: 500 + + +##################################################################### +# Bed Heater +##################################################################### + +## Hotbed +[heater_bed] +heater_pin: HEAT_BED +sensor_type: EPCOS 100K B57560G104F +sensor_pin: TEMP_BED +## Adjust Max Power so your heater doesn't warp your bed +max_power: 0.6 # for 100W pads +min_temp: 0 +max_temp: 120 +#control: pid +#pid_Kp: 54.027 +#pid_Ki: 0.770 +#pid_Kd: 948.182 + + +##################################################################### +# Fan Control +##################################################################### + +## Hotend Fan +[heater_fan hotend_fan] +pin: FAN1 +heater: extruder +heater_temp: 50.0 +## If you are experiencing back flow, you can reduce fan_speed +fan_speed: 1.0 +max_power: 1.0 +kick_start_time: 0.5 + +## Print Cooling Fan +[fan] +pin: FAN +max_power: 1.0 +kick_start_time: 0.5 +# Depending on your fan, you may need to increase this value +# if your fan will not start. Can change cycle_time (increase) +# if your fan is not able to slow down effectively +off_below: 0.13 +cycle_time: 0.010 + + +##################################################################### +# Other Sensors +##################################################################### + + +##################################################################### +# Lighting Control +##################################################################### +## Neopixel interface +[neopixel neo_status] +pin: RGB +chain_count: 1 +color_order: RGB +initial_RED: 0.1 +initial_GREEN: 0.5 +initial_BLUE: 0.0 + + +##################################################################### +# Advanced Features +##################################################################### + +### Filament Runout Sensor - XYE Board, Z+ +#[filament_switch_sensor filament_sensor] +#pause_on_runout: True +#switch_pin: ^!P1.24 +#insert_gcode: +# M117 Insert Detected +#runout_gcode: +# M117 Runout Detected +# M600 +# M400 diff --git a/macros.d/dumps.cfg b/macros.d/dumps.cfg new file mode 100644 index 0000000..f7807d1 --- /dev/null +++ b/macros.d/dumps.cfg @@ -0,0 +1,69 @@ +[gcode_macro DUMP_PARAMETERS] +gcode: + {% set parameters = namespace(output = '') %} + {% for name1 in printer %} + {% for name2 in printer[name1] %} + {% set donotwant = ['bed_mesh','configfile'] %} + {% if name1 is not in donotwant %} + {% set param = "printer['%s'].%s = %s" % (name1, name2, printer[name1][name2]) %} + {% set parameters.output = parameters.output + param + "\n" %} + {% endif %} + {% else %} + {% set param = "printer['%s'] = %s" % (name1, printer[name1]) %} + {% set parameters.output = parameters.output + param + "\n" %} + {% endfor %} + {% endfor %} + {action_respond_info(parameters.output)} + +[gcode_macro DUMP_CONFIG] +gcode: + {% set parameters = namespace(output = '') %} + {% for name1 in printer.configfile.config %} + {% set show = ['printer', "bed_mesh VORON-0C-MUELLER"] %} + {% if name1 is in show %} + {% set param = "printer.configfile.config['%s'] = %s" % (name1, printer.configfile.config[name1]) %} + {% set parameters.output = parameters.output + param + "\n" %} + {% endif %} + {% endfor %} + {action_respond_info(parameters.output)} + +[gcode_macro DUMP_SETTINGS] +gcode: + {% set parameters = namespace(output = '') %} + {% for name1 in printer.configfile.settings %} + {% set show = ['extruder'] %} + {% if name1 is not in show %} + {% set param = "printer.configfile.settings['%s'] = %s" % (name1, printer.configfile.settings[name1]) %} + {% set parameters.output = parameters.output + param + "\n" %} + {% endif %} + {% endfor %} + {action_respond_info(parameters.output)} + +[gcode_macro DUMP_MCU_VER] +gcode: + {% set parameters = namespace(output = 'mcu build version: \n') %} + {% for name1 in printer %} + {% for name2 in printer[name1] %} + {% set show = ['mcu_version'] %} + {% if name2 is in show %} + {% set param = "%s: %s" % (name1, printer[name1][name2]) %} + {% set parameters.output = parameters.output + param + "\n" %} + {% endif %} + {% endfor %} + {% endfor %} + {action_respond_info(parameters.output)} + + +[gcode_macro DUMP_SATS] +gcode: + {% set cpu_t = printer.system_stats.cputime %} + {% set cpu_h = (cpu_t / 3600)|int %} + {% set cpu_m = ((cpu_t / 60) % 60)|int %} + {% set cpu_s = (cpu_t % 60)|int %} + {% set sysload = printer.system_stats.sysload|float * 100.0 %} + {% set mem_val = printer.system_stats.memavail|float / 8388608.0 %} + {action_respond_info("klipper process statistic: + Head stalls: %d + CPU Time: %d:%02d:%02d + Sysload: %.2f percent + Mem Val: %.3f MB" % (printer.toolhead.stalls, cpu_h, cpu_m ,cpu_s, sysload, mem_val))} diff --git a/macros.d/functions.cfg b/macros.d/functions.cfg new file mode 100644 index 0000000..9f5112f --- /dev/null +++ b/macros.d/functions.cfg @@ -0,0 +1,57 @@ +## use this if you need more then one action responeses in a order +## insight a macro +[gcode_macro _PRINT_AR] +gcode: + # set default parameter value + {% set show_lcd = params.SHOW_LCD|default('false') %} + {% if show_lcd == 'true' %} + M117 {'%s' % (params.T|string)} + {% endif %} + {action_respond_info("%s" % (params.T|string))} + +[gcode_macro _PRINT_TIME] +gcode: + #set default parameter value + {% set text = params.TEXT|default('Timer') %} + {% set show_ar = params.SHOW_AR|default('false') %} + {% set minutes = ((params.TIME|int / 60) % 60)|int %} + {% set seconds = (params.TIME|int % 60)|int %} + M117 {'%s' % (TEXT)} {minutes|int}:{'%02d' % (seconds|int)} + {%if show_ar == 'true' %} + {action_respond_info("%s %d:%02d" % (text,minutes|int,seconds|int))} + {% endif %} + + +[gcode_macro _SET_Z_CURRENT] +default_parameter_VAL: RUN +variable_last_val: 'RUN' +gcode: + {% if VAL == 'HOME' %} + {% set z_run = 0.3 %} + {% set z1_run = 0.3 %} + {% set z2_run = 0.3 %} + {% set z3_run = 0.3 %} + {% set z_hold = 0.3 %} + {% set z1_hold = 0.3 %} + {% set z2_hold = 0.3 %} + {% set z3_hold = 0.3 %} + {% else %} + {% set z_run = printer.configfile.settings["tmc2209 stepper_z"]["run_current"] %} + {% set z1_run = printer.configfile.settings["tmc2209 stepper_z1"]["run_current"] %} + {% set z2_run = printer.configfile.settings["tmc2209 stepper_z2"]["run_current"] %} + {% set z3_run = printer.configfile.settings["tmc2209 stepper_z3"]["run_current"] %} + {% set z_hold = printer.configfile.settings["tmc2209 stepper_z"]["hold_current"] %} + {% set z1_hold = printer.configfile.settings["tmc2209 stepper_z1"]["hold_current"] %} + {% set z2_hold = printer.configfile.settings["tmc2209 stepper_z2"]["hold_current"] %} + {% set z3_hold = printer.configfile.settings["tmc2209 stepper_z3"]["hold_current"] %} + {% endif %} + {% if VAL != printer["gcode_macro _SET_Z_CURRENT"].last_val|string %} + SET_GCODE_VARIABLE MACRO=_SET_Z_CURRENT VARIABLE=last_val VALUE='"{VAL}"' + {action_respond_info("Home&Probe: RunCur %.2f HoldCur %.2f" % (z_run|float, z_hold|float))} + SET_TMC_CURRENT STEPPER=stepper_z CURRENT={z_run} HOLDCURRENT={z_hold} + SET_TMC_CURRENT STEPPER=stepper_z1 CURRENT={z1_run} HOLDCURRENT={z1_hold} + SET_TMC_CURRENT STEPPER=stepper_z2 CURRENT={z2_run} HOLDCURRENT={z2_hold} + SET_TMC_CURRENT STEPPER=stepper_z3 CURRENT={z3_run} HOLDCURRENT={z3_hold} + M400 + {% endif %} + diff --git a/macros.d/gcodes.cfg b/macros.d/gcodes.cfg new file mode 100644 index 0000000..dca3ddc --- /dev/null +++ b/macros.d/gcodes.cfg @@ -0,0 +1,122 @@ +## Undock Sled +[gcode_macro G32] +gcode: + BED_MESH_CLEAR + G28 + QUAD_GANTRY_LEVEL + G28 + G0 X175 Y175 Z20 F6000 + + +## Auto Bed Leveling / Mesh Bed Compensation +[gcode_macro G29] +gcode: + G4 + + +## Park toolhead +[gcode_macro M125] +gcode: + SAVE_GCODE_STATE NAME=parking + M117 Parking toolhead + G91 + G1 Z20 F300 # move up 5 mm + G90 + G1 X125 Y0 F4000 # move to park position + RESTORE_GCODE_STATE name=parking + + +## Load filament +[gcode_macro M701] +gcode: + SAVE_GCODE_STATE NAME=loading_filament + M117 Loading Filament + M83 + G92 E0.0 + G1 E420 F6000 # length of bowden tube till cold-end (~420mm) + G1 E100 F200 # some extra to prime the nozzle --> slower + G92 E0.0 + RESTORE_GCODE_STATE name=loading_filament + + +## Unload filament +[gcode_macro M702] +gcode: + SAVE_GCODE_STATE NAME=unloading_filament + M125 # park + M117 Unloading Filament + G91 # set relative + G1 E10 F100 + G92 E0.0 + G1 E-530 F6000 # the E is the length of the bowden tube (420mm) + 100 mm. + G92 E0.0 + RESTORE_GCODE_STATE name=unloading_filament MOVE=1 + + +## Filament Change +[gcode_macro M600] +default_parameter_X: 50 +default_parameter_Y: 0 +default_parameter_Z: 10 +gcode: + M117 Filament Change + SAVE_GCODE_STATE NAME=filament_change + PAUSE + G91 # relative + G1 E-1 F300 # retract 1 + M125 # park + M702 # unload + M0 Click when filament inserted + M701 # load + RESTORE_GCODE_STATE NAME=filament_change + + +## TMC Debugging +[gcode_macro M122] +gcode: + DUMP_TMC STEPPER=stepper_x + DUMP_TMC STEPPER=stepper_y + DUMP_TMC STEPPER=stepper_z + DUMP_TMC STEPPER=extruder + + +## Power On +## Enables Octoprint 'PSU Control' and 'Action' plugins +[gcode_macro M80] +gcode: + RESPOND TYPE=command MSG=action:poweron + G4 P1500 + FIRMWARE_RESTART + + +## Power Off +## Enables Octoprint 'PSU Control' and 'Action' plugins +[gcode_macro M81] +gcode: + RESPOND TYPE=command MSG=action:poweroff + + +## Break and Continue +[gcode_macro M108] +gcode: + TURN_OFF_HEATERS + + +## Wait for Chamber Temperature +[gcode_macro M191] +default_parameter_R: 30 +default_parameter_S: 30 +gcode: + TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={S} + +# M201 - Set Print Max Acceleration +[gcode_macro M201] +gcode: + +# M203 - Set Max Feedrate +[gcode_macro M203] +gcode: + +# M205 - Set Advanced Settings +[gcode_macro M205] +gcode: diff --git a/macros.d/macros.cfg b/macros.d/macros.cfg new file mode 100644 index 0000000..ad00236 --- /dev/null +++ b/macros.d/macros.cfg @@ -0,0 +1,188 @@ +[gcode_macro ABL_MESH] +gcode: + SMARTHOME + QUAD_GANTRY_LEVEL + G28 + BED_MESH_CALIBRATE + BED_MESH_PROFILE SAVE=default + M117 Restarting... + SAVE_CONFIG + + +# Do nozzle priming +[gcode_macro PRIME_EXTRUDER] +gcode: + M117 Priming + G92 E0 + G1 X4.1 Y0 Z2.0 F6000 + G1 X4.1 Y20 Z0.3 F6000.0 + G1 X4.1 Y80.0 Z0.3 F600.0 E9 + G1 X4.1 Y120.0 Z0.3 F600.0 E12 + G92 E0 + G1 F2400 E-0.2 # Small retract to remove pressure + G1 Z2.0 F3000 + + +[gcode_macro CLEAN_EXTRUDER] +gcode: + M117 Cleaning # Indicate nozzle clean in progress on LCD + M109 S255 # Uncomment to set your own temp [run warmer to clean out nozzle] + M107 # Turn layer fan off + G21 # Set to metric [change to G20 if you want Imperial] + G90 # Force coordinates to be absolute relative to the origin + G28 # Home X/Y/Z axis + G0 X1 Y0 Z0.15 F9000 # Move in 1mm from edge and up [z] 0.15mm + G92 E0 # Set extruder to [0] zero + G1 Y290 E100 F500 # Extrude 100mm filiment along Y axis 290mm long to prime and clean the nozzle + G92 E0 # Reset extruder to [0] zero end of cleaning run + G1 E-3 F500 # Retract filiment by 3 mm to reduce string effect + G1 X3 Y290 Z15 F9000 # Move over and rise to safe Z height + G1 X3 Y0 Z15 F9000 # Move back to front of bed at safe Z height to shear strings + G1 E3 F500 # Uncomment if you believe exruder will be reset + + +[gcode_macro TUNE_EXTRUDER] +gcode: + M117 Tuning + G28 X0 Y0 Z0 # HOME ALL AXIS + G90 # ABSOLUTE POSITIONING + G92 E0 # SET EXTRUDER TO ZERO VALUE + M190 S60 + M104 S215 + M109 + M82 + G01 E100 F50 # ADVANCE 100MM OF FILAMENT + M140 S0 + M104 S0 + G90 E0 # Return to absolute positioning + + +[gcode_macro BLTOUCH_RESET] +gcode: + BLTOUCH_DEBUG COMMAND=reset + + +# Lighting Control +[gcode_macro lights_on] +gcode: + SET_PIN PIN=caselight VALUE=100 + + +[gcode_macro lights_off] +gcode: + SET_PIN PIN=caselight VALUE=0 + + +[gcode_macro lights_toggle] +gcode: + {% if printer["output_pin caselight"].value == 100 %} + lights_off + {% else %} + lights_on + {% endif %} + + +[gcode_macro GOTO_CENTER] +gcode: + LIFT_Z + G90 + G0 X175 Y175 F6000 + +[gcode_macro LIFT_Z] +gcode: + G91 + G0 Z15 F2000 + G90 + +[gcode_macro SAVE_AT_END] +variable_save: 0 +gcode: + SET_GCODE_VARIABLE MACRO=SAVE_AT_END VARIABLE=save VALUE=1 + + +[gcode_macro SAVE_IF_SET] +gcode: + {% if printer["gcode_macro SAVE_AT_END"].save == 1 %} + {printer.gcode.action_respond_info("Saving was requested - saving and restarting now")} + SAVE_CONFIG + {% endif %} + + +[gcode_macro TUNE_HOTEND] +gcode: + M106 S64 + M117 Hotend PID Cal + PID_CALIBRATE HEATER=extruder TARGET=245 + M117 Restarting... + SAVE_AT_END + +[gcode_macro TUNE_HOTBED] +gcode: + M117 Hotbed PID Cal + PID_CALIBRATE HEATER=heater_bed TARGET=100 + M117 Restarting... + SAVE_AT_END + + +[gcode_macro heat_soak] +gcode: + {% if printer.toolhead.status == "Ready" %} + G28 + G1 Z10 + G1 X150 Y150 F6000 + M140 S100 + UPDATE_DELAYED_GCODE ID=heatsoakDelay DURATION=600 + {% else %} + M117 "Load disabled while printing!" + {% endif %} + + +[delayed_gcode heatsoakDelay] +gcode: + M117 + SET_PIN PIN=caselight VALUE=1 + G4 P250 + SET_PIN PIN=caselight VALUE=0 + G4 P250 + SET_PIN PIN=caselight VALUE=1 + G4 P250 + SET_PIN PIN=caselight VALUE=0 + + +## Tuning Adjustments +## Adjust Z (SET_GCODE_OFFSET) based on each filament type (based on bed temp) +[gcode_macro TEMPADJUSTOFFSET] +gcode: + #ABS + {% if printer.heater_bed.target >= 100 %} + {% endif %} + #PETG + {% if printer.heater_bed.target > 65 and printer.heater_bed.target < 100 %} + SET_GCODE_OFFSET Z=0 MOVE=1 + SET_GCODE_OFFSET Z_ADJUST=0.05 MOVE=1 + {% endif %} + #PLA + {% if printer.heater_bed.target <= 65 %} + SET_GCODE_OFFSET Z=0 MOVE=1 + SET_GCODE_OFFSET Z_ADJUST=0.1 MOVE=1 + {% endif %} + +## Pressure Advance Adjustments +## Use a different PA setting for each filiment type (uses bed temp to determine) +[gcode_macro TEMPADJUSTPA] +gcode: + #ABS + {% if printer.heater_bed.target >= 100 %} + SET_PRESSURE_ADVANCE ADVANCE=0.05585 + {% endif %} + #PETG + {% if printer.heater_bed.target > 65 and printer.heater_bed.target < 100 %} + SET_PRESSURE_ADVANCE ADVANCE=0.0785 + {% endif %} + #PLA + {% if printer.heater_bed.target <= 65 %} + SET_PRESSURE_ADVANCE ADVANCE=0.0325 + {% endif %} + + + diff --git a/macros.d/purge.cfg b/macros.d/purge.cfg new file mode 100644 index 0000000..be26a47 --- /dev/null +++ b/macros.d/purge.cfg @@ -0,0 +1,209 @@ +####################################################################################################################################### + +# Sample macro config to be used in conjunction with the Decontaminator Purge Bucket & Nozzle Scrubber mod. Created by Hernsl +# (hernsl#8860 on Voron Design discord) and edited by Edwardyeeks (edwardyeeks#6042 on Voron Design Discord). + +# The goal of this macro is to provide a nozzle scrubbing and purging routine that is easily copied/referenced into your printer.cfg. +# Users can simply change parameters and enable/disable options in the first half. Descriptions are laid out in sequence to be read +# first; PLEASE READ CAREFULLY. + +# This sample config assumes the following: The user has implemented the default decontaminator purge bucket & nozzle scrubber mod +# for the VORON 1/2. + +# Features in this macro: option of putting the bucket at the rear or front of the bed. Purge routine that can be enabled/disabled. +# By default, bucket is located at rear left of bed and purge routine is enabled. + +# Default parameters are set for safe speeds and movements. Where necessary, tweak the parameters for the nozzle scrub procedure +# to fit your printer. + +# To avoid adding length of lines to your main printer.cfg config file, one can upload a config file separately into klipper and +# include it into the main printer config. Upload nozzle_scrub.cfg to the same directory as printer.cfg. Usually, it is in /home/pi/. + +# Once uploaded, add the following to your printer.cfg in the Macros section: [include /home/pi/nozzle_scrub.cfg] +# Those running mainsail will need to use the following location instead: [include /home/pi/klipper_config/nozzle_scrub.cfg] + +####################################################################################################################################### + +# Name of the macro is clean_nozzle. + +[gcode_macro clean_nozzle] + +# If you are putting your purge bucket at the rear left of the bed as per default installation, enable True on your location_bucket_rear +# variable. If you want to put your purge bucket elsewhere (perhaps the front), then set it to False. See diagrams and description +# further below on how to set your XY position. +variable_location_bucket_rear: True + +# If you want the purging routine in your bucket enabled, set to True (and vice versa). +variable_enable_purge: True + +# These parameters define your filament purging. Update as necessary. If you decided to not enable purge, you can ignore this section. +variable_purge_len: 10 ; Amount of filament, in mm, to purge. +variable_purge_spd: 150 ; Speed, in mm/s, of the purge. +variable_purge_temp_min: 235 ; Minimum nozzle temperature to permit a purge. Otherwise, purge will not occur. + +# Adjust this so that your nozzle scrubs within the brush. Currently defaulted to be a lot higher for safety. Be careful not to go too low! +variable_brush_top: 1.75 ;10 + +# These parameters define your scrubbing, travel speeds, safe z clearance and how many times you want to wipe. Update as necessary. +variable_clearance_z: 5 ; When traveling, but not cleaning, the clearance along the z-axis between nozzle and brush. +variable_wipe_qty: 3 ; Number of complete (A complete wipe: start left, go right, go left) wipes. +variable_prep_spd_xy: 3000 ; Travel (not cleaning) speed along x and y-axis in mm/min. +variable_prep_spd_z: 1500 ; Travel (not cleaning) speed along z axis in mm/min. +variable_wipe_spd_xy: 5000 ; Nozzle wipe speed in mm/min. + + +# These parameters define the size of the brush. Update as necessary. A visual reference is provided below. Note that orientation of +# parameters remain the same whether bucket is at rear or front. +# +# ← brush_width → +# _________________ ↑ +# | | ↑ If you chose location_bucket_rear = True, Y position is acquired +# brush_start (x) | | brush_depth from your stepper_y position_max. Adjust your brush physically in +# |_________________| ↓ Y so that the nozzle scrubs within the brush. +# (y) ↓ +# brush_front +# __________________________________________________________ +# PRINTER FRONT +# +# +## For V1.8, you may need to measure where your brush is on the x axis and input manually into any of the variable_brush_start uncommented. +## For V2.4 250mm build, uncomment this below: +#variable_brush_start: 25 + +## For V2.4 300mm build, uncomment this below: +#variable_brush_start: 50 + +## For V2.4 350mm build, uncomment this below: +variable_brush_start: 75 + +# This value is defaulted from brush location in CAD (rear left). Change if your brush width is different. +variable_brush_width: 52 + +## These are only used if location_bucket_rear is False. You specify a custom location in y axis for your brush - see diagram above. ## +variable_brush_front: 0 +variable_brush_depth: 0 + + +# These parameters define the size of your purge bucket. Update as necessary. If you decided to not enable purge, you can ignore +# this section. A visual reference is provided below. Note that orientation of parameters remain the same whether bucket is at rear +# or front. +# +# bucket_gap +# ← ---- → +# __________________________________________ +# | | | | +# | | | | +# bucket_start (x) | |______| | +# | | | | +# | | | | +# |_________________|. . . |_________________| +# ← ------------- → ← ------------- → +# bucket_left_width bucket_right_width +# _______________________________________________________________________________________ +# PRINTER FRONT +# +## For V2.4 250mm build, uncomment below +#variable_bucket_left_width: 42 + +## For V2.4 300mm build, uncomment below +#variable_bucket_left_width: 67 + +## For V2.4 350mm build, uncomment below +variable_bucket_left_width: 92 + +# These values are defaulted from bucket geometry in CAD (rear left location). Change only if you're using a custom bucket. +variable_bucket_right_width: 40 +variable_bucket_gap: 22 + +# For V1.8, you may need to measure where your bucket start is and input into bucket_start. Otherwise, a value of 0 is for a default +# installation of purge bucket at rear left. +variable_bucket_start: 0 + + +############################################################################################################################################### +############################################################################################################################################### + +### From here on, unless you know what you're doing, it's recommended not to change anything. + +############################################################################################################################################### +############################################################################################################################################### + +# Placeholder. The variable will contain at random a number representing the left or right bucket. +variable_bucket_pos: 1 + +gcode: + # First, check if the axes are homed. + {% if "xyz" in printer.toolhead.homed_axes %} + + ## Save the gcode state in this macro instance. + SAVE_GCODE_STATE NAME=clean_nozzle + + ## Set to absolute positioning. + G90 + + ## Grab max position of Y-axis from config to use in setting a fixed y position for location_bucket_rear = True. + {% set Ry = printer.configfile.config["stepper_y"]["position_max"]|float %} + + ## Check if user enabled purge option or not. + {% if enable_purge %} + + ### Randomly select left or right bin for purge. + SET_GCODE_VARIABLE MACRO=clean_nozzle VARIABLE=bucket_pos VALUE={(range(0, 1) | random)} + + ### Raise Z for travel. + G1 Z{brush_top + clearance_z} F{prep_spd_z} + + ### Check if user chose to use rear location. + {% if location_bucket_rear %} + G1 Y{Ry} F{prep_spd_xy} + {% else %} + G1 Y{brush_front + (brush_depth / 2)} F{prep_spd_xy} + {% endif %} + + ### Position for purge. Randomly selects middle of left or right bucket. It references from the middle of the left bucket. + G1 X{bucket_start + (bucket_left_width / 2) + (bucket_pos * bucket_gap) + (bucket_pos * (bucket_right_width / 2))} + + ### Perform purge if the temp is up to min temp. If not, it will skip and continue executing rest of macro. + {% if printer.extruder.temperature >= purge_temp_min %} + M83 ; relative mode + G1 E{purge_len} F{purge_spd} + G92 E0 ; reset extruder + {% endif %} + + {% endif %} + + ## Position for wipe. + G1 Z{brush_top + clearance_z} F{prep_spd_z} + G1 X{brush_start} F{prep_spd_xy} + + ## Check if user chose to use rear location. + {% if location_bucket_rear %} + G1 Y{Ry} + {% else %} + G1 Y{brush_front + (brush_depth / 2)} + {% endif %} + + ## Move nozzle down into brush. + G1 Z{brush_top} F{prep_spd_z} + + ## Perform wipe. + {% for wipes in range(1, (wipe_qty + 1)) %} + G1 X{brush_start + brush_width} F{wipe_spd_xy} + G1 X{brush_start} F{wipe_spd_xy} + {% endfor %} + + ## Clear from area. + M117 Cleaned! + G1 Z{brush_top + clearance_z} F{prep_spd_z} + G1 X{bucket_left_width / 4} F{prep_spd_xy} + + ## Restore the gcode state to how it was before the macro. + RESTORE_GCODE_STATE NAME=clean_nozzle + + {% else %} + + ## raise error will stop any macros that clean_nozzle is referenced in from proceeding for safety. + { action_raise_error("Please home your axes!") } + M117 Please home first! + + {% endif %} diff --git a/macros.d/start_end.cfg b/macros.d/start_end.cfg new file mode 100644 index 0000000..ec67a01 --- /dev/null +++ b/macros.d/start_end.cfg @@ -0,0 +1,91 @@ +###################################################################### +# Start Print and End Print +###################################################################### + +# Replace the slicer's custom start and end g-code scripts with +# START_PRINT and END_PRINT. + +[gcode_macro START_PRINT] +variable_parameter_T_BED: 60 +variable_parameter_T_EXTRUDER: 190 +gcode: + CLEAR_PAUSE + + # Perform a G28 'home' (if needed), wait for the bed to finish heating and do a QGL + SMARTHOME + SMARTQGL + + # Start preheating the bed + M117 Heating bed/toolhead + _LCD_KNOB COLOR=RED BLINK=1 + M140 S{T_BED} + M104 S{params.T_EXTRUDER|float*0.75} + G0 Z30 F1800 + G0 X175 Y175 Z10 F6000 + + # Perform a G28 'home' (if needed), wait for the bed to finish heating and do a QGL + M190 S{T_BED} + ;LOAD_MESH_TEMP BED_TEMPERATURE{T_BED} + BED_MESH_PROFILE LOAD=default + + # Hover over purge bucket, wait for the hotend to finish, then purge/wipe and rehome Z + G0 X46 Y350 Z10 F18000 + M109 S{T_EXTRUDER} + clean_nozzle + G28 Z + + # Move the nozzle near the bed + G0 X4.1 Y0.1 Z2.0 F6000 + G1 Z0.3 F6000 + + # Prime line + PRIME_EXTRUDER + M117 + + +[gcode_macro END_PRINT] +variable_print_done: 'false' +gcode: + SAVE_GCODE_STATE NAME=STATE_PRINT_END + + ##### Get Boundaries ##### + {% set max_x = printer.toolhead.axis_maximum.x|float %} + {% set max_y = printer.toolhead.axis_maximum.y|float %} + {% set max_z = printer.toolhead.axis_maximum.z|float %} + {% set act_x = printer.toolhead.position.x|float %} + {% set act_y = printer.toolhead.position.y|float %} + {% set act_z = printer.toolhead.position.z|float %} + + ##### Calculate save move ##### + {% if act_x < (max_x - 20.0) %} + {% set x_safe = 20.0 %} + {% else %} + {% set x_safe = -20.0 %} + {% endif %} + {% if act_y < (max_y - 20.0) %} + {% set y_safe = 20.0 %} + {% else %} + {% set y_safe = -20.0 %} + {% endif %} + {% if act_z < (max_z - 2.0) %} + {% set z_safe = 2.0 %} + {% else %} + {% set z_safe = max_z - act_z %} + {% endif %} + + M400 + G92 E0 + G1 E-2 F1800 + G91 + G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing + TURN_OFF_HEATERS + M107 + G90 + G0 X46 Y350 F18000 ; Park over purge bucket + BED_MESH_CLEAR + M300 ; Play a tone + _LCD_KNOB COLOR=GREEN + UPDATE_DELAYED_GCODE ID=_CLEAR_DISPLAY DURATION=10 + SET_GCODE_VARIABLE MACRO=END_PRINT VARIABLE=print_done VALUE='"true"' + RESTORE_GCODE_STATE NAME=STATE_PRINT_END + diff --git a/macros.d/tunes.cfg b/macros.d/tunes.cfg new file mode 100644 index 0000000..f7e2a69 --- /dev/null +++ b/macros.d/tunes.cfg @@ -0,0 +1,110 @@ +[gcode_macro SONG_SMB_FLAGPOLE] +gcode: + M300 S196.0 P156 ;G3 + M300 S261.6 P156 ;C4 + M300 S329.6 P156 ;E4 + M300 S392.0 P156 ;G4 + M300 S523.3 P156 ;C5 + M300 S659.3 P156 ;E5 + M300 S784.0 P413 ;G5 + M300 S659.3 P413 ;E5 + M300 S207.7 P156 ;G#3 + M300 S261.6 P156 ;C4 + M300 S311.1 P156 ;D#4 + M300 S415.3 P156 ;G#4 + M300 S523.3 P156 ;C5 + M300 S622.3 P156 ;D#5 + M300 S830.6 P413 ;G#5 + M300 S622.3 P413 ;D#5 + M300 S233.1 P156 ;A#3 + M300 S293.7 P156 ;D4 + M300 S349.2 P156 ;F4 + M300 S466.2 P156 ;A#4 + M300 S587.3 P156 ;D5 + M300 S698.5 P156 ;F5 + M300 S932.3 P413 ;A#5 + M300 S000.0 P001 ;silence + M300 S932.3 P156 ;A#5 + M300 S000.0 P001 ;silence + M300 S932.3 P156 ;A#5 + M300 S000.0 P001 ;silence + M300 S932.3 P156 ;A#5 + M300 S000.0 P001 ;silence + M300 S1046.5 P700 ;C6 + +[gcode_macro SONG_FF_VICTORY] +gcode: + M300 S2349 P53 + M300 S0 P53 + M300 S2349 P53 + M300 S0 P53 + M300 S2349 P53 + M300 S0 P53 + M300 S2349 P428 + M300 S932 P428 + M300 S2093 P428 + M300 S2349 P107 + M300 S0 P214 + M300 S2093 P107 + M300 S2349 P857 + +[gcode_macro SONG_ZELDA_TREASURE] +gcode: + G4 P1000 ; wait + M300 S392 P200 ; G4 + M300 S440 P200 ; A4 + M300 S493.88 P200 ; B4 + M300 S554.37 P200 ; C#5 + M300 S392 P195 ; G4 + M300 S440 P195 ; A4 + M300 S493.88 P195 ; B4 + M300 S554.37 P195 ; C#5 + M300 S415.3 P190 ; G#4 + M300 S466.16 P190 ; A#4 + M300 S523.25 P190 ; C5 + M300 S587.33 P190 ; D5 + M300 S415.3 P185 ; G#4 + M300 S466.16 P185 ; A#4 + M300 S523.25 P185 ; C5 + M300 S587.33 P185 ; D5 + M300 S440 P180 ; A4 + M300 S493.88 P180 ; B4 + M300 S554.37 P180 ; C#5 + M300 S622.25 P180 ; D#5 + M300 S440 P175 ; A4 + M300 S493.88 P175 ; B4 + M300 S554.37 P175 ; C#5 + M300 S622.25 P175 ; D#5 + M300 S466.16 P169 ; A#4 + M300 S523.25 P169 ; C5 + M300 S587.33 P169 ; D5 + M300 S659.25 P169 ; E5 + M300 S466.16 P163 ; A#4 + M300 S523.25 P163 ; C5 + M300 S587.33 P163 ; D5 + M300 S659.25 P163 ; E5 + M300 S493.88 P158 ; B4 + M300 S554.37 P158 ; C#5 + M300 S622.25 P158 ; D#5 + M300 S698.46 P158 ; F5 + M300 S523.25 P151 ; C5 + M300 S587.33 P151 ; D5 + M300 S659.25 P151 ; E5 + M300 S739.99 P151 ; F#5 + M300 S554.37 P144 ; C#5 + M300 S622.25 P144 ; D#5 + M300 S698.46 P144 ; F5 + M300 S783.99 P144 ; G5 + M300 S587.33 P137 ; D5 + M300 S659.25 P137 ; E5 + M300 S739.99 P137 ; F#5 + M300 S830.61 P137 ; G#5 + G4 P750 ; wait + +[gcode_macro SONG_PORTAL_ALIVE] +gcode: + M300 S3135 P166 + M300 S2959 P166 + M300 S2637 P166 + M300 S2637 P166 + M300 S2959 P166 \ No newline at end of file diff --git a/other.cfg b/other.cfg new file mode 100644 index 0000000..216ec62 --- /dev/null +++ b/other.cfg @@ -0,0 +1,21 @@ +## Other settings + +# This enables a 'force_move' command ignoring all homing, Z-stops etc. Useful in debugging. +[force_move] +enable_force_move: True + +# Support for gcode arc (G2/G3) commands. +[gcode_arcs] +resolution: 0.12 + +# Enables G10 (retract) and G11 (unretract) GCODE commands +[firmware_retraction] +retract_length: 1 # 1mm for direct drive/afterburner +retract_speed: 20 +unretract_extra_length: 0 +unretract_speed: 10 + +# File location of stored varibales +[save_variables] +filename: ~/config/.variables.stb + diff --git a/pi.cfg b/pi.cfg new file mode 100644 index 0000000..8105cd9 --- /dev/null +++ b/pi.cfg @@ -0,0 +1,8 @@ +[mcu rpi] +serial: /tmp/klipper_host_mcu + +## Rasberry Pi CPU Temperature +[temperature_sensor cpu] +sensor_type: rpi_temperature +min_temp: 0 +max_temp: 85 diff --git a/pinouts.d/btt-skr-mini-e3-v2.o.cfg b/pinouts.d/btt-skr-mini-e3-v2.o.cfg new file mode 100644 index 0000000..ec40aaf --- /dev/null +++ b/pinouts.d/btt-skr-mini-e3-v2.o.cfg @@ -0,0 +1,44 @@ +#This file contains common pin mappings for the BigTreeTech SKR 2. +# To use this config, the firmware should be compiled for the +# STM32F407 with a "32KiB bootloader". + +# The "make flash" command does not work on the SKR 2. Instead, +# after running "make", copy the generated "out/klipper.bin" file to a +# file named "firmware.bin" on an SD card and then restart the SKR 2 +# with that SD card. + +# See docs/Config_Reference.md for a description of parameters. + +[board_pins] +aliases: + # BLTouch (Servo/Probe) + SERVO0=PA1, + PROBE=PC14, + + # RGB + RGB=PA8 + + # Limit Switches + X_STOP=PC1, + Y_STOP=PC3, + Z_STOP=PC0, + E0_STOP=PC2, + E1_STOP=PA0, + + # Steppers + X_STEP=PB13, X_DIR=PB12, X_ENABLE=PB14, X_UART=PC11, X_TX=PC10, + Y_STEP=PB10, Y_DIR=PB2, Y_ENABLE=PB11, Y_UART=PC11, Y_TX=PC10, + Z_STEP=PB0, Z_DIR=PC5, Z_ENABLE=PB1, Z_UART=PC11, Z_TX=PC10, + E0_STEP=PB3, E0_DIR=PB4, E0_ENABLE=PD2, E0_UART=PC11, E0_TX=PC10, + + TEMP_0=PA0, + TEMP_BED=PC3, + + FAN=PC6, + FAN1=PC7, + HEAT_0=PC8, + HEAT_BED=PC9, + + # EXP1 header + EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=, + EXP1_2=PA15, EXP1_4=, EXP1_6=PB9, EXP1_8=PB15, EXP1_10=<5V> diff --git a/printer.cfg b/printer.cfg new file mode 100644 index 0000000..bedf709 --- /dev/null +++ b/printer.cfg @@ -0,0 +1,94 @@ +## Voron V2.4 +# Inspiration from /u/VonThing & Floris Remmen +# Uses multiple config files. + +##################################################################### +# Machine definitions +##################################################################### +[include machine.cfg] +[include pi.cfg] + +##################################################################### +# Macros +##################################################################### +[include macros.d/*.cfg] + +##################################################################### +# Caselight Control +##################################################################### +[include caselight.cfg] + +##################################################################### +# Homing Routines +##################################################################### +[include homing.cfg] + +##################################################################### +# Bed Mesh +##################################################################### +[include bed_mesh.cfg] + +##################################################################### +# Calibration +##################################################################### +[include input_shaper.cfg] + +##################################################################### +# Display +##################################################################### +[include display.cfg] + +##################################################################### +# Idle/Timeout Routine +##################################################################### +[include idle_timeout.cfg] + +##################################################################### +# Moonraker + Webclient +##################################################################### +[include webclient.cfg] + +##################################################################### +# Other +##################################################################### +[include other.cfg] + + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [stepper_z] +#*# position_endstop = -0.918 +#*# +#*# [extruder] +#*# control = pid +#*# pid_kp = 20.763 +#*# pid_ki = 1.073 +#*# pid_kd = 100.443 +#*# +#*# [heater_bed] +#*# control = pid +#*# pid_kp = 39.324 +#*# pid_ki = 0.920 +#*# pid_kd = 420.279 +#*# +#*# [bed_mesh default] +#*# version = 1 +#*# points = +#*# 0.012500, 0.062500, 0.065000, 0.047500, 0.030000, 0.025000, 0.042500 +#*# 0.005000, 0.037500, 0.032500, 0.012500, -0.015000, -0.022500, 0.005000 +#*# -0.010000, 0.022500, 0.012500, -0.007500, -0.027500, -0.027500, 0.002500 +#*# -0.010000, 0.025000, 0.020000, 0.000000, -0.020000, -0.017500, 0.027500 +#*# -0.020000, 0.012500, 0.007500, -0.017500, -0.032500, -0.017500, 0.040000 +#*# 0.010000, 0.042500, 0.035000, 0.012500, -0.007500, 0.005000, 0.062500 +#*# 0.045000, 0.067500, 0.057500, 0.025000, 0.005000, 0.012500, 0.067500 +#*# tension = 0.2 +#*# min_x = 30.0 +#*# algo = bicubic +#*# y_count = 7 +#*# mesh_y_pps = 2 +#*# min_y = 30.0 +#*# x_count = 7 +#*# max_y = 319.98 +#*# mesh_x_pps = 2 +#*# max_x = 319.98 diff --git a/webclient.cfg b/webclient.cfg new file mode 100644 index 0000000..e282a62 --- /dev/null +++ b/webclient.cfg @@ -0,0 +1,131 @@ +##################################################################### +# Webclient Settings +##################################################################### +[virtual_sdcard] +path: ~/sdcard + +# Enable status panel messages +[display_status] + +# This adds pause/resume support +[pause_resume] + +# Enable the "M118" and "RESPOND" extended commands. +[respond] +default_type: echo +default_prefix: echo: + + +##################################################################### +# LCD Menu Items +##################################################################### +[menu __main __octoprint] +type: disabled + +[menu __main __sdcard] +type: list +enable: {'virtual_sdcard' in printer} +name: SD Card + +[menu __main __sdcard __file] +type: command +name: File: {printer.print_stats.filename} +index: 0 + +[menu __main __sdcard __load] +type: vsdlist +#type: list +#event_sender: __vsdfiles +enable: {printer.print_stats.filename == "" and (printer.print_stats.state == "standby" or printer.print_stats.state == "error" or printer.print_stats.state == "complete")} +name: Load file +index: 1 + +[menu __main __sdcard __unload] +type: command +enable: {printer.print_stats.filename != "" and (printer.print_stats.state == "standby" or printer.print_stats.state == "error" or printer.print_stats.state == "complete")} +name: Unload file +index: 2 +gcode: + # back is needed to reload the modified menu structure + {menu.back()} + SDCARD_RESET_FILE + +[menu __main __sdcard __start] +type: command +enable: {printer.print_stats.filename != "" and (printer.print_stats.state == "standby" or printer.print_stats.state == "error" or printer.print_stats.state == "complete")} +name: Start print +index: 3 +gcode: + {menu.exit()} + M24 + +[menu __main __sdcard __pause] +type: command +enable: {printer.print_stats.state == "printing"} +name: Pause print +gcode: + # back is needed to reload the modified menu structure + {menu.back()} + PAUSE + +[menu __main __sdcard __resume] +type: command +enable: {printer.print_stats.state == "paused"} +name: Resume print +gcode: + {menu.exit()} + RESUME + +[menu __main __sdcard __cancel] +type: command +enable: {printer.print_stats.state == "paused"} +name: Cancel print +gcode: + {menu.exit()} + CANCEL_PRINT + + +##################################################################### +# Macros +##################################################################### +[gcode_macro PAUSE] +rename_existing: BASE_PAUSE +default_parameter_X: 0 #edit to your park position +default_parameter_Y: 0 #edit to your park position +default_parameter_Z: 120 #edit to your park position +default_parameter_E: 0.2 #edit to your retract length +gcode: + SAVE_GCODE_STATE NAME=PAUSE_state + BASE_PAUSE + G91 + G1 E-{E} F2100 + G1 Z{Z} + G90 + G1 X{X} Y{Y} F6000 + + +[gcode_macro RESUME] +rename_existing: BASE_RESUME +default_parameter_E: 0.2 #edit to your retract length +gcode: + G91 + G1 E{E} F2100 + G90 + RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 + BASE_RESUME + + +[gcode_macro CANCEL_PRINT] +rename_existing: BASE_CANCEL_PRINT +default_parameter_X: 0 #edit to your park position +default_parameter_Y: 0 #edit to your park position +default_parameter_Z: 120 #edit to your park position +gcode: + M104 S0 + M140 S0 + M141 S0 + M106 S0 + CLEAR_PAUSE + SDCARD_RESET_FILE + BASE_CANCEL_PRINT +