Help develop the next MP3DP!?!

Looking good!! Can’t wait to see it done!!!

Well…I splurged and bought all black hardware. If you see them, I have a couple bags of black pulleys, could not help but get some black screws.

3 Likes

you using an skr for this build with klipper (until the pico thing gets sorted)?

Yeah, looks like it.

let me see if I can help with a printer.cfg file to get you started.

1 Like

Considered Octopus Pro, or something else that can handle higher voltage (e.g. 60v), more drivers, integrated CAN Bus connector? Is this your go nuts and experiment build? Already splashed out for black pulleys, why stop there… fwiw Home Depot have a nice Behr matte black primer-paint spray that was helpful when I couldn’t cheaply/easily find black bolts/nuts hardware for previous project.

Not that kind of nuts, I don’t need extra drivers or higher voltage. This is my play with klipper build, then test some new filaments.

1 Like

a couple notes on this printer.cfg file:

  1. in prusaslicer for custom gcode before (other slicer commands to send temperatures may vary):
    START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} BED_TEMP={first_layer_bed_temperature[0]}
  2. in prusaslicer for custom gcode after:
    END_PRINT
  3. uncheck the “emit temperature automatically” box (in prusaslicer) or it will go to temperature before doing the start_print macro.
  4. to get the right serial/usb device:
  • click machine
  • click mainsail.cfg
  • click USB devices button upper right
  • click refresh and verify your board is there
  • click on the copy button to the right of the device that is yours
  • paste it into the [mcu] section serial line in in the printer.cfg file below in place of what is there

This cfg is a work in progress and should hopefully get you started. No guarantees, I actually have not booted this config yet, so if it has errors, it will tell you what they are and you can iterate through fixig them, but it should get you close and I hope it is helpful. The A/B definitions may not be perfect, but it is easy enough to change. It is patterned this after the voron setup and Asa’s config, but they all had CAN and I didn’t, so it is different. The pins should be accurate, but you may need to remap as required. I’ll use this for the V5 with the ebay board I just got from you when I get the rest of the parts for it.

[virtual_sdcard]
path: /home/pi/printer_data/gcodes
on_error_gcode: CANCEL_PRINT

# This file is a starting template for MP3DP V5 6 channel SKR based on 000014 v4 (Ernest) setup that uses an octopus.  All pins have been remapped.
# - Config : {
#   - Usable : { X : 300, Y : 300, Z : 200 },
#   - Controller : BiQu SKR Pro 1.2
#     - Channels in use: A: rear right, B: rear left, Z0: front left, Z1: Rear, Z2 Front Right
#     - EndStops : PG6: X, PG9: Y, z is virtual with the BLtouch
#   - Extruder-HotEnd : BIQU H2V2 (lite?) Extruder
#     - Thermistor Type : Semitec 104NT-4-R025H42G(NTC100K)
#   - Probe : ANTCLABS BLTouch Bed Leveling Sensor v3
#     - Wiring info @ https://www.antclabs.com/wiring
# 
# Content originally based on asaB2C's github printer config file as a template.  Some references to the voron 2.4 config file
# from various specs, as well as Klipper and V1E forum members


# Related:
# - See docs/Config_Reference.md for a description of parameters.
# - https://www.klipper3d.org/Config_Reference.html
# - https://github.com/bigtreetech/BIGTREETECH-SKR-PRO-V1.1/blob/master/SKR-PRO-V1.2/manual/

[include mainsail.cfg]  # for web page interface
[include timelapse.cfg] # for camera
    
###############################################################################################################################################
# MCUs -> STM32F407
########################################

[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
restart_method: command  #AZA commented because of https://github.com/Arksine/CanBoot/issues/72#issuecomment-1502495476

# basic printer style layout
[printer]
# Related
kinematics: corexy
max_velocity: 1000 # default: 300
max_accel: 5000 #AZA default: 3000
max_accel_to_decel: 1500
max_z_velocity: 400 # default: 5
max_z_accel: 1000 # default: 100
square_corner_velocity: 5 #4.5

########################################
# TMC2209 configuration
# - Set uart_pin to CS pin, per pinout diag
########################################

[tmc2209 extruder] # E2 position - #5 driver
uart_pin: PD5
#diag_pin: PG5
run_current: 0.70
stealthchop_threshold: 0 #999999

[tmc2209 stepper_x] # B motor - X position - #0 driver
uart_pin: PE4
#diag_pin: PB10
run_current: 1 #was 0.8
interpolate: False  
stealthchop_threshold: 0 #999999

[tmc2209 stepper_y] # A motor - Y position - #1 driver
uart_pin: PE2
#diag_pin: PE12
run_current: 1 #was 0.8
interpolate: False
stealthchop_threshold: 0 # 999999

[tmc2209 stepper_z] # Z position (either plug) #2 driver
uart_pin: PE0
#diag_pin: PG8
run_current: 0.7
hold_current: 0.3
interpolate: False
stealthchop_threshold: 0 #999999

[tmc2209 stepper_z1] # E0 position - #3 driver
uart_pin: PD2
#diag_pin: PE15
run_current: 0.7
hold_current: 0.3
interpolate: False
stealthchop_threshold: 0 #999999

[tmc2209 stepper_z2] # E1 position - #4 driver
uart_pin: PD0
#diag_pin: PE10
run_current: 0.7
hold_current: 0.3
interpolate: False
stealthchop_threshold: 0 #999999

###############################################################################################################################################
# motor definitions
################################################

# Driver0  This is the B motor on the left side

[stepper_x]
enable_pin: !PF2
step_pin: PE9
dir_pin: PF1
endstop_pin: PB10 ##carriage trigger
microsteps: 16
rotation_distance: 32
position_endstop: 0
position_max: 300
homing_speed: 100
second_homing_speed: 3

# Driver1  this is the A motor on the right side

[stepper_y]
enable_pin: !PD7
step_pin: PE11
dir_pin: PE8
endstop_pin: PE12 #left motor
microsteps: 16
rotation_distance: 32
position_endstop: 0
position_max: 300
homing_speed: 100
second_homing_speed: 3

## Driver2 for 1 of 3 z motors
#(front left)

[multi_pin z_enable] # this is for the brakes
pins: !PC0, PD8 #PD8 is the UART3 pin near the reset button to use to tie to the brake relay when available

[stepper_z]
enable_pin: multi_pin:z_enable #this pin is tied to the brakes and the two pins identified in the multi declaration function together
step_pin: PE13
dir_pin: PC2
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop
position_max: 200
position_min: -5.0
homing_speed: 50
second_homing_speed: 3
homing_retract_dist: 10

## Driver3 for 2 of 3 z motors
#(rear)

[stepper_z1]
enable_pin: !PC3
step_pin: PE14
dir_pin: PA0
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop

## Driver4 for 3 of 3 z motors
#(front right)

[stepper_z2]
enable_pin: !PA3
step_pin: PD15
dir_pin: PE7
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop
#--------------------------------------------------

########################################
# EXTRUDER
########################################

## Driver 6 for extrusion - located on trolley hot end carrier behind part cooling fan

[extruder] # https://www.klipper3d.org/Config_Reference.html#extruder
enable_pin: !PF0
step_pin: PD13
dir_pin: PG9
microsteps: 16
max_extrude_only_distance: 300.0

################################
## CALIBRATE EXTRUSION

rotation_distance: 3.4335 #3.433 is the factory number for the H2V2S drivetrain
nozzle_diameter: 0.600
filament_diameter: 1.750

# Related:
# - https://www.klipper3d.org/Config_Reference.html#maxxxxxx-temperature-sensors
## hot end information  HEAT0 heater
heater_pin: PF3 #T0 sensor position
sensor_type: EPCOS 100K B57560G104F #Generic 3950 #ATC Semitec 104NT-4-R025H42G
sensor_pin: PF4 # THermistor #0 connector

#probrwr sensor_type: ATC Semitec 104NT-4-R025H42G # BIQU H2S Spec sheet says "Semitec 104NT-4-R025H42G(NTC100K)"  #Generic 3950 #EPCOS 100K B57560G104F
#control: watermark # pid  # Run PID Tune and save that from the terminal and don't worry about PID values in this file. 
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 280
min_extrude_temp: 20
pressure_advance: 0.019 ;  Default = pressure_advance = 0
#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# Bed Heater
########################################

[heater_bed]
# Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
heater_pin: PD12  # built in board heat 
sensor_pin: PF4 # Thermistor #1   
#max_power: 0.6 AZA: From Voron...  Adjust Max Power so your heater doesn't warp your bed. Rule of thumb is 0.4 watts / cm^2 .

# sensor_type: Generic 3950 #AZA Using https://www.amazon.com/gp/product/B07GJDL7XB with NTC 100K 3950 thermistor,  Old: ATC Semitec 104GT-2   
sensor_type: EPCOS 100K B57560G104F #AZA
#control: pid  # again, run the pid tuner on the bed and then save the values all from the terminal
#pid_Kp: 54.027
#pid_Ki: 0.770
#pid_Kd: 948.182
min_temp: 0  #
max_temp: 130 #
#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# Bed Mesh
########################################

# https://www.klipper3d.org/Config_Reference.html?h=pixel#bed-level-support
[bed_mesh]  # you may want to consult others' mesh options as these are not well refined.
speed: 100
horizontal_move_z: 8
mesh_min: 35,35  #bed is 300
########################### Measure this ####################
mesh_max: 265,265 # Bed max size minus probe X/Y offset
#############################################################
probe_count: 5,5
algorithm: bicubic #lagrange
mesh_pps: 4, 4 #1, 1
bicubic_tension: .5 #.5
move_check_distance: 5 #10
split_delta_z: .025
fade_start: 1
fade_end: 10
fade_target: 0
#---------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# Z Bed Probe #
################################################

[safe_z_home]
home_xy_position: 150, 150 # Change coordinates to the center of your print bed
speed: 150
z_hop: 10                 # Move up 10mm
z_hop_speed: 8

[bltouch]
sensor_pin: ^PA1 # BLTouch Probing input signal pin (^ means pullup) --- verify sensor and control don't need to swap
control_pin: PA2 # SERVO pwm output pin for pin movement

x_offset: -27 # measured offset for H2V2S and hot end fan mounted bl touch
y_offset: -31
z_offset: 4.25  # this is critical for the first layer print!!! 
speed: 7.5
samples: 2
sample_retract_dist: 10
#stow_on_each_sample: True #AZA False saves time between probes, but risk hitting/damaging Probe.  Only use if confident breakage risk is low...
probe_with_touch_mode: True

[z_tilt] # for 3 motor z bed (these are closest to where Ernest's mount points are)
z_positions:  -22.22,  31.75
             150, 368.3
             336.5,  31.75
speed: 150
horizontal_move_z: 10
retries: 4
retry_tolerance: 0.1 #0.04
points:
    62, 51
    177, 295
    295, 51
#---------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# Fans
########################################

[fan]
pin: PC8 # print cool - fan0
max_power: 0.5
shutdown_speed: 0
cycle_time: 0.010
#hardware_pwm: False
kick_start_time: 0.100
off_below: 0.1
#tachometer_pin:
#tachometer_ppr: 2
#tachometer_poll_interval: 0.0015
#enable_pin:

[heater_fan hotend_fan]
pin: PE5 #hot end - fan1
heater: extruder
heater_temp: 50.0

#[heater_fan fan2] #controller fan
#pin: PE6
[heater_fan fan3] #heat sink fan
pin: PD13
#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# EXTRA Sensors / Actuators 
#########################################
[temperature_sensor strategic_sensor]
sensor_type: EPCOS 100K B57560G104F #Generic 3950
sensor_pin: PF5 #T3
#pullup_resistor: 4700
#inline_resistor: 4700

#[input_shaper]
#shaper_freq_x: 75.8
#shaper_type_x: mzv
#shaper_freq_y: 75.8
#shaper_type_y: mzv

#[adxl345]
#cs_pin: PA15
#spi_bus: spi3

#[resonance_tester]
#accel_chip: adxl345
#probe_points:
#    150,150,200  # an example

################################################
#EXTRA lighting
################################################
## Chamber Lighting - HE2 Connector (24V)
#[output_pin caselight]
#pin: PD2 # on extension-2
#pwm:true
#shutdown_value: 0
#value: 0.25                             #the brightness at startup (0-1)
#cycle_time: 0.01
#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# Filament runout switch and sensor
###############################################

[filament_switch_sensor switch_sensor]
switch_pin: ^PD0
pause_on_runout: False
runout_gcode:
  PAUSE # [pause_resume] is required in printer.cfg
  M117 Filament switch runout
  #{action_respond_info("RUNOUT: Toolhead Filament runout")}
 
insert_gcode:
  M117 Filament switch inserted
  #{action_respond_info("RUNOUT: Toolhead Filament inserted")}
  #event_delay: 3.0
  #pause_delay: 0.5

[filament_motion_sensor encoder_sensor]
switch_pin: ^PE4
detection_length: 14 ;2.88
extruder: extruder
pause_on_runout: False
runout_gcode:
  #{action_respond_info("RUNOUT: Filament runout")}
  PAUSE # [pause_resume] is required in printer.cfg
  M117 Filament encoder runout
insert_gcode:
  M117 Filament encoder inserted 
  #{action_respond_info("RUNOUT: Filament inserted")}

#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# FIRMWARE RETRACTION
########################################

[firmware_retraction]
retract_length: 0.2
retract_speed: 20
#retract_length: 2
#retract_speed: 40  #AZA probrwr uses 40

[virtual_sdcard]
path: /home/pi/printer_data/gcodes

[skew_correction]
  #Print a cube or square for an axis of interest
  # i printed a flat-walled cal square box with 2 base and 0 top layers and 1 side layer in vase mode 20 mm high and measured XY plane
  # if adding YZ or XZ plane, the cube should be the same height as the width and depth
  # laying flat it will look like this
  
  #B  C
  #A  D

  # where AB is Y print axis and AD is X print axis when in the printing position still stuck to the plate (label it)
  # could print with AB as Z and AD as Y or X so a total of 3 prints or do it as one print....
  # record the lengths like below for a 100 mm open cube
  #Length AC = 139.23
  #Length BD = 140.49
  #Length AD = 99.3
  #in the console enter the following commands one by one
  #
  #   SET_SKEW XY=139.23,140.49,99.3 
  #   CALC_MEASURED_SKEW AC=139.23 BD=140.49 AD=99.3  #this one is optional, just gives an idea of how far off it is
  #
  ## response from system:  Calculated Skew: -0.009009 radians, -0.52 degrees
  #
  #   SKEW_PROFILE SAVE=my_skew_profile
  ## response from system: 
  ## Skew Correction state has been saved to profile [my_skew_profile]
  ## for the current session. The SAVE_CONFIG command will
  ## update the printer config file and restart the printer.
  #
  #SAVE_CONFIG # system then restarts
  #

#[force_move]
#enable_force_move: False
#   Set to true to enable FORCE_MOVE and SET_KINEMATIC_POSITION
#   extended G-Code commands. The default is false.
#----------------------------------------------------------------------------------------------------------------------------------------------

#######################################
#Mini LCD or for Marlin mode type interface with backlighted pushbutton
######################################

#[board_pins]  # this section you define the pins for the expansion headers
#aliases:
#    # EXP1 header
#    EXP1_1=PG4, EXP1_2=PA8,
#    EXP1_3=PD11, EXP1_4=PD10,
#    EXP1_5=PG2, EXP1_6=PG3,    # Slot in the socket on this side
#    EXP1_7=PG6, EXP1_8=PG7,
#    EXP1_9=<GND>, EXP1_10=<5V>,

    # EXP2 header
 #   EXP2_1=PB14, EXP2_2=PB13,
#    EXP2_3=PG10, EXP2_4=PB12,
#    EXP2_5=PF11, EXP2_6=PB15,      # Slot in the socket on this side
#    EXP2_7=PF12, EXP2_8=<RST>,
#    EXP2_9=<GND>, EXP2_10=PF13

# See the sample-lcd.cfg file for definitions of common LCD displays.
#----------------------------------------------------------------------------------------------------------------------------------------------
# this section you use the expansion header definitions for the display definition

##  mini12864 LCD Display
#[display]
#lcd_type: uc1701
#cs_pin: EXP1_3
#a0_pin: EXP1_4
#rst_pin: EXP1_5
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2
#contrast: 63
#spi_software_miso_pin: EXP2_1
#spi_software_mosi_pin: EXP2_6
#spi_software_sclk_pin: EXP2_2

##  To control Neopixel RGB in mini12864 display
#[neopixel btt_mini12864]
#pin: EXP1_6
#chain_count: 3
#initial_RED: 0.1
#initial_GREEN: 0.5
#initial_BLUE: 0.8
#color_order: RGB

##  Set RGB values on boot up for each Neopixel (display text and button backlight color). 
##  Index 1 = display, Index 2 and 3 = Knob
#[delayed_gcode setdisplayneopixel]
#initial_duration: 1
#gcode:
#        SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=1 INDEX=2 TRANSMIT=0
#        SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
#        SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 
#----------------------------------------------------------------------------------------------------------------------------------------------

###############################################################################################################################################
# MACROS
#############################

[idle_timeout]
timeout: 900
gcode:
  TURN_OFF_HEATERS
  
  # Turn off bed, extruder, and fan
  M140 S0
  M104 S0
  M106 S0
  
  # Ensure skew compensation turned off
  SET_SKEW CLEAR=1
  
  # Move to safe position
  #G1 X300 Y300 Z200 F7000
  MOVE_SAFE
  # NEVER Disable steppers to avoid bed drop - have set low idle current to keep them on, but not at high torque  careful on pushing on the system when in idle mode.  you can move the steppers with little force.
  #M84

[gcode_macro MOVE_SAFE]
description: Move to safe Z position so bed doesn't crash on reset.
gcode:
  G0 Z390 F6000

[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 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 _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 %}

##########################################
# Filament handling gcode macros
#########################################
[save_variables]
filename: ~/variables.cfg
#   Required - provide a filename that would be used to save the
#   variables to disk e.g. ~/variables.cfg

[gcode_macro SET_FILAMENT_SENSOR]
description: Sets the filament sensor on/off and save value to file
rename_existing: SET_FILAMENT_SENSOR_BASE
gcode:
  {% if printer.save_variables.variables.filament_sensor is not defined %}
    {% set filament_sensor = {params.SENSOR|string: params.ENABLE|int} %}
  {% else %}
    {% set filament_sensor = printer.save_variables.variables.filament_sensor %}
    ;{% set _dummy = filament_sensor.update({params.SENSOR|string: params.ENABLE|int}) %}
  {% endif %}
  SET_FILAMENT_SENSOR_BASE SENSOR={params.SENSOR} ENABLE={params.ENABLE}
  SAVE_VARIABLE VARIABLE=filament_sensor VALUE="{filament_sensor}"

[gcode_macro _RESTORE_FILAMENT_SENSOR]
description: Restore the filament sensor on/off state at klipper start
gcode:
  {% if printer.save_variables.variables.filament_sensor is defined %}
    {% for sensor in printer.save_variables.variables.filament_sensor %}
       SET_FILAMENT_SENSOR_BASE SENSOR={sensor} ENABLE={printer.save_variables.variables.filament_sensor[sensor]}
    {% endfor %}
  {% endif %}
  
[gcode_macro M600]
description: Filament change
gcode: PAUSE Y=10   ; everything needed is defined there

[delayed_gcode DISABLEFILAMENTSENSOR] ; This will disable the SFS 1 second after klipper starts
initial_duration: 1
gcode:
  SET_FILAMENT_SENSOR SENSOR=encoder_sensor ENABLE=0 ; Put your filament sensor's name after SENSOR=

#[gcode_macro M600]
#description: Filament change

#Unload Filament
[gcode_macro Unload]
gcode:
  G28
  #G1 Z25 F360
  #G1 X165 Y165 F7200
  M109 S220
  G91 ; Set positioning to Relative
  G1 E5 F120
  G1 E-605 F3600
  G1 E-50 F360
  G92 E0 ; Reset xtruder
  #G1 X0 Y0 ; Park print head
  M106 S0 ; Turn off part fan
  M104 S0 ; Set nozzle temp to zero
  M140 S0 ; set bed temp to zero
  #M84 X Y E ; Disable X Y and E 

#Load Filament
[gcode_macro Load]
gcode:
; Load filament
  G28
  #G1 Z25 F360
  #G1 X165 Y165 F7200
  M109 S220
  G92 E0
  G91 ; Set positioning to Relative
  G1 E600 F3600
  G1 E50 F360
  G92 E0 ; Reset Extruder
  #G1 X0 Y0 ; Park print head
  M106 S0 ; Turn off part fan
  M104 S0 ; Set nozzle temp to zero
  M140 S0 ; set bed temp to zero
  #M84 X Y E ; Disable X Y and E steppers 
  
[gcode_macro M109]
rename_existing: M99109
gcode:
    #Parameters
    {% set s = params.S|float %}
    
    M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}  ; Set hotend temp
    {% if s != 0 %}
        TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1}   ; Wait for hotend temp (within 1 degree)
    {% endif %}

[gcode_macro M190]
rename_existing: M99190
gcode:
    #Parameters,    
    {% set s = params.S|float %}

    M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %}   ; Set bed temp
    {% if s != 0 %}
        TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1}  ; Wait for bed temp (within 1 degree)
    {% endif %}   
    
######################################
# Start GCode
######################################
[gcode_macro START_PRINT]
gcode:
      SKEW_OFF
      G90
      # messages for the LCD display
      M117 Starting bed heater
      M140 S{params.BED_TEMP|default(40)}
      M117 HOMING
      G28 X Y Z; home all axes
      M117 Z-offset
      G1 Z10 F5000 ; lift nozzle
      M117 Z tilt
      Z_TILT_ADJUST ; level the bed
      # this is for mesh checking
      LOAD_MESH ;load the mesh based on the bed temperature
      M117 carriage front left
      G0 X15 Y15 Z10 F5000 ; wait for heat
      
      #Heat nozzle and bed
      M117 Heat Bed
      M190 S{params.BED_TEMP|default(40)}    ;bed heating   should keep going until the M116 wait for heat soak command halts                      
      M117 Heat nozzle
      M109 S{params.EXTRUDER_TEMP|default(215)} ;hot end heating  
      M117 Extruder Ready
      
      #Precondition extruder
      
      G92 E0              
      G1 Z2.0 F600        
      G1 Z0.2 F600        
      G1 Z2.0 F600
      M117 Prime Line
     
      #Prime line
      PRIME_LINE

      #turn on skew correction
      SKEW_ON
      
      #Turn on smart Filament sensor 
      
      M117 Printing...

######################################
# Skew Correction
######################################


[gcode_macro SKEW_ON]
gcode:
   SKEW_PROFILE LOAD=my_skew_profile
  
[gcode_macro SKEW_OFF]
gcode:
  SET_SKEW CLEAR=1
 
#-------------------------------------

######################################
# Prime line
######################################
[gcode_macro PRIME_LINE]
gcode: 
    M117 Prime Line
    G92 E0 ;Reset Extruder
    # move z axis 
    G1 Z3.6 F3000 ;Move Z Axis up
    # move to prime position 
    G1 X5 Y85 Z2 F5000.0 ;Move to start position
    G1 X5 Y200.0 Z0.35 F1500.0 E15 ;Draw the first line
    G1 X7 Y200.0 Z0.35 F5000.0 ;Move to side a little
    G1 X7 Y85 Z0.35 F1500.0 E30 ;Draw the second line
    G92 E0 ;Reset Extruder
    G1 Z4.0 F3000 ;Move Z Axis up
    
#######################################
# load bed mesh depending on bed temperature  ---------YOU MAY WANT TO RUN THIS FOR EVERY PRINT RATHER THAN RUN ONCE AND SAVE
########################################
[gcode_macro LOAD_MESH]
gcode:
    {% set bed_temp = params.BED_TEMP|default(60)|float %}
    {% if bed_temp >= 75 %}
        BED_MESH_PROFILE LOAD=mesh80
        {% if bed_temp >= 110 %}
            BED_MESH_PROFILE LOAD=mesh110
        {% endif %}
    {% elif bed_temp < 35 %}
            BED_MESH_PROFILE LOAD=mesh20
    {% else %}
        {% if bed_temp >= 35 %}
            BED_MESH_PROFILE LOAD=mesh40
        {% endif %}
    {% endif %} 
    #M140 S1 # bed mesh ON  -->> this is the same as BED_MESH_PROFILE LOAD=

######################################
# End Gcode
######################################
[gcode_macro END_PRINT]
gcode:
    SET_SKEW CLEAR=1

    # Turn off bed, extruder, and fan
    
    M140 S0 # bed off
    M104 S0 # nozzle off
    M106 S0 # fan off?
    # Move nozzle away from print while retracting
    G91  # move relative to current position
    G1 E-1 # retract
    G1 Z10 F3000 # drop bed by 10mm
    G90  # move to absolue coordinate positions
    M117 Dropping Bed Now
    G1 X265 Y265 Z200 F7000 #drive bed to bottom position
    G1 E-1 F100
    # NEVER Disable steppers to avoid bed drop
    #M84
    M117 COMPLETE

[gcode_macro TEST_MOTION]
gcode:
    {% set speed = "F30000" %}
    G28
    G0 Z100

    G0 X0 Y245 {speed}
    G0 X245 Y245 F{speed}
    G0 X245 Y0 F{speed}
    G0 X0 Y0 F{speed}
    G0 X245 Y245 F{speed}
    G0 X245 Y0 F{speed}
    G0 X0 Y245 F{speed}

    G0 X0 Y0 F{speed}
    G0 X245 Y0 F{speed}
    G0 X245 Y245 F{speed}
    G0 X0 Y245 F{speed}
    G0 X245 Y0 F{speed}
    G0 X0 Y245 F{speed}
    G0 X0 Y0 F{speed}
    G0 X245 Y245 F{speed}

    G0 X0 Y0 F{speed}
#------------------------------------------------------------------------------------------------------------------------------------------------------------end macros
3 Likes

Here is mine for the SKR Pro. I don’t think any of us have one you can straight copy but between all of us it should make it easier.

https://github.com/printer.cfg

2 Likes

I redid that config for this prototype system dimensions. If the outputs and inputs are plugged to the labeled parts, it should just work… the no guarantee part was in case I spelled something wrong as encouragement to double check it.

1 Like

My fault. I only glanced over and for some reason thought you were running an octopus.

So minimal H2 cooling, probe, accelerometer?




I can add a little fake wall to hide things more,

Once I get this one dialed in, I can make it work with the Lite version.

2 Likes

I like it. The one on Ernest (v4) is leaning forward 45 degrees toward the user so it doesn’t hit the machine frame, but it sticks out the front of the machine. Will an original BLtouch fit in that mount? I may print one for my current setup. it looks good

No, I did look at it but it is soooo big. This extruder is tiny. That gear is right there, and the vent is on the other side. It would need to stick out further and probably be turned sideways.

The throat screws would get covered as well.

Where’s the LED lit logo? :slight_smile:
image

I couldn’t figure out how to make a more symmetrical aggressive looking hotend (like stealthburner) for my setup.

Being able to easily see what the nozzle’s doing is helpful.

What probe did you end up with? Did you tear down a BIQU MicroProbe V2.0 for H2 Series Extruders Ender-3 B1 3D Printer – Biqu Equipment, or something else?

Yup, that is the probe.

It goes against everything in my head to add things like walls just for looks, sometimes it does really add a good look though. I made a little one, going to give it a quick test print.

1 Like

I have tried a bunch of times I can never get a light very close the extrusion, the nozzle is so close the heater block gets in the way. LED’s could work on the Lite, HF version since the heater block is so large. I don’t think I will add them there, though. Surely add some to the frame, the status indicator is pretty nice.

2 Likes

Have you looked at using LEDs like these??

BTF-LIGHTING SK6812RGBW(WS2812B… Amazon.com

There are 3 of them in the tool head on my E5+. 2 pointed down at the nozzle and one up top behind the logo. Really nice easy addition. And it turns out I have PLENTY left over lol

1 Like

Can you actually see the extrusion, or just near it? The heater block always seems to cast a shadow. I guess I do always use some sort of heater wrap so there is even less room.

If I can’t light up under the heater block it doesn’t seem to be worth it. I just look as it moves. More wires, more stuff on the moving head is the last place to put stuff. If it can be lit up from the frame, that is much better in my book.

1 Like

There are some pretty tiny LEDs out there, you could also build in a spot for a light pipe/fiber optic source, something like this:

Ignore the price because there are vastly cheaper options, that’s just one that looks like something I’ve used before.

2 Likes