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
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 asfirmware.bin
in a root level directory calledSTM32F4_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
Leveling and Bed Mesh
- https://www.youtube.com/watch?v=5vmjBXvY6BA
- Ender 3 Pro V2 How to Setup Screw Tilt Calculate aka Tramming in Klipper
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.