From e03dda3ba16de7a58e58b2aa33920ae71fd5d4d9 Mon Sep 17 00:00:00 2001 From: hubfeenix Date: Wed, 8 Jun 2022 08:37:06 +0100 Subject: [PATCH] first backup --- .moonraker.conf.bkp | 70 ++++ .theme | 1 + config | 1 + firmware_binaries/firmware-btt-octopus-11.bin | Bin 0 -> 25380 bytes .../firmware-btt-octopus-pro-429.bin | Bin 0 -> 25296 bytes .../firmware-btt-octopus-pro-446.bin | Bin 0 -> 25372 bytes firmware_binaries/firmware-btt-skr-2-429.bin | Bin 0 -> 25284 bytes firmware_binaries/firmware-btt-skr-pro-12.bin | Bin 0 -> 25280 bytes firmware_binaries/firmware-fysetc-spider.bin | Bin 0 -> 25360 bytes mainsail.cfg | 95 +++++ moonraker.conf | 21 ++ printer-20220602_164135.cfg | 269 +++++++++++++++ printer-20220602_171454.cfg | 288 ++++++++++++++++ printer-20220602_172059.cfg | 288 ++++++++++++++++ printer-20220602_172331.cfg | 288 ++++++++++++++++ printer-20220603_083250.cfg | 288 ++++++++++++++++ printer-20220603_094942.cfg | 317 +++++++++++++++++ printer-20220604_100923.cfg | 309 +++++++++++++++++ printer.cfg | 324 ++++++++++++++++++ webcam.txt | 79 +++++ 20 files changed, 2638 insertions(+) create mode 100644 .moonraker.conf.bkp create mode 160000 .theme create mode 160000 config create mode 100755 firmware_binaries/firmware-btt-octopus-11.bin create mode 100755 firmware_binaries/firmware-btt-octopus-pro-429.bin create mode 100755 firmware_binaries/firmware-btt-octopus-pro-446.bin create mode 100755 firmware_binaries/firmware-btt-skr-2-429.bin create mode 100755 firmware_binaries/firmware-btt-skr-pro-12.bin create mode 100755 firmware_binaries/firmware-fysetc-spider.bin create mode 100644 mainsail.cfg create mode 100644 moonraker.conf create mode 100644 printer-20220602_164135.cfg create mode 100644 printer-20220602_171454.cfg create mode 100644 printer-20220602_172059.cfg create mode 100644 printer-20220602_172331.cfg create mode 100644 printer-20220603_083250.cfg create mode 100644 printer-20220603_094942.cfg create mode 100644 printer-20220604_100923.cfg create mode 100644 printer.cfg create mode 100644 webcam.txt diff --git a/.moonraker.conf.bkp b/.moonraker.conf.bkp new file mode 100644 index 0000000..bc82091 --- /dev/null +++ b/.moonraker.conf.bkp @@ -0,0 +1,70 @@ +[authorization] +cors_domains = + *://app.fluidd.xyz + https://my.mainsail.xyz + http://my.mainsail.xyz + http://*.local + http://*.lan +trusted_clients = + 127.0.0.1 + 10.0.0.0/8 + 127.0.0.0/8 + 169.254.0.0/16 + 172.16.0.0/12 + 192.168.0.0/16 + FE80::/10 + ::1/128 + +[server] +host = 0.0.0.0 +port = 7125 +enable_debug_logging = False +max_upload_size = 1024 + +[file_manager] +config_path = ~/klipper_config +log_path = ~/klipper_logs +enable_object_processing = False + +[update_manager] +refresh_interval = 168 + +[update_manager client RatOS] +type = git_repo +path = ~/klipper_config/config +origin = https://github.com/Rat-OS/RatOS-configuration.git +install_script = scripts/ratos-install.sh +managed_services = + klipper + moonraker + +[update_manager client RatOSTheme] +type = git_repo +path = ~/klipper_config/.theme +origin = https://github.com/Rat-OS/RatOS-theme.git +is_system_service = False + +[update_manager mainsail] +type = web +repo = mainsail-crew/mainsail +path = ~/mainsail + +[update_manager KlipperScreen] +type = git_repo +path = ~/KlipperScreen +origin = https://github.com/jordanruthe/KlipperScreen.git +env = ~/.KlipperScreen-env/bin/python +requirements = scripts/KlipperScreen-requirements.txt +install_script = scripts/KlipperScreen-install.sh + +[update_manager ratos-configurator] +type = git_repo +path = ~/ratos-configurator +primary_branch = deployment +origin = https://github.com/Rat-OS/RatOS-configurator.git +install_script = scripts/setup.sh + +[history] + +[octoprint_compat] + diff --git a/.theme b/.theme new file mode 160000 index 0000000..692057f --- /dev/null +++ b/.theme @@ -0,0 +1 @@ +Subproject commit 692057f8f43ab4c915dfd03e734d4022d500787c diff --git a/config b/config new file mode 160000 index 0000000..acc0cba --- /dev/null +++ b/config @@ -0,0 +1 @@ +Subproject commit acc0cba0c95ba50816d3adfdeb3ee7d561087406 diff --git a/firmware_binaries/firmware-btt-octopus-11.bin b/firmware_binaries/firmware-btt-octopus-11.bin new file mode 100755 index 0000000000000000000000000000000000000000..950bae765b9f84c243ed979c0f3f5d464cc1ab47 GIT binary patch literal 25380 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 Z7qM785Lu!^HriXz!+E5a9#Pv={tLn%Zm$3U literal 0 HcmV?d00001 diff --git a/firmware_binaries/firmware-btt-octopus-pro-429.bin b/firmware_binaries/firmware-btt-octopus-pro-429.bin new file mode 100755 index 0000000000000000000000000000000000000000..5b09ac153337462bd0c13c5498de91cf0c76a9ee GIT binary patch literal 25296 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 literal 0 HcmV?d00001 diff --git a/firmware_binaries/firmware-btt-octopus-pro-446.bin b/firmware_binaries/firmware-btt-octopus-pro-446.bin new file mode 100755 index 0000000000000000000000000000000000000000..4cc93e3b34ee9da368e947873daffb88f283c542 GIT binary patch literal 25372 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%0AQ+dFD;FvLU#$Pzze{>jdxcqfZv98mGF}UA~ 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 Qv)Bpeg literal 0 HcmV?d00001 diff --git a/firmware_binaries/firmware-btt-skr-pro-12.bin b/firmware_binaries/firmware-btt-skr-pro-12.bin new file mode 100755 index 0000000000000000000000000000000000000000..37706121ec2b2ec55467531f5dea86e6aa3f6bc8 GIT binary patch literal 25280 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%0Ar03Wm_p8g1^0cU>Cbid)9_5Tqc_;>$-59eDF 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 +# +# This file may be distributed under the terms of the GNU GPLv3 license +# +# Version 1.7 + +# add [include mainsail.cfg] to your printer.cfg to include it to your printer.cfg +# modify x_park, y_park, z_park_delta and extrude value at the macro _TOOLHEAD_PARK_PAUSE_CANCEL if needed + +# use variable_park: False at CANCEL_PRINT to disallow the parking move + +[virtual_sdcard] +path: /home/pi/gcode_files + +[pause_resume] + +[display_status] + +[gcode_macro CANCEL_PRINT] +description: Cancel the actual running print +rename_existing: CANCEL_PRINT_BASE +variable_park: True +gcode: + ## Move head and retract only if not already in the pause state and park set to true + {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%} + _TOOLHEAD_PARK_PAUSE_CANCEL + {% endif %} + TURN_OFF_HEATERS + CANCEL_PRINT_BASE + +[gcode_macro PAUSE] +description: Pause the actual running print +rename_existing: PAUSE_BASE +gcode: + PAUSE_BASE + _TOOLHEAD_PARK_PAUSE_CANCEL + +[gcode_macro RESUME] +description: Resume the actual running print +rename_existing: RESUME_BASE +gcode: + ##### read extrude from _TOOLHEAD_PARK_PAUSE_CANCEL macro ##### + {% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %} + #### get VELOCITY parameter if specified #### + {% if 'VELOCITY' in params|upper %} + {% set get_params = ('VELOCITY=' + params.VELOCITY) %} + {%else %} + {% set get_params = "" %} + {% endif %} + ##### end of definitions ##### + {% if printer.extruder.can_extrude|lower == 'true' %} + M83 + G1 E{extrude} F2100 + {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %} + {% else %} + {action_respond_info("Extruder not hot enough")} + {% endif %} + RESUME_BASE {get_params} + +[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL] +description: Helper: park toolhead used in PAUSE and CANCEL_PRINT +variable_extrude: 1.0 +gcode: + ##### set park positon for x and y ##### + # default is your max posion from your printer.cfg + {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %} + {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %} + {% set z_park_delta = 2.0 %} + ##### calculate save lift position ##### + {% set max_z = printer.toolhead.axis_maximum.z|float %} + {% set act_z = printer.toolhead.position.z|float %} + {% if act_z < (max_z - z_park_delta) %} + {% set z_safe = z_park_delta %} + {% else %} + {% set z_safe = max_z - act_z %} + {% endif %} + ##### end of definitions ##### + {% if printer.extruder.can_extrude|lower == 'true' %} + M83 + G1 E-{extrude} F2100 + {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %} + {% else %} + {action_respond_info("Extruder not hot enough")} + {% endif %} + {% if "xyz" in printer.toolhead.homed_axes %} + G91 + G1 Z{z_safe} F900 + G90 + G1 X{x_park} Y{y_park} F6000 + {% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %} + {% else %} + {action_respond_info("Printer not homed")} + {% endif %} \ No newline at end of file diff --git a/moonraker.conf b/moonraker.conf new file mode 100644 index 0000000..d4ad381 --- /dev/null +++ b/moonraker.conf @@ -0,0 +1,21 @@ +# Load the RatOS moonraker defaults +[include config/moonraker.conf] + +# If you use a "special" ip range in your local network, +# you can specify it under trusted_clients here. +[authorization] +cors_domains: + *://app.fluidd.xyz + https://my.mainsail.xyz + http://my.mainsail.xyz + http://*.local + http://*.lan +trusted_clients: + 127.0.0.1 + 10.0.0.0/8 + 127.0.0.0/8 + 169.254.0.0/16 + 172.16.0.0/12 + 192.168.0.0/16 + FE80::/10 + ::1/128 diff --git a/printer-20220602_164135.cfg b/printer-20220602_164135.cfg new file mode 100644 index 0000000..1800387 --- /dev/null +++ b/printer-20220602_164135.cfg @@ -0,0 +1,269 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +#[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 300 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 0.0 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 3.180 diff --git a/printer-20220602_171454.cfg b/printer-20220602_171454.cfg new file mode 100644 index 0000000..bc8e45f --- /dev/null +++ b/printer-20220602_171454.cfg @@ -0,0 +1,288 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +#[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 300 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 0.0 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 3.180 +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer-20220602_172059.cfg b/printer-20220602_172059.cfg new file mode 100644 index 0000000..eacdb37 --- /dev/null +++ b/printer-20220602_172059.cfg @@ -0,0 +1,288 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +#[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 300 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 0.0 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 4.100 +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer-20220602_172331.cfg b/printer-20220602_172331.cfg new file mode 100644 index 0000000..cd6e364 --- /dev/null +++ b/printer-20220602_172331.cfg @@ -0,0 +1,288 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +#[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 300 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 0.0 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 2.970 +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer-20220603_083250.cfg b/printer-20220603_083250.cfg new file mode 100644 index 0000000..a074d83 --- /dev/null +++ b/printer-20220603_083250.cfg @@ -0,0 +1,288 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +#[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 300 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 0.0 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 3.000 +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer-20220603_094942.cfg b/printer-20220603_094942.cfg new file mode 100644 index 0000000..aea3185 --- /dev/null +++ b/printer-20220603_094942.cfg @@ -0,0 +1,317 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +# [include config/boards/btt-skr-pro-12/config.cfg] +[include config/boards/btt-octopus-11/config.cfg] +#[include config/boards/btt-octopus-pro-446/config.cfg] +#[include config/boards/btt-octopus-pro-429/config.cfg] +#[include config/boards/fysetc-spider/config.cfg] + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] +[include config/printers/v-core-3/tmc2209.cfg] +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + +# COOLED TMC 2209 + LDO-42STH48-2504AC +# This increases motor torque, positional accuracy and speed limits. +# don't enable this before your printer is fully configured and you have a fan blowing on your stepper drivers. +#[include config/printers/v-core-3/speed-limits-performance.cfg] +#[include config/printers/v-core-3/tmc2209-performance.cfg] +#[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.6a-*.cfg] + +# STEALTH MODE (Enables stealthchop and limits velocity and acceleration) +# NOTE: You still need to include one of the above stepper motor definitions. +# NOTE: This will make your printer quiter but less accurate, it's an inherent side effect of stealthchop. +#[include config/printers/v-core-3/speed-limits-stealth.cfg] +#[include config/printers/v-core-3/tmc2209-stealth.cfg] + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] +# Inductive/Capacitive probe +# [include config/z-probe/probe.cfg] + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] +# Sensorless homing (Beware: this requires manual tinkering and does not work if your x/y stepper drivers +# have clipped DIAG pins). It is strongly encouraged to use physical endstops if you're a beginner. +# If you still wish to proceed, copy config/templates/sensorless-homing-tmc2209.cfg to the root directory and +# remove the # from the line below. +#[include sensorless-homing-tmc2209.cfg] + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# +# Remove the # from your printer size below. +# Similarly add a # in front of [include config/printers/v-core-3/300.cfg] if you have a bigger machine. +#[include config/printers/v-core-3/300.cfg] +#[include config/printers/v-core-3/400.cfg] +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# +# Extruder +# [include config/extruders/bmg.cfg] +#[include config/extruders/lgx.cfg] +#[include config/extruders/lgx-lite.cfg] +[include config/extruders/orbiter.cfg] +#[include config/extruders/orbiter-1004.cfg] # Use this with the LDO-36STH20-1004AHG motor +#[include config/extruders/hemera.cfg] +#[include config/extruders/titan.cfg] + +# Hotend +# [include config/hotends/v6.cfg] +#[include config/hotends/dragonfly.cfg] +#[include config/hotends/rapido.cfg] +#[include config/hotends/copperhead.cfg] +[include config/hotends/mosquito.cfg] +#[include config/hotends/mosquito-magnum.cfg] +#[include config/hotends/dragon-standard-flow.cfg] +#[include config/hotends/dragon-high-flow.cfg] + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 200 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +z_offset: 3.250 # Adjust this to fit your setup + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[gcode_macro _START_PRINT_AFTER_HEATING_BED] +gcode: + {% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %} + M117 Pre-heating extruder... + # Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. + # Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. + M104 S150 + TEMPERATURE_WAIT SENSOR=extruder MINIMUM=150 + {% endif %} + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# z_offset = 3.000 +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 +#*# +#*# [bed_mesh default] +#*# version = 1 +#*# points = +#*# 0.665625, 0.318437, 0.321250, 0.343125, 0.492500 +#*# 0.355000, 0.167187, 0.182187, 0.291250, 0.432187 +#*# -0.072813, -0.134063, 0.024687, 0.226562, 0.419062 +#*# -0.187813, -0.070938, 0.104375, 0.360312, 0.524062 +#*# 0.080937, 0.189687, 0.425000, 0.623750, 0.892500 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer-20220604_100923.cfg b/printer-20220604_100923.cfg new file mode 100644 index 0000000..ba125ac --- /dev/null +++ b/printer-20220604_100923.cfg @@ -0,0 +1,309 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# The first thing you'll need to do is go through this file and comment out / uncomment +# the files and/or settings you need. +# You'll be able to print just fine with this config as it is, but it is recommended +# that you follow these steps to properly calibrate your printer: +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +[include config/boards/btt-octopus-11/config.cfg] + + + + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] + + + +[include config/printers/v-core-3/tmc2209.cfg] + +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + + + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] + + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] + + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# + +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + + +############################################################################################################# +### TOOLHEAD +### Pick your extruder and hotend +############################################################################################################# + +[include config/extruders/orbiter.cfg] + + + +[include config/hotends/mosquito.cfg] + + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 200 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 3.250 # USE FOR PLA +z_offset: 2.75 # USE FOR PETG + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +############################################################################################################# +### USER OVERRIDES +### Anything custom you want to add, or RatOS configuration you want to override, do it here. +############################################################################################################# + +[gcode_macro _START_PRINT_AFTER_HEATING_BED] +gcode: + {% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %} + M117 Pre-heating extruder... + # Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. + # Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. + M104 S150 + TEMPERATURE_WAIT SENSOR=extruder MINIMUM=150 + {% endif %} + +[bed_mesh] +speed: 30 +horizontal_move_z: 10 +mesh_min: 15, 15 +mesh_max: 450, 450 +probe_count: 5 , 5 + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 +#*# +#*# [bed_mesh default] +#*# version = 1 +#*# points = +#*# 0.665625, 0.318437, 0.321250, 0.343125, 0.492500 +#*# 0.355000, 0.167187, 0.182187, 0.291250, 0.432187 +#*# -0.072813, -0.134063, 0.024687, 0.226562, 0.419062 +#*# -0.187813, -0.070938, 0.104375, 0.360312, 0.524062 +#*# 0.080937, 0.189687, 0.425000, 0.623750, 0.892500 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 +#*# +#*# [bed_mesh ratos] +#*# version = 1 +#*# points = +#*# 0.658750, 0.348437, 0.369062, 0.392500, 0.536250 +#*# 0.306562, 0.168125, 0.214375, 0.328750, 0.452812 +#*# -0.138750, -0.135625, 0.045312, 0.248125, 0.420000 +#*# -0.223750, -0.061875, 0.141250, 0.383437, 0.531250 +#*# 0.079375, 0.220000, 0.478750, 0.668750, -0.534063 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/printer.cfg b/printer.cfg new file mode 100644 index 0000000..bab7137 --- /dev/null +++ b/printer.cfg @@ -0,0 +1,324 @@ +# Rat Rig V-core 3 Klipper Config +# Documentation: https://os.ratrig.com + +# 0) Sanity check and PID Tuning: https://www.klipper3d.org/Config_checks.html +# 1) Pressure Advance: https://www.klipper3d.org/Pressure_Advance.html +# 2) Skew Correction: https://www.klipper3d.org/Skew_Correction.html +# 3) Resonance Compensation: https://www.klipper3d.org/Resonance_Compensation.html + +# Read more about klipper here: https://www.klipper3d.org/Overview.html + +############################################################################################################# +### CONTROL BOARD +### Pick the board you have installed and wired in your printer. +############################################################################################################# +[include config/boards/btt-octopus-11/config.cfg] + +############################################################################################################# +### BASE SETUP +############################################################################################################# +[include config/printers/v-core-3/v-core-3.cfg] + +############################################################################################################# +### STEPPER MOTORS, DRIVERS & SPEED LIMITS +### Pick the drivers and stepper motors you're using. See the RatOS documentation for custom combinations. +############################################################################################################# +[include config/printers/v-core-3/steppers.cfg] + +# UNCOOLED TMC 2209 + LDO-42STH48-2504AC +[include config/printers/v-core-3/speed-limits-basic.cfg] + + +[include config/printers/v-core-3/tmc2209.cfg] + +[include config/steppers/ldo/42sth48-2504ac/2209/24v-1.1a-*.cfg] + + + +############################################################################################################# +### HOMING +### Pick your probe and endstops +############################################################################################################# +# BL Touch +[include config/z-probe/bltouch.cfg] + + +# Physical endstops +[include config/printers/v-core-3/physical-endstops.cfg] + + + +############################################################################################################# +### PHYSICAL DIMENSIONS +### Pick your printer size +############################################################################################################# + +[include config/printers/v-core-3/500.cfg] + + +############################################################################################################# +### extruder and hotend +############################################################################################################# + +[extruder] +rotation_distance: 4.63 +full_steps_per_rotation: 200 +filament_diameter: 1.750 +max_extrude_only_velocity: 60 +max_extrude_only_distance: 200 +nozzle_diameter: 0.4 +heater_pin: e_heater_pin +sensor_type: ATC Semitec 104GT-2 +sensor_pin: e_sensor_pin +min_extrude_temp: 170 +min_temp: 0 +max_temp: 285 +pressure_advance: 0.05 + +[tmc2209 extruder] +run_current: 0.35 +stealthchop_threshold: 0 + +[firmware_retraction] +retract_speed: 60 +unretract_extra_length: 0 +unretract_speed: 60 +retract_length: 0.5 + + + +############################################################################################################# +### MACROS +############################################################################################################# +[include config/macros.cfg] +[include config/shell-macros.cfg] +[include config/printers/v-core-3/macros.cfg] + + +############################################################################################################# +### MACRO CONFIGURATION +### Configure the behavior of RatOS macros +############################################################################################################# +[gcode_macro RatOS] +# Use absolute extrusion mode +# Set to True to use relative extrusion mode +variable_relative_extrusion: False +# Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. +# Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. +# Set to False to disable +variable_preheat_extruder: True +# Calibrate the bed mesh in the START_PRINT macro. +# Set to false to skip BED_MESH_CALIBRATE, it will still load the BED_MESH +# with the name "ratos", be sure to save your bed_mesh profile with that name. +# or override the _START_PRINT_BED_MESH macro to implement your own mesh handling logic. +variable_calibrate_bed_mesh: True +# Print a prime line or blob at the end of the START_PRINT macro +# set to "primeline" or "primeblob", or False to disable nozzle_priming. +variable_nozzle_priming: "primeline" +# Park in the back when waiting for the extruder to heat up +# set to "front" to park in the front, or "center" to park in the center. +variable_start_print_park_in: "back" +# Height to park it when waiting for extruder to heat. +variable_start_print_park_z_height: 50 +# Skew profile to load before starting the print +# uncomment this to use your calibrated skew correction profile. +#variable_skew_profile: "my_skew_profile" +# Park in the back after the print has ended or was cancelled. +# set to "front" to park in the front, or "center" to park in the center. +variable_end_print_park_in: "back" +# Park in the back when the print is paused. +# set to "front" to park in the front, or "center" to park in the center. +variable_pause_print_park_in: "back" +# Set the speed for travel moves in RatOS Macros in mm/s. +variable_macro_travel_speed: 200 + + +############################################################################################################# +### PRINTER CONFIGURATION +### Customize the defaults to your specific build +############################################################################################################# +[stepper_x] +dir_pin: x_dir_pin # Add ! in front of pin name to reverse X stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 0 # Adjust this to your setup +#x_offset: -27.0 + + + +[stepper_y] +dir_pin: y_dir_pin # Add ! in front of pin name to reverse Y stepper direction +rotation_distance: 40 # 40 for 20 tooth 2GT pulleys, 32 for 16 tooth 2GT pulleys +position_endstop: 480 # 300mm printer +position_min: 5 +#y_offset: -21.0 + + +#position_endstop: 400 # 400mm printer +#position_endstop: 500 # 500mm printer + +[stepper_z] +dir_pin: !z0_dir_pin # Add ! in front of pin name to reverse Z stepper direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z1] +dir_pin: !z1_dir_pin # Add ! in front of pin name to reverse Z1 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +[stepper_z2] +dir_pin: !z2_dir_pin # Add ! in front of pin name to reverse Z2 direction +rotation_distance: 4 # 4 for TR8*4 lead screws +endstop_pin: probe: z_virtual_endstop + +#Z Probe configuration +[bltouch] +sensor_pin: ^PB7 +control_pin: PB6 +x_offset: -27.0 +y_offset: -21.0 +#pin_up_touch_mode_reports_triggered: True +pin_move_time: 0.8 +#z_offset: 3.250 # USE FOR PLA +z_offset: 2.75 # USE FOR PETG + +# [probe] +# z_offset: 1.0 # Adjust this to fit your setup -> "1.0" is placeholder! +# pin: ^probe_pin # For NPN NC probes such as the Super Pinda / Vinda / SupCR / Decoprobe probes. +#pin: ^!probe_pin # NPN NO (refer to the specs on your probe) +#pin: probe_pin # PNP NO (refer to the specs on your probe) +#pin: !probe_pin # PNP NC (refer to the specs on your probe) + +# Safe Z Home (Physical endstops only) +[safe_z_home] +home_xy_position: 250, 250 # Change coordinates to the center of your print bed +speed: 50 +z_hop: 10 # Move up 10mm +z_hop_speed: 5 + +#ORIGINAL +#home_xy_position: 150,150 # 300mm printer +#home_xy_position: 200,200 # 400mm printer +#home_xy_position: 250,250 # 500mm printer + +[extruder] +# Check https://www.klipper3d.org/Pressure_Advance.html for pressure advance tuning. +#pressure_advance: 0.05 +nozzle_diameter: 0.4 # Remember to change this if you change nozzle diameter. +dir_pin: e_dir_pin # Remove ! in front of pin name to reverse extruder direction +control: pid +pid_kp: 28.413 +pid_ki: 1.334 +pid_kd: 151.300 + +[heater_bed] +control: pid +pid_Kp: 22.2 +pid_Ki: 1.08 +pid_Kd: 114 + + +[gcode_macro _START_PRINT_AFTER_HEATING_BED] +gcode: + {% if printer["gcode_macro RatOS"].preheat_extruder|lower == 'true' %} + M117 Pre-heating extruder... + # Wait for extruder to reach 150 so an inductive probe (if present) is at a predictable temp. + # Also allows the bed heat to spread a little, and softens any plastic that might be stuck to the nozzle. + M104 S150 + TEMPERATURE_WAIT SENSOR=extruder MINIMUM=150 + {% endif %} + +# [bed_mesh] +# speed: 30 +# horizontal_move_z: 10 +# mesh_min: 15, 15 +# mesh_max: 450, 450 +# probe_count: 5 , 5 + +[bed_mesh] +horizontal_move_z: 5 +mesh_min: 20,20 +mesh_max:465,460 +probe_count: 7,7 +fade_start: 1.0 +fade_end: 10.0 +mesh_pps: 2,2 +algorithm: bicubic +bicubic_tension: .2 + +############################################################################################################# +### INPUT SHAPER +### Enable/disable input shaper calibration +############################################################################################################# +# Uncomment this next line if you have an ADXL345 connected to your control board +#[include config/printers/v-core-3/input-shaper.cfg] + +# ADXL345 resonance testing configuration +#[resonance_tester] +#probe_points: +# 150,150,20 # 300mm printer +# 200,200,20 # 400mm printer +# 250,250,20 # 500mm printer + + +#*# <---------------------- SAVE_CONFIG ----------------------> +#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. +#*# +#*# [bltouch] +#*# +#*# [bed_mesh vcore] +#*# version = 1 +#*# points = +#*# 0.146250, -0.580313, -0.993438, -1.390000, -1.680625 +#*# 0.458125, -0.109688, -0.498750, -0.825938, -1.111250 +#*# 0.674375, 0.189687, -0.035313, -0.261250, -0.505000 +#*# 1.180937, 0.899687, 0.665000, 0.499375, 0.222500 +#*# 2.068437, 1.804375, 1.605000, 1.387500, 1.222187 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 +#*# +#*# [bed_mesh default] +#*# version = 1 +#*# points = +#*# 0.665625, 0.318437, 0.321250, 0.343125, 0.492500 +#*# 0.355000, 0.167187, 0.182187, 0.291250, 0.432187 +#*# -0.072813, -0.134063, 0.024687, 0.226562, 0.419062 +#*# -0.187813, -0.070938, 0.104375, 0.360312, 0.524062 +#*# 0.080937, 0.189687, 0.425000, 0.623750, 0.892500 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 +#*# +#*# [bed_mesh ratos] +#*# version = 1 +#*# points = +#*# 0.658750, 0.348437, 0.369062, 0.392500, 0.536250 +#*# 0.306562, 0.168125, 0.214375, 0.328750, 0.452812 +#*# -0.138750, -0.135625, 0.045312, 0.248125, 0.420000 +#*# -0.223750, -0.061875, 0.141250, 0.383437, 0.531250 +#*# 0.079375, 0.220000, 0.478750, 0.668750, -0.534063 +#*# tension = 0.2 +#*# min_x = 15.0 +#*# algo = bicubic +#*# y_count = 5 +#*# mesh_y_pps = 2 +#*# min_y = 15.0 +#*# x_count = 5 +#*# max_y = 450.0 +#*# mesh_x_pps = 2 +#*# max_x = 450.0 diff --git a/webcam.txt b/webcam.txt new file mode 100644 index 0000000..e8bd44c --- /dev/null +++ b/webcam.txt @@ -0,0 +1,79 @@ +### Windows users: To edit this file use Notepad++, VSCode, Atom or SublimeText. +### Do not use Notepad or WordPad. + +### MacOSX users: If you use Textedit to edit this file make sure to use +### "plain text format" and "disable smart quotes" in "Textedit > Preferences" + +### Configure which camera to use +# +# Available options are: +# - auto: tries first usb webcam, if that's not available tries raspi cam +# - usb: only tries usb webcam +# - raspi: only tries raspi cam +# +# Defaults to auto +# +#camera="auto" + +### Additional options to supply to MJPG Streamer for the USB camera +# +# See https://faq.octoprint.org/mjpg-streamer-config for available options +# +# Defaults to a resolution of 640x480 px and a framerate of 10 fps +# +#camera_usb_options="-r 640x480 -f 10" + +### Additional webcam devices known to cause problems with -f +# +# Apparently there a some devices out there that with the current +# mjpg_streamer release do not support the -f parameter (for specifying +# the capturing framerate) and will just refuse to output an image if it +# is supplied. +# +# The webcam daemon will detect those devices by their USB Vendor and Product +# ID and remove the -f parameter from the options provided to mjpg_streamer. +# +# By default, this is done for the following devices: +# Logitech C170 (046d:082b) +# GEMBIRD (1908:2310) +# Genius F100 (0458:708c) +# Cubeternet GL-UPC822 UVC WebCam (1e4e:0102) +# +# Using the following option it is possible to add additional devices. If +# your webcam happens to show above symptoms, try determining your cam's +# vendor and product id via lsusb, activating the line below by removing # and +# adding it, e.g. for two broken cameras "aabb:ccdd" and "aabb:eeff" +# +# additional_brokenfps_usb_devices=("aabb:ccdd" "aabb:eeff") +# +# +#additional_brokenfps_usb_devices=() + +### Additional options to supply to MJPG Streamer for the RasPi Cam +# +# See https://faq.octoprint.org/mjpg-streamer-config for available options +# +# Defaults to 10fps +# +#camera_raspi_options="-fps 10" + +### Configuration of camera HTTP output +# +# Usually you should NOT need to change this at all! Only touch if you +# know what you are doing and what the parameters mean. +# +# Below settings are used in the mjpg-streamer call like this: +# +# -o "output_http.so -w $camera_http_webroot $camera_http_options" +# +# Current working directory is the mjpg-streamer base directory. +# +#camera_http_webroot="./www-mainsail" +#camera_http_options="-n" + +### EXPERIMENTAL +# Support for different streamer types. +# +# Available options: +# mjpeg [default] - stable MJPG-streamer +#camera_streamer=mjpeg