13 Commits

Author SHA1 Message Date
Bassam Husain
953daefa32 Adjusted PRINT_START sequence to save time, and to prevent oozing. Increased microsteps to 128, and added square_corner_velocity. 2023-04-07 09:52:06 -04:00
Bassam Husain
d0b426d5b0 Updated readme. 2023-04-06 06:44:26 -04:00
Bassam Husain
4b90c7abc5 Added G90 to steps after homing. 2023-04-06 06:22:01 -04:00
Bassam Husain
daa07e37c0 Merge branch 'master' of github.com:bassamanator/Sovol-SV06-firmware. 2023-04-03 14:49:03 -04:00
Bassam Husain
758a3f8b77 Update README.md
Added instructions for adjusting slicer start/end gcode.
2023-04-03 12:51:49 -04:00
Bassam Husain
c1427d9418 Update README.md 2023-04-03 08:28:35 -04:00
Bassam Husain
371e0d604a Update README.md 2023-04-03 08:09:36 -04:00
Bassam Husain
5b5ce8df57 Adjusted readme. 2023-04-02 19:11:43 -04:00
Bassam Husain
8346c79f35 Adjusted start position for purge_line. 2023-04-02 19:00:47 -04:00
Bassam Husain
98a1cd7fe6 Purge_line macro adjusted to print at the front of the bed; printer agnostic. Print_end adjusted to use safer speed. 2023-04-02 18:31:58 -04:00
Bassam Husain
39131e0d66 Merge branch 'master' of github.com:bassamanator/Sovol-SV06-firmware 2023-04-02 11:08:47 -04:00
Bassam Husain
862c45b88f Update README.md
Added firmware location to Flash Firmware section.
2023-04-01 22:48:49 -04:00
Bassam Husain
73f15169b6 README: minor change. 2023-03-27 18:33:48 -04:00
3 changed files with 90 additions and 50 deletions

View File

@@ -1,6 +1,8 @@
# 🚨 *One-Stop-Shop* Sovol SV06 Klipper Configuration
This repository contains the Klipper configuration and firmware for the Sovol SV06 3D printer with completely *stock hardware*.
This repository contains the Klipper configuration and firmware for the **Sovol SV06** 3D printer with completely *stock hardware*.
If you wanted to use the One-Stop-Shop Klipper Configuration for a *different printer*, please switch to the [any-printer](https://github.com/bassamanator/Sovol-SV06-firmware/tree/any-printer) branch.
I am creating these files for my personal use and cannot be held responsible for what it might do to your printer. Use at your own risk.
@@ -18,36 +20,29 @@ I am creating these files for my personal use and cannot be held responsible for
- Load/unload filament macros.
- Purge line macro.
## To do:
- [x] Replace M109/M190 with `TEMPERATURE_WAIT`.
- [ ] Get the Ellis `TEST_SPEED` macro working.
- [x] Add information about directory structure.
- [x] Create FAQ section.
- [x] Get filament sensor working with hotend PCB.
- [x] Finalize filament sensor config and merge into `master`.
- [ ] Create topic in Discussion section detailing how users should keep this repository in sync with their own Klipper config using `git`.
- [ ] Explain `PAUSE`/`RESUME` extruder behaviour.
- [ ] Integrate KAMP (Klipper Adaptive Meshing and Purging).
- [x] Add `BEEP` when filament needs changing/`M600`.
## Stay Up-to-Date
I work on this repository all the time and a lot of new features are coming. Watch releases of this repository to be notified for future updates:
<img src="./images/githubstar.gif" width="500" alt='Raspberry Pi'/>
# Preface
Although I've made switching over to Klipper as easy as is possible, it can still be a challenge for some, especially considering that most of you have likely never used GNU+Linux. Save yourself the fustration, and fully read all documentation found on this page. Also note that Klipper is not a *must*, and is not for everyone. You can stick with Marlin, and have a fine 3D printing experience.
# Installation Steps
## Before You Begin
- Know what you're getting into by reading this documentation *fully!*
- It is assumed that you are connected to your host Raspberry Pi (or other host device) via SSH, and that your printer motherboard is connected to the host via USB.
- Read this documentation *fully!*
- Follow the steps in order.
- If an error was reported at a step, do no proceed to the next step.
- It is assumed that you are connected to your host Raspberry Pi (or other host device) via SSH, and that your printer motherboard is connected to the host via a data USB cable. Note that most of the micro USB cables that you find at home are *unlikely* to be data cables, and it's not possible to tell just by looking.
- It is also assumed that the username on the host device is `pi`. If that is not the case, you will have to manually edit `moonraker.conf` and `cfgs/misc-macros.cfg` and change any mentions of `/home/pi` to `/home/yourUserName`.
- Klipper *must* be installed on the host Raspberry Pi for everything to work. Easiest is to use a [FluiddPi](https://docs.fluidd.xyz/installation/fluiddpi#download) or [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest) image.
- It is assumed that there is one instance of Klipper installed. If you have multiple instances of Klipper installed, via `KIAUH` for example, then this guide is not for you. You can still use all the configs of course, but the steps in this guide will not work for you.
- Klipper *must* be installed on the host Raspberry Pi for everything to work. Easiest is to use a [FluiddPi](https://docs.fluidd.xyz/installation/fluiddpi#download) or [MainsailOS](https://github.com/mainsail-crew/mainsail/releases/latest) image. [KIAUH](https://github.com/th33xitus/kiauh) is another excellent option, though it's not as simple as flashing MainsailOS on a microSD card, for example.
- Robert Redford's performance in *Spy Game (2001)* was superb!
- It is assumed that there is one instance of Klipper installed. If you have multiple instances of Klipper installed, via `KIAUH` for example, then this guide is not for you. You can still use all the configs of course, but the steps in this guide will likely not work for you.
- Your question has probably been answered already, but if it hasn't, please post in the [Discussion](https://github.com/bassamanator/Sovol-SV06-firmware/discussions) section.
- If you see any errors, or encounter any issues, please create an [Issue](https://github.com/bassamanator/Sovol-SV06-firmware/issues/new), or a [Pull request](https://github.com/bassamanator/Sovol-SV06-firmware/pulls).
- I would recommend searching for the word `NOTE` in this repository. There are roughly half a dozen short points amongst the various files that you should be aware of if you're using this configuration.
## Flash Firmware
@@ -56,6 +51,8 @@ I work on this repository all the time and a lot of new features are coming. Wat
💡 For the sake of simplicity, I will refer to the klipper firmware file as `klipper.bin` even though the actual filename is something along the lines of `klipper-v0.11.0-148-g52f4e20c.bin`.
💡 The firmware file is located in the `misc` folder.
### Prepare the microSD Card for Flashing
- Size: `8GB`. According to Sovol, the largest size that you can use is `16GB`.
@@ -79,13 +76,13 @@ You may find this [video](https://youtu.be/p6l253OJa34) useful.
You can choose *either* of the 2 following methods.
### Clone the Repository
### Method 1: Clone the Repository
1. `cd ~/printer_data/config`
2. Empty entire `~/printer_data/config` folder. Unfortunately, for safety reasons I will not post this command here. However, in linux, you can delete files via `rm filename`.
3. `git clone -b master --single-branch https://github.com/bassamanator/Sovol-SV06-firmware.git .`
### Download the ZIP
### Method 2: Download the ZIP
1. [Download](https://github.com/bassamanator/Sovol-SV06-firmware/archive/refs/heads/master.zip) the `ZIP` file containing the Klipper configuration.
2. The parent folder in the `ZIP` is `Sovol-SV06-firmware-master`. This is relevant in the next step.
@@ -106,22 +103,26 @@ You can choose *either* of the 2 following methods.
💡 I recommend no filament be loaded for any of these steps.
1. Do a `G28`; home all.
1. Check to see if `X` and `Y` max positions (`G1 X223 F3000`, `G1 Y223 F3000`) can be reached, and adjust `position_max`, if necessary. You can probably go all the way up to `225` for `X` and `Y` both, however, I would not recommend it.
💡 Find explanations for gcode commands at [https://marlinfw.org/](https://marlinfw.org/) and [klipper.org](https://www.klipper3d.org/G-Codes.html).
1. `G28`
1. Check to see if `X` and `Y` max positions (`G90`, `G1 X223 F3000`, `G1 Y223 F3000`) can be reached, and adjust `position_max`, if necessary. You can probably go all the way up to `225` for `X` and `Y` both, however, I would not recommend it.
2. Do a `G34`; mechanical gantry calibration. After the controlled collision against the beam at the top, there will be a 10 second pause for you to verify that both sides of the gantry are pressed up agaisnt the `stoppers` at the top. You will hear a succession of beeps.
1. Figure out your `Z` `position_max` by baby stepping your way up to the beam. The range is 250 to 261 from what I've seen, could be even higher for you. Adjust `position_max`, if necessary. I can go all the way to 258 over and over again, however, I would not print anything higher than 255 probably.
1. Figure out your `Z` `position_max` by baby stepping your way up to the beam. The range is 250 to 261 from what I've seen, could be even higher for you. Adjust `position_max`, if necessary. I can go all the way to 258, however, I would not print anything higher than 257.
3. Pid tune the bed, but first move the printhead to the center. Ideally, all Pid tuning should occur at the temperatures that you print most at.
1. `G28`
2. `G1 X111 Y111 Z40 F6000`
3. `PID_CALIBRATE HEATER=heater_bed TARGET=70`
4. `SAVE_CONFIG` (once completed)
2. `G90`
3. `G1 X111 Y111 Z40 F6000`
4. `PID_CALIBRATE HEATER=heater_bed TARGET=70`
5. `SAVE_CONFIG` (once completed)
4. Pid tune the extruder while part cooling fan runs at 25%.
1. `G28`
2. `G1 X111 Y111 Z10 F6000`
3. `M106 S64`
4. `PID_CALIBRATE HEATER=extruder TARGET=245`
5. `SAVE_CONFIG` (once completed)
5. Adjust `z_offset`. Make sure your nozzle if very clean. Paper test [reference](https://www.klipper3d.org/Bed_Level.html?h=probe_calibrate#the-paper-test).
2. `G90`
3. `G1 X111 Y111 Z10 F6000`
4. `M106 S64`
5. `PID_CALIBRATE HEATER=extruder TARGET=245`
6. `SAVE_CONFIG` (once completed)
5. Adjust `z_offset`. Make sure your nozzle if very clean. Do the [Paper test](https://www.klipper3d.org/Bed_Level.html?h=probe_calibrate#the-paper-test).
1. `SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=60`
2. `SET_HEATER_TEMPERATURE HEATER=extruder TARGET=180`
3. Proceed to next steps after both temperatures have been reached.
@@ -136,6 +137,14 @@ You can choose *either* of the 2 following methods.
5. `BED_MESH_CALIBRATE`
6. `SAVE_CONFIG` (once completed)
If you've made it here, then your printer has been Klipperized, and is ready to print!
But first, adjust your slicer.
## Adjust Your Slicer
You need to adjust the start and end gcode in your slicer. The relevant macros are `PRINT_START` and `PRINT_END`. Find instructions [here](https://ellis3dp.com/Print-Tuning-Guide/articles/passing_slicer_variables.html#slicer-start-g-code).
## Directory Structure
This repository contains many files and folders. Some are *necessary* for this Klipper configuration to work, others are not.

View File

@@ -75,17 +75,34 @@ gcode:
{% endif %}
[gcode_macro PURGE_LINE]
# https://github.com/JoeCat1207/V0.1-Purge-line-SuperSlicer/blob/main/Purgeline.txt
# https://github.com/VoronDesign/Voron-Switchwire/blob/200cdae033c59ef81f67c4235469da7ca66d53a1/Firmware/skr_mini_e3_v2_config.cfg
gcode:
{% set PRE_PURGE_PRIME_LENGTH=printer["gcode_macro _globals"].pre_purge_prime_length|default(1.40)|float %}
ADJUST_FILAMENT_SENSOR_STATUS ENABLE=1
G0 Y0 X0 F4000 ; go to tongue of print bed
G1 Z0.4 F500.0 ; move bed to nozzle
# Get Boundaries
{% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %}
{% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %}
{% set max_z = printer.configfile.config["stepper_z"]["position_max"]|float %}
{% set extrudeAmount = 26.6 %}
{% set movementLength = 100.0 %}
{% set movementSpeed = 15 * 60 %}
{% set xStart = 0.5 %}
{% set yStart = 0.5 %}
# Set safe speeds
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %}
G92 E0.0 ; reset extruder
G90 ; Absolute positioning
G0 X{xStart} Y{yStart} F{maxVelocityAdjusted} ; move to purge position
G1 Z0.4 F500.0 ; move to purge height
M83 ; Relative extrusion mode
G1 E{PRE_PURGE_PRIME_LENGTH} F500 ; pre-purge prime LENGTH SHOULD MATCH YOUR PRINT_END RETRACT
G1 Y140 E35.0 F1200.0 ; intro line 1
G1 X{xStart + movementLength} E{extrudeAmount} F{movementSpeed} ; intro line 1
#G1 E-.5 F2100 # Retract
G92 E0.0 ; reset extruder
M82 ; Absolute extrusion mode
G1 Z5.0 ; move nozzle to prevent scratch
[gcode_macro CANCEL_PRINT]
@@ -104,19 +121,23 @@ gcode:
{% set hotendtemp = params.HOTEND|int %}
{% set chambertemp = params.CHAMBER|default(0)|int %}
# Set safe speeds
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %}
ADJUST_FILAMENT_SENSOR_STATUS ENABLE=1
G28 X Y
# <insert your routines here>
G90
M140 S{bedtemp} ; set & don't wait for bed temp
M104 S{hotendtemp} ; set & don't wait for hotend temp
G28 X Y
M190 S{bedtemp} ; set & wait for bed temp
# TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={chambertemp} ; wait for chamber temp
# <insert your routines here>
M109 S{hotendtemp} ; set & wait for hotend temp
# <insert your routines here>
M104 S{hotendtemp} ; set & don't wait for hotend temp
G28 Z ; final z homing
G1 X0 Y0 F{maxVelocityAdjusted}
M109 S{hotendtemp} ; set & wait for hotend temp
BED_MESH_PROFILE LOAD=default
G1 Z20 F3000 ; move nozzle away from bed
@@ -125,11 +146,18 @@ gcode:
ADJUST_FILAMENT_SENSOR_STATUS ENABLE=0
CONDITIONAL_BEEP I=2 DUR=30 FREQ=8500 ; NOTE Comment out this line to stop the beeps at the end of a print
{% set PRE_PURGE_PRIME_LENGTH=printer["gcode_macro _globals"].pre_purge_prime_length|default(1.40)|float %}
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-{PRE_PURGE_PRIME_LENGTH} F400 ; retract filament
G91 ; relative positioning
# Set safe speeds
{% set zVelocity = printer.configfile.settings.printer.max_z_velocity|default(15)|int %}
{% set maxVelocity = printer.configfile.settings.printer.max_velocity|default(200)|int %}
{% set zVelocityAdjusted = (0.95 * zVelocity * 60)|int %}
{% set maxVelocityAdjusted = (0.95 * maxVelocity * 60)|int %}
# Get Boundaries
{% set max_x = printer.configfile.config["stepper_x"]["position_max"]|float %}
{% set max_y = printer.configfile.config["stepper_y"]["position_max"]|float %}
@@ -155,8 +183,8 @@ gcode:
{% set z_safe = max_z - printer.toolhead.position.z %}
{% endif %}
G0 Z{z_safe} F2000 ; move nozzle up
G0 X{x_safe} Y{y_safe} F9000 ; move nozzle to remove stringing
G0 Z{z_safe} F{zVelocityAdjusted} ; move nozzle up
G0 X{x_safe} Y{y_safe} F{maxVelocityAdjusted} ; move nozzle to remove stringing
TURN_OFF_HEATERS
M107 ; turn off fan
G90 ; absolute positioning

View File

@@ -23,6 +23,7 @@ max_velocity: 200
max_accel: 3000
max_z_velocity: 15
max_z_accel: 45
square_corner_velocity: 8.0
#####################################################################
# X/Y/Z Stepper Settings
@@ -32,7 +33,7 @@ max_z_accel: 45
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
microsteps: 64
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
@@ -54,7 +55,7 @@ diag_pin: PA5
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 64
microsteps: 128
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
@@ -76,7 +77,7 @@ diag_pin: PA6
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 64
microsteps: 128
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_min: -4
@@ -100,7 +101,7 @@ diag_pin: PA7
step_pin: PB4
dir_pin: !PB3
enable_pin: !PC3
microsteps: 64
microsteps: 128
rotation_distance: 4.65 # NOTE Calibrate e-steps and adjust https://www.klipper3d.org/Rotation_Distance.html
nozzle_diameter: 0.400
filament_diameter: 1.750
@@ -224,6 +225,8 @@ switch_pin: !PA4 # "Pulled-high"
pause_on_runout: True
insert_gcode:
M117 Insert Detected
{ action_respond_info("Insert Detected") }
runout_gcode:
M117 Runout Detected
{ action_respond_info("Runout Detected") }
CONDITIONAL_BEEP i=3 dur=300 freq=400