Firmware

Since the printer system does not dictate any specific dimensions, control boards, or configurations it would be hard to define specific firmware settings that will work with the printer you build from the system parts. I go through some example klipper configurations I'm using on my printers however please use the klipper and Marlin documentation when setting up your printer.

Pause/Resume

Klipper does not have PAUSE/RESUME/M600 defined out of the box. Some klipper front-ends require you to define them but not necessarily in a way that supports pause and resume that works for filament changes. The following are my PAUSE and RESUME scripts that support mid-print pause and resume without cooling the heaters during the filament-change pause. Note that I have some case LEDs configured you may need to remove.

[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set X = params.X|default(20) %}
{% set Y = params.Y|default(20) %}
{% set Z = params.Z|default(20) %}
{% set E = params.E|default(7) %}
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{E} F2100
G1 Z{Z}
G90
G1 X{X} Y{Y} F6000
SET_LED LED=case_lights RED=.8 GREEN=.8 BLUE=0

[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% set E = params.E|default(7) %}
G91
G1 E{E} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
SET_LED LED=case_lights RED=.8 GREEN=.8 BLUE=.8

[gcode_macro M600]
gcode:
PAUSE

[idle_timeout]
gcode:
{% if printer.pause_resume.is_paused %}
M104 S0
{% else %}
TURN_OFF_HEATERS
M84
{% endif %}

Then if you just use the standard 'M600' in your slicer to park and perform the the filament change, then a regular resume on the console or in fluidd to continue the print.

Rotation Distances

The rotation distances for each of your stepper motors should not change regardless of the size of frame you build. Klipper has simplified rotation distances (steps per mm for our Marlin friends) so my settings should work on your printer assuming standard stepper drivers and motors. On my Octopus and SKR-based printers with tmc2208 or tmc2209 drivers I'm using the following:


LED Lights Auto-Off

I use the basic SET_LED command for controlling the LEDs through the print lifecycle however once the print is complete I want them to stay on for a bit so I can see that the print completed correctly and then turn off automatically so they aren't on 24/7.

I'm using 'delayed GCODE' in klipper as the command to turn the lights off:

[delayed_gcode leds_off]
gcode:
SET_LED LED=case_lights RED=0 GREEN=0 BLUE=0
initial_duration: 0

Then I use the following commands in the print end GCODE to set the LEDs to a specific color then turn off after 30 min:

SET_LED LED=case_lights RED=0 GREEN=.5 BLUE=0 ; Set the LEDs to green
UPDATE_DELAYED_GCODE ID=leds_off DURATION=1800 ; Turn off LEDs after 30 min

This may not work for you if you are rapid-fire printing as the 30 minute delay may interfere with your next print's LED changes.

Triple Z Steppers and Tilt Adjust

There are plenty of examples for configuring dual independent Z motors but few for triple Z motors. If you're using triple Z motors you'll need to define a [stepper_z2] just like your [stepper_z] and [stepper_z1] sections. Just like with two motors the [stepper_z] section defines the max positions and speeds and does not need to be included the in the [stepper_z2] section.

Configuring tilt adjustment is just like with two motors but includes third z_position and point:

[z_tilt]
horizontal_move_z: 10
speed: 120
z_positions:
-60, 0
197, 323
374, 0
points:
57, 0
197, 250
327, 0
retry_tolerance: 0.05
retries: 5

These offsets are relative to x,y=0 which is why you see negatives in the positions. The adjustment rods are outside of the bounds of x/y motion.

Debugging CoreXY Movement

If you are new to CoreXY the movement system can be a little confusing. There are only two motors and either drives the carriage in a diagonal direction. If you spin one of the motors it will move the carriage in the +X+Y and -X-Y diagonal and the other motor will move the carriage in the -X+Y and +X-Y direction. Since the motors do not align to the cartesion axes debugging movement issues can be non-obvious.

My carriage only moves in one diagonal direction: One of your motors has an issue. It could be a cabling problem, a PIN assignment problem or a hardware issue but the motor outside of the carraige movement path is not spinning.

My carriage moves in X when I tell it to move in Y: Swap the direction of either one of your motors.

My carriage moves in -X when I tell it to move in +X or -Y when I tell it to move in +Y: Swap the motors. Move the 'X' motor to 'Y' and the 'Y' motor to 'X'.


<< Accessories
Contents
Mock Parts >>