diff --git a/docs/assets/images/can1_bus_config.png b/docs/assets/images/can1_bus_config.png new file mode 100644 index 0000000..29bc82c Binary files /dev/null and b/docs/assets/images/can1_bus_config.png differ diff --git a/docs/assets/images/u1/afc_u1_enable.png b/docs/assets/images/u1/afc_u1_enable.png new file mode 100644 index 0000000..1c4e8d1 Binary files /dev/null and b/docs/assets/images/u1/afc_u1_enable.png differ diff --git a/docs/assets/images/u1/afc_u1_enabled.png b/docs/assets/images/u1/afc_u1_enabled.png new file mode 100644 index 0000000..73105a4 Binary files /dev/null and b/docs/assets/images/u1/afc_u1_enabled.png differ diff --git a/docs/assets/images/u1/afc_u1_pressure_advance.png b/docs/assets/images/u1/afc_u1_pressure_advance.png new file mode 100644 index 0000000..c52539b Binary files /dev/null and b/docs/assets/images/u1/afc_u1_pressure_advance.png differ diff --git a/docs/assets/images/u1/afc_u1_select_file.png b/docs/assets/images/u1/afc_u1_select_file.png new file mode 100644 index 0000000..fbff3ee Binary files /dev/null and b/docs/assets/images/u1/afc_u1_select_file.png differ diff --git a/docs/assets/images/u1/afc_u1_update_file.png b/docs/assets/images/u1/afc_u1_update_file.png new file mode 100644 index 0000000..ea667b4 Binary files /dev/null and b/docs/assets/images/u1/afc_u1_update_file.png differ diff --git a/docs/assets/images/u1/afc_u1_update_success.png b/docs/assets/images/u1/afc_u1_update_success.png new file mode 100644 index 0000000..7f07fff Binary files /dev/null and b/docs/assets/images/u1/afc_u1_update_success.png differ diff --git a/docs/assets/images/u1/afc_u1_upload_and_upgrade.png b/docs/assets/images/u1/afc_u1_upload_and_upgrade.png new file mode 100644 index 0000000..ea7843f Binary files /dev/null and b/docs/assets/images/u1/afc_u1_upload_and_upgrade.png differ diff --git a/docs/assets/images/u1/setting_pa.png b/docs/assets/images/u1/setting_pa.png new file mode 100644 index 0000000..c6e348b Binary files /dev/null and b/docs/assets/images/u1/setting_pa.png differ diff --git a/docs/configuration/AFC.cfg.md b/docs/configuration/AFC.cfg.md index 8c24c63..2f80678 100644 --- a/docs/configuration/AFC.cfg.md +++ b/docs/configuration/AFC.cfg.md @@ -173,10 +173,12 @@ n20_break_delay_time: 0.200 # Default: 0.200 # Time to wait between braking N20 motors(nSleep/FWD/RWD all 1) and then # releasing the brake to allow coasting. -tool_max_unload_attempts: 2 -# Default: 2 +tool_max_unload_attempts: 4 +# Default: 4 # Max number of attempts to unload filament from toolhead when using # buffer as ramming sensor. +# Variable can be overridden in [AFC_Boxturtle/AFC_NightOwl etc] +# sections and [AFC_stepper/AFC_lane] sections. tool_homing_distance: 200 # Default: 200 # Distance in mm over which toolhead homing is to be attempted. @@ -314,6 +316,10 @@ auto_spool_switch_threshold: 25 restore_extruder_temp_on_load_or_unload: False # Default: False # When True, AFC will restore extruder target temp after tool load/unload when not printing. +force_assign_map: False +# Default: False +# Setting to True will allow AFC to always override any existing T(n) macros when +# mapping lanes during PREP ``` ### Multiple Extruder variables only @@ -412,7 +418,16 @@ form_tip_cmd: AFC # call the built-in macro. You can replace this with a custom macro name if # you have a different tip-forming method or tool. Configuration for the AFC # macro is defined in the `AFC.cfg` file. - +park_pre_load: False +# Default: False +# Boolean, when set to true, the system will call the macro defined by +# park_pre_load_cmd before loading a lane. Use this macro to park the +# toolhead at a specific spot before loading filament to the toolhead. +park_pre_load_cmd: None +# Default: None +# Park macro name to call before loading filament to the toolhead. +# For example, use AFC_PARK to call the normal park macro before loading +# filament. post_load_macro: # Default: # Macro called at the end of the load sequence, after poop, kick, and wipe diff --git a/docs/configuration/AFC_Hardware.cfg.md b/docs/configuration/AFC_Hardware.cfg.md index 73cc58b..b60815c 100644 --- a/docs/configuration/AFC_Hardware.cfg.md +++ b/docs/configuration/AFC_Hardware.cfg.md @@ -167,6 +167,22 @@ nozzle_led_idx: # Must not overlap with status_led_idx. ``` +### The following configs are only for Snapmaker U1 printers +``` cfg +u1_filament_sensor_name: +# Default: None +# Required in AFC_extruder sections for Snapmaker U1 printers, +# this variable should be the name for your extruders toolhead sensor. +# For example, if AFC_extruder config section is "extruder1", then +# filament sensor name should be "e1_filament" +u1_park_detector_name: +# Default: None +# Required in AFC_extruder sections for Snapmaker U1 printers, +# this variable should be the name for your extruders park detector sensor. +# For example, if AFC_extruder config section is "extruder1", then +# filament sensor name should be "extruder1" +``` + ## [AFC_buffer buffer_name] Section The following options are available in the `[AFC_buffer buffer_name]` section of the `AFC_Hardware.cfg` file. These options control the configuration of the AFC system when interfacing with the filament buffer. diff --git a/docs/configuration/AFC_UnitType_1.cfg.md b/docs/configuration/AFC_UnitType_1.cfg.md index c9b8089..b817025 100644 --- a/docs/configuration/AFC_UnitType_1.cfg.md +++ b/docs/configuration/AFC_UnitType_1.cfg.md @@ -224,6 +224,12 @@ short_move_dis: 10 # Move distance in mm for failsafe moves. Setting value # here overrides values set in unit(AFC_BoxTurtle/NightOwl/etc) # section +tool_max_unload_attempts: 4 +# Default: 4 +# Max number of attempts to unload filament from toolhead when using +# buffer as ramming sensor. +# Setting variable here overrides values set in unit(AFC_BoxTurtle/NightOwl/etc) +# or AFC config sections. max_move_dis: 99999 # Default: 99999 # Maximum distance to move filament. AFC breaks filament moves over @@ -715,6 +721,12 @@ enable_assist_weight: 500 # Number in grams to activate espooler print assist once spool weight is # less than this number. # Can be overridden in the [AFC_stepper] sections. +tool_max_unload_attempts: 4 +# Default: 4 +# Max number of attempts to unload filament from toolhead when using +# buffer as ramming sensor. +# Setting variable here overrides value set in AFC config section. This +# variable can be overridden in [AFC_stepper/AFC_lane] config sections. timer_delay: 5 # Default: 5 # Affects espooler assist, number of seconds to wait before diff --git a/docs/initial-startup/01-overview.md b/docs/initial-startup/01-overview.md index f36b34c..52ef6aa 100644 --- a/docs/initial-startup/01-overview.md +++ b/docs/initial-startup/01-overview.md @@ -8,60 +8,38 @@ the appropriate unit type (e.g. Boxturtle, HTLF, etc.). [BoxTurtle Assembly Manual](https://armoredturtle.xyz/manual-sections.html?manual=boxturtle) + --8<-- "includes/prerequisites.md" + === "HTLF" [HTLF Assembly Manual](https://armoredturtle.xyz/manual-sections.html?manual=htlf) + --8<-- "includes/prerequisites.md" + === "ViViD" [ViViD Manual](https://github.com/bigtreetech/BIGTREETECH_ViViD/blob/master/BIGTREETECH_ViViD_User_Manual%20V1.0.2.pdf) !!!warning - ViViD heater temperature sensor is currently not supported in Kalico. Currently there is a pull request waiting to be merged in to support this sensor. + If you are running Kalico, at least version v2026.06.00 needs to be installed to use ViViD's heater temperature sensor + + --8<-- "includes/prerequisites.md" === "EMU" [EMU docs](https://github.com/DW-Tas/EMU/tree/main/docs) [EMU manuals](https://github.com/DW-Tas/EMU/tree/main/Manuals) -## Prerequisites - -### Calibrate/tune existing printer extruder - -If you are installing this on a new printer or extruder (including [FilamATrix](https://github.com/thunderkeys/FilamATrix)) -ensure you have calibrated your printer/extruder before introducing AFC/multicolor printing. If your extruder rotation -distance is off by a large factor, this will cause issues with defining values such as `tool_stn` and others later on -in the configuration. - -It is a lot easier to do some of the calibrations (such as rotation distance) *BEFORE* installing your AFC unit. - -Our recommended guide to follow for calibration -is [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/). - -### Ensure minimum system requirements - -The AFC Klipper Add-On requires a minimum Klipper/Kalico version of 0.12, as well as a corresponding klippy-env Python -environment of at least version 3.8. - -!!!warning "Minimum Klipper Requirements" - - If you are running a version of Klipper/Kalico older than 0.12, you will need to update your system before proceeding. - The AFC Klipper Add-On will not work with older versions. You must be on or past commit id `1d92be71` of Klipper. - This was released on Jan 18th, 2024. + --8<-- "includes/prerequisites.md" -If you are on Klipper/Kalico 0.12, but running `~/klippy-env/bin/python --version` returns version 2.7.x, you can -recreate it with the following: +=== "Snapmaker U1" + --8<-- "includes/u1/need_to_install_extended_fw.md" -``` -sudo service klipper stop + AFC-Klipper-Add-On has been included into [Snapmaker U1 Extended Firmware](https://github.com/paxx12-snapmaker-u1/SnapmakerU1-Extended-Firmware), this initial guide walks you though uploading the extended firmware and enabling a basic AFC config that operates all four toolheads in standalone mode([click here](../toolchanger/overview.md#toolchanger-overview) to learn more about what a standalone toolhead means for toolchangers). -mv ~/klippy-env ~/klippy-env2.7 -virtualenv -p python3 ~/klippy-env -~/klippy-env/bin/pip install -r ~/klipper/scripts/klippy-requirements.txt + After installing the extended firmware and enabling full AFC-Klipper-Add-On, if you would like to add a BoxTurtle or any other automated filament changer to your U1, then revisit this initial startup guide for the appropriate filament changer. -sudo service klipper start -``` + One thing to note is that if you add a filament changer to your U1 you will need to use the [u1-klipper](https://github.com/Snapmaker/u1-klipper) firmware version when flashing your MCU. If this is not done then your filament changer MCU and U1-klipper firmware will not communicate correctly and will error out. -After recreating it, you may need to reinstall any custom add-ons, such as Klippain Shake&Tune, TMC Autotune, etc. + Before installing and enabling AFC-Klipper-Add-On onto your U1, please take a second to [read](../toolchanger/snapmaker.md) over what U1 functions currently work and what functions do not work correctly when using AFC-Klipper-Add-On on your U1. -Ensure you have a clean, functioning Klipper install with all of these minimum requirements met before proceeding to the -next step. + [Next step](03-install-plugin.md#snapmaker-u1) diff --git a/docs/initial-startup/02-flashing.md b/docs/initial-startup/02-flashing.md index 998eb7b..1dbe53a 100644 --- a/docs/initial-startup/02-flashing.md +++ b/docs/initial-startup/02-flashing.md @@ -19,25 +19,13 @@ UUID (if using CAN) or the device serial path (e.g., `/dev/serial/by-id/...`) (if using USB) for the AFC-Lite MCU. Please ensure you have these values before you proceed, as they will be required. + --8<-- "includes/toolhead_pins.md" + === "Other Systems" Please follow you MCU guide for the board that you are using in your system. -## Make note of any toolhead sensor pins - -If you are using [FilamATrix](https://github.com/thunderkeys/FilamATrix), and are using toolhead endstop sensors, make a -note of what MCU pins those sensors are connected to for the pre-extruder gear sensor (aka `pin_tool_start`) and -post-extruder gear sensor (`pin_tool_end`). Use these in the next step to properly install and configure AFC. - -!!! note - The `pin_tool_start` refers to the pin above the extruder gears, while the `pin_tool_end` refers to the pin below - the extruder gears. If you are using a single sensor, you will only need to use the `pin_tool_start` pin. - -An example of these pins and their locations can be seen in the diagram below: - -![example-pins](../assets/images/example-cw2-revo.png) + --8<-- "includes/toolhead_pins.md" -If you do not have a native toolhead filament sensor, you can use either an inline filament sensor such -as [Filatector](https://github.com/ArmoredTurtle/Filatector), or you can use -the [TurtleNeck buffer](https://github.com/ArmoredTurtle/TurtleNeck) as a virtual toolhead endstop. Please -see [this guide](../installation/buffer-ram-sensor.md) for more details. +=== "Snapmaker U1" + Skip for Snapmaker since there is nothing to flash, installation instructions are on [Plugin Install](03-install-plugin.md) page \ No newline at end of file diff --git a/docs/initial-startup/03-install-plugin.md b/docs/initial-startup/03-install-plugin.md index 5e1fe6d..9084465 100644 --- a/docs/initial-startup/03-install-plugin.md +++ b/docs/initial-startup/03-install-plugin.md @@ -1,52 +1,79 @@ ## Install the AFC Klipper Add-On -Your AFC unit works with the [AFC Klipper Add-On](https://github.com/AFCProject/AFC-Klipper-Add-On). The rest of -this guide will focus on configuring AFC for use with your unit. +=== "All Automated Filament Changers" -Follow the instructions on that GitHub for the latest details on installation and configuration, but at the time of writing -this is the easy button: + Your AFC unit works with the [AFC Klipper Add-On](https://github.com/AFCProject/AFC-Klipper-Add-On). The rest of + this guide will focus on configuring AFC for use with your unit. -```sh -cd ~ -git clone https://github.com/AFCProject/AFC-Klipper-Add-On.git -cd AFC-Klipper-Add-On -./install-afc.sh -``` + Follow the instructions on that GitHub for the latest details on installation and configuration, but at the time of writing + this is the easy button: -The default options for the park, cut, kick, wipe, and tip forming macros can be used if you don't know what to choose. -These can all be changed later by editing `AFC/AFC.cfg` and doing a firmware restart. + ```sh + cd ~ + git clone https://github.com/AFCProject/AFC-Klipper-Add-On.git + cd AFC-Klipper-Add-On + ./install-afc.sh + ``` -After the installation completes, you should now see an AFC folder in your printer configuration directory, along with -several files in there named `AFC.cfg`, `AFC_Hardware.cfg`, `AFC_Macro_Vars.cfg`, and a unit-specific configuration -file (e.g., `AFC_Turtle_1.cfg` for BoxTurtle). The exact filename depends on the unit type you chose during -installation. If you do not see these files, or if you see duplicate files (e.g., your `printer.cfg`) - -this may be a caching issue with your web UI (Mainsail/Fluidd). Force a refresh with shift-reload or Ctrl+F5 and the -problem should resolve itself. + The default options for the park, cut, kick, wipe, and tip forming macros can be used if you don't know what to choose. + These can all be changed later by editing `AFC/AFC.cfg` and doing a firmware restart. -### Post-Installation Configuration -After installation, please ensure you update the following settings: + After the installation completes, you should now see an AFC folder in your printer configuration directory, along with + several files in there named `AFC.cfg`, `AFC_Hardware.cfg`, `AFC_Macro_Vars.cfg`, and a unit-specific configuration + file (e.g., `AFC_Turtle_1.cfg` for BoxTurtle). The exact filename depends on the unit type you chose during + installation. If you do not see these files, or if you see duplicate files (e.g., your `printer.cfg`) - + this may be a caching issue with your web UI (Mainsail/Fluidd). Force a refresh with shift-reload or Ctrl+F5 and the + problem should resolve itself. -- In your unit-specific config file (e.g., `AFC/AFC_Turtle_1.cfg` for BoxTurtle): - - `canbus_uuid` if using CAN bus - - `serial` if using USB -- In `AFC/AFC_Hardware.cfg` - - `pin_tool_start` and/or `pin_tool_end` + ### Post-Installation Configuration + After installation, please ensure you update the following settings: -In your `printer.cfg`'s `[extruder]` section, update the setting `max_extrude_only_distance` to the value 400. If -the setting is not there, add it: + - In your unit-specific config file (e.g., `AFC/AFC_Turtle_1.cfg` for BoxTurtle): + - `canbus_uuid` if using CAN bus + - `serial` if using USB + - In `AFC/AFC_Hardware.cfg` + - `pin_tool_start` and/or `pin_tool_end` -`max_extrude_only_distance: 400` + In your `printer.cfg`'s `[extruder]` section, update the setting `max_extrude_only_distance` to the value 400. If + the setting is not there, add it: -Depending on your configuration, you may also need to add the following line to your `printer.cfg`'s `[extruder]` section: + `max_extrude_only_distance: 400` -`max_extrude_cross_section: 50` + Depending on your configuration, you may also need to add the following line to your `printer.cfg`'s `[extruder]` section: -However, this should only be added if a warning appears in the logs about the extruder cross-section being too small. -If you do not see this warning, you can skip this step. + `max_extrude_cross_section: 50` -Review all x,y,z positions in the `AFC/AFC_Macro_Vars.cfg` file to ensure they are correct for your printer for any macros -you have enabled. + However, this should only be added if a warning appears in the logs about the extruder cross-section being too small. + If you do not see this warning, you can skip this step. + Review all x,y,z positions in the `AFC/AFC_Macro_Vars.cfg` file to ensure they are correct for your printer for any macros + you have enabled. -For best results, reboot your printer after installing the Add-On and including it in your printer.cfg. This will ensure -all required modules are enabled. \ No newline at end of file + + For best results, reboot your printer after installing the Add-On and including it in your printer.cfg. This will ensure + all required modules are enabled. + +=== "Snapmaker U1" + + --8<-- "includes/u1/warning.md" + + Currently not implemented into Snapmaker U1 Extended Firmware by paxx12, currently binaries can be found in AFCProject discord. + + If you have __Snapmaker U1 Extended Firmware__ already installed, you can follow steps 1-4 on the [update](../updates/updates.md#snapmaker-u1-printer) page and then come back to this page and finish steps 4-7 + + 1. Before installing, please make sure to fully unload all filament thats currently loaded into your toolheads. + + 1. Once binary is downloaded follow [Snapmaker U1 Extended Firmware installation instructions](https://snapmakeru1-extended-firmware.pages.dev/install) + 1. Once installation is done, to enable AFC-Klipper-Add-On open your web browser and navigate to `http:///firmware-config`. Be sure to replace `` with your Snapmaker U1 IP address. + 1. Navigate down to tweaks section and in the drop down for Enable AFC-Klipper-Add-On, choose `Enable`, then select `Confirm` + ![afc_enable](../assets/images/u1/afc_u1_enable.png) + 1. Once that is done and the box shows `SUCCESS: Setting updated successfully`, navigate back to your printers fluidd interface. If enable was done correctly, the T0-T31 tools should now only show T0-T3 and your AFC panel should look something like below and there should not be any Klipper errors. + ![afc_enabled](../assets/images/u1/afc_u1_enabled.png) + 1. The error that shows up is normal and can be ignored and closed out with the `x` on the right. If it keeps showing up please consult for help in the AFCProject discord. + + + + [Next Step](09-slicer-config.md#snapmaker-u1) \ No newline at end of file diff --git a/docs/initial-startup/09-slicer-config.md b/docs/initial-startup/09-slicer-config.md index 21c4c01..861ffc6 100644 --- a/docs/initial-startup/09-slicer-config.md +++ b/docs/initial-startup/09-slicer-config.md @@ -1,95 +1,208 @@ -### Configuring your slicer +=== "All Printers" -The recommended slicer for AFC is OrcaSlicer. Other slicers such as PrusaSlicer or SuperSlicer may be used, and the -configuration of options within them is similar but naming or options may be slightly different. + ### Configuring your slicer -#### Updating printer settings in Orca + The recommended slicer for AFC is OrcaSlicer. Other slicers such as PrusaSlicer or SuperSlicer may be used, and the + configuration of options within them is similar but naming or options may be slightly different. -For the printer you are adding your AFC unit to, first go to the Printer settings, Multimaterial tab and ensure settings are -configured as per the below screenshot. -![Orca_Printer_Settings](../assets/images/orca-multimaterialtab.png) + #### Updating printer settings in Orca -!!! note + For the printer you are adding your AFC unit to, first go to the Printer settings, Multimaterial tab and ensure settings are + configured as per the below screenshot. + ![Orca_Printer_Settings](../assets/images/orca-multimaterialtab.png) - Only select the `Purge in prime tower` option when you are not using the `POOP` macro/functionality. + !!! note -!!! note + Only select the `Purge in prime tower` option when you are not using the `POOP` macro/functionality. - Ensure you select `Type 2` as the wipe tower type. + !!! note -Also, on the Extruder 1 setting page - reduce `Retraction while switching material` length from the default of 2 to 0. + Ensure you select `Type 2` as the wipe tower type. -#### Adding additional filaments/extruders + Also, on the Extruder 1 setting page - reduce `Retraction while switching material` length from the default of 2 to 0. -Increase the number of filaments to match your unit's lane count. -![Orca_Add_Filament_Settings](../assets/images/orca-filamentcount.png) + #### Adding additional filaments/extruders -#### Updating the Machine G-code settings + Increase the number of filaments to match your unit's lane count. + ![Orca_Add_Filament_Settings](../assets/images/orca-filamentcount.png) -- Set `Machine start G-code` appropriately for your printer, specifically adding the `TOOL={initial_tool}` to your ` - PRINT_START` macro. + #### Updating the Machine G-code settings -!!! note + - Set `Machine start G-code` appropriately for your printer, specifically adding the `TOOL={initial_tool}` to your ` + PRINT_START` macro. - More information about the `PRINT_START` macro will be covered in the next section, so keep this in mind! + !!! note -``` g-code -M104 S0 ; Stops OrcaSlicer from sending temperature waits separately -M140 S0 ; Stops OrcaSlicer from sending temperature waits separately -PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single] TOOL={initial_tool} -``` + More information about the `PRINT_START` macro will be covered in the next section, so keep this in mind! -- Set `Change Filament G-Code` to the below value. Remove any other custom code here, e.g. extruder moves. + ``` g-code + M104 S0 ; Stops OrcaSlicer from sending temperature waits separately + M140 S0 ; Stops OrcaSlicer from sending temperature waits separately + PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single] TOOL={initial_tool} + ``` -``` g-code -T[next_extruder] PURGE_LENGTH=[flush_length] -; FLUSH_START -; EXTERNAL_PURGE {flush_length} -; FLUSH_END -``` + - Set `Change Filament G-Code` to the below value. Remove any other custom code here, e.g. extruder moves. -### Changes when using PrusaSlicer + ``` g-code + T[next_extruder] PURGE_LENGTH=[flush_length] + ; FLUSH_START + ; EXTERNAL_PURGE {flush_length} + ; FLUSH_END + ``` -For the most part, many of the above settings are also applicable to other Slic3r derivatives such as PrusaSlicer or -SuperSlicer. Below are a list of some of the deviations. Reth also created a very good summary of the overview of tuning -changes for PrusaSlicer in [this video](https://www.youtube.com/watch?v=ilxtHVNhsM4). + ### Changes when using PrusaSlicer -- Instead of 'Change Filament G-Code', update the 'Tool Change G-Code' in printer settings to the below. + For the most part, many of the above settings are also applicable to other Slic3r derivatives such as PrusaSlicer or + SuperSlicer. Below are a list of some of the deviations. Reth also created a very good summary of the overview of tuning + changes for PrusaSlicer in [this video](https://www.youtube.com/watch?v=ilxtHVNhsM4). -``` g-code -T[next_extruder] -``` + - Instead of 'Change Filament G-Code', update the 'Tool Change G-Code' in printer settings to the below. -- Under each extruder in printer settings, change the default value of 'Retraction when tool is disabled' from 10mm to - 0.5mm. + ``` g-code + T[next_extruder] + ``` -#### Additional Slicer configuration - pre-OrcaSlicer 2.2.0 + - Under each extruder in printer settings, change the default value of 'Retraction when tool is disabled' from 10mm to + 0.5mm. -Configuring per-material filament ramming is no longer required as of the official OrcaSlicer 2.2.0 release ( -PR [#6934](https://github.com/SoftFever/OrcaSlicer/pull/6934)). If you are on an earlier version than that (including -betas/release candidates) you will need to make the following additional changes to your slicer configurations. + #### Additional Slicer configuration - pre-OrcaSlicer 2.2.0 -### Cura Slicer Setup (User reported settings) + Configuring per-material filament ramming is no longer required as of the official OrcaSlicer 2.2.0 release ( + PR [#6934](https://github.com/SoftFever/OrcaSlicer/pull/6934)). If you are on an earlier version than that (including + betas/release candidates) you will need to make the following additional changes to your slicer configurations. -``` g-code -;Filament name = {material_brand} {material_name} -;Filament type = {material_type} -;Filament weight = {filament_weight} -;Nozzle diameter = {machine_nozzle_size} -PRINT_START STANDBY={material_standby_temperature} BED={material_bed_temperature_layer_0} EXTRUDER={material_print_temperature_layer_0} TOOL={initial_extruder_nr} -``` + ### Cura Slicer Setup (User reported settings) -#### Material Settings + ``` g-code + ;Filament name = {material_brand} {material_name} + ;Filament type = {material_type} + ;Filament weight = {filament_weight} + ;Nozzle diameter = {machine_nozzle_size} + PRINT_START STANDBY={material_standby_temperature} BED={material_bed_temperature_layer_0} EXTRUDER={material_print_temperature_layer_0} TOOL={initial_extruder_nr} + ``` -![Orca_Material_Settings](../assets/images/orca-filament-material-settings.png) + #### Material Settings -##### Ramming Settings + ![Orca_Material_Settings](../assets/images/orca-filament-material-settings.png) -Because the AFC-Klipper-Add-On handles any tip forming in the extension, we need to disable these specific settings in -the slicer software. Below is a screenshot for OrcaSlicer, but most Slic3r-based slicers have a similar dialog/setting. -![Orca_Ramming_Settings](../assets/images/orca-ramming-settings.png) + ##### Ramming Settings + Because the AFC-Klipper-Add-On handles any tip forming in the extension, we need to disable these specific settings in + the slicer software. Below is a screenshot for OrcaSlicer, but most Slic3r-based slicers have a similar dialog/setting. + ![Orca_Ramming_Settings](../assets/images/orca-ramming-settings.png) -### Other slicers -PrusaSlicer - https://www.youtube.com/watch?v=ilxtHVNhsM4 \ No newline at end of file + ### Other slicers + + PrusaSlicer - https://www.youtube.com/watch?v=ilxtHVNhsM4 + +=== "Snapmaker U1" + + ### Configuring Print Start Macro in Orca Slicer + + !!! note + As of this posting, the following Print Start macro change is needed so that AFC can properly work on your U1. As new features are added to AFC to support U1 additional features, this print start macro section will be updated. The print start macro can also be found in the AFCProject [github](https://github.com/AFCProject/AFC-Klipper-Add-On/blob/main/templates/u1_macros/u1_print_start.txt) + + In Orca Slicer open your printer settings, in the Machine G-code tab remove the current code in the __Machine start G-code__ section and copy/paste the code below. Don't forget to save your updates. + + This is the last step in setting up AFC on your U1 printer, now have fun printing with AFC and if any issues arise please don't hesitate to ask questions in the AFCProject discord. + + ``` + SET_PRINT_AUTO_BED_LEVELING ENABLE=1 + SET_TIME_LAPSE_CAMERA ENABLE=1 + ;===== date: 20251222 ===================== + + PRINT_START + ; DEFECT_DETECTION_START + SET_PRINT_STATS_INFO TOTAL_LAYER={total_layer_count} + SET_PRINT_STATS_INFO CURRENT_LAYER=0 + TIMELAPSE_START + M140 S{bed_temperature_initial_layer_single} + M104 T{initial_extruder} S140 + M204 S10000 + + G28 + + ;===== 床面异物检测 ======== + ;T{initial_extruder} + G90 + ;DEFECT_DETECTION_DETECT_BED + ;===== 取放头检测 ================= + SM_PRINT_CHECK_SWITCH_EXTRUDER + + ;===== 自动进料 & 挤出流量 & 预挤出 ====================== + ;SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=1 TEMP=140 + ;SM_PRINT_AUTO_FEED EXTRUDER=0 + ;SM_PRINT_FLOW_CALIBRATE EXTRUDER=0 + ;SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=2 TEMP=140 + ;SM_PRINT_AUTO_FEED EXTRUDER=1 + ;SM_PRINT_FLOW_CALIBRATE EXTRUDER=1 + ;SM_PRINT_EXTRUDER_PREHEAT EXTRUDER=3 TEMP=140 + ;SM_PRINT_AUTO_FEED EXTRUDER=2 + ;SM_PRINT_FLOW_CALIBRATE EXTRUDER=2 + ;SM_PRINT_AUTO_FEED EXTRUDER=3 + ;SM_PRINT_FLOW_CALIBRATE EXTRUDER=3 + ;M104 S0 T0 A0 + ;M104 S0 T1 A0 + ;M104 S0 T2 A0 + ;M104 S0 T3 A0 + ;M104 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90} + + ;===== 粗回零 ================= + T{initial_extruder} + M106 S255 + M106 P2 S0 + MOVE_TO_DISCARD_FILAMENT_POSITION + M109 T{initial_extruder} S{nozzle_temperature[initial_extruder] - 90} + ROUGHLY_CLEAN_NOZZLE_WITH_DISCARD + MOVE_TO_XY_IDLE_POSITION_EXTRUDER + G28 Z I140 J140 + + ;===== 检测钢板 ================= + DETECT_BED_PLATE + + ;===== 深度清洁喷嘴 ================= + G90 + G0 Z5 F10000 + MOVE_TO_DISCARD_FILAMENT_POSITION + M109 S{nozzle_temperature[initial_extruder] - 50} + ROUGHLY_CLEAN_NOZZLE + MOVE_TO_XY_IDLE_POSITION_EXTRUDER + FINELY_CLEAN_NOZZLE_STAGE_1 + M104 S{nozzle_temperature[initial_extruder] - 90} + G0 Z5 F10000 + MOVE_TO_DISCARD_FILAMENT_POSITION + ROUGHLY_CLEAN_NOZZLE + MOVE_TO_XY_IDLE_POSITION_EXTRUDER + FINELY_CLEAN_NOZZLE_STAGE_2 + + ;===== 精回零 ================= + M106 S255 + M109 S{nozzle_temperature[initial_extruder] - 90} + M190 S{bed_temperature_initial_layer_single} + M107 P2 + G90 + G0 Z5 F10000 + G28 Z + + ;===== 热床调平 ================= + ; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally + ; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic + BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0 + ; Original upstream: BED_MESH_CALIBRATE PROBE_COUNT=11,11 + + ;===== 画起始线 ================= + T{initial_extruder} + M109 S{nozzle_temperature_initial_layer[initial_extruder]} + G90 + G1 Z1.5 + G0 X10 Y3 Z2 F18000 + + G1 Z0.2 + M83 + G1 X110 E15 F360 + G1 Z1.5 + + G90 + M106 S0 + ``` \ No newline at end of file diff --git a/docs/installation/buffer-ram-sensor.md b/docs/installation/buffer-ram-sensor.md index 3d85234..ca6f3fe 100644 --- a/docs/installation/buffer-ram-sensor.md +++ b/docs/installation/buffer-ram-sensor.md @@ -90,7 +90,7 @@ Under `[AFC]` section in the `AFC.cfg` file: - Default 4 -`tool_max_unload_attempts: 2` can be set for the amount of repetitions AFC pulls back to trailing sensor on unload. +`tool_max_unload_attempts: 4` can be set for the amount of repetitions AFC pulls back to trailing sensor on unload. See [here](../configuration/AFC_Hardware.cfg.md#afc_buffer-buffer_name-section) for more information. - Default 2 diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index ab53d71..8ad9889 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -22,7 +22,7 @@ @font-face { font-family: "Apex Mk2"; - src: url("../../assets/fonts/ApexMk2-Regular.woff2"); + src: url("../assets/fonts/ApexMk2-Regular.woff2"); } .md-footer__inner { diff --git a/docs/toolchanger/snapmaker.md b/docs/toolchanger/snapmaker.md new file mode 100644 index 0000000..33670e6 --- /dev/null +++ b/docs/toolchanger/snapmaker.md @@ -0,0 +1,47 @@ +--8<-- "includes/u1/need_to_install_extended_fw.md" + +Since Snapmaker has a custom and heavily modified version of Klipper, the following is what AFC works with on the U1. Given how AFC works and remaps all T(n) macros some of the stock U1 functionalities will not work with AFC installed. Below is a compiled list of what works with AFC install and what does not work(this is not an exhaustive list). Goal is to be able to add in support over time for the stock U1 functions that currently do work with AFC installed/enabled. + +## Supports +- Using toolheads in standalone mode( no automated filament changer attached ) +- Using automated filament changers attached to toolheads +- Assigning spoolman IDs when toolheads are loaded +- Remapping toolheads/lanes +- Infinite runout +- Automatically setting color/material type/vendor into Snapmaker print task config when loading filament to toolhead. This is the color/material/vendor that is normally set from the screen interface. +- Resume from pause and power loss +- More things can be found on [features](../features.md) page +- Stock spaghetti detection works with AFC installed + +## Does Not Support +- Integration with RFID readers +- Automatic Flow Calibration, this can be done manually (see [Manual flow calibration with AFC installed](#manual-flow-calibration-with-afc-installed) section below)- Automatic color mapping to toolhead/lane based off colors in print job +- AFC currently does not control side feeders +- XYZ calibration has not been tested yet, so you may need to disable AFC before re-running XYZ calibration offset + +And much more that has not been discovered yet. + +## General Notes + + + +When using extruders in __standalone__ mode, you can use feeders to feed filament to your extruder. Once that is done manually push filament until sensor is triggered. AFC will then automatically heat the toolhead and load filament to nozzle. Currently the automatic loading with the feeders does not work. But in the future support will be added for doing this routine. + +Snapmaker U1 Extended Firmware by paxx12 does support CAN bus and its enabled by default, but you need to use a USB to CAN bus adapter or use a MCU in USB to CAN bridge mode. When setting up your MCU for CAN, be sure to specify `canbus_interface: can1` since CAN0 is the internal CAN bus chip that currently does not work. Should look something like the picture below: +![can1_bus_mcu](../assets/images/can1_bus_config.png) + +### Updating AFC +Update instructions can be found [here](../updates/updates.md#snapmaker-u1-printer) for updating AFC-Klipper-Add-On on your U1. + +### Manual flow calibration with AFC installed +1. Load the filament that you would like to run flow calibration with and make sure toolhead is selected. If its not selected, run `AFC_SELECT_TOOL extruder=extruder(n)` where `n` is the toolhead to select(1-3), pass in `extruder` to select toolhead 0 +1. After filament is loaded and toolhead is selected, run `FLOW_CALIBRATE TEMP=`. +1. Once done save the outputted flow calibration number, see the console below for which number to grab: +![u1_pa_console](../assets/images/u1/afc_u1_pressure_advance.png) +1. In your slicer(using Orca Slicer for this example) put this number into your printer filament profile in the pressure advance box. Click the edit for your printer profile as show by the red arrow, and then input the value in to the __Pressure Advance__ box as show by the blue arrow. If this box is grayed out, click the __Enable pressure advance__ box above. +(Note: Orca rounds to 4 digits after profile is saved) +![u1_pa](../assets/images/u1/setting_pa.png) +1. Save profile with save button in upper right. \ No newline at end of file diff --git a/docs/updates/updates.md b/docs/updates/updates.md index 06b14b3..9d126ae 100644 --- a/docs/updates/updates.md +++ b/docs/updates/updates.md @@ -1,45 +1,64 @@ # Updating the AFC-Klipper-Add-On -Updating the AFC-Klipper-Add-On is a simple process that can be done through the `update-afc.sh` script. +=== "All Printers" + Updating the AFC-Klipper-Add-On is a simple process that can be done through the `update-afc.sh` script. -!!!warning + !!!warning - Do **NOT** use the Moonraker update functionality to update the `AFC-Klipper-Add-On` software. It will - not run the necessary update scripts and may cause issues with your installation. + Do **NOT** use the Moonraker update functionality to update the `AFC-Klipper-Add-On` software. It will + not run the necessary update scripts and may cause issues with your installation. -!!!note + !!!note - If your AFC-Klipper-Add-On is < 1.0.35 (Any version prior to 24 Jan 2026), you should run a `git pull` in the - `~/AFC-Klipper-Add-On` directory before running the `update-afc.sh` script. This is NOT necessary if your - AFC-Klipper-Add-On is >= 1.0.35. + If your AFC-Klipper-Add-On is < 1.0.35 (Any version prior to 24 Jan 2026), you should run a `git pull` in the + `~/AFC-Klipper-Add-On` directory before running the `update-afc.sh` script. This is NOT necessary if your + AFC-Klipper-Add-On is >= 1.0.35. -1. Connect to your printer via SSH and navigate to the AFC-Klipper-Add-On directory: - -```bash -cd ~/AFC-Klipper-Add-On -``` - -2. Run the `update-afc.sh` script: + 1. Connect to your printer via SSH and navigate to the AFC-Klipper-Add-On directory: + + ```bash + cd ~/AFC-Klipper-Add-On + ``` + + 2. Run the `update-afc.sh` script: -```bash -./update-afc.sh -``` - -3. Select the `Update AFC Klipper Add-on` option from the menu that appears. This option will only - appear if the system detects that the AFC-Klipper-Add-On is already installed. + ```bash + ./update-afc.sh + ``` + + 3. Select the `Update AFC Klipper Add-on` option from the menu that appears. This option will only + appear if the system detects that the AFC-Klipper-Add-On is already installed. -4. Once in the `Update AFC Klipper Add-on` menu, select the `Update AFC-Klipper-Add-On` option. This will - update the add-on to the latest version available in the repository. - - You will be prompted if you would like to update the AFC-provided macros during the update process. - If you select `Yes`, the macros will be updated to the latest version available. If you select `No`, the macros will not be updated, and - you will need to manually update them if you want to use the latest versions. + 4. Once in the `Update AFC Klipper Add-on` menu, select the `Update AFC-Klipper-Add-On` option. This will + update the add-on to the latest version available in the repository. + + You will be prompted if you would like to update the AFC-provided macros during the update process. + If you select `Yes`, the macros will be updated to the latest version available. If you select `No`, the macros will not be updated, and + you will need to manually update them if you want to use the latest versions. -5. After the update is complete, Moonraker may still show an old version. Use the refresh button in the Mainsail/Fluidd - interface to update the version information. + 5. After the update is complete, Moonraker may still show an old version. Use the refresh button in the Mainsail/Fluidd + interface to update the version information. -!!!warning + !!!warning - If you have made any changes to the AFC provided macros directory, those changes will be overwritten by the - update process. It is recommended to back up any custom macros before proceeding with the update. \ No newline at end of file + If you have made any changes to the AFC provided macros directory, those changes will be overwritten by the + update process. It is recommended to back up any custom macros before proceeding with the update. + +=== "Snapmaker U1 Printer" + + --8<-- "includes/u1/warning.md" + + AFC updates for Snapmaker U1 will be provided through new extended firmware binaries by the AFCProject team. Follow the step below to update once you have the new binary file: + + 1. Navigate to `/firmware-config` page + 1. Scroll to the bottom of the page and in the __Firmware Upgrade__ box, click in the `Click to select or drag & drop file` box. + ![u1_drag_drop](../assets/images/u1/afc_u1_update_file.png) + 1. Navigate to your new update binary, select file and then hit open(or whats equivalent to open on your system) + ![u1_open](../assets/images/u1/afc_u1_select_file.png) + 1. Once file is selected, _Upload & Upgrade__ becomes clickable, click Upload & Upgrade to start update process, then press Confirm to proceed with the update. + ![u1_update_go](../assets/images/u1/afc_u1_upload_and_upgrade.png) + 1. Once update is done and printer is rebooted, please go back to firmware-config page (`/firmware-config`) and re-enable AFC. + 1. Navigate down to tweaks section and in the drop down for Enable AFC-Klipper-Add-On, choose `Enable`, then select `Confirm` + ![afc_enable](../assets/images/u1/afc_u1_enable.png) + 1. Once that is done and the box shows `SUCCESS: Setting updated successfully`, navigate back to your printers fluidd interface. If enable was done correctly, the interface should look like the same before you updated. \ No newline at end of file diff --git a/includes/prerequisites.md b/includes/prerequisites.md new file mode 100644 index 0000000..6d16eb8 --- /dev/null +++ b/includes/prerequisites.md @@ -0,0 +1,42 @@ +## Prerequisites + +### Calibrate/tune existing printer extruder + +If you are installing this on a new printer or extruder (including [FilamATrix](https://github.com/thunderkeys/FilamATrix)) +ensure you have calibrated your printer/extruder before introducing AFC/multicolor printing. If your extruder rotation +distance is off by a large factor, this will cause issues with defining values such as `tool_stn` and others later on +in the configuration. + +It is a lot easier to do some of the calibrations (such as rotation distance) *BEFORE* installing your AFC unit. + +Our recommended guide to follow for calibration +is [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/). + +### Ensure minimum system requirements + +The AFC Klipper Add-On requires a minimum Klipper/Kalico version of 0.12, as well as a corresponding klippy-env Python +environment of at least version 3.8. + +!!!warning "Minimum Klipper Requirements" + + If you are running a version of Klipper/Kalico older than 0.12, you will need to update your system before proceeding. + The AFC Klipper Add-On will not work with older versions. You must be on or past commit id `1d92be71` of Klipper. + This was released on Jan 18th, 2024. + +If you are on Klipper/Kalico 0.12, but running `~/klippy-env/bin/python --version` returns version 2.7.x, you can +recreate it with the following: + +``` bash +sudo service klipper stop + +mv ~/klippy-env ~/klippy-env2.7 +virtualenv -p python3 ~/klippy-env +~/klippy-env/bin/pip install -r ~/klipper/scripts/klippy-requirements.txt + +sudo service klipper start +``` + +After recreating it, you may need to reinstall any custom add-ons, such as Klippain Shake&Tune, TMC Autotune, etc. + +Ensure you have a clean, functioning Klipper install with all of these minimum requirements met before proceeding to the +next step. \ No newline at end of file diff --git a/includes/snapmaker-u1-ptfe.md b/includes/snapmaker-u1-ptfe.md new file mode 100644 index 0000000..557452e --- /dev/null +++ b/includes/snapmaker-u1-ptfe.md @@ -0,0 +1 @@ +If you decide to use automated filament changers on your U1, we have found that filament can get stuck when feeding into the toolheads. To help with this we have been able to successfully put 4OD x 2.5ID PTFE inside the stock PTFE tubes going to the toolhead. Before inserting the PTFE, be sure to add a chamfer to the PTFE with a chamfer bit, hobby knife or drill bit. Once chamfered, insert the chamfered end into the existing PTFE from the toolhead side until it stops. Then cut the PTFE flush with the existing tube. Doing this will allow automated loading to be more successful without getting stuck. [Example video](https://youtu.be/6KYzUsIUe-g) for this explanation. \ No newline at end of file diff --git a/includes/toolhead_pins.md b/includes/toolhead_pins.md new file mode 100644 index 0000000..8c70e84 --- /dev/null +++ b/includes/toolhead_pins.md @@ -0,0 +1,22 @@ +!!! note + Reminder if this MCU is going to be used on a Snapmaker U1, please flash with [u1-klipper](https://github.com/Snapmaker/u1-klipper) version instead of mainline Klipper/Kalico + + +## Make note of any toolhead sensor pins + +If you are using [FilamATrix](https://github.com/thunderkeys/FilamATrix), and are using toolhead endstop sensors, make a +note of what MCU pins those sensors are connected to for the pre-extruder gear sensor (aka `pin_tool_start`) and +post-extruder gear sensor (`pin_tool_end`). Use these in the next step to properly install and configure AFC. + +!!! note + The `pin_tool_start` refers to the pin above the extruder gears, while the `pin_tool_end` refers to the pin below + the extruder gears. If you are using a single sensor, you will only need to use the `pin_tool_start` pin. + +An example of these pins and their locations can be seen in the diagram below: + +![example-pins](../assets/images/example-cw2-revo.png) + +If you do not have a native toolhead filament sensor, you can use either an inline filament sensor such +as [Filatector](https://github.com/ArmoredTurtle/Filatector), or you can use +the [TurtleNeck buffer](https://github.com/ArmoredTurtle/TurtleNeck) as a virtual toolhead endstop. Please +see [this guide](../installation/buffer-ram-sensor.md) for more details. diff --git a/includes/u1/need_to_install_extended_fw.md b/includes/u1/need_to_install_extended_fw.md new file mode 100644 index 0000000..7e25efb --- /dev/null +++ b/includes/u1/need_to_install_extended_fw.md @@ -0,0 +1,2 @@ +!!! warning + For AFC-Klipper-Add-On to work correctly on your U1, you will need to flash __Snapmaker U1 Extended Firmware__ by paxx12 \ No newline at end of file diff --git a/includes/u1/warning.md b/includes/u1/warning.md new file mode 100644 index 0000000..5c7eef4 --- /dev/null +++ b/includes/u1/warning.md @@ -0,0 +1,6 @@ +!!! warning + While installing custom firmware does not automatically void the product warranty, any damage caused by or attributable to the installation or use of custom firmware is not covered under warranty. Use at your own risk. See [Snapmaker Terms of Use](https://www.snapmaker.com/terms-of-use) for details. + + Custom firmware is intended for users with appropriate technical knowledge. Ensure you understand the implications before proceeding. + + This warning was pulled from __Snapmaker U1 Extended Firmware__ installation docs page. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 2792c9d..61211f5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -36,6 +36,8 @@ nav: - Configuration: toolchanger/configuration.md - Print Start/End Macros: toolchanger/print_start_end.md - Slicer Config: toolchanger/slicer_config.md + - Commercial Printers: + - Snapmaker U1: toolchanger/snapmaker.md - Configuration: - Configuration Overview: configuration/configuration_overview.md - Configuration Files: @@ -157,6 +159,9 @@ markdown_extensions: - overrides/.icons - pymdownx.tabbed: alternate_style: true + slugify: !!python/object/apply:pymdownx.slugs.slugify + kwds: + case: lower - pymdownx.highlight: anchor_linenums: true line_spans: __span