Add printer definitions for Sovol SV08.

The SV08 (or SV-08; nomenclature is not completely consistent)
is a relatively new printed based on Voron 2.4, running Klipper.
This adds printer, extruder and material definitions for it,
based on the voron2_base definitions (by copying, so as to stay
independent of voron2_base is changed) plus Sovol's published
profiles for Orca Slicer:

  https://drive.google.com/drive/folders/1KWjLxwpO_9_Xqi_f6qu84HRxZi26a_GN

Unfortunately, the included STL model for the platform does not have
texture coordinates, so we cannot use the platform texture (unless someone
goes to add them manually or otherwise adjusts the model).

The following settings were not carried over, mostly because I could not
find any obvious equivalent in Cura:

  - Machine:
    "retract_before_wipe": [ "0%" ],
    "machine_max_acceleration_extruding": [ "20000" ],
    "machine_max_acceleration_retracting": [ "5000" ],
    "retract_length_toolchange": [ "2" ],
    "wipe_distance": [ "2" ],
    "retract_lift_below": [ "343" ],
    "thumbnails_format": "PNG",
    "before_layer_change_gcode": "TIMELAPSE_TAKE_FRAME\nG92 E0",

  - Filament (using ABS as an example; the exact values differ between
    the four material profiles):
    "nozzle_temperature_range_low": [ "190" ],
    "nozzle_temperature_range_high": [ "250" ],
    "overhang_fan_threshold": [ "25%" ],
    "temperature_vitrification": [ "60" ],  # Only used for arranging.
    "close_fan_the_first_x_layers": [ "3" ],
    "full_fan_speed_layer": [ "0" ],  # Inconsistent; effectively 4.
    # Enclosure fan (M106 P3 commands)
    "activate_air_filtration": [ "1" ],
    "complete_print_exhaust_fan_speed": [ "60" ],
    "during_print_exhaust_fan_speed": [ "100" ],

  - Process: A bunch (e.g. bridge_flow, elephant_foot_compensation,
    overhang_1_4_speed, etc. etc.), but it's unclear how many are
    printer-specific and how many are just Orca defaults where Cura wants
    to do things differently.

The start and end G-code are mostly copied over verbatim, except that it
leaves the printer in relative coordinate mode and Cura does not set this
explicitly back to absolute, so we need an explicit G90 at the end. (Also,
there seems to be a Klipper issue where G90 does not reset extrusion to
absolute as well, so we need to send an explicit M82.) We give
EXTRUDER_TEMP= and BED_TEMP= as parameters to the START_PRINT macro; the
Sovol stock macros ignore these, but the popular mainline Klipper
installation can use this to e.g. bed mesh at the correct temperature.
We also use the new Cura 5.8 conditionals to reduce the extrusion amount
for finer nozzles than 0.4mm, as we get Klipper errors otherwise.

Unfortunately, Cura chooses SS_ as prefix instead of SV08_. I don't know
if there is a way to override this; the other Sovol printers seem to have
the same issue.

I've tested this with the standard 0.4mm nozzle and ABS/PLA, using the
Moonraker plugin. PETG and TPU are untested, in part because the current
nozzle is said to be unsafe for PETG. The time estimates from Cura are not
all that good, but klipper_estimator helps. (The Klipper object exclusion
plugin is also recommended, as it allows the printer to bed mesh a smaller
area.)

Future work would include supporting the 0.2mm, 0.6mm and 0.8mm nozzles.
There are separate profiles for them, with different layer height, support
settings, print speeds, etc. -- and then there is a specific PLA/0.2mm
profile with lower printing speed and higher fan settings. Also, it would
be really good to support the enclosure fan (M106 P3, known as
exhaust_fan in Orca) for printing ABS; it's possible that something could
be done using the Cura fan control plugin, but it would be better to
simply have it right in the filament settings. Similarly, the ABS/PETG
profiles want to turn off the fan entirely the first three layers
(to improve adhesion), but Cura can only ramp linearly starting from the
first layer, not hold the first few layers constant.
This commit is contained in:
Steinar H. Gunderson 2024-08-04 16:28:23 +02:00 committed by Steinar H. Gunderson
parent 2a45cf3274
commit 1ca58824ac
9 changed files with 297 additions and 0 deletions

View file

@ -0,0 +1,131 @@
{
"version": 2,
"name": "Sovol SV08",
"inherits": "fdmprinter",
"metadata":
{
"visible": true,
"author": "See voron2_base",
"manufacturer": "Sovol 3D",
"preferred_variant_name": "0.4mm Nozzle",
"quality_definition": "sovol_sv08",
"variants_name": "Nozzle Size",
"platform": "sovol_sv08_buildplate_model.stl",
"file_formats": "text/x-gcode",
"exclude_materials": [],
"first_start_actions": [ "MachineSettingsAction" ],
"has_machine_quality": true,
"has_materials": true,
"has_variants": true,
"machine_extruder_trains": { "0": "voron2_extruder_0" },
"preferred_material": "generic_abs",
"preferred_quality_type": "fast"
},
"overrides":
{
"machine_depth": { "default_value": 350 },
"machine_width": { "default_value": 350 },
"machine_height": { "default_value": 345 },
"machine_name": { "default_value": "SV08" },
"retraction_amount": { "default_value": 0.5 },
"machine_max_acceleration_x": { "default_value": 40000 },
"machine_max_acceleration_y": { "default_value": 40000 },
"machine_max_acceleration_z": { "default_value": 500 },
"machine_max_acceleration_e": { "default_value": 5000 },
"machine_max_feedrate_x": { "default_value": 700 },
"machine_max_feedrate_y": { "default_value": 700 },
"machine_max_feedrate_z": { "default_value": 20 },
"machine_max_feedrate_e": { "default_value": 50 },
"machine_max_jerk_e": { "default_value": 5 },
"machine_max_jerk_xy": { "default_value": 20 },
"machine_max_jerk_z": { "default_value": 0.5 },
"retraction_min_travel": { "default_value": 1 },
"retraction_hop": { "default_value": 0.4 },
"machine_start_gcode": { "default_value": "G28 ; Move to zero\nG90 ; Absolute positioning\nG1 X0 F9000\nG1 Y20\nG1 Z0.600 F600\nG1 Y0 F9000\nSTART_PRINT EXTRUDER_TEMP={material_print_temperature_layer_0} BED_TEMP={material_bed_temperature_layer_0}\nG90 ; Absolute positioning (START_PRINT might have changed it)\nG1 X0 F9000\nG1 Y20\nG1 Z0.600 F600\nG1 Y0 F9000\nM400\nG91 ; Relative positioning\nM83 ; Relative extrusion\nM140 S{material_bed_temperature_layer_0} ; Set bed temp\nM104 S{material_print_temperature_layer_0} ; Set extruder temp\nM190 S{material_bed_temperature_layer_0} ; Wait for bed temp\nM109 S{material_print_temperature_layer_0} ; Wait for extruder temp\n{if machine_nozzle_size >= 0.4}\n; Standard Sovol blob and purge line.\nG1 E25 F300 ; Purge blob\nG4 P1000 ; Wait a bit to let it finish\nG1 E-0.200 Z5 F600 ; Retract\nG1 X88.000 F9000 ; Move right and then down for purge line\nG1 Z-5.000 F600\nG1 X87.000 E20.88 F1800 ; Purge line right\nG1 X87.000 E13.92 F1800\nG1 Y1 E0.16 F1800 ; Small movement back for next line\nG1 X-87.000 E13.92 F1800 ; Purge line left\nG1 X-87.000 E20.88 F1800\nG1 Y1 E0.24 F1800 ; Small movement back for next line\nG1 X87.000 E20.88 F1800 ; Purge line right\nG1 X87.000 E13.92 F1800\nG1 E-0.200 Z1 F600\n{else}\n; The default start G-code uses too high flow for smaller nozzles,\n; which causes Klipper errors. Scale everything back by\n; (0.25/0.4)^2, i.e., for 0.25mm nozzle. This should be good\n; enough for 0.2mm as well.\nG1 E8 F300 ; Purge blob\nG4 P1000 ; Wait a bit to let it finish\nG1 E-0.078 Z5 F600 ; Retract\nG1 X88.000 F9000 ; Move right and then down for purge line\nG1 Z-5.000 F600\nG1 X87.000 E8.16 F1800 ; Purge line right\nG1 X87.000 E5.44 F1800\nG1 Y1 E0.063 F1800 ; Small movement back for next line\nG1 X-87.000 E5.44 F1800 ; Purge line left\nG1 X-87.000 E8.16 F1800\nG1 Y1 E0.094 F1800 ; Small movement back for next line\nG1 X87.000 E8.16 F1800 ; Purge line right\nG1 X87.000 E5.44 F1800\nG1 E-0.078 Z1 F600\n{endif}\nM400 ; Wait for moves to finish\nG90 ; Absolute positioning\nM82 ; Absolute extrusion mode\n" },
"machine_end_gcode": { "default_value": "END_PRINT\n" },
"acceleration_enabled": { "default_value": false },
"acceleration_layer_0": { "value": 1800 },
"acceleration_print": { "default_value": 2200 },
"acceleration_roofing": { "value": 1800 },
"acceleration_travel_layer_0": { "value": 1800 },
"acceleration_wall_0": { "value": 1800 },
"adhesion_type": { "default_value": "skirt" },
"alternate_extra_perimeter": { "default_value": true },
"bridge_fan_speed": { "default_value": 100 },
"bridge_fan_speed_2": { "resolve": "max(cool_fan_speed, 50)" },
"bridge_fan_speed_3": { "resolve": "max(cool_fan_speed, 20)" },
"bridge_settings_enabled": { "default_value": true },
"bridge_wall_coast": { "default_value": 10 },
"cool_fan_full_at_height": { "value": "resolveOrValue('layer_height_0') + resolveOrValue('layer_height') * max(1, cool_fan_full_layer - 1)" },
"cool_fan_full_layer": { "value": 4 },
"cool_fan_speed_min": { "value": "cool_fan_speed" },
"cool_min_layer_time": { "default_value": 15 },
"cool_min_layer_time_fan_speed_max": { "default_value": 20 },
"fill_outline_gaps": { "default_value": true },
"gantry_height": { "value": 30 },
"infill_before_walls": { "default_value": false },
"infill_enable_travel_optimization": { "default_value": true },
"jerk_enabled": { "default_value": false },
"jerk_roofing": { "value": 10 },
"jerk_wall_0": { "value": 10 },
"layer_height_0": { "resolve": "max(0.2, min(extruderValues('layer_height')))" },
"line_width": { "value": "machine_nozzle_size * 1.125" },
"machine_acceleration": { "default_value": 1500 },
"machine_endstop_positive_direction_x": { "default_value": true },
"machine_endstop_positive_direction_y": { "default_value": true },
"machine_endstop_positive_direction_z": { "default_value": false },
"machine_feeder_wheel_diameter": { "default_value": 7.5 },
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
"machine_head_with_fans_polygon":
{
"default_value": [
[-35, 65],
[-35, -50],
[35, -50],
[35, 65]
]
},
"machine_heated_bed": { "default_value": true },
"machine_steps_per_mm_x": { "default_value": 80 },
"machine_steps_per_mm_y": { "default_value": 80 },
"machine_steps_per_mm_z": { "default_value": 400 },
"meshfix_maximum_resolution": { "default_value": 0.01 },
"min_infill_area": { "default_value": 5.0 },
"minimum_polygon_circumference": { "default_value": 0.2 },
"optimize_wall_printing_order": { "default_value": true },
"retraction_combing": { "value": "'noskin'" },
"retraction_combing_max_distance": { "default_value": 10 },
"retraction_hop_enabled": { "default_value": true },
"retraction_prime_speed":
{
"maximum_value_warning": 130,
"value": "math.ceil(retraction_speed * 0.4)"
},
"retraction_retract_speed": { "maximum_value_warning": 130 },
"retraction_speed":
{
"default_value": 30,
"maximum_value_warning": 130
},
"roofing_layer_count": { "value": 1 },
"skirt_brim_minimal_length": { "default_value": 550 },
"speed_layer_0": { "value": "math.ceil(speed_print * 0.25)" },
"speed_roofing": { "value": "math.ceil(speed_print * 0.33)" },
"speed_slowdown_layers": { "default_value": 4 },
"speed_topbottom": { "value": "math.ceil(speed_print * 0.33)" },
"speed_travel":
{
"maximum_value_warning": 501,
"value": 300
},
"speed_travel_layer_0": { "value": "math.ceil(speed_travel * 0.4)" },
"speed_wall": { "value": "math.ceil(speed_print * 0.33)" },
"speed_wall_0": { "value": "math.ceil(speed_print * 0.33)" },
"speed_wall_x": { "value": "math.ceil(speed_print * 0.66)" },
"travel_avoid_other_parts": { "default_value": false },
"wall_line_width": { "value": "machine_nozzle_size" },
"wall_overhang_angle": { "default_value": 75 },
"wall_overhang_speed_factor": { "default_value": 50 },
"zig_zaggify_infill": { "value": true }
}
}

View file

@ -0,0 +1,19 @@
{
"version": 2,
"name": "Nozzle Size",
"inherits": "fdmextruder",
"metadata":
{
"machine": "sovol_sv08",
"position": "0"
},
"overrides":
{
"extruder_nr":
{
"default_value": 0,
"maximum_value": 1
},
"material_diameter": { "default_value": 1.75 }
}
}

Binary file not shown.

View file

@ -0,0 +1,26 @@
[general]
definition = sovol_sv08
name = Standard Quality
version = 4
[metadata]
material = generic_abs
quality_type = standard
setting_version = 25
type = quality
variant = 0.4mm Nozzle
[values]
cool_fan_enabled = True
cool_fan_speed = 10
cool_fan_speed_max = 30
cool_min_layer_time_fan_speed_max = 30
cool_min_layer_time = 4
cool_min_speed = 10
material_flow = 98
material_max_flowrate = 21
material_print_temperature = 270
material_print_temperature_layer_0 = 280
material_bed_temperature = 95
bridge_settings_enabled = True
bridge_fan_speed = 30

View file

@ -0,0 +1,26 @@
[general]
definition = sovol_sv08
name = Standard Quality
version = 4
[metadata]
material = generic_petg
quality_type = standard
setting_version = 25
type = quality
variant = 0.4mm Nozzle
[values]
cool_fan_enabled = True
cool_fan_speed = 10
cool_fan_speed_max = 30
cool_min_layer_time_fan_speed_max = 30
cool_min_layer_time = 5
cool_min_speed = 10
material_flow = 98
material_max_flowrate = 17
material_print_temperature = 235
material_print_temperature_layer_0 = 250
material_bed_temperature = 75
bridge_settings_enabled = True
bridge_fan_speed = 70

View file

@ -0,0 +1,26 @@
[general]
definition = sovol_sv08
name = Standard Quality
version = 4
[metadata]
material = generic_pla
quality_type = standard
setting_version = 25
type = quality
variant = 0.4mm Nozzle
[values]
cool_fan_enabled = True
cool_fan_speed = 50
cool_fan_speed_max = 70
cool_min_layer_time_fan_speed_max = 50
cool_min_layer_time = 5
cool_min_speed = 10
material_flow = 98
material_max_flowrate = 21
material_print_temperature = 220
material_print_temperature_layer_0 = 235
material_bed_temperature = 65
bridge_settings_enabled = True
bridge_fan_speed = 100

View file

@ -0,0 +1,26 @@
[general]
definition = sovol_sv08
name = Standard Quality
version = 4
[metadata]
material = generic_tpu
quality_type = standard
setting_version = 25
type = quality
variant = 0.4mm Nozzle
[values]
cool_fan_enabled = True
cool_fan_speed = 80
cool_fan_speed_max = 100
cool_min_layer_time_fan_speed_max = 50
cool_min_layer_time = 5
cool_min_speed = 10
material_flow = 98
material_max_flowrate = 3.6
material_print_temperature = 240
material_print_temperature_layer_0 = 235
material_bed_temperature = 65
bridge_settings_enabled = True
bridge_fan_speed = 100

View file

@ -0,0 +1,30 @@
[general]
definition = sovol_sv08
name = 0.20mm Standard
version = 4
[metadata]
global_quality = True
quality_type = standard
setting_version = 23
type = quality
[values]
layer_height = 0.2
speed_print = 600
speed_wall_x = 300
speed_wall_0 = 200
speed_infill = 200
speed_travel = =speed_print
skirt_brim_speed = 80
speed_ironing = 15
speed_layer_0 = 30
speed_slowdown_layers = 3
acceleration_enabled = True
acceleration_print = 20000
acceleration_wall_0 = 8000
acceleration_wall_x = 12000
acceleration_roofing = =acceleration_wall_0
acceleration_topbottom = =acceleration_wall
acceleration_layer_0 = 3000
acceleration_travel = 40000

View file

@ -0,0 +1,13 @@
[general]
definition = sovol_sv08
name = 0.4mm Nozzle
version = 4
[metadata]
hardware_type = nozzle
setting_version = 23
type = variant
[values]
machine_nozzle_size = 0.4