[respond] #[include chopper_tune.cfg] # This file contains common pin mappings for the BIGTREETECH Manta M8P V2.0 # To use this config, the firmware should be compiled for the # STM32H723 with a "128KiB bootloader" "25 MHz crystal" # and "USB (on PA11/PA12)", "CAN bus (on PD0/PD1)" or Serial (on USART1 PA10/PA9). # See docs/Config_Reference.md for a description of parameters. [include mainsail.cfg] [include ebb-rp2040-CAN.cfg] [include stealthburner_leds.cfg] [include KAMP_Settings.cfg] [exclude_object] [mcu scanner] #canbus_uuid: 0ca8d67388c2 serial: /dev/serial/by-id/usb-Cartographer_614e_1F000E001653584833373720-if00 # adjust to suit your scanner, if using usb change to serial [scanner] mcu: scanner # Offsets are measured from the centre of your coil, to the tip of your nozzle # on a level axis. It is vital that this is accurate. x_offset: 0 # adjust for your cartographers offset from nozzle to middle of coil y_offset: 25 # adjust for your cartographers offset from nozzle to middle of coil backlash_comp: 0.00564 #0.00598 # Backlash compensation distance for removing Z backlash before measuring # the sensor response. sensor: cartographer # this must be set as cartographer unless using IDM etc. sensor_alt: carto # alternate name to call commands. CARTO_TOUCH etc mesh_runs: 1 # Number of passes to make during mesh scan. [bed_mesh] zero_reference_position: 125, 125 # set this to the middle of your bed speed: 200 # movement speed of toolhead during bed mesh horizontal_move_z: 5 # height of scanner during bed mesh scan mesh_min: 15, 25 # start point of bed mesh [X, Y] mesh_max: 235, 220 # end point of bed mesh [X, Y] probe_count: 30, 30 algorithm: bicubic scan_overshoot: 5 [temperature_sensor Cartographer_MCU] sensor_type: temperature_mcu sensor_mcu: scanner min_temp: 0 max_temp: 105 [safe_z_home] home_xy_position: 125,125 # Example home_xy_position: 175,175 - This would be for a 350 * 350mm bed. z_hop: 10 [z_tilt] z_positions: #-50, 298 #125, 18 #300, 298 -50, 18 125, 298 300, 18 points: #30, 250 #125, 45 #220, 250 30, 0 125, 210 220, 0 speed: 50 # The speed (in mm/s) of non-probing moves during the calibration. # The default is 50. horizontal_move_z: 10 # The height (in mm) that the head should be commanded to move to # just prior to starting a probe operation. The default is 5. retries: 5 # Number of times to retry if the probed points aren't within # tolerance. retry_tolerance: 0.0075 # If retries are enabled then retry if largest and smallest probed # points differ more than retry_tolerance. Note the smallest unit of # change here would be a single step. However if you are probing # more points than steppers then you will likely have a fixed # minimum value for the range of probed points which you can learn # by observing command output. # Motor1 [stepper_y] step_pin: PE6 dir_pin: PE5 enable_pin: !PC14 microsteps: 32 rotation_distance: 40 full_steps_per_rotation: 200 homing_speed: 42 endstop_pin: tmc2209_stepper_y:virtual_endstop homing_retract_dist:0 #position_endstop: -5.5 #position_min: -5.5 #position_max: 250 #position_endstop: 252.5 #position_min: -1.8 #position_max: 252.5 position_endstop: 260 position_min: 0 position_max: 260 [tmc2209 stepper_y] uart_pin: PC13 diag_pin: ^PF4 driver_SGTHRS: 80 run_current: 0.8 interpolate: true sense_resistor: 0.110 stealthchop_threshold: 0 driver_TBL: 3 driver_TOFF: 3 driver_HSTRT: 0 driver_HEND: 2 ############################################ # Motor2 #[stepper_y] #step_pin: PE2 #dir_pin: PE1 #enable_pin: !PE4 #microsteps: 16 #rotation_distance: 40 #homing_speed: 20 #endstop_pin: tmc2209_stepper_y:virtual_endstop #homing_retract_dist:0 #position_endstop: 0 #position_max: 235 #[tmc2209 stepper_y] #uart_pin: PE3 #diag_pin: ^PF3 #driver_SGTHRS: 255 #run_current: 0.800 #stealthchop_threshold: 999999 # Motor3 [stepper_x] step_pin: PB8 #dir_pin: PB7 dir_pin: PB7 enable_pin: !PE0 microsteps: 32 rotation_distance: 40 full_steps_per_rotation: 200 homing_speed: 42 endstop_pin: tmc2209_stepper_x:virtual_endstop homing_retract_dist:0 #position_endstop: -9 #position_min: -9 #position_max: 251.5 #position_endstop: 260 #position_min: 0 #position_max: 260 position_endstop: 252.5 position_min: -1.8 position_max: 252.5 [tmc2209 stepper_x] uart_pin: PB9 diag_pin: ^PF2 driver_SGTHRS: 80 run_current: 0.8 interpolate: true sense_resistor: 0.110 stealthchop_threshold: 0 driver_TBL: 3 driver_TOFF: 3 driver_HSTRT: 0 driver_HEND: 2 ############################################# ############################################# # Motor6 [stepper_z] step_pin: PG9 dir_pin: PD7 enable_pin: !PG11 microsteps: 32 rotation_distance: 4 endstop_pin: probe:z_virtual_endstop #position_endstop: 0 position_max: 270 position_min: -5.0 homing_speed: 8 second_homing_speed: 3 homing_retract_dist: 0 [tmc2209 stepper_z] uart_pin: PG10 ##diag_pin: PF2 run_current: 0.65 stealthchop_threshold: 0 interpolate: false ############################################### #Motor7 [stepper_z1] step_pin: PD4 dir_pin: PD3 enable_pin: !PD6 microsteps: 32 rotation_distance: 4 #endstop_pin: ^PC15 #position_endstop: 0 #position_max: 270 #position_min: -5.0 #homing_speed: 8 #second_homing_speed: 3 #homing_retract_dist: 3 [tmc2209 stepper_z1] uart_pin: PD5 ##diag_pin: PF2 run_current: 0.65 stealthchop_threshold: 0 interpolate: false ################################################ #Motor8 [stepper_z2] step_pin: PC7 dir_pin: PC8 enable_pin: !PD2 microsteps: 32 rotation_distance: 4 #endstop_pin: ^PC15 #position_endstop: 0 #position_max: 270 #position_min: -5.0 #homing_speed: 8 #second_homing_speed0: 3 #homing_retract_dist: 3 [tmc2209 stepper_z2] uart_pin: PC6 ##diag_pin: PF2 run_current: 0.65 stealthchop_threshold: 0 interpolate: false #################################### #[autotune_tmc stepper_x] #motor: omc-17hs19-2004s1 #tuning_goal: performance #sg4_thrs: 80 #[autotune_tmc stepper_y] #motor: omc-17hs19-2004s1 #tuning_goal: performance #sg4_thrs: 80 #################################### [heater_bed] heater_pin: PA0 #PF5 sensor_pin: PB1 # TB sensor_type: Generic 3950 max_power: 1 min_temp: 0 max_temp: 120 control: pid pid_kp: 50.260 pid_ki: 1.102 pid_kd: 572.961 #sensor_type: ATC Semitec 104GT-2 #control: watermark #min_temp: 0 #max_temp: 130 #[fan_generic soc-fan] #pin: host:gpio79 #CB1 #pin: host:gpio26 #CM4 # Fan0 [controller_fan controller_fan1] pin: PF7 max_power: 0.5 [controller_fan controller_fan2] pin: PF9 max_power: 0.5 ## Fan1 #[heater_fan fan1] #pin: PF9 ## Fan2 #[heater_fan fan2] #pin: PF6 ## Fan3 #[heater_fan fan3] #pin: PF8 ## Fan4 #[heater_fan fan4] #pin: PA4 ## Fan5 #[heater_fan fan5] #pin: PA6 #tachometer_pin: PC2 ## Fan6 #[heater_fan fan6] #pin: PA2 #tachometer_pin: PC1 [servo depressor] pin: PE9 # PWM output pin controlling the servo. This parameter must be # provided. maximum_servo_angle: 360 # The maximum angle (in degrees) that this servo can be set to. The # default is 180 degrees. minimum_pulse_width: 0.0005 # The minimum pulse width time (in seconds). This should correspond # with an angle of 0 degrees. The default is 0.001 seconds. maximum_pulse_width: 0.0025 # The maximum pulse width time (in seconds). This should correspond # with an angle of maximum_servo_angle. The default is 0.002 # seconds. initial_angle: 90 # Initial angle (in degrees) to set the servo to. The default is to # not send any signal at startup. #initial_pulse_width: # Initial pulse width time (in seconds) to set the servo to. (This # is only valid if initial_angle is not set.) The default is to not # send any signal at startup. [led caselight] white_pin: PA1 hardware_pwm:true initial_WHITE:0 cycle_time: 0.01 [mcu] canbus_uuid: cf3f97c6a08e [mcu cb1] serial: /tmp/klipper_host_mcu #[input_shaper] #shaper_freq_x: 58.6 #shaper_type_x: mzv #shaper_freq_y: 44.4 #shaper_type_y: mzv #[input_shaper] #shaper_freq_x: 60.2 #shaper_type_x: mzv #shaper_freq_y: 45.4 #shaper_type_y: mzv #[input_shaper] #shaper_freq_x: 63.6 #shaper_type_x: mzv #shaper_freq_y: 46.6 #shaper_type_y: mzv #[input_shaper] #shaper_freq_x: 66.2 #shaper_type_x: mzv #shaper_freq_y: 48 #shaper_type_y: mzv [input_shaper] shaper_freq_x: 69.6 shaper_type_x: mzv shaper_freq_y: 49.2 shaper_type_y: mzv #[shaketune] #result_folder: ~/printer_data/config/ShakeTune_results # Path where the processed results will be stored. If the folder doesn't exist, # it will be automatically created. You can change this if you'd like to store # results in a different location. #number_of_results_to_keep: 10 # This setting defines how many results you want to keep in the result folder. # Once the specified number is exceeded, older results will be automatically deleted # to free up space on the SD card and avoid cluttering the results folder. #keep_raw_data: False # If set to True, Shake&Tune will store both the processed graphs and the raw accelerometer # .stdata files in the results folder. This can be useful for debugging or archiving purposes. # Please always attach them when reporting any issues on GitHub or Discord. #show_macros_in_webui: Trueaction_respond_info(msg) # Mainsail and Fluidd doesn't create buttons for system commands (macros that are not part # of the printer.cfg file). This option allow Shake&Tune to inject them into the webui at runtime. # If set to False, the macros will be hidden but still accessible from the console by typing # their names manually, which can be useful if you prefer to encapsulate them into your own macros. #timeout: 600 # This defines the maximum processing time (in seconds) to allows to Shake&Tune for generating # graphs from a .stdata file. 10 minutes should be more than enough in most cases, but if you have # slower hardware (e.g., older SD cards or low-performance devices), increase it to prevent timeouts. #measurements_chunk_size: 2 # Each Shake&Tune command uses the accelerometer to take multiple measurements. By default, # Shake&Tune will write a chunk of data to disk every two measurements, and at the end of the # command will merge these chunks into the final .stdata file for processing. "2" is a very # conservative setting to avoid Klipper Timer Too Close errors on lower end devices with little # RAM, and should work for everyone. However, if you are using a powerful computer, you may # wish to increase this value to keep more measurements in memory (e.g., 15-20) before writing # the chunk and avoid stressing the filesystem too much. #max_freq: 200 # This setting defines the maximum frequency at which the calculation of the power spectral density # is cutoff. The default value should be fine for most machines and accelerometer combinations and # avoid touching it unless you know what you're doing. #dpi: 300 # Controls the resolution of the generated graphs. The default value of 300 dpi was optimized # and strikes a balance between performance and readability, ensuring that graphs are clear # without using too much RAM to generate them. Usually, you shouldn't need to change this value. [printer] kinematics: corexy max_velocity: 400 max_accel: 5600 max_z_velocity: 20 max_z_accel: 1000 square_corner_velocity: 15.0 [idle_timeout] timeout: 7200 [board_pins] aliases: # EXP1 header EXP1_1=PE7, EXP1_2=PG1, EXP1_3=PG0, EXP1_4=PF15, EXP1_5=PF14, EXP1_6=PF13, # Slot in the socket on this side EXP1_7=PF12, EXP1_8=PF11, EXP1_9=, EXP1_10=<5V>, # EXP2 header EXP2_1=PE13, EXP2_2=PE12, EXP2_3=PE15, EXP2_4=PE11, EXP2_5=PE10, EXP2_6=PE14, # Slot in the socket on this side EXP2_7=PE8, EXP2_8=, EXP2_9=, EXP2_10= # See the sample-lcd.cfg file for definitions of common LCD displays. #[adxl345] #cs_pin: PA15 #spi_bus: spi3a #[bltouch] #sensor_pin: PD13 #control_pin: PD12 ## Proximity switch #[probe] #pin: PD8 #[output_pin ps_on_pin] #pin: PD14 #[neopixel my_neopixel_1] #pin: PD15 #[hall_filament_width_sensor] #adc1: PC0 #adc2: PF10 ##################################################################### # A better print_start macro for v2/trident ##################################################################### ## *** THINGS TO UNCOMMENT: *** ## Bed mesh (2 lines at 2 locations) ## Nevermore (if you have one) ## Z_TILT_ADJUST (For Trident only) ## QUAD_GANTRY_LEVEL (For V2.4 only) [gcode_macro HOME] gcode: status_homing #G90 # Home X G28 X0 G4 P2000 G1 X125 F2400 G4 P2000 # Home Y G28 Y0 G4 P2000 # Home Z G28 Z0 status_ready #G90 # Home Z #G28 Z0 #G1 Z10 F1200 # Home Y #G28 Y0 #G1 Y5 F1200 # Home X #G4 P2000 #G28 X0 #G1 X5 F1200 [gcode_macro PRINT_START] # Use PRINT_START for the slicer starting script - please customise for your slicer of choice gcode: # Parameters {% set BED_TEMP = params.BED|float %} {% set EXTRUDER_TEMP = params.EXTRUDER|float %} #SET_FAN_SPEED FAN=BedFans SPEED=1 ; turn bed fans on M190 S{BED_TEMP} ; set and wait for bed to reach temp #G4 S180 ; wait 3min #SET_FAN_SPEED FAN=BedFans SPEED=0 ; turn bed fans off #G4 S120 ; wait 2min #G32 ; home all axes G28 Z #BED_MESH_CALIBRATE METHOD=rapid_scan CLEAN_NOZZLE {% if params.BED_TYPE == "Cool Plate" %} #SET_GCODE_OFFSET Z_ADJUST=0.00 CARTOGRAPHER_MODEL_SELECT NAME=cool-plate {% endif %} {% if params.BED_TYPE == "Textured Cool Plate" %} #SET_GCODE_OFFSET Z_ADJUST=0.00 {% endif %} {% if params.BED_TYPE == "Engineering Plate" %} #SET_GCODE_OFFSET Z_ADJUST=0.00 CARTOGRAPHER_MODEL_SELECT NAME=engineering-plate {% endif %} {% if params.BED_TYPE == "High Temp Plate" %} SET_GCODE_OFFSET Z_ADJUST=0.00 {% endif %} {% if params.BED_TYPE == "Textured PEI Plate" %} #SET_GCODE_OFFSET Z_ADJUST=0.00 CARTOGRAPHER_MODEL_SELECT NAME=textured-pei-plate {% endif %} BED_MESH_CALIBRATE ; make bed mesh M109 S150 CARTOGRAPHER_TOUCH M109 S{EXTRUDER_TEMP} ; set and wait for hot end to reach temp LINE_PURGE ; purge that shit [gcode_macro PRINT_END] # Use PRINT_END for the slicer ending script - please customise for your slicer of choice gcode: # safe anti-stringing move coords {% set th = printer.toolhead %} {% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %} {% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %} {% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %} SAVE_GCODE_STATE NAME=STATE_PRINT_END M400 ; wait for buffer to clear G92 E0 ; zero the extruder G1 E-5.0 F1800 ; retract filament TURN_OFF_HEATERS G90 ; absolute positioning G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 2} F3600 ; park nozzle at rear M107 ; turn off fan #BED_MESH_CLEAR # The purpose of the SAVE_GCODE_STATE/RESTORE_GCODE_STATE # command pair is to restore the printer's coordinate system # and speed settings since the commands above change them. # However, to prevent any accidental, unintentional toolhead # moves when restoring the state, explicitly set MOVE=0. RESTORE_GCODE_STATE NAME=STATE_PRINT_END MOVE=0 [gcode_macro CLEAN_NOZZLE] variable_start_x: 207 variable_start_y: 258 variable_start_z: 0.3 variable_wipe_dist: -40 variable_wipe_qty: 10 variable_wipe_spd: 200 variable_raise_distance: 20 gcode: {% if "xyz" not in printer.toolhead.homed_axes %} G28 {% endif %} G90 ; absolute positioning ## Move nozzle to start position G1 Z6 G1 X{start_x} Y{start_y} F6000 G1 Z{start_z} F1500 ##Heat up and down M109 S150 G4 P2000 M109 S0 M106 S255 ## Wipe nozzle {% for wipes in range(1, (wipe_qty + 1)) %} G1 X{start_x + wipe_dist} F{wipe_spd * 60} G1 X{start_x} F{wipe_spd * 60} {% endfor %} ## Raise nozzle G1 X125 Z{raise_distance} G4 P7500 M106 S0 #*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [scanner model default] #*# model_coef = 1.4647747346238096, #*# 1.7899270399884948, #*# 0.760893218220448, #*# 0.34867703973882613, #*# 0.3837785451627901, #*# 0.4383965787694773, #*# -0.21683929633105137, #*# -0.3967223001013001, #*# 0.25626390765146934, #*# 0.27002247862428713 #*# model_domain = 3.1638790989432764e-07,3.3070612901721363e-07 #*# model_range = 0.200000,5.100000 #*# model_temp = 32.071972 #*# model_offset = 0.00000 #*# model_mode = touch #*# model_fw_version = CARTOGRAPHER 5.1.0 #*# #*# [scanner] #*# mode = touch #*# scanner_touch_threshold = 2500 #*# scanner_touch_speed = 3 #*# scanner_touch_z_offset = 0.075 #*# #*# [scanner model cool-plate] #*# model_coef = 1.4648246546166295, #*# 1.7891094938887862, #*# 0.7643955782789429, #*# 0.3616202601839545, #*# 0.37417396716344387, #*# 0.39965558504327525, #*# -0.202879992150405, #*# -0.3473954201532969, #*# 0.24953085160846544, #*# 0.24849441998713823 #*# model_domain = 3.1638027257134893e-07,3.3068539942274863e-07 #*# model_range = 0.200000,5.100000 #*# model_temp = 29.043862 #*# model_offset = 0.00000 #*# model_mode = touch #*# model_fw_version = CARTOGRAPHER 5.1.0 #*# #*# [scanner model textured-pei-plate] #*# model_coef = 1.5004267334646106, #*# 1.8220540153103852, #*# 0.7518473939212281, #*# 0.35284375665841056, #*# 0.37775201081808846, #*# 0.3801804490577068, #*# -0.22392483811821107, #*# -0.33672711145041195, #*# 0.24474654540586732, #*# 0.23393940440085098 #*# model_domain = 3.1790932591062093e-07,3.3080463908447557e-07 #*# model_range = 0.200000,5.100000 #*# model_temp = 28.686898 #*# model_offset = 0.00000 #*# model_mode = touch #*# model_fw_version = CARTOGRAPHER 5.1.0 #*# #*# [scanner model engineering-plate] #*# model_coef = 1.5326242174767133, #*# 1.8519452075655596, #*# 0.7450269340503862, #*# 0.3484275355069139, #*# 0.36235160730709126, #*# 0.34317278104624366, #*# -0.21545598684823264, #*# -0.29252328754231816, #*# 0.22504942592141208, #*# 0.2002321470547337 #*# model_domain = 3.195478082694957e-07,3.3096413605929184e-07 #*# model_range = 0.200000,5.100000 #*# model_temp = 28.130368 #*# model_offset = 0.00000 #*# model_mode = touch #*# model_fw_version = CARTOGRAPHER 5.1.0