3D Printing

Settings

Vase Mode

Vase Mode (Spiralize Outer Contour in Cura) prints upward in a spiral instead of in layers; the object is built by smooth movements of the Z-axis. No seam is created and no infill is possible. Vase mode prints fast and uses less filament than standard printing.

Klipper

Main docs

Install

We'll install Klipper along with MainsailOS

  • Figure out what chip the Ender 3 S1 has installed. Either check directly on the board or for an easier route check the "about printer" screen in the printer GUI and check what firmware its running. 1.x.x firmware is used with the F1 chip, whereas 3.x.x firmware is used with the F4 chip.
  • Install MainsailOS on raspberry pi
  • SSH into MainsailOS (user pi / password raspberry)
  • cd /klipper
  • make menuconfig
  • make
  • retrieve the generated klipper.bin at /home/pi/klipper/out/klipper.bin and save it as firmware.bin in a root level directory called STM32F4_UPDATE on the SD card that will be used to flash the this new firmware on the printer
  • plug in USB from RPI to printer
  • check mainsail, should be working

Example Ender 3 S1 Config

Leveling and Bed Mesh

Macros

https://www.reddit.com/r/klippers/comments/vgfp6p/klipper_macros_i_use_them_on_an_ender_3_s1_ill/

[gcode_macro M600]
description: Starts process of Filament Change
gcode:
  {% if printer.extruder.temperature < 180 %}
    {action_respond_info("Extruder temperature too low")}
  {% else %}
    PAUSE_MACRO
    _DISABLE_FS
    UNLOAD_FILAMENT
  {% endif %}

[gcode_macro PAUSE_MACRO]
description: Pauses Print
gcode:
    PAUSE
    SET_IDLE_TIMEOUT TIMEOUT={ 30 * 60 }

[gcode_macro FC_RESUME]
description: Resume print after Filament Change
gcode:
    ##### read E from pause macro #####
    {% set E = printer["gcode_macro PAUSE"].extrude|float %}
    SET_IDLE_TIMEOUT TIMEOUT={ 10 * 60 }
    G1 E-{ E }
    # Reset extruder position
    G92 E0
    RESUME

[gcode_macro UNLOAD_FILAMENT]
description: Unloads Filament from extruder
gcode:
  {% if printer.extruder.temperature < 180 %}
    {action_respond_info("Extruder temperature too low")}
  {% else %}
    SAVE_GCODE_STATE NAME=UNLOAD_state
    {% set Z = params.Z|default(50)|int %}
    {% set axis_max = printer.toolhead.axis_maximum %}
    {% set pos = printer.toolhead.position %}

    {% set z_diff = axis_max.z - pos.z %}
    {% set z_safe_lift = [ Z, z_diff ] | min%}

    G91                   # relative positioning
    G0 Z{ z_safe_lift }
    # Reset extruder position
    G92 E0
    G1 E5.0 F300        # extrude a little
    G1 E-50 F{ 10 * 60 } # perform the unload
    G1 E-50 F{ 5 * 60 }   # finish the unload
    RESTORE_GCODE_STATE NAME=UNLOAD_state
  {% endif %}

[gcode_macro PURGE]
description: Extrudes filament, used to clean out previous filament
gcode:
  {% if printer.extruder.temperature < 180 %}
    {action_respond_info("Extruder temperature too low")}
  {% else %}
  {% set PURGE_AMOUNT = params.PURGE_AMOUNT|default(40)|float %}
    SAVE_GCODE_STATE NAME=PURGE_state
    G91                   # relative coords
    G1 E{PURGE_AMOUNT} F{ 5 * 60 }  # purge
    RESTORE_GCODE_STATE NAME=PURGE_state
  {% endif %}

[gcode_macro LOAD_FILAMENT]
description: Loads filament into the extruder
gcode:
  {% if printer.extruder.temperature < 180 %}
    {action_respond_info("Extruder temperature too low")}
  {% else %}
    SAVE_GCODE_STATE NAME=LOAD_state
    G91                   # Relative coords
    G1 E50 F{ 5 * 60 }  # extrude
    G4 P{ 0.9 * 1000 }    # dwell (ms)
    G1 E25.0 F{ 5 * 60 }  # extrude a little more
    _ENABLE_FS
    RESTORE_GCODE_STATE NAME=LOAD_state
  {% endif %}

[gcode_macro _DISABLE_FS]
description: placeholder, disables filament sensor that might trigger an M600 in the middle of a load/unload/M600...
gcode:
    SET_FILAMENT_SENSOR SENSOR=RunoutSensor ENABLE=0

[gcode_macro _ENABLE_FS]
description: placeholder, enables filament sensor
gcode:
    SET_FILAMENT_SENSOR SENSOR=RunoutSensor ENABLE=1

[gcode_macro HEAT]
description: Heats up the extruder to get ready for Filament Change
gcode:
  {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(200)|float %}
  {% set Z = params.Z|default(50)|float %}
  {% set X = params.X|default(110)|float %}
  {% set Y = params.Y|default(110)|float %}
  SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER_TEMP}
  HOME_CHECK
  G1 Z{Z} F500
  G1 X{X} Y{Y} F6000

[gcode_macro COOL]
description: Turns off all heaters
gcode:
  TURN_OFF_HEATERS

[gcode_macro PREHEAT_PLA]
description: Preheats extruder and bed for PLA printing, extruder set to 150 to prevent filament leaking while homing etc
gcode:
  {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(150)|float %}
  {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
  SET_HEATER_TEMPERATURE HEATER=extruder TARGET={EXTRUDER_TEMP}
  SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED_TEMP}

[gcode_macro BED_TRAMMING_1]
description: Heats bed and starts process to level the bed with the screws
gcode:
  {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
  SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED_TEMP}
  HOME_CHECK
  M190 S{BED_TEMP}
  SCREWS_TILT_CALCULATE

[gcode_macro BED_TRAMMING_2]
description: Continues the bed screw leveling process
gcode:
  SCREWS_TILT_CALCULATE

[gcode_macro BED_MESH]
description: Heats bed, makes a mesh and saves it
gcode:
  {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
  SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={BED_TEMP}
  HOME_CHECK
  M190 S{BED_TEMP}
  BED_MESH_CLEAR
  BED_MESH_CALIBRATE
  TURN_OFF_HEATERS
  SAVE_CONFIG

[gcode_macro DISABLE_STEPPERS]
description: Disables the printers stepper motors
gcode:
  M84 X Y E

[gcode_macro PID_EXTRUDER]
description: PID Tune for the Extruder
gcode:
  {% set TARGET_TEMP = params.TARGET_TEMP|default(200)|float %}
  PID_CALIBRATE HEATER=extruder TARGET={TARGET_TEMP}
  TURN_OFF_HEATERS
  SAVE_CONFIG

[gcode_macro PID_BED]
description: PID Tune for the Bed
gcode:
  {% set TARGET_TEMP = params.TARGET_TEMP|default(60)|float %}
  PID_CALIBRATE HEATER=heater_bed TARGET={TARGET_TEMP}
  TURN_OFF_HEATERS
  SAVE_CONFIG

[gcode_macro NOZZLE_MID]
description: Moves nozzle to the center of the bed
gcode:
  {% set Z = params.Z|default(10)|float %}
  HOME_CHECK
  G1 Z{Z} F500
  G1 X110 Y110 F6000

[gcode_macro home_check]
description: Checks if the printer is homed, it not it homes the printer
gcode:
  {% if printer.toolhead.homed_axes != "xyz" %}
  G28
  {% endif %}

[gcode_macro SHOW_PRINT]
description: Moves the extruder out of the way and bed forward
gcode:
    HOME_CHECK
    {% set Z = params.Z|default(50)|int %}
    {% set axis_max = printer.toolhead.axis_maximum %}
    {% set pos = printer.toolhead.position %}

    {% set z_diff = axis_max.z - pos.z %}
    {% set z_safe_lift = [ Z, z_diff ] | min%}
    G1 Z{ z_safe_lift }
    G1 X10 Y220 F4000

[gcode_macro ZOffset_Setup]
description: Starts Z-Offset Calibration, under 30 degrees Celsius
gcode:
  {% if printer.heater_bed.temperature > 30 %}
    {action_respond_info("Bed temperature too high")}
  {% elif printer.extruder.temperature > 30 %}
    {action_respond_info("Extruder temperature too High")}
  {% else %}
  G28
  PROBE_CALIBRATE
  {% endif %}

[gcode_macro Z_Down_01]
description: Moves Z down by 0.1
gcode:
  TESTZ Z=-.1

[gcode_macro Z_Up_01]
description: Moves Z up by 0.1
gcode:
  TESTZ Z=+.1

[gcode_macro Z_Low_Half]
description: Sets Z between current value and previous lower value
gcode:
  TESTZ Z=-

[gcode_macro Z_High_Half]
description: Sets Z between current value and previous higher value
gcode:
  TESTZ Z=+

[gcode_macro Accept_Save]
description: Accepts the Z-Offset and saves the config
gcode:
  ACCEPT
  SAVE_CONFIG

[gcode_macro Abort_Setup]
description: Aborts the Z-Offset calibration
gcode:
  ABORT

[screws_tilt_adjust]
horizontal_move_z: 5
screw1: 50,220
screw1_name: Back left
screw2: 228,220
screw2_name: Back Right
screw3: 50,74
screw3_name: Front Left
screw4: 228,74
screw4_name: Front Right

Pressure Advance

https://ellis3dp.com/Pressure_Linear_Advance_Tool/

Mainsail

https://github.com/mainsail-crew/mainsail Makes Klipper more accessible by adding a lightweight, responsive web user interface, that allows you to control and monitor your printer from everywhere, from any device.

Gridfinity

Tags

 3D printing  Ender 3 S1