Init
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
printer-*.cfg
|
||||||
|
KAMP
|
||||||
116
.moonraker.conf.bkp
Normal file
116
.moonraker.conf.bkp
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
[server]
|
||||||
|
host = 0.0.0.0
|
||||||
|
port = 7125
|
||||||
|
klippy_uds_address = /home/biqu/printer_data/comms/klippy.sock
|
||||||
|
|
||||||
|
[authorization]
|
||||||
|
trusted_clients =
|
||||||
|
10.0.0.0/8
|
||||||
|
127.0.0.0/8
|
||||||
|
169.254.0.0/16
|
||||||
|
172.16.0.0/12
|
||||||
|
192.168.0.0/16
|
||||||
|
FE80::/10
|
||||||
|
::1/128
|
||||||
|
cors_domains =
|
||||||
|
*.lan
|
||||||
|
*.local
|
||||||
|
*://localhost
|
||||||
|
*://localhost:*
|
||||||
|
*://my.mainsail.xyz
|
||||||
|
*://app.fluidd.xyz
|
||||||
|
|
||||||
|
[octoprint_compat]
|
||||||
|
|
||||||
|
[history]
|
||||||
|
|
||||||
|
[file_manager]
|
||||||
|
enable_object_processing = True
|
||||||
|
|
||||||
|
[timelapse]
|
||||||
|
ffmpeg_binary_path = /usr/bin/ffmpeg
|
||||||
|
|
||||||
|
[update_manager]
|
||||||
|
channel = stable
|
||||||
|
refresh_interval = 168
|
||||||
|
|
||||||
|
[power MainPower]
|
||||||
|
type = klipper_device
|
||||||
|
object_name = output_pin ps_on
|
||||||
|
initial_state = on
|
||||||
|
|
||||||
|
[update_manager klipper_tmc_autotune]
|
||||||
|
type = git_repo
|
||||||
|
channel = dev
|
||||||
|
path = ~/klipper_tmc_autotune
|
||||||
|
origin = https://github.com/andrewmcgr/klipper_tmc_autotune.git
|
||||||
|
managed_services = klipper
|
||||||
|
primary_branch = main
|
||||||
|
install_script = install.sh
|
||||||
|
|
||||||
|
[update_manager timelapse]
|
||||||
|
type = git_repo
|
||||||
|
primary_branch = main
|
||||||
|
path = ~/moonraker-timelapse
|
||||||
|
origin = https://github.com/mainsail-crew/moonraker-timelapse.git
|
||||||
|
managed_services = klipper moonraker
|
||||||
|
|
||||||
|
[update_manager mainsail-config]
|
||||||
|
type = git_repo
|
||||||
|
primary_branch = master
|
||||||
|
path = ~/mainsail-config
|
||||||
|
origin = https://github.com/mainsail-crew/mainsail-config.git
|
||||||
|
managed_services = klipper
|
||||||
|
|
||||||
|
[update_manager mainsail]
|
||||||
|
type = web
|
||||||
|
channel = stable
|
||||||
|
repo = mainsail-crew/mainsail
|
||||||
|
path = ~/mainsail
|
||||||
|
|
||||||
|
[update_manager crowsnest]
|
||||||
|
type = git_repo
|
||||||
|
path = ~/crowsnest
|
||||||
|
origin = https://github.com/mainsail-crew/crowsnest.git
|
||||||
|
managed_services = crowsnest
|
||||||
|
install_script = tools/pkglist.sh
|
||||||
|
|
||||||
|
[update_manager sonar]
|
||||||
|
type = git_repo
|
||||||
|
path = ~/sonar
|
||||||
|
origin = https://github.com/mainsail-crew/sonar.git
|
||||||
|
primary_branch = main
|
||||||
|
managed_services = sonar
|
||||||
|
install_script = tools/install.sh
|
||||||
|
|
||||||
|
[update_manager katapult]
|
||||||
|
type = git_repo
|
||||||
|
origin = https://github.com/Arksine/katapult.git
|
||||||
|
path = ~/katapult
|
||||||
|
is_system_service = False
|
||||||
|
|
||||||
|
[update_manager KlipperScreen]
|
||||||
|
type = git_repo
|
||||||
|
path = ~/KlipperScreen
|
||||||
|
origin = https://github.com/KlipperScreen/KlipperScreen.git
|
||||||
|
virtualenv = ~/.KlipperScreen-env
|
||||||
|
requirements = scripts/KlipperScreen-requirements.txt
|
||||||
|
system_dependencies = scripts/system-dependencies.json
|
||||||
|
managed_services = KlipperScreen
|
||||||
|
|
||||||
|
[update_manager Klipper-Adaptive-Meshing-Purging]
|
||||||
|
type = git_repo
|
||||||
|
channel = dev
|
||||||
|
path = ~/Klipper-Adaptive-Meshing-Purging
|
||||||
|
origin = https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging.git
|
||||||
|
managed_services = klipper
|
||||||
|
primary_branch = main
|
||||||
|
|
||||||
|
[update_manager moonraker-telegram-bot]
|
||||||
|
install_script = scripts/install.sh
|
||||||
|
requirements = scripts/requirements.txt
|
||||||
|
env = /home/biqu/moonraker-telegram-bot-env/bin/python
|
||||||
|
origin = https://github.com/nlef/moonraker-telegram-bot.git
|
||||||
|
path = /home/biqu/moonraker-telegram-bot
|
||||||
|
type = git_repo
|
||||||
|
|
||||||
36
KAMP_Settings.cfg
Normal file
36
KAMP_Settings.cfg
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Below you can include specific configuration files depending on what you want KAMP to do:
|
||||||
|
|
||||||
|
[include ./KAMP/Adaptive_Meshing.cfg] # Include to enable adaptive meshing configuration.
|
||||||
|
# [include ./KAMP/Line_Purge.cfg] # Include to enable adaptive line purging configuration.
|
||||||
|
[include ./KAMP/Voron_Purge.cfg] # Include to enable adaptive Voron logo purging configuration.
|
||||||
|
[include ./KAMP/Smart_Park.cfg] # Include to enable the Smart Park function, which parks the printhead near the print area for final heating.
|
||||||
|
|
||||||
|
[gcode_macro _KAMP_Settings]
|
||||||
|
description: This macro contains all adjustable settings for KAMP
|
||||||
|
|
||||||
|
# The following variables are settings for KAMP as a whole.
|
||||||
|
variable_verbose_enable: True # Set to True to enable KAMP information output when running. This is useful for debugging.
|
||||||
|
|
||||||
|
# The following variables are for adjusting adaptive mesh settings for KAMP.
|
||||||
|
variable_mesh_margin: 0 # Expands the mesh size in millimeters if desired. Leave at 0 to disable.
|
||||||
|
variable_fuzz_amount: 1 # Slightly randomizes mesh points to spread out wear from nozzle-based probes. Leave at 0 to disable.
|
||||||
|
|
||||||
|
# The following variables are for those with a dockable probe like Klicky, Euclid, etc. # ---------------- Attach Macro | Detach Macro
|
||||||
|
variable_probe_dock_enable: False # Set to True to enable the usage of a dockable probe. # ---------------------------------------------
|
||||||
|
variable_attach_macro: 'Attach_Probe' # The macro that is used to attach the probe. # Klicky Probe: 'Attach_Probe' | 'Dock_Probe'
|
||||||
|
variable_detach_macro: 'Dock_Probe' # The macro that is used to store the probe. # Euclid Probe: 'Deploy_Probe' | 'Stow_Probe'
|
||||||
|
# Legacy Gcode: 'M401' | 'M402'
|
||||||
|
|
||||||
|
# The following variables are for adjusting adaptive purge settings for KAMP.
|
||||||
|
variable_purge_height: 0.8 # Z position of nozzle during purge, default is 0.8.
|
||||||
|
variable_tip_distance: 10 # Distance between tip of filament and nozzle before purge. Should be similar to PRINT_END final retract amount.
|
||||||
|
variable_purge_margin: 12 # Distance the purge will be in front of the print area, default is 10.
|
||||||
|
variable_purge_amount: 30 # Amount of filament to be purged prior to printing.
|
||||||
|
variable_flow_rate: 12 # Flow rate of purge in mm3/s. Default is 12.
|
||||||
|
|
||||||
|
# The following variables are for adjusting the Smart Park feature for KAMP, which will park the printhead near the print area at a specified height.
|
||||||
|
variable_smart_park_height: 10 # Z position for Smart Park, default is 10.
|
||||||
|
|
||||||
|
gcode: # Gcode section left intentionally blank. Do not disturb.
|
||||||
|
|
||||||
|
{action_respond_info(" Running the KAMP_Settings macro does nothing, it is only used for storing KAMP settings. ")}
|
||||||
12
KlipperScreen.conf
Normal file
12
KlipperScreen.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# To use this KlipperScreen panel, create a symlink:
|
||||||
|
# $MOONRAKER_OBICO_HOME/scripts/klipper_screen_obico_panel.py -> $KLIPPER_SCREEN_HOME/panels/obico.py
|
||||||
|
[menu __main more obico]
|
||||||
|
name: Obico
|
||||||
|
icon: network
|
||||||
|
panel: obico
|
||||||
|
#~# --- Do not edit below this line. This section is auto generated --- #~#
|
||||||
|
#~#
|
||||||
|
#~# [main]
|
||||||
|
#~# print_sort_dir = date_desc
|
||||||
|
#~# language = ru
|
||||||
|
#~#
|
||||||
60
crowsnest.conf
Normal file
60
crowsnest.conf
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
#### crowsnest.conf
|
||||||
|
#### This is a typical default config.
|
||||||
|
#### Also used as default in mainsail / MainsailOS
|
||||||
|
#### See:
|
||||||
|
#### https://github.com/mainsail-crew/crowsnest/blob/master/README.md
|
||||||
|
#### for details to configure to your needs.
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
#### #####
|
||||||
|
#### Information about ports and according URL's #####
|
||||||
|
#### #####
|
||||||
|
#####################################################################
|
||||||
|
#### #####
|
||||||
|
#### Port 8080 equals /webcam/?action=[stream/snapshot] #####
|
||||||
|
#### Port 8081 equals /webcam2/?action=[stream/snapshot] #####
|
||||||
|
#### Port 8082 equals /webcam3/?action=[stream/snapshot] #####
|
||||||
|
#### Port 8083 equals /webcam4/?action=[stream/snapshot] #####
|
||||||
|
#### #####
|
||||||
|
#####################################################################
|
||||||
|
#### RTSP Stream URL: ( if enabled and supported ) #####
|
||||||
|
#### rtsp://<ip>:<rtsp_port>/stream.h264 #####
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
|
||||||
|
[crowsnest]
|
||||||
|
log_path: /home/biqu/printer_data/logs/crowsnest.log
|
||||||
|
log_level: verbose # Valid Options are quiet/verbose/debug
|
||||||
|
delete_log: false # Deletes log on every restart, if set to true
|
||||||
|
no_proxy: false
|
||||||
|
|
||||||
|
#[cam xy]
|
||||||
|
#mode: ustreamer # ustreamer - Provides mjpg and snapshots. (All devices), camera-streamer - Provides webrtc, mjpg and snapshots. (rpi + Raspi OS based only)
|
||||||
|
#enable_rtsp: false # If camera-streamer is used, this enables also usage of an rtsp server
|
||||||
|
#rtsp_port: 8554 # Set different ports for each device!
|
||||||
|
#port: 8080 # HTTP/MJPG Stream/Snapshot Port
|
||||||
|
#device: /dev/v4l/by-path/platform-5101000.usb-usb-0:1.3:1.0-video-index0 # See Log for available ...
|
||||||
|
#resolution: 1280x720 #640x480 # widthxheight format 2048x1536
|
||||||
|
#max_fps: 15 # If Hardware Supports this it will be forced, otherwise ignored/coerced.
|
||||||
|
#custom_flags: # You can run the Stream Services with custom flags.
|
||||||
|
#v4l2ctl: # Add v4l2-ctl parameters to setup your camera, see Log what your cam is capable of.
|
||||||
|
|
||||||
|
[cam head]
|
||||||
|
#mode: ustreamer
|
||||||
|
mode: MJPG
|
||||||
|
port: 8081
|
||||||
|
#device: /dev/v4l/by-path/platform-5101000.usb-usb-0:1.1:1.0-video-index0
|
||||||
|
device: /dev/v4l/by-id/usb-DSJ_UC60_Video_200901010001-video-index0
|
||||||
|
resolution: 1600x1200 #176x144, 320x240, 352x288, 640x480, 640x360, 640x400, 800x600, 1024x768, 1280x720, 1280x960, 1600x1200, 1920x1080, 2048x1536, 2560x1440, 2592x1944
|
||||||
|
max_fps: 15
|
||||||
|
v4l2ctl: focus_auto=0 #brightness=-10, backlight_compensation=0
|
||||||
|
|
||||||
|
#[cam bed_cam]
|
||||||
|
#mode: ustreamer
|
||||||
|
#port: 8080
|
||||||
|
#device: /dev/video0 # The CSI
|
||||||
|
#resolution: 1600x1200 #176x144, 320x240, 352x288, 640x480, 640x360, 640x400, 800x600, 1024x768, 1280x720, 1280x960, 1600x1200, 1920x1080, 2048x1536, 2560x1440, 2592x1944
|
||||||
|
#max_fps: 15
|
||||||
|
#custom_flags: --format=UYVY
|
||||||
|
|
||||||
55
firmware/.CAN
Normal file
55
firmware/.CAN
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# CONFIG_LOW_LEVEL_OPTIONS is not set
|
||||||
|
CONFIG_MACH_AVR=y
|
||||||
|
# CONFIG_MACH_ATSAM is not set
|
||||||
|
# CONFIG_MACH_ATSAMD is not set
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
# CONFIG_MACH_STM32 is not set
|
||||||
|
# CONFIG_MACH_HC32F460 is not set
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
# CONFIG_MACH_PRU is not set
|
||||||
|
# CONFIG_MACH_AR100 is not set
|
||||||
|
# CONFIG_MACH_LINUX is not set
|
||||||
|
# CONFIG_MACH_SIMU is not set
|
||||||
|
CONFIG_AVR_SELECT=y
|
||||||
|
CONFIG_BOARD_DIRECTORY="avr"
|
||||||
|
CONFIG_MACH_atmega2560=y
|
||||||
|
# CONFIG_MACH_atmega1280 is not set
|
||||||
|
# CONFIG_MACH_at90usb1286 is not set
|
||||||
|
# CONFIG_MACH_at90usb646 is not set
|
||||||
|
# CONFIG_MACH_atmega32u4 is not set
|
||||||
|
# CONFIG_MACH_atmega1284p is not set
|
||||||
|
# CONFIG_MACH_atmega644p is not set
|
||||||
|
# CONFIG_MACH_atmega328p is not set
|
||||||
|
# CONFIG_MACH_atmega328 is not set
|
||||||
|
# CONFIG_MACH_atmega168 is not set
|
||||||
|
CONFIG_MCU="atmega2560"
|
||||||
|
CONFIG_AVRDUDE_PROTOCOL="wiring"
|
||||||
|
CONFIG_CLOCK_FREQ=16000000
|
||||||
|
CONFIG_AVR_CLKPR=-1
|
||||||
|
CONFIG_AVR_STACK_SIZE=256
|
||||||
|
CONFIG_AVR_WATCHDOG=y
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
CONFIG_SERIAL_BAUD_U2X=y
|
||||||
|
CONFIG_SERIAL_PORT=0
|
||||||
|
CONFIG_SERIAL_BAUD=250000
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x614e
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
CONFIG_WANT_GPIO_BITBANGING=y
|
||||||
|
CONFIG_WANT_DISPLAYS=y
|
||||||
|
CONFIG_WANT_SENSORS=y
|
||||||
|
CONFIG_WANT_LIS2DW=y
|
||||||
|
CONFIG_WANT_LDC1612=y
|
||||||
|
CONFIG_WANT_HX71X=y
|
||||||
|
CONFIG_WANT_ADS1220=y
|
||||||
|
CONFIG_WANT_SOFTWARE_I2C=y
|
||||||
|
CONFIG_WANT_SOFTWARE_SPI=y
|
||||||
|
CONFIG_NEED_SENSOR_BULK=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_HAVE_GPIO=y
|
||||||
|
CONFIG_HAVE_GPIO_ADC=y
|
||||||
|
CONFIG_HAVE_GPIO_SPI=y
|
||||||
|
CONFIG_HAVE_GPIO_I2C=y
|
||||||
|
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||||
|
CONFIG_HAVE_STRICT_TIMING=y
|
||||||
|
CONFIG_INLINE_STEPPER_HACK=y
|
||||||
78
firmware/boot_sht36_v2.config
Normal file
78
firmware/boot_sht36_v2.config
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
CONFIG_MACH_STM32=y
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
CONFIG_BOARD_DIRECTORY="stm32"
|
||||||
|
CONFIG_MCU="stm32f072xb"
|
||||||
|
CONFIG_CLOCK_FREQ=48000000
|
||||||
|
CONFIG_FLASH_SIZE=0x20000
|
||||||
|
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAM_SIZE=0x4000
|
||||||
|
CONFIG_STACK_SIZE=512
|
||||||
|
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
|
||||||
|
CONFIG_FLASH_START=0x8000000
|
||||||
|
CONFIG_LAUNCH_APP_ADDRESS=0x8002000
|
||||||
|
CONFIG_BLOCK_SIZE=64
|
||||||
|
CONFIG_STM32_SELECT=y
|
||||||
|
# CONFIG_MACH_STM32F103 is not set
|
||||||
|
# CONFIG_MACH_STM32F207 is not set
|
||||||
|
# CONFIG_MACH_STM32F401 is not set
|
||||||
|
# CONFIG_MACH_STM32F405 is not set
|
||||||
|
# CONFIG_MACH_STM32F407 is not set
|
||||||
|
# CONFIG_MACH_STM32F429 is not set
|
||||||
|
# CONFIG_MACH_STM32F446 is not set
|
||||||
|
# CONFIG_MACH_STM32F031 is not set
|
||||||
|
# CONFIG_MACH_STM32F042 is not set
|
||||||
|
# CONFIG_MACH_STM32F070 is not set
|
||||||
|
CONFIG_MACH_STM32F072=y
|
||||||
|
# CONFIG_MACH_STM32G0B0 is not set
|
||||||
|
# CONFIG_MACH_STM32G0B1 is not set
|
||||||
|
# CONFIG_MACH_STM32H723 is not set
|
||||||
|
# CONFIG_MACH_STM32H743 is not set
|
||||||
|
CONFIG_MACH_STM32F0=y
|
||||||
|
CONFIG_MACH_STM32F0x2=y
|
||||||
|
CONFIG_HAVE_STM32_USBFS=y
|
||||||
|
CONFIG_HAVE_STM32_CANBUS=y
|
||||||
|
CONFIG_STM32_DFU_ROM_ADDRESS=0
|
||||||
|
# CONFIG_STM32_FLASH_START_0000 is not set
|
||||||
|
CONFIG_STM32_FLASH_START_2000=y
|
||||||
|
# CONFIG_STM32_FLASH_START_1000 is not set
|
||||||
|
# CONFIG_STM32_FLASH_START_4000 is not set
|
||||||
|
CONFIG_ARMCM_RAM_VECTORTABLE=y
|
||||||
|
CONFIG_STM32_CLOCK_REF_8M=y
|
||||||
|
# CONFIG_STM32_CLOCK_REF_12M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_16M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_20M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_25M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_32M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
|
||||||
|
CONFIG_CLOCK_REF_FREQ=8000000
|
||||||
|
CONFIG_STM32F0_TRIM=16
|
||||||
|
# CONFIG_STM32_USB_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2_ALT_PA15_PA14 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
|
||||||
|
CONFIG_STM32_MMENU_CANBUS_PB8_PB9=y
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set
|
||||||
|
CONFIG_STM32_CANBUS_PB8_PB9=y
|
||||||
|
CONFIG_STM32_APP_START_2000=y
|
||||||
|
# CONFIG_STM32_APP_START_1000 is not set
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x6177
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
CONFIG_CANSERIAL=y
|
||||||
|
CONFIG_CANBUS=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_CANBUS_FILTER=y
|
||||||
|
CONFIG_INITIAL_PINS=""
|
||||||
|
CONFIG_ENABLE_DOUBLE_RESET=y
|
||||||
|
# CONFIG_ENABLE_BUTTON is not set
|
||||||
|
CONFIG_ENABLE_LED=y
|
||||||
|
CONFIG_STATUS_LED_PIN="PC13"
|
||||||
|
CONFIG_BUILD_DEPLOYER=y
|
||||||
|
CONFIG_HAVE_CHIPID=y
|
||||||
|
CONFIG_KATAPULT_VERSION="v0.0.1-91-g604b7e5"
|
||||||
43
firmware/boot_sht36_v2.config.old
Normal file
43
firmware/boot_sht36_v2.config.old
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||||
|
CONFIG_MACH_LPC176X=y
|
||||||
|
# CONFIG_MACH_STM32 is not set
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
CONFIG_LPC_SELECT=y
|
||||||
|
CONFIG_BOARD_DIRECTORY="lpc176x"
|
||||||
|
CONFIG_MACH_LPC1768=y
|
||||||
|
# CONFIG_MACH_LPC1769 is not set
|
||||||
|
CONFIG_MCU="lpc1768"
|
||||||
|
CONFIG_CLOCK_FREQ=100000000
|
||||||
|
CONFIG_FLASH_SIZE=0x80000
|
||||||
|
CONFIG_FLASH_BOOT_ADDRESS=0x0
|
||||||
|
CONFIG_RAM_START=0x10000000
|
||||||
|
CONFIG_RAM_SIZE=0x7ee0
|
||||||
|
CONFIG_STACK_SIZE=512
|
||||||
|
CONFIG_LPC_FLASH_START_0000=y
|
||||||
|
# CONFIG_LPC_FLASH_START_4000 is not set
|
||||||
|
CONFIG_FLASH_APPLICATION_ADDRESS=0x0000
|
||||||
|
CONFIG_LPC_USB=y
|
||||||
|
# CONFIG_LPC_SERIAL_UART0_P03_P02 is not set
|
||||||
|
# CONFIG_LPC_SERIAL_UART3_P429_P428 is not set
|
||||||
|
CONFIG_FLASH_START=0x0000
|
||||||
|
CONFIG_LAUNCH_APP_ADDRESS=0x4000
|
||||||
|
CONFIG_BLOCK_SIZE=64
|
||||||
|
CONFIG_USBSERIAL=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x6177
|
||||||
|
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
|
||||||
|
#
|
||||||
|
# USB ids
|
||||||
|
#
|
||||||
|
# end of USB ids
|
||||||
|
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_INITIAL_PINS=""
|
||||||
|
CONFIG_ENABLE_DOUBLE_RESET=y
|
||||||
|
# CONFIG_ENABLE_BUTTON is not set
|
||||||
|
# CONFIG_ENABLE_LED is not set
|
||||||
|
CONFIG_HAVE_CHIPID=y
|
||||||
|
CONFIG_KATAPULT_VERSION="v0.0.1-91-g604b7e5"
|
||||||
121
firmware/octopus-pro.config
Normal file
121
firmware/octopus-pro.config
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||||
|
# CONFIG_MACH_AVR is not set
|
||||||
|
# CONFIG_MACH_ATSAM is not set
|
||||||
|
# CONFIG_MACH_ATSAMD is not set
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
CONFIG_MACH_STM32=y
|
||||||
|
# CONFIG_MACH_HC32F460 is not set
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
# CONFIG_MACH_PRU is not set
|
||||||
|
# CONFIG_MACH_AR100 is not set
|
||||||
|
# CONFIG_MACH_LINUX is not set
|
||||||
|
# CONFIG_MACH_SIMU is not set
|
||||||
|
CONFIG_BOARD_DIRECTORY="stm32"
|
||||||
|
CONFIG_MCU="stm32h723xx"
|
||||||
|
CONFIG_CLOCK_FREQ=400000000
|
||||||
|
CONFIG_FLASH_SIZE=0x40000
|
||||||
|
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAM_SIZE=0x20000
|
||||||
|
CONFIG_STACK_SIZE=512
|
||||||
|
CONFIG_FLASH_APPLICATION_ADDRESS=0x8020000
|
||||||
|
CONFIG_STM32_SELECT=y
|
||||||
|
# CONFIG_MACH_STM32F103 is not set
|
||||||
|
# CONFIG_MACH_STM32F207 is not set
|
||||||
|
# CONFIG_MACH_STM32F401 is not set
|
||||||
|
# CONFIG_MACH_STM32F405 is not set
|
||||||
|
# CONFIG_MACH_STM32F407 is not set
|
||||||
|
# CONFIG_MACH_STM32F429 is not set
|
||||||
|
# CONFIG_MACH_STM32F446 is not set
|
||||||
|
# CONFIG_MACH_STM32F765 is not set
|
||||||
|
# CONFIG_MACH_STM32F031 is not set
|
||||||
|
# CONFIG_MACH_STM32F042 is not set
|
||||||
|
# CONFIG_MACH_STM32F070 is not set
|
||||||
|
# CONFIG_MACH_STM32F072 is not set
|
||||||
|
# CONFIG_MACH_STM32G070 is not set
|
||||||
|
# CONFIG_MACH_STM32G071 is not set
|
||||||
|
# CONFIG_MACH_STM32G0B0 is not set
|
||||||
|
# CONFIG_MACH_STM32G0B1 is not set
|
||||||
|
# CONFIG_MACH_STM32G431 is not set
|
||||||
|
# CONFIG_MACH_STM32G474 is not set
|
||||||
|
CONFIG_MACH_STM32H723=y
|
||||||
|
# CONFIG_MACH_STM32H743 is not set
|
||||||
|
# CONFIG_MACH_STM32H750 is not set
|
||||||
|
# CONFIG_MACH_STM32L412 is not set
|
||||||
|
# CONFIG_MACH_N32G452 is not set
|
||||||
|
# CONFIG_MACH_N32G455 is not set
|
||||||
|
CONFIG_MACH_STM32H7=y
|
||||||
|
CONFIG_HAVE_STM32_USBOTG=y
|
||||||
|
CONFIG_HAVE_STM32_FDCANBUS=y
|
||||||
|
CONFIG_HAVE_STM32_USBCANBUS=y
|
||||||
|
CONFIG_STM32_DFU_ROM_ADDRESS=0x1ff09800
|
||||||
|
CONFIG_STM32_FLASH_START_20000=y
|
||||||
|
# CONFIG_STM32_FLASH_START_0000 is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_8M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_12M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_16M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_20M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_24M is not set
|
||||||
|
CONFIG_STM32_CLOCK_REF_25M=y
|
||||||
|
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
|
||||||
|
CONFIG_CLOCK_REF_FREQ=25000000
|
||||||
|
CONFIG_STM32F0_TRIM=16
|
||||||
|
# CONFIG_STM32_USB_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2_ALT_PD6_PD5 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART3 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART3_ALT_PD9_PD8 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_UART4 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PB8_PB9 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PB12_PB13 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PB0_PB1 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PD12_PD13 is not set
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PC2_PC3 is not set
|
||||||
|
CONFIG_STM32_USBCANBUS_PA11_PA12=y
|
||||||
|
# CONFIG_STM32_CMENU_CANBUS_PB8_PB9 is not set
|
||||||
|
# CONFIG_STM32_CMENU_CANBUS_PB12_PB13 is not set
|
||||||
|
CONFIG_STM32_CMENU_CANBUS_PD0_PD1=y
|
||||||
|
# CONFIG_STM32_CMENU_CANBUS_PB0_PB1 is not set
|
||||||
|
# CONFIG_STM32_CMENU_CANBUS_PD12_PD13 is not set
|
||||||
|
# CONFIG_STM32_CMENU_CANBUS_PC2_PC3 is not set
|
||||||
|
CONFIG_STM32_CANBUS_PD0_PD1=y
|
||||||
|
CONFIG_USBCANBUS=y
|
||||||
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x614e
|
||||||
|
CONFIG_USB_SERIAL_NUMBER_CHIPID=y
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
|
||||||
|
#
|
||||||
|
# USB ids
|
||||||
|
#
|
||||||
|
# end of USB ids
|
||||||
|
|
||||||
|
CONFIG_WANT_GPIO_BITBANGING=y
|
||||||
|
CONFIG_WANT_DISPLAYS=y
|
||||||
|
CONFIG_WANT_SENSORS=y
|
||||||
|
CONFIG_WANT_LIS2DW=y
|
||||||
|
CONFIG_WANT_LDC1612=y
|
||||||
|
CONFIG_WANT_HX71X=y
|
||||||
|
CONFIG_WANT_ADS1220=y
|
||||||
|
CONFIG_WANT_SOFTWARE_I2C=y
|
||||||
|
CONFIG_WANT_SOFTWARE_SPI=y
|
||||||
|
CONFIG_NEED_SENSOR_BULK=y
|
||||||
|
CONFIG_CANBUS=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_INITIAL_PINS="PE11"
|
||||||
|
CONFIG_HAVE_GPIO=y
|
||||||
|
CONFIG_HAVE_GPIO_ADC=y
|
||||||
|
CONFIG_HAVE_GPIO_SPI=y
|
||||||
|
CONFIG_HAVE_GPIO_I2C=y
|
||||||
|
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||||
|
CONFIG_HAVE_STRICT_TIMING=y
|
||||||
|
CONFIG_HAVE_CHIPID=y
|
||||||
|
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
|
||||||
|
CONFIG_HAVE_BOOTLOADER_REQUEST=y
|
||||||
|
CONFIG_INLINE_STEPPER_HACK=y
|
||||||
70
firmware/rp_sb2209.CAN
Normal file
70
firmware/rp_sb2209.CAN
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||||
|
# CONFIG_MACH_AVR is not set
|
||||||
|
# CONFIG_MACH_ATSAM is not set
|
||||||
|
# CONFIG_MACH_ATSAMD is not set
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
# CONFIG_MACH_STM32 is not set
|
||||||
|
# CONFIG_MACH_HC32F460 is not set
|
||||||
|
CONFIG_MACH_RPXXXX=y
|
||||||
|
# CONFIG_MACH_PRU is not set
|
||||||
|
# CONFIG_MACH_AR100 is not set
|
||||||
|
# CONFIG_MACH_LINUX is not set
|
||||||
|
# CONFIG_MACH_SIMU is not set
|
||||||
|
CONFIG_BOARD_DIRECTORY="rp2040"
|
||||||
|
CONFIG_MCU="rp2040"
|
||||||
|
CONFIG_CLOCK_FREQ=12000000
|
||||||
|
CONFIG_FLASH_SIZE=0x200000
|
||||||
|
CONFIG_FLASH_BOOT_ADDRESS=0x10000100
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAM_SIZE=0x42000
|
||||||
|
CONFIG_STACK_SIZE=512
|
||||||
|
CONFIG_FLASH_APPLICATION_ADDRESS=0x10004000
|
||||||
|
CONFIG_RPXXXX_SELECT=y
|
||||||
|
CONFIG_MACH_RP2040=y
|
||||||
|
# CONFIG_MACH_RP2350 is not set
|
||||||
|
CONFIG_RPXXXX_HAVE_BOOTLOADER=y
|
||||||
|
# CONFIG_RPXXXX_FLASH_START_0100 is not set
|
||||||
|
CONFIG_RPXXXX_FLASH_START_4000=y
|
||||||
|
CONFIG_RP2040_STAGE2_FILE="boot2_w25q080.S"
|
||||||
|
CONFIG_RP2040_STAGE2_CLKDIV=2
|
||||||
|
# CONFIG_RPXXXX_USB is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART0_PINS_0_1 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART0_PINS_12_13 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART0_PINS_16_17 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART0_PINS_28_29 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART1_PINS_4_5 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART1_PINS_8_9 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART1_PINS_20_21 is not set
|
||||||
|
# CONFIG_RPXXXX_SERIAL_UART1_PINS_24_25 is not set
|
||||||
|
CONFIG_RPXXXX_CANBUS=y
|
||||||
|
# CONFIG_RPXXXX_USBCANBUS is not set
|
||||||
|
CONFIG_RPXXXX_CANBUS_GPIO_RX=4
|
||||||
|
CONFIG_RPXXXX_CANBUS_GPIO_TX=5
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x614e
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
CONFIG_WANT_GPIO_BITBANGING=y
|
||||||
|
CONFIG_WANT_DISPLAYS=y
|
||||||
|
CONFIG_WANT_SENSORS=y
|
||||||
|
CONFIG_WANT_LIS2DW=y
|
||||||
|
CONFIG_WANT_LDC1612=y
|
||||||
|
CONFIG_WANT_HX71X=y
|
||||||
|
CONFIG_WANT_ADS1220=y
|
||||||
|
CONFIG_WANT_SOFTWARE_I2C=y
|
||||||
|
CONFIG_WANT_SOFTWARE_SPI=y
|
||||||
|
CONFIG_NEED_SENSOR_BULK=y
|
||||||
|
CONFIG_CANSERIAL=y
|
||||||
|
CONFIG_CANBUS=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_CANBUS_FILTER=y
|
||||||
|
CONFIG_INITIAL_PINS="!gpio6"
|
||||||
|
CONFIG_HAVE_GPIO=y
|
||||||
|
CONFIG_HAVE_GPIO_ADC=y
|
||||||
|
CONFIG_HAVE_GPIO_SPI=y
|
||||||
|
CONFIG_HAVE_GPIO_I2C=y
|
||||||
|
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||||
|
CONFIG_HAVE_STRICT_TIMING=y
|
||||||
|
CONFIG_HAVE_CHIPID=y
|
||||||
|
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
|
||||||
|
CONFIG_HAVE_BOOTLOADER_REQUEST=y
|
||||||
|
CONFIG_INLINE_STEPPER_HACK=y
|
||||||
105
firmware/sht36_v2.CAN
Normal file
105
firmware/sht36_v2.CAN
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
CONFIG_LOW_LEVEL_OPTIONS=y
|
||||||
|
# CONFIG_MACH_AVR is not set
|
||||||
|
# CONFIG_MACH_ATSAM is not set
|
||||||
|
# CONFIG_MACH_ATSAMD is not set
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
CONFIG_MACH_STM32=y
|
||||||
|
# CONFIG_MACH_HC32F460 is not set
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
# CONFIG_MACH_PRU is not set
|
||||||
|
# CONFIG_MACH_AR100 is not set
|
||||||
|
# CONFIG_MACH_LINUX is not set
|
||||||
|
# CONFIG_MACH_SIMU is not set
|
||||||
|
CONFIG_BOARD_DIRECTORY="stm32"
|
||||||
|
CONFIG_MCU="stm32f072xb"
|
||||||
|
CONFIG_CLOCK_FREQ=48000000
|
||||||
|
CONFIG_FLASH_SIZE=0x20000
|
||||||
|
CONFIG_FLASH_BOOT_ADDRESS=0x8000000
|
||||||
|
CONFIG_RAM_START=0x20000000
|
||||||
|
CONFIG_RAM_SIZE=0x4000
|
||||||
|
CONFIG_STACK_SIZE=512
|
||||||
|
CONFIG_FLASH_APPLICATION_ADDRESS=0x8002000
|
||||||
|
CONFIG_STM32_SELECT=y
|
||||||
|
# CONFIG_MACH_STM32F103 is not set
|
||||||
|
# CONFIG_MACH_STM32F207 is not set
|
||||||
|
# CONFIG_MACH_STM32F401 is not set
|
||||||
|
# CONFIG_MACH_STM32F405 is not set
|
||||||
|
# CONFIG_MACH_STM32F407 is not set
|
||||||
|
# CONFIG_MACH_STM32F429 is not set
|
||||||
|
# CONFIG_MACH_STM32F446 is not set
|
||||||
|
# CONFIG_MACH_STM32F765 is not set
|
||||||
|
# CONFIG_MACH_STM32F031 is not set
|
||||||
|
# CONFIG_MACH_STM32F042 is not set
|
||||||
|
# CONFIG_MACH_STM32F070 is not set
|
||||||
|
CONFIG_MACH_STM32F072=y
|
||||||
|
# CONFIG_MACH_STM32G070 is not set
|
||||||
|
# CONFIG_MACH_STM32G071 is not set
|
||||||
|
# CONFIG_MACH_STM32G0B0 is not set
|
||||||
|
# CONFIG_MACH_STM32G0B1 is not set
|
||||||
|
# CONFIG_MACH_STM32G431 is not set
|
||||||
|
# CONFIG_MACH_STM32G474 is not set
|
||||||
|
# CONFIG_MACH_STM32H723 is not set
|
||||||
|
# CONFIG_MACH_STM32H743 is not set
|
||||||
|
# CONFIG_MACH_STM32H750 is not set
|
||||||
|
# CONFIG_MACH_STM32L412 is not set
|
||||||
|
# CONFIG_MACH_N32G452 is not set
|
||||||
|
# CONFIG_MACH_N32G455 is not set
|
||||||
|
CONFIG_MACH_STM32F0=y
|
||||||
|
CONFIG_MACH_STM32F0x2=y
|
||||||
|
CONFIG_HAVE_STM32_USBFS=y
|
||||||
|
CONFIG_HAVE_STM32_CANBUS=y
|
||||||
|
CONFIG_HAVE_STM32_USBCANBUS=y
|
||||||
|
CONFIG_STM32_DFU_ROM_ADDRESS=0
|
||||||
|
CONFIG_STM32_FLASH_START_2000=y
|
||||||
|
# CONFIG_STM32_FLASH_START_1000 is not set
|
||||||
|
# CONFIG_STM32_FLASH_START_4000 is not set
|
||||||
|
# CONFIG_STM32_FLASH_START_0000 is not set
|
||||||
|
CONFIG_ARMCM_RAM_VECTORTABLE=y
|
||||||
|
CONFIG_STM32_CLOCK_REF_8M=y
|
||||||
|
# CONFIG_STM32_CLOCK_REF_12M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_16M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_20M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_24M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_25M is not set
|
||||||
|
# CONFIG_STM32_CLOCK_REF_INTERNAL is not set
|
||||||
|
CONFIG_CLOCK_REF_FREQ=8000000
|
||||||
|
CONFIG_STM32F0_TRIM=16
|
||||||
|
# CONFIG_STM32_USB_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART1_ALT_PB7_PB6 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2 is not set
|
||||||
|
# CONFIG_STM32_SERIAL_USART2_ALT_PA15_PA14 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PA12 is not set
|
||||||
|
# CONFIG_STM32_CANBUS_PA11_PB9 is not set
|
||||||
|
CONFIG_STM32_MMENU_CANBUS_PB8_PB9=y
|
||||||
|
# CONFIG_STM32_MMENU_CANBUS_PD0_PD1 is not set
|
||||||
|
# CONFIG_STM32_USBCANBUS_PA11_PA12 is not set
|
||||||
|
CONFIG_STM32_CANBUS_PB8_PB9=y
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x614e
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
CONFIG_WANT_GPIO_BITBANGING=y
|
||||||
|
CONFIG_WANT_DISPLAYS=y
|
||||||
|
CONFIG_WANT_SENSORS=y
|
||||||
|
CONFIG_WANT_LIS2DW=y
|
||||||
|
CONFIG_WANT_LDC1612=y
|
||||||
|
CONFIG_WANT_HX71X=y
|
||||||
|
CONFIG_WANT_ADS1220=y
|
||||||
|
CONFIG_WANT_SOFTWARE_I2C=y
|
||||||
|
CONFIG_WANT_SOFTWARE_SPI=y
|
||||||
|
CONFIG_NEED_SENSOR_BULK=y
|
||||||
|
CONFIG_CANSERIAL=y
|
||||||
|
CONFIG_CANBUS=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_CANBUS_FILTER=y
|
||||||
|
CONFIG_INITIAL_PINS="!PC13"
|
||||||
|
CONFIG_HAVE_GPIO=y
|
||||||
|
CONFIG_HAVE_GPIO_ADC=y
|
||||||
|
CONFIG_HAVE_GPIO_SPI=y
|
||||||
|
CONFIG_HAVE_GPIO_I2C=y
|
||||||
|
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||||
|
CONFIG_HAVE_STRICT_TIMING=y
|
||||||
|
CONFIG_HAVE_CHIPID=y
|
||||||
|
CONFIG_HAVE_STEPPER_BOTH_EDGE=y
|
||||||
|
CONFIG_HAVE_BOOTLOADER_REQUEST=y
|
||||||
|
CONFIG_INLINE_STEPPER_HACK=y
|
||||||
55
firmware/sht36_v2.CAN.old
Normal file
55
firmware/sht36_v2.CAN.old
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# CONFIG_LOW_LEVEL_OPTIONS is not set
|
||||||
|
CONFIG_MACH_AVR=y
|
||||||
|
# CONFIG_MACH_ATSAM is not set
|
||||||
|
# CONFIG_MACH_ATSAMD is not set
|
||||||
|
# CONFIG_MACH_LPC176X is not set
|
||||||
|
# CONFIG_MACH_STM32 is not set
|
||||||
|
# CONFIG_MACH_HC32F460 is not set
|
||||||
|
# CONFIG_MACH_RPXXXX is not set
|
||||||
|
# CONFIG_MACH_PRU is not set
|
||||||
|
# CONFIG_MACH_AR100 is not set
|
||||||
|
# CONFIG_MACH_LINUX is not set
|
||||||
|
# CONFIG_MACH_SIMU is not set
|
||||||
|
CONFIG_AVR_SELECT=y
|
||||||
|
CONFIG_BOARD_DIRECTORY="avr"
|
||||||
|
CONFIG_MACH_atmega2560=y
|
||||||
|
# CONFIG_MACH_atmega1280 is not set
|
||||||
|
# CONFIG_MACH_at90usb1286 is not set
|
||||||
|
# CONFIG_MACH_at90usb646 is not set
|
||||||
|
# CONFIG_MACH_atmega32u4 is not set
|
||||||
|
# CONFIG_MACH_atmega1284p is not set
|
||||||
|
# CONFIG_MACH_atmega644p is not set
|
||||||
|
# CONFIG_MACH_atmega328p is not set
|
||||||
|
# CONFIG_MACH_atmega328 is not set
|
||||||
|
# CONFIG_MACH_atmega168 is not set
|
||||||
|
CONFIG_MCU="atmega2560"
|
||||||
|
CONFIG_AVRDUDE_PROTOCOL="wiring"
|
||||||
|
CONFIG_CLOCK_FREQ=16000000
|
||||||
|
CONFIG_AVR_CLKPR=-1
|
||||||
|
CONFIG_AVR_STACK_SIZE=256
|
||||||
|
CONFIG_AVR_WATCHDOG=y
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
CONFIG_SERIAL_BAUD_U2X=y
|
||||||
|
CONFIG_SERIAL_PORT=0
|
||||||
|
CONFIG_SERIAL_BAUD=250000
|
||||||
|
CONFIG_USB_VENDOR_ID=0x1d50
|
||||||
|
CONFIG_USB_DEVICE_ID=0x614e
|
||||||
|
CONFIG_USB_SERIAL_NUMBER="12345"
|
||||||
|
CONFIG_WANT_GPIO_BITBANGING=y
|
||||||
|
CONFIG_WANT_DISPLAYS=y
|
||||||
|
CONFIG_WANT_SENSORS=y
|
||||||
|
CONFIG_WANT_LIS2DW=y
|
||||||
|
CONFIG_WANT_LDC1612=y
|
||||||
|
CONFIG_WANT_HX71X=y
|
||||||
|
CONFIG_WANT_ADS1220=y
|
||||||
|
CONFIG_WANT_SOFTWARE_I2C=y
|
||||||
|
CONFIG_WANT_SOFTWARE_SPI=y
|
||||||
|
CONFIG_NEED_SENSOR_BULK=y
|
||||||
|
CONFIG_CANBUS_FREQUENCY=1000000
|
||||||
|
CONFIG_HAVE_GPIO=y
|
||||||
|
CONFIG_HAVE_GPIO_ADC=y
|
||||||
|
CONFIG_HAVE_GPIO_SPI=y
|
||||||
|
CONFIG_HAVE_GPIO_I2C=y
|
||||||
|
CONFIG_HAVE_GPIO_HARD_PWM=y
|
||||||
|
CONFIG_HAVE_STRICT_TIMING=y
|
||||||
|
CONFIG_INLINE_STEPPER_HACK=y
|
||||||
51
firmware/update_fw.sh
Executable file
51
firmware/update_fw.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#Полезные комманды
|
||||||
|
#make menuconfig KCONFIG_CONFIG=/home/biqu/printer_data/config/firmware/config.manta723.CAN
|
||||||
|
#make flash FLASH_DEVICE=0483:df11
|
||||||
|
#python3 flash_can.py -i can0 -u 6c3c86ee0b29 -f ~/firmware/octopus_klipper.bin
|
||||||
|
#python3 ~/katapult/scripts/flashtool.py -i can0 -q
|
||||||
|
|
||||||
|
#Toolheads
|
||||||
|
#rp_sb2209=350f10596216
|
||||||
|
#sht36_v2=8ce295109ef0
|
||||||
|
|
||||||
|
toolhed_name=rp_sb2209
|
||||||
|
toolhed_uuid=350f10596216
|
||||||
|
mcu_uuid=afcf80281237
|
||||||
|
mcu_path=/dev/serial/by-id/usb-katapult_stm32h723xx_320006001751313431393536-if00
|
||||||
|
config_path=/home/biqu/printer_data/config/firmware/
|
||||||
|
|
||||||
|
mkdir -p ~/firmware
|
||||||
|
|
||||||
|
sudo service klipper stop
|
||||||
|
|
||||||
|
cd ~/klipper
|
||||||
|
make clean
|
||||||
|
make -j4 KCONFIG_CONFIG="${config_path}octopus-pro.config"
|
||||||
|
mv ~/klipper/out/klipper.bin ~/firmware/octopus_klipper.bin
|
||||||
|
|
||||||
|
make clean
|
||||||
|
toolhead_config="${config_path}/${used_toolhed}.CAN"
|
||||||
|
make -j4 KCONFIG_CONFIG=$toolhead_config
|
||||||
|
mv ~/klipper/out/klipper.bin ~/firmware/toolhead_klipper.bin
|
||||||
|
|
||||||
|
cd ~/katapult/scripts
|
||||||
|
# Update MCU Octopus Pro
|
||||||
|
echo "Start update MCU Octopus Pro"
|
||||||
|
python3 ~/katapult/scripts/flashtool.py -i can0 -u $mcu_uuid -r
|
||||||
|
python3 flash_can.py -f ~/firmware/octopus_klipper.bin -d $mcu_path
|
||||||
|
sleep 2
|
||||||
|
#read -p "MCU Manta M5P firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"
|
||||||
|
#echo "Finish update MCU octopus"
|
||||||
|
|
||||||
|
# Update Toolhead MCU
|
||||||
|
echo "Start update Toolhead MCU"
|
||||||
|
python3 flash_can.py -i can0 -u $toolhed_uuid -f ~/firmware/toolhead_klipper.bin
|
||||||
|
sleep 2
|
||||||
|
#read -p "MCU EBB36 firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"
|
||||||
|
#echo "Finish update MCU EBB36"
|
||||||
|
|
||||||
|
python3 ~/katapult/scripts/flashtool.py -i can0 -q
|
||||||
|
|
||||||
|
sudo service klipper start
|
||||||
40
firmware/update_fw.sh.old
Executable file
40
firmware/update_fw.sh.old
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
mkdir -p ~/firmware
|
||||||
|
|
||||||
|
sudo service klipper stop
|
||||||
|
|
||||||
|
cd ~/klipper
|
||||||
|
make clean
|
||||||
|
#make menuconfig KCONFIG_CONFIG=/home/biqu/printer_data/config/firmware/config.manta723.CAN
|
||||||
|
make -j4 KCONFIG_CONFIG=/home/biqu/printer_data/config/firmware/octopus-pro.config
|
||||||
|
#make flash FLASH_DEVICE=0483:df11
|
||||||
|
mv ~/klipper/out/klipper.bin ~/firmware/octopus_klipper.bin
|
||||||
|
|
||||||
|
make clean
|
||||||
|
#make menuconfig KCONFIG_CONFIG=/home/biqu/printer_data/config/firmware/rp_sb2209.CAN
|
||||||
|
make -j4 KCONFIG_CONFIG=/home/biqu/printer_data/config/firmware/rp_sb2209.CAN
|
||||||
|
mv ~/klipper/out/klipper.bin ~/firmware/toolhead_klipper.bin
|
||||||
|
|
||||||
|
cd ~/katapult/scripts
|
||||||
|
# Update MCU Octopus Pro
|
||||||
|
echo "Start update MCU Octopus Pro"
|
||||||
|
#echo ""
|
||||||
|
#python3 flash_can.py -i can0 -u 6c3c86ee0b29 -f ~/firmware/octopus_klipper.bin
|
||||||
|
python3 ~/katapult/scripts/flashtool.py -i can0 -u afcf80281237 -r
|
||||||
|
python3 flash_can.py -f ~/firmware/octopus_klipper.bin -d /dev/serial/by-id/usb-katapult_stm32h723xx_320006001751313431393536-if00
|
||||||
|
sleep 2
|
||||||
|
#read -p "MCU Manta M5P firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"
|
||||||
|
#echo "Finish update MCU octopus"
|
||||||
|
|
||||||
|
# Update Toolhead MCU
|
||||||
|
echo "Start update Toolhead MCU"
|
||||||
|
#echo ""
|
||||||
|
python3 flash_can.py -i can0 -u 350f10596216 -f ~/firmware/toolhead_klipper.bin
|
||||||
|
sleep 2
|
||||||
|
#read -p "MCU EBB36 firmware flashed, please check above for any errors. Press [Enter] to continue, or [Ctrl+C] to abort"
|
||||||
|
#echo "Finish update MCU EBB36"
|
||||||
|
|
||||||
|
#echo ""
|
||||||
|
|
||||||
|
sudo service klipper start
|
||||||
124
hbb.cfg
Normal file
124
hbb.cfg
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
[mcu HBB]
|
||||||
|
serial: /dev/serial/by-id/usb-Klipper_rp2040_45474E621A87A43A-if00
|
||||||
|
|
||||||
|
[neopixel HBB_LED]
|
||||||
|
pin: HBB: gpio20
|
||||||
|
chain_count: 7
|
||||||
|
color_order: GRB
|
||||||
|
initial_RED: 0.4
|
||||||
|
initial_GREEN: 0.4
|
||||||
|
initial_BLUE: 0.4
|
||||||
|
|
||||||
|
[gcode_macro _hbb_varible]
|
||||||
|
variable_in_progress_key_1: False
|
||||||
|
variable_in_progress_key_2: False
|
||||||
|
variable_in_progress_key_3: False
|
||||||
|
variable_in_progress_key_4: False
|
||||||
|
variable_in_progress_key_5: False
|
||||||
|
variable_in_progress_key_6: False
|
||||||
|
variable_in_progress_key_7: False
|
||||||
|
variable_status: {
|
||||||
|
'ready': {'r': 0.4, 'g': 0.4, 'b': 0.4, 'w': 0.0},
|
||||||
|
'in_progress': {'r': 0.0, 'g': 0.04, 'b': 0.0, 'w': 0.0},
|
||||||
|
'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'prepare': {'r': 0.4, 'g': 0.4, 'b': 0.0, 'w': 0.0},
|
||||||
|
'disabled': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}
|
||||||
|
}
|
||||||
|
variable_num_count: 7
|
||||||
|
gcode:
|
||||||
|
|
||||||
|
[gcode_macro _set_status]
|
||||||
|
gcode:
|
||||||
|
{% set key_num = params.KEY_NUM|int %}
|
||||||
|
{% set status = params.STATUS|string %}
|
||||||
|
{% set led = printer["gcode_macro _hbb_varible"]['status'][status] %}
|
||||||
|
SET_LED LED=HBB_LED RED={led.r} GREEN={led.g} BLUE={led.b} INDEX={key_num}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _default_release]
|
||||||
|
gcode:
|
||||||
|
{% set key_num = params.KEY_NUM|int %}
|
||||||
|
{% set macro = params.MACRO|string %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"]['in_progress_key_{}'.format(key_num)] %}
|
||||||
|
{% if in_progress == False %}
|
||||||
|
SET_GCODE_VARIABLE MACRO=_hbb_varible VARIABLE=in_progress_key_{key_num} VALUE=True
|
||||||
|
_set_status KEY_NUM={key_num} STATUS=in_progress
|
||||||
|
{macro}
|
||||||
|
_set_status KEY_NUM={key_num} STATUS=ready
|
||||||
|
SET_GCODE_VARIABLE MACRO=_hbb_varible VARIABLE=in_progress_key_{key_num} VALUE=False
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
#[delayed_gcode init_hbb]
|
||||||
|
#initial_duration: 1
|
||||||
|
#gcode:
|
||||||
|
#{% set hbb_varible = printer["gcode_macro _hbb_varible"] %}
|
||||||
|
#{% set num_count = printer["gcode_macro _hbb_varible"].num_count | int %}
|
||||||
|
#{% for key_index in range(1, num_count+1) %}
|
||||||
|
#_set_status KEY_NUM=key_index STATUS=ready
|
||||||
|
#{% endfor %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button hbb_key_1]
|
||||||
|
pin: HBB: gpio25
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 1 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_1 %}
|
||||||
|
_default_release KEY_NUM={key_num} MACRO="LOAD_FILAMENT"
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button hbb_key_2]
|
||||||
|
pin: HBB: gpio26
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 2 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_2 %}
|
||||||
|
_default_release KEY_NUM={key_num} MACRO="UNLOAD_FILAMENT"
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button hbb_key_3]
|
||||||
|
pin: HBB: gpio27
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 3 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_3 %}
|
||||||
|
_set_status KEY_NUM={key_num} STATUS=disabled
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button hbb_key_4]
|
||||||
|
pin: HBB: gpio19
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 4 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_4 %}
|
||||||
|
_default_release KEY_NUM={key_num} MACRO="G32"
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button hbb_key_5]
|
||||||
|
pin: HBB: gpio18
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 5 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_5 %}
|
||||||
|
_set_status KEY_NUM={key_num} STATUS=disabled
|
||||||
|
|
||||||
|
[gcode_button hbb_key_6]
|
||||||
|
pin: HBB: gpio13
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 6 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_6 %}
|
||||||
|
_default_release KEY_NUM={key_num} MACRO="PARKFRONT"
|
||||||
|
|
||||||
|
[gcode_button hbb_key_7]
|
||||||
|
pin: HBB: gpio12
|
||||||
|
press_gcode:
|
||||||
|
release_gcode:
|
||||||
|
{% set key_num = 7 %}
|
||||||
|
{% set in_progress = printer["gcode_macro _hbb_varible"].in_progress_key_7 %}
|
||||||
|
_default_release KEY_NUM={key_num} MACRO="PARKCENTER"
|
||||||
|
|
||||||
|
|
||||||
164
macros/bed_mesh_calibrate.cfg
Normal file
164
macros/bed_mesh_calibrate.cfg
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
[gcode_macro BED_MESH_CALIBRATE]
|
||||||
|
variable_buffer: 20
|
||||||
|
rename_existing: _BED_MESH_CALIBRATE
|
||||||
|
; Do not change any of the existing values below.
|
||||||
|
variable_last_area_start_x: -1 ; Do not change
|
||||||
|
variable_last_area_start_y: -1 ; Do not change
|
||||||
|
variable_last_area_end_x: -1 ; Do not change
|
||||||
|
variable_last_area_end_y: -1 ; Do not change
|
||||||
|
variable_probing:False
|
||||||
|
|
||||||
|
gcode:
|
||||||
|
STATUS_MESHING
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True
|
||||||
|
|
||||||
|
{% if params.FORCE_NEW_MESH != null %}
|
||||||
|
{ action_respond_info("Force New Mesh: %s" % (params.FORCE_NEW_MESH)) }
|
||||||
|
{% endif %}
|
||||||
|
{% if printer["bed_mesh"].profile_name == '' %}
|
||||||
|
{ action_respond_info("No existing bed mesh found.") }
|
||||||
|
{% set last_area_end_x=-1 %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if printer.toolhead.homed_axes != "xyz" %}
|
||||||
|
G28
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% set klicky_available = printer['gcode_macro _Probe_Variables'] != null %}
|
||||||
|
{% set euclid_available = printer['gcode_macro EuclidProbe'] != null %}; Requires v5 macros https://github.com/nionio6915/Euclid_Probe/blob/main/Firmware_Examples/Klipper/00-euclid_exampleV5.cfg
|
||||||
|
{% if params.PRINT_MIN %}
|
||||||
|
{ action_respond_info("print_min: %s" % params.PRINT_MIN) }
|
||||||
|
{ action_respond_info("print_max: %s" % params.PRINT_MAX) }
|
||||||
|
|
||||||
|
{% set blTouchConfig = printer['configfile'].config["bltouch"] %}
|
||||||
|
{% if blTouchConfig %}
|
||||||
|
{% set OffsetX = blTouchConfig.x_offset|default(0)|float %}
|
||||||
|
{% set OffsetY = blTouchConfig.y_offset|default(0)|float %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% set probeConfig = printer['configfile'].config["probe"] %}
|
||||||
|
{% if probeConfig %}
|
||||||
|
{% set OffsetX = probeConfig.x_offset|default(0)|float %}
|
||||||
|
{% set OffsetY = probeConfig.y_offset|default(0)|float %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% set print_min_x = params.PRINT_MIN.split(",")[0]|float %}
|
||||||
|
{% set print_min_y = params.PRINT_MIN.split(",")[1]|float %}
|
||||||
|
{% set print_max_x = params.PRINT_MAX.split(",")[0]|float %}
|
||||||
|
{% set print_max_y = params.PRINT_MAX.split(",")[1]|float %}
|
||||||
|
|
||||||
|
{% if last_area_start_x > 0 %}
|
||||||
|
{ action_respond_info("last_bed_mesh: %s,%s %s,%s" % (last_area_start_x, last_area_start_y, last_area_end_x, last_area_end_y)) }
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if (params.FORCE_NEW_MESH != null) or (print_min_x < last_area_start_x) or (print_max_x > last_area_end_x) or (print_min_y < last_area_start_y) or (print_max_y > last_area_end_y) %}
|
||||||
|
{% if klicky_available %}
|
||||||
|
_CheckProbe action=query
|
||||||
|
Attach_Probe
|
||||||
|
{% elif euclid_available %}
|
||||||
|
DEPLOY_PROBE
|
||||||
|
{% endif %}
|
||||||
|
{% if (print_min_x < print_max_x) and (print_min_y < print_max_y) %}
|
||||||
|
|
||||||
|
# Get bed_mesh config (probe count, mesh_min and mesh_max for x and y
|
||||||
|
{% set bedMeshConfig = printer['configfile'].config["bed_mesh"] %}
|
||||||
|
{% set minimum_probe_count = 3 %}
|
||||||
|
{% if bedMeshConfig.algorithm == "bicubic" %}
|
||||||
|
{% set minimum_probe_count = 5 %}
|
||||||
|
{% endif %}
|
||||||
|
{% set probe_count = bedMeshConfig.probe_count.split(",") %}
|
||||||
|
{% set probe_count_x = probe_count[0]|int %}
|
||||||
|
{% if probe_count.__len__() > 1 %}
|
||||||
|
{% set probe_count_y = probe_count[1]|int %}
|
||||||
|
{% else %}
|
||||||
|
{% set probe_count_y = probe_count_x|int %}
|
||||||
|
{% endif %}
|
||||||
|
{% set relative_reference_index = bedMeshConfig.relative_reference_index %}
|
||||||
|
{% set mesh_min_x = bedMeshConfig.mesh_min.split(",")[0]|float %}
|
||||||
|
{% set mesh_min_y = bedMeshConfig.mesh_min.split(",")[1]|float %}
|
||||||
|
{% set mesh_max_x = bedMeshConfig.mesh_max.split(",")[0]|float %}
|
||||||
|
{% set mesh_max_y = bedMeshConfig.mesh_max.split(",")[1]|float %}
|
||||||
|
|
||||||
|
# If print area X is smaller than 50% of the bed size, change to to 3 probe counts for X instead of the default
|
||||||
|
{% if print_max_x - print_min_x < (mesh_max_x - mesh_min_x) * 0.50 %}
|
||||||
|
{% set probe_count_x = minimum_probe_count %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# If print area Y is smaller than 50% of the bed size, change to to 3 probe counts for Y instead of the default
|
||||||
|
{% if print_max_y - print_min_y < (mesh_max_y - mesh_min_y) * 0.50 %}
|
||||||
|
{% set probe_count_y = minimum_probe_count %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if print_min_x - buffer >= mesh_min_x %}
|
||||||
|
{% set mesh_min_x = print_min_x - buffer %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if print_min_y - buffer >= mesh_min_y %}
|
||||||
|
{% set mesh_min_y = print_min_y - buffer %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if print_max_x + buffer <= mesh_max_x %}
|
||||||
|
{% set mesh_max_x = print_max_x + buffer %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if print_max_y + buffer <= mesh_max_y %}
|
||||||
|
{% set mesh_max_y = print_max_y + buffer %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{ action_respond_info("mesh_min: %s,%s" % (mesh_min_x, mesh_min_y)) }
|
||||||
|
{ action_respond_info("mesh_max: %s,%s" % (mesh_max_x, mesh_max_y)) }
|
||||||
|
{ action_respond_info("probe_count: %s,%s" % (probe_count_x,probe_count_y)) }
|
||||||
|
|
||||||
|
; Set variables so they're available outside of macro
|
||||||
|
SET_GCODE_VARIABLE MACRO=BED_MESH_CALIBRATE VARIABLE=last_area_start_x VALUE={print_min_x}
|
||||||
|
SET_GCODE_VARIABLE MACRO=BED_MESH_CALIBRATE VARIABLE=last_area_start_y VALUE={print_min_y}
|
||||||
|
SET_GCODE_VARIABLE MACRO=BED_MESH_CALIBRATE VARIABLE=last_area_end_x VALUE={print_max_x}
|
||||||
|
SET_GCODE_VARIABLE MACRO=BED_MESH_CALIBRATE VARIABLE=last_area_end_y VALUE={print_max_y}
|
||||||
|
|
||||||
|
{% if printer["gcode_macro status_meshing"] != null %}
|
||||||
|
status_meshing
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if relative_reference_index == 0 or relative_reference_index == null %}
|
||||||
|
_BED_MESH_CALIBRATE mesh_min={mesh_min_x},{mesh_min_y} mesh_max={mesh_max_x},{mesh_max_y} probe_count={probe_count_x},{probe_count_y}
|
||||||
|
{% else %}
|
||||||
|
{% set relative_reference_index = ((probe_count_x * probe_count_y - 1) / 2)|int %}
|
||||||
|
{ action_respond_info("relative_reference_index: %s" % relative_reference_index) }
|
||||||
|
_BED_MESH_CALIBRATE mesh_min={mesh_min_x},{mesh_min_y} mesh_max={mesh_max_x},{mesh_max_y} probe_count={probe_count_x},{probe_count_y} relative_reference_index={relative_reference_index}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if printer["gcode_macro status_meshing"] != null %}
|
||||||
|
status_meshing
|
||||||
|
{% endif %}
|
||||||
|
_BED_MESH_CALIBRATE
|
||||||
|
{% endif %}
|
||||||
|
{% if klicky_available %}
|
||||||
|
Dock_Probe
|
||||||
|
{% elif euclid_available %}
|
||||||
|
STOW_PROBE
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{ action_respond_info("No need to recreate Bed Mesh since it's same as current mesh or smaller") }
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if klicky_available %}
|
||||||
|
_CheckProbe action=query
|
||||||
|
Attach_Probe
|
||||||
|
{% elif euclid_available %}
|
||||||
|
STOW_PROBE
|
||||||
|
{% endif %}
|
||||||
|
{% if printer["gcode_macro status_meshing"] != null %}
|
||||||
|
STATUS_MESHING
|
||||||
|
{% endif %}
|
||||||
|
_BED_MESH_CALIBRATE
|
||||||
|
{% if klicky_available %}
|
||||||
|
Dock_Probe
|
||||||
|
{% endif %}
|
||||||
|
{% if euclid_available %}
|
||||||
|
STOW_PROBE
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% if printer["gcode_macro status_ready"] != null %}
|
||||||
|
STATUS_READY
|
||||||
|
{% endif %}
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False
|
||||||
262
macros/calibrate_flow.cfg
Normal file
262
macros/calibrate_flow.cfg
Normal file
@@ -0,0 +1,262 @@
|
|||||||
|
#########################################
|
||||||
|
###### FLOW MULTIPLIER CALIBRATION ######
|
||||||
|
#########################################
|
||||||
|
# Written by Frix_x#0161 #
|
||||||
|
# @version: 1.5
|
||||||
|
|
||||||
|
# CHANGELOG:
|
||||||
|
# v1.5: moved the install notes into a proper markdown file in: doc > features > flow_calibration.md
|
||||||
|
# v1.4: fix issue when extrude_factor is != 1
|
||||||
|
# v1.3: fix the logging
|
||||||
|
# v1.2: fix for those using absolute extrusion that leads to an error
|
||||||
|
# v1.1: added part cooling fan control and some speed optimizations
|
||||||
|
# v1.0: first flow calibration macro
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
# If you want to use it into your own config, please install it as a standalone macro as described in the
|
||||||
|
# installation section of this file: doc > features > flow_calibration.md
|
||||||
|
# -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
### What is it ? ###
|
||||||
|
# The main reason for this set of macros is to get a filament and slicer agnostic way to calibrate the flow extrusion multiplier.
|
||||||
|
# The goal is to make it easy to set, share and use it.
|
||||||
|
|
||||||
|
# This macro is parametric and most of the values can be adjusted with their respective input parameters.
|
||||||
|
# It can be called without any parameters - in which case the default values would be used - or with any combination of parameters as desired.
|
||||||
|
|
||||||
|
# Feel free to ping me on Discord (Frix_x#0161) if you need help or have any comments to improve it :)
|
||||||
|
|
||||||
|
# https://github.com/yomgui1/klipper-voron-config/blob/main/doc/features/flow_calibration.md?ysclid=lzuo22xrfl138875688
|
||||||
|
|
||||||
|
# ===========================================================================================================
|
||||||
|
# DO NOT MODIFY THOSE VARIABLES (they are used internaly by the flow calibration macro)
|
||||||
|
[gcode_macro _FLOW_CALIB_VARIABLES]
|
||||||
|
variable_last_shell_thickness: 0.0
|
||||||
|
variable_last_evalue: 0.0
|
||||||
|
gcode:
|
||||||
|
|
||||||
|
[gcode_macro FLOW_MULTIPLIER_CALIBRATION]
|
||||||
|
description: Print a small tower to calibrate the extrusion flow multiplier by measuring the shell
|
||||||
|
gcode:
|
||||||
|
#
|
||||||
|
# PARAMETERS
|
||||||
|
#
|
||||||
|
{% set do_raft = params.DO_RAFT|default(1)|int %} # whether to print a raft or not
|
||||||
|
{% set do_retract = params.DO_RECTRACT|default(0)|int %} # whether to enable retract/unrectract on travel moves
|
||||||
|
{% set print_size = params.PRINT_SIZE|default(40)|int %} # size of the printed object on the build plate
|
||||||
|
{% set print_height = params.HEIGHT|default(15)|int %} # height of the printed object
|
||||||
|
{% set corner_radius = params.CORNER_RADIUS|default(8)|int %} # radius of the corners to smooth the shell and toolpath
|
||||||
|
{% set number_of_perimeters = params.PERIMETERS|default(2)|int %} # number of perimeters to print the shell
|
||||||
|
{% set fan_speed = params.FAN_SPEED|default(20)|int %} # part cooling fan speed in percent (0-100)
|
||||||
|
|
||||||
|
{% set e_multiplier = params.EXTRUSION_MULTIPLIER|default(1.00)|float %} # extrusion multiplier for the shell
|
||||||
|
{% set filament_diameter = params.FILAMENT_DIAMETER|default(1.75)|float %} # filament diameter
|
||||||
|
{% set extrusion_width = params.EXTRUSION_WIDTH|default(0.4)|float %} # extrusion width goal for one line
|
||||||
|
{% set layer_height = params.LAYER_HEIGHT|default(0.2)|float %} # layer height for the print
|
||||||
|
|
||||||
|
{% set retract_length = params.RETRACT_LENGTH|default(0.5)|float %} # how much to retract when traveling between print moves
|
||||||
|
{% set initial_purge = params.PURGE_MM|default(1)|int %} # mm of filament to purge before printing. set to 0 to disable
|
||||||
|
{% set z_hop_height = 2 * layer_height %}
|
||||||
|
|
||||||
|
{% set feedrate_print = params.CONTROL_SPEED|default(100)|int * 60 %} # print feedrate
|
||||||
|
{% set feedrate_travel = params.TRAVEL_SPEED|default(200)|int * 60 %} # travel feedrate between print moves
|
||||||
|
{% set feedrate_raft = params.RAFT_SPEED|default(60)|int * 60 %} # print feedrate for printing raft
|
||||||
|
{% set feedrate_z = params.Z_LIFT_SPEED|default(20)|int * 60 %} # z axis travel feedrate
|
||||||
|
{% set feedrate_retract = params.RETRACT_SPEED|default(50)|int * 60 %} # retract and deretract feedrate
|
||||||
|
|
||||||
|
#
|
||||||
|
# COMPUTED VALUES
|
||||||
|
#
|
||||||
|
{% set e_per_mm = ((extrusion_width - layer_height) * layer_height + 3.14159 * (layer_height / 2)**2) / (3.14159 * (filament_diameter / 2)**2) %} # computed E factor (similar to Slic3r/PrusaSlicer/SuperSlicer)
|
||||||
|
{% set spacing = extrusion_width - layer_height * (1 - 3.14159 / 4) %} # line spacing during the print
|
||||||
|
{% set shell_thickness = extrusion_width + (number_of_perimeters|float - 1) * spacing %} # theoric shell thickness
|
||||||
|
|
||||||
|
{% set max_x = printer.toolhead.axis_maximum.x|float %}
|
||||||
|
{% set max_y = printer.toolhead.axis_maximum.y|float %}
|
||||||
|
{% set x_start = max_x / 2 - print_size / 2 %}
|
||||||
|
{% set y_start = max_y / 2 - print_size / 2 %}
|
||||||
|
{% set x_end = x_start + print_size %}
|
||||||
|
{% set y_end = y_start + print_size %}
|
||||||
|
|
||||||
|
{% set num_raft_lines = ([print_size, max_x]|min / spacing)|round(0, 'floor')|int %}
|
||||||
|
{% set raft_size = num_raft_lines * spacing %}
|
||||||
|
|
||||||
|
#
|
||||||
|
# STARTING...
|
||||||
|
#
|
||||||
|
{action_respond_info("")}
|
||||||
|
{action_respond_info("Starting extrusion flow calibration print")}
|
||||||
|
{action_respond_info("This operation can not be interrupted by normal means. Hit the \"emergency stop\" button to stop it if needed")}
|
||||||
|
{action_respond_info("")}
|
||||||
|
{action_respond_info("Exrusion multiplier used: %.4f" % e_multiplier)}
|
||||||
|
{action_respond_info("Number of perimeters to print: %d" % number_of_perimeters)}
|
||||||
|
{action_respond_info("THEORIC SHELL THICKNESS: %.4f" % shell_thickness)}
|
||||||
|
{action_respond_info("")}
|
||||||
|
{action_respond_info("Measure the shell thickness using a caliper or micrometer. Then call the computation macro with the measured value:")}
|
||||||
|
{action_respond_info("COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx")}
|
||||||
|
{action_respond_info("")}
|
||||||
|
|
||||||
|
SAVE_GCODE_STATE NAME=STATE_FLOW_MULTIPLIER_CALIBRATION
|
||||||
|
|
||||||
|
#
|
||||||
|
# set variables for later computation
|
||||||
|
#
|
||||||
|
SET_GCODE_VARIABLE MACRO=_FLOW_CALIB_VARIABLES VARIABLE=last_shell_thickness VALUE={shell_thickness}
|
||||||
|
SET_GCODE_VARIABLE MACRO=_FLOW_CALIB_VARIABLES VARIABLE=last_evalue VALUE={e_multiplier}
|
||||||
|
|
||||||
|
#
|
||||||
|
# purging before raft
|
||||||
|
#
|
||||||
|
G90
|
||||||
|
M83
|
||||||
|
G92 E0.0
|
||||||
|
G0 X{x_start} Y{y_start - 5} Z{layer_height} F{feedrate_travel} # move at the start position to do a purge line
|
||||||
|
|
||||||
|
G91 # use relative coordinates for the prime line
|
||||||
|
G1 E{initial_purge} F{5 * 60}
|
||||||
|
G1 X{raft_size} E{raft_size * e_per_mm * 1.5} F{feedrate_raft / 2} # print prime line
|
||||||
|
G1 Y-{extrusion_width} E{extrusion_width * e_per_mm} F{feedrate_raft / 2} # move to next line
|
||||||
|
G1 X-{raft_size} E{raft_size * e_per_mm} F{feedrate_raft / 2} # print second prime line
|
||||||
|
|
||||||
|
G1 E-{retract_length} F{feedrate_retract} # retract
|
||||||
|
G0 Z{z_hop_height} F{feedrate_z} # z-hop
|
||||||
|
|
||||||
|
G90 # back to absolute coordinates
|
||||||
|
G0 X{x_start} Y{y_start} F{feedrate_travel} # move to start position
|
||||||
|
G1 Z{layer_height} F{feedrate_z} # move to print height
|
||||||
|
G1 E{retract_length} F{feedrate_retract} # unretract
|
||||||
|
|
||||||
|
# set extrude_factor
|
||||||
|
M221 S{e_multiplier * 100}
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the raft
|
||||||
|
#
|
||||||
|
{% if do_raft == 1 %}
|
||||||
|
G91 # use relative coordinates for the raft
|
||||||
|
{% for curr_raft_line in range(1, num_raft_lines + 2) %}
|
||||||
|
# print a raft line with alternating direction
|
||||||
|
G1 Y{loop.cycle(1.0, -1.0) * raft_size} E{raft_size * e_per_mm} F{feedrate_raft}
|
||||||
|
|
||||||
|
# spacing move
|
||||||
|
{% if not loop.last %}
|
||||||
|
G1 X{spacing} E{spacing * e_per_mm} F{feedrate_raft}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
G1 E-{retract_length} F{feedrate_retract} # retract
|
||||||
|
G0 Z{z_hop_height} F{feedrate_z} # z-hop
|
||||||
|
G90 # back to absolute coordinates
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the shell
|
||||||
|
#
|
||||||
|
G90
|
||||||
|
M106 S{fan_speed * 255 / 100}
|
||||||
|
|
||||||
|
# for each layer
|
||||||
|
{% for curr_layer in range(1, (print_height / layer_height)|round|int) %}
|
||||||
|
G0 X{x_start + corner_radius} Y{y_start} F{feedrate_travel} # move to XY start position
|
||||||
|
G1 Z{(curr_layer * layer_height) + (layer_height if do_raft == 1 else 0)} F{feedrate_z} # move to Z start position
|
||||||
|
|
||||||
|
# print one layer of the shell (in a for loop to do all the perimeters of one layer)
|
||||||
|
{% for perim_num in range(number_of_perimeters) %}
|
||||||
|
# compute values for the current perimeter (offset and radius)
|
||||||
|
{% set perim_offset = perim_num * spacing %}
|
||||||
|
{% set perim_radius = corner_radius - (perim_num * spacing) %}
|
||||||
|
|
||||||
|
# start position of the current perimeter
|
||||||
|
G1 X{x_start + corner_radius} Y{y_start + perim_offset} F{feedrate_travel}
|
||||||
|
{% if do_retract == 1 %}
|
||||||
|
G1 E{retract_length} F{feedrate_retract} # unretract
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# print the perimeter using the offset and radius computed
|
||||||
|
G1 X{x_end - corner_radius} Y{y_start + perim_offset} E{(print_size - (2 * corner_radius)) * e_per_mm} F{feedrate_print}
|
||||||
|
G3 X{x_end - perim_offset} Y{y_start + corner_radius} J{perim_radius} E{(3.14159 / 2) * perim_radius * e_per_mm} F{feedrate_print}
|
||||||
|
G1 X{x_end - perim_offset} Y{y_end - corner_radius} E{(print_size - (2 * corner_radius)) * e_per_mm} F{feedrate_print}
|
||||||
|
G3 X{x_end - corner_radius} Y{y_end - perim_offset} I-{perim_radius} E{(3.14159 / 2) * perim_radius * e_per_mm} F{feedrate_print}
|
||||||
|
G1 X{x_start + corner_radius} Y{y_end - perim_offset} E{(print_size - (2 * corner_radius)) * e_per_mm} F{feedrate_print}
|
||||||
|
G3 X{x_start + perim_offset} Y{y_end - corner_radius} J-{perim_radius} E{(3.14159 / 2) * perim_radius * e_per_mm} F{feedrate_print}
|
||||||
|
G1 X{x_start + perim_offset} Y{y_start + corner_radius} E{(print_size - (2 * corner_radius)) * e_per_mm} F{feedrate_print}
|
||||||
|
G3 X{x_start + corner_radius} Y{y_start + perim_offset} I{perim_radius} E{(3.14159 / 2) * perim_radius * e_per_mm} F{feedrate_print}
|
||||||
|
|
||||||
|
{% if do_retract == 1 %}
|
||||||
|
G1 E-{retract_length} F{feedrate_retract} # retract
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if do_retract == 1 %}
|
||||||
|
G91
|
||||||
|
G0 Z{z_hop_height} F{feedrate_z}
|
||||||
|
G90
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
#
|
||||||
|
# retract and move away
|
||||||
|
#
|
||||||
|
G1 E-{retract_length} F{feedrate_retract}
|
||||||
|
G91
|
||||||
|
G0 Z20 F{feedrate_travel}
|
||||||
|
|
||||||
|
RESTORE_GCODE_STATE NAME=STATE_FLOW_MULTIPLIER_CALIBRATION
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro COMPUTE_FLOW_MULTIPLIER]
|
||||||
|
description: Compute a new flow multiplier by using the measured shell thickness on the calibration print
|
||||||
|
gcode:
|
||||||
|
{% set evalue = params.OLD_EXTRUSION_MULTIPLIER|default(0.0)|float %} # extrusion multiplier used for the calibration print
|
||||||
|
{% set theorical_thickness = params.THEORICAL_THICKNESS|default(0.0)|float %} # theorical shell thickness
|
||||||
|
{% set measured_thickness = params.MEASURED_THICKNESS|default(0.0)|float %} # measured shell thickness on the calibration print
|
||||||
|
|
||||||
|
# if there is no OLD_EXTRUSION_MULTIPLIER passed as param, get the one from the last print calib run
|
||||||
|
{% if evalue == 0.0 %}
|
||||||
|
{% set last_evalue = printer["gcode_macro _FLOW_CALIB_VARIABLES"].last_evalue %}
|
||||||
|
|
||||||
|
# then, if there is also no evalue saved from the last run, alert user
|
||||||
|
{% if last_evalue == 0.0 %}
|
||||||
|
{action_respond_info("It seems that no calibration print was run prior to this (or a restart of Klipper occured).")}
|
||||||
|
{action_respond_info("You can still manually use it by calling again this macro like that:")}
|
||||||
|
{action_respond_info("COMPUTE_FLOW_MULTIPLIER OLD_EXTRUSION_MULTIPLIER=xxx.xxx THEORICAL_THICKNESS=xxx.xxx MEASURED_THICKNESS=xxx.xxx")}
|
||||||
|
{action_raise_error("not enough data to perform the computation of the new flow !")}
|
||||||
|
{% else %}
|
||||||
|
{% set final_evalue = last_evalue %}
|
||||||
|
{action_respond_info("Using OLD_EXTRUSION_MULTIPLIER: %.3f" % final_evalue)}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% set final_evalue = evalue %}
|
||||||
|
{action_respond_info("Using OLD_EXTRUSION_MULTIPLIER: %.3f" % final_evalue)}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# similarly, if there is no THEORICAL_THICKNESS passed as param, get the one from the last print calib run
|
||||||
|
{% if theorical_thickness == 0.0 %}
|
||||||
|
{% set last_shell_thickness = printer["gcode_macro _FLOW_CALIB_VARIABLES"].last_shell_thickness %}
|
||||||
|
|
||||||
|
# then, if there is also no evalue saved from the last run, alert user
|
||||||
|
{% if last_shell_thickness == 0.0 %}
|
||||||
|
{action_respond_info("It seems that no calibration print was run prior to this (or a restart of Klipper occured).")}
|
||||||
|
{action_respond_info("You can still manually use it by calling again this macro like that:")}
|
||||||
|
{action_respond_info("COMPUTE_FLOW_MULTIPLIER OLD_EXTRUSION_MULTIPLIER=xxx.xxx THEORICAL_THICKNESS=xxx.xxx MEASURED_THICKNESS=xxx.xxx")}
|
||||||
|
{action_raise_error("not enough data to perform the computation of the new flow !")}
|
||||||
|
{% else %}
|
||||||
|
{% set final_theorical_thickness = last_shell_thickness %}
|
||||||
|
{action_respond_info("Using THEORICAL_THICKNESS: %.3f" % final_theorical_thickness)}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% set final_theorical_thickness = theorical_thickness %}
|
||||||
|
{action_respond_info("Using THEORICAL_THICKNESS: %.3f" % final_theorical_thickness)}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# use the measured thickness from the user to compute a new flow value
|
||||||
|
{% if measured_thickness == 0.0 %}
|
||||||
|
{action_respond_info("You must use a caliper or micrometer to measure the calibration print shell thickness and call this macro with the measured value !!!")}
|
||||||
|
{action_respond_info("COMPUTE_FLOW_MULTIPLIER MEASURED_THICKNESS=xxx.xxx")}
|
||||||
|
{action_raise_error("not enough data to perform the computation of the new flow !")}
|
||||||
|
{% else %}
|
||||||
|
{% set new_evalue = final_theorical_thickness * final_evalue / measured_thickness %}
|
||||||
|
{action_respond_info("NEW COMPUTED FLOW VALUE: %.3f" % new_evalue)}
|
||||||
|
{action_respond_info("Use this new value as extrusion multiplier in your slicer of choice")}
|
||||||
|
{action_respond_info("")}
|
||||||
|
{% endif %}
|
||||||
174
macros/homing.cfg
Normal file
174
macros/homing.cfg
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
[gcode_macro MOVE_UP]
|
||||||
|
variable_set_kinematic_z: 20
|
||||||
|
variable_up_z: 10
|
||||||
|
gcode:
|
||||||
|
SAVE_GCODE_STATE NAME=my_move_up_state
|
||||||
|
{% if not 'z' in printer.toolhead.homed_axes %}
|
||||||
|
SET_KINEMATIC_POSITION Z={set_kinematic_z}
|
||||||
|
{% endif %}
|
||||||
|
G91
|
||||||
|
G0 Z{up_z} F1200
|
||||||
|
RESTORE_GCODE_STATE NAME=my_move_up_state
|
||||||
|
|
||||||
|
[gcode_macro _HOME_X]
|
||||||
|
variable_homing_current: 0.49
|
||||||
|
variable_start_retract: 15
|
||||||
|
gcode:
|
||||||
|
# Always use consistent run_current on A/B steppers during sensorless homing
|
||||||
|
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2240 stepper_x'].run_current|float %}
|
||||||
|
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2240 stepper_y'].run_current|float %}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={homing_current}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={homing_current}
|
||||||
|
|
||||||
|
M117 Homing X...
|
||||||
|
|
||||||
|
SET_KINEMATIC_POSITION X={start_retract}
|
||||||
|
G91
|
||||||
|
G1 X-{start_retract} F1200
|
||||||
|
|
||||||
|
M400
|
||||||
|
G28 X
|
||||||
|
|
||||||
|
G91
|
||||||
|
G1 X-40 F1200
|
||||||
|
#G4 P500
|
||||||
|
|
||||||
|
M117
|
||||||
|
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _HOME_Y]
|
||||||
|
variable_homing_current: 0.49
|
||||||
|
variable_start_retract: 15
|
||||||
|
gcode:
|
||||||
|
# Set current for sensorless homing
|
||||||
|
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2240 stepper_x'].run_current|float %}
|
||||||
|
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2240 stepper_y'].run_current|float %}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={homing_current}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={homing_current}
|
||||||
|
#SET_TMC_FIELD FIELD=SGT STEPPER=stepper_x VALUE=1
|
||||||
|
#G4 P1000
|
||||||
|
|
||||||
|
M117 Homing Y...
|
||||||
|
|
||||||
|
SET_KINEMATIC_POSITION Y={start_retract}
|
||||||
|
G91
|
||||||
|
G1 Y-{start_retract} F1200
|
||||||
|
|
||||||
|
M400
|
||||||
|
G28 Y
|
||||||
|
|
||||||
|
G91
|
||||||
|
G1 Y-10 F1200
|
||||||
|
#G4 P500
|
||||||
|
|
||||||
|
M117
|
||||||
|
# Set current during print
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||||
|
|
||||||
|
|
||||||
|
[homing_override]
|
||||||
|
axes: xyz
|
||||||
|
gcode:
|
||||||
|
{% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}
|
||||||
|
{% set move_x = params.X|default(printer.toolhead.axis_maximum.y/2)|int %}
|
||||||
|
{% set move_y = params.Y|default(printer.toolhead.axis_maximum.y/2)|int %}
|
||||||
|
{% if params.Z == '' %}
|
||||||
|
{% set move_z = 10 %}
|
||||||
|
{% else %}
|
||||||
|
{% set move_z = params.Z|default(10)|int %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True
|
||||||
|
STATUS_HOMING
|
||||||
|
|
||||||
|
{% if home_all or 'X' or 'Y' in params %}
|
||||||
|
INIT_TMC STEPPER=stepper_y
|
||||||
|
INIT_TMC STEPPER=stepper_x
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'Z' in params %}
|
||||||
|
BED_MESH_CLEAR
|
||||||
|
MOVE_UP
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'X' in params %}
|
||||||
|
_HOME_X
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'Y' in params %}
|
||||||
|
_HOME_Y
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
G90
|
||||||
|
|
||||||
|
{% if home_all or 'Z' in params %}
|
||||||
|
G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} F12000 #probe point
|
||||||
|
G28 Z
|
||||||
|
G1 Z{move_z} F1200
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
#{ action_respond_info("Move X,Y => {},{}".format(params.X,params.Y)) }
|
||||||
|
|
||||||
|
{% if params.X %}
|
||||||
|
|
||||||
|
G1 X{move_x} F12000
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if params.Y %}
|
||||||
|
G1 Y{move_y} F12000
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
STATUS_OFF
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False
|
||||||
|
|
||||||
|
[gcode_macro CG28]
|
||||||
|
gcode:
|
||||||
|
{% if "xyz" not in printer.toolhead.homed_axes %}
|
||||||
|
G28
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro PARKFRONT]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} Z{printer.toolhead.axis_maximum.z/2} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
|
||||||
|
[gcode_macro PARKFRONTLOW]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} Z20 F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
|
||||||
|
[gcode_macro PARKREAR]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKREAR
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_minimum.x+10} Y{printer.toolhead.axis_maximum.y-10} Z{printer.toolhead.axis_maximum.z-50} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKREAR
|
||||||
|
|
||||||
|
[gcode_macro PARKCENTER]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKCENTER
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} Z{printer.toolhead.axis_maximum.z/2} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKCENTER
|
||||||
|
|
||||||
|
[gcode_macro PARKBED]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKBED
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} Z15 F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKBED
|
||||||
|
|
||||||
174
macros/homing.cfg.old
Normal file
174
macros/homing.cfg.old
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
[gcode_macro MOVE_UP]
|
||||||
|
variable_set_kinematic_z: 20
|
||||||
|
variable_up_z: 10
|
||||||
|
gcode:
|
||||||
|
SAVE_GCODE_STATE NAME=my_move_up_state
|
||||||
|
{% if not 'z' in printer.toolhead.homed_axes %}
|
||||||
|
SET_KINEMATIC_POSITION Z={set_kinematic_z}
|
||||||
|
{% endif %}
|
||||||
|
G91
|
||||||
|
G0 Z{up_z} F1200
|
||||||
|
RESTORE_GCODE_STATE NAME=my_move_up_state
|
||||||
|
|
||||||
|
[gcode_macro _HOME_X]
|
||||||
|
variable_homing_current: 0.65
|
||||||
|
variable_start_retract: 15
|
||||||
|
gcode:
|
||||||
|
# Always use consistent run_current on A/B steppers during sensorless homing
|
||||||
|
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2240 stepper_x'].run_current|float %}
|
||||||
|
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2240 stepper_y'].run_current|float %}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={homing_current}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={homing_current}
|
||||||
|
|
||||||
|
M117 Homing X...
|
||||||
|
|
||||||
|
SET_KINEMATIC_POSITION X={start_retract}
|
||||||
|
G91
|
||||||
|
G1 X-{start_retract} F1200
|
||||||
|
|
||||||
|
M400
|
||||||
|
G28 X
|
||||||
|
|
||||||
|
G91
|
||||||
|
G1 X-60 F1200
|
||||||
|
#G4 P500
|
||||||
|
|
||||||
|
M117
|
||||||
|
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _HOME_Y]
|
||||||
|
variable_homing_current: 0.65
|
||||||
|
variable_start_retract: 15
|
||||||
|
gcode:
|
||||||
|
# Set current for sensorless homing
|
||||||
|
{% set RUN_CURRENT_X = printer.configfile.settings['tmc2240 stepper_x'].run_current|float %}
|
||||||
|
{% set RUN_CURRENT_Y = printer.configfile.settings['tmc2240 stepper_y'].run_current|float %}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={homing_current}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={homing_current}
|
||||||
|
#SET_TMC_FIELD FIELD=SGT STEPPER=stepper_x VALUE=1
|
||||||
|
#G4 P1000
|
||||||
|
|
||||||
|
M117 Homing Y...
|
||||||
|
|
||||||
|
SET_KINEMATIC_POSITION Y={start_retract}
|
||||||
|
G91
|
||||||
|
G1 Y-{start_retract} F1200
|
||||||
|
|
||||||
|
M400
|
||||||
|
G28 Y
|
||||||
|
|
||||||
|
G91
|
||||||
|
G1 Y-10 F1200
|
||||||
|
#G4 P500
|
||||||
|
|
||||||
|
M117
|
||||||
|
# Set current during print
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_x CURRENT={RUN_CURRENT_X}
|
||||||
|
SET_TMC_CURRENT STEPPER=stepper_y CURRENT={RUN_CURRENT_Y}
|
||||||
|
|
||||||
|
|
||||||
|
[homing_override]
|
||||||
|
axes: xyz
|
||||||
|
gcode:
|
||||||
|
{% set home_all = 'X' not in params and 'Y' not in params and 'Z' not in params %}
|
||||||
|
{% set move_x = params.X|default(printer.toolhead.axis_maximum.y/2)|int %}
|
||||||
|
{% set move_y = params.Y|default(printer.toolhead.axis_maximum.y/2)|int %}
|
||||||
|
{% if params.Z == '' %}
|
||||||
|
{% set move_z = 10 %}
|
||||||
|
{% else %}
|
||||||
|
{% set move_z = params.Z|default(10)|int %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=True
|
||||||
|
STATUS_HOMING
|
||||||
|
|
||||||
|
{% if home_all or 'X' or 'Y' in params %}
|
||||||
|
INIT_TMC STEPPER=stepper_y
|
||||||
|
INIT_TMC STEPPER=stepper_x
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'Z' in params %}
|
||||||
|
BED_MESH_CLEAR
|
||||||
|
MOVE_UP
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'X' in params %}
|
||||||
|
_HOME_X
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if home_all or 'Y' in params %}
|
||||||
|
_HOME_Y
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
G90
|
||||||
|
|
||||||
|
{% if home_all or 'Z' in params %}
|
||||||
|
G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} F12000 #probe point
|
||||||
|
G28 Z
|
||||||
|
G1 Z{move_z} F1200
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
#{ action_respond_info("Move X,Y => {},{}".format(params.X,params.Y)) }
|
||||||
|
|
||||||
|
{% if params.X %}
|
||||||
|
|
||||||
|
G1 X{move_x} F12000
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if params.Y %}
|
||||||
|
G1 Y{move_y} F12000
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
STATUS_OFF
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=homing VALUE=False
|
||||||
|
|
||||||
|
[gcode_macro CG28]
|
||||||
|
gcode:
|
||||||
|
{% if "xyz" not in printer.toolhead.homed_axes %}
|
||||||
|
G28
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro PARKFRONT]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} Z{printer.toolhead.axis_maximum.z/2} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
|
||||||
|
[gcode_macro PARKFRONTLOW]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} Z20 F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKFRONT
|
||||||
|
|
||||||
|
[gcode_macro PARKREAR]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKREAR
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_minimum.x+10} Y{printer.toolhead.axis_maximum.y-10} Z{printer.toolhead.axis_maximum.z-50} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKREAR
|
||||||
|
|
||||||
|
[gcode_macro PARKCENTER]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKCENTER
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} Z{printer.toolhead.axis_maximum.z/2} F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKCENTER
|
||||||
|
|
||||||
|
[gcode_macro PARKBED]
|
||||||
|
gcode:
|
||||||
|
CG28 ; home if not already homed
|
||||||
|
SAVE_GCODE_STATE NAME=PARKBED
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_maximum.y/2} Z15 F6000
|
||||||
|
RESTORE_GCODE_STATE NAME=PARKBED
|
||||||
|
|
||||||
552
macros/main.cfg
Normal file
552
macros/main.cfg
Normal file
@@ -0,0 +1,552 @@
|
|||||||
|
[include stealthburner_leds.cfg]
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _KNOMI_STATUS]
|
||||||
|
variable_homing: False
|
||||||
|
variable_probing: False
|
||||||
|
variable_qgling: False
|
||||||
|
variable_heating_nozzle: False
|
||||||
|
variable_heating_bed: False
|
||||||
|
gcode:
|
||||||
|
|
||||||
|
|
||||||
|
[include homing.cfg]
|
||||||
|
#[include private.cfg]
|
||||||
|
#[include nozzle_scrub.cfg]
|
||||||
|
[include ../KAMP_Settings.cfg]
|
||||||
|
#[include ../KAMP/KAMP_Settings.cfg]
|
||||||
|
[include tools.cfg]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[delayed_gcode init_printer]
|
||||||
|
initial_duration: 1
|
||||||
|
gcode:
|
||||||
|
STATUS_READY
|
||||||
|
SET_FAN_SPEED FAN=SoC SPEED=0.3
|
||||||
|
#SET_FILAMENT_SENSOR SENSOR=SFS_T0 ENABLE=0
|
||||||
|
|
||||||
|
[delayed_gcode _INIT_TIMELAPSE_CHECK_TIME]
|
||||||
|
initial_duration: 1
|
||||||
|
gcode: SET_GCODE_VARIABLE MACRO=TIMELAPSE_TAKE_FRAME VARIABLE=check_time VALUE=0.5
|
||||||
|
|
||||||
|
[gcode_button ps_lose]
|
||||||
|
pin: PC2
|
||||||
|
press_gcode:
|
||||||
|
{ action_respond_info("Power lose!") }
|
||||||
|
SHUTDOWN
|
||||||
|
|
||||||
|
[gcode_macro SHUTDOWN]
|
||||||
|
gcode:
|
||||||
|
SET_PIN PIN=ps_on VALUE=0
|
||||||
|
{action_respond_info('action:poweroff')}
|
||||||
|
{action_call_remote_method("shutdown_machine")}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _CHAMBER_LED_OFF]
|
||||||
|
gcode:
|
||||||
|
SET_LED LED="chamber_leds" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1
|
||||||
|
|
||||||
|
[gcode_macro _CHAMBER_LED_ON]
|
||||||
|
gcode:
|
||||||
|
SET_LED LED="chamber_leds" RED=1 GREEN=1 BLUE=1 SYNC=0 TRANSMIT=1
|
||||||
|
|
||||||
|
[gcode_macro _LED_SWITCH]
|
||||||
|
gcode:
|
||||||
|
{% set color_data = printer["neopixel chamber_leds"].color_data %}
|
||||||
|
{% if color_data[0][0] or color_data[0][1] or color_data[0][2] %}
|
||||||
|
SET_LED LED="chamber_leds" RED=0 GREEN=0 BLUE=0 SYNC=0 TRANSMIT=1
|
||||||
|
{% else %}
|
||||||
|
SET_LED LED="chamber_leds" RED=1 GREEN=1 BLUE=1 SYNC=0 TRANSMIT=1
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_button ps_double_click]
|
||||||
|
pin: !PG13
|
||||||
|
press_gcode:
|
||||||
|
{ action_respond_info("Double click!") }
|
||||||
|
_LED_SWITCH
|
||||||
|
|
||||||
|
[gcode_button ps_triple_click]
|
||||||
|
pin: !PG12
|
||||||
|
press_gcode:
|
||||||
|
{ action_respond_info("Triple click!") }
|
||||||
|
{ action_emergency_stop() }
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro START_BED_MESH_CALIBRATE]
|
||||||
|
#rename_existing: _BED_MESH_CALIBRATE
|
||||||
|
gcode:
|
||||||
|
STATUS_MESHING
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=True
|
||||||
|
BED_MESH_CALIBRATE
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=probing VALUE=False
|
||||||
|
STATUS_READY
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro QUAD_GANTRY_LEVEL]
|
||||||
|
rename_existing: QUAD_GANTRY_LEVEL_BASE
|
||||||
|
gcode:
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=qgling VALUE=True
|
||||||
|
STATUS_LEVELING
|
||||||
|
QUAD_GANTRY_LEVEL_BASE
|
||||||
|
STATUS_READY
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=qgling VALUE=False
|
||||||
|
|
||||||
|
[gcode_macro G32]
|
||||||
|
gcode:
|
||||||
|
M117 Homing
|
||||||
|
BED_MESH_CLEAR
|
||||||
|
G28
|
||||||
|
QUAD_GANTRY_LEVEL
|
||||||
|
STATUS_CALIBRATING_Z
|
||||||
|
#G0 X350 Y350 Z30 F3600
|
||||||
|
G28 Z
|
||||||
|
G0 Z10 F3600
|
||||||
|
STATUS_READY
|
||||||
|
M117
|
||||||
|
|
||||||
|
[gcode_macro SFS_ENABLE]
|
||||||
|
description: Enable smart filament sensor
|
||||||
|
gcode:
|
||||||
|
M117 ENABLING the Smart Filament Sensor
|
||||||
|
G92 E0
|
||||||
|
#SET_FILAMENT_SENSOR SENSOR=SFS_T0 ENABLE=1
|
||||||
|
|
||||||
|
[gcode_macro SFS_DISABLE]
|
||||||
|
description: Disable smart filament sensor
|
||||||
|
gcode:
|
||||||
|
M117 DISABLING the Smart Filament Sensor
|
||||||
|
G92 E0
|
||||||
|
#SET_FILAMENT_SENSOR SENSOR=SFS_T0 ENABLE=0
|
||||||
|
|
||||||
|
[gcode_macro PRINT_START]
|
||||||
|
gcode:
|
||||||
|
_CHAMBER_LED_ON
|
||||||
|
#PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}
|
||||||
|
{% set BED_TEMP = params.BED|default(60)|float %}
|
||||||
|
{% set EXTRUDER_TEMP = params.EXTRUDER|default(210)|float %}
|
||||||
|
{% set CHAMBER = params.CHAMBER|default(35)|float %}
|
||||||
|
{% if params.BED_TYPE %}
|
||||||
|
INIT_BED_TYPE BED_TYPE="{params.BED_TYPE}"
|
||||||
|
{% endif %}
|
||||||
|
SAVE_GCODE_STATE NAME=start
|
||||||
|
M117 Starting...
|
||||||
|
M140 S{BED_TEMP}
|
||||||
|
M141 S{CHAMBER}
|
||||||
|
M109 S150
|
||||||
|
M190 S{BED_TEMP}
|
||||||
|
BED_MESH_CLEAR
|
||||||
|
G90 # Use absolute coordinates
|
||||||
|
#SET_GCODE_OFFSET Z=0.0
|
||||||
|
G32
|
||||||
|
#{% if not 'xyz' in printer.toolhead.homed_axes %}
|
||||||
|
#G32 ; home all axes
|
||||||
|
#{% elif not printer.quad_gantry_level.applied %}
|
||||||
|
#QUAD_GANTRY_LEVEL
|
||||||
|
#{% else %}
|
||||||
|
#G28 Z10
|
||||||
|
#{% endif %}
|
||||||
|
START_BED_MESH_CALIBRATE #PRINT_MIN={params.PRINT_MIN} PRINT_MAX={params.PRINT_MAX} FORCE_NEW_MESH=True
|
||||||
|
#M191 S{CHAMBER}
|
||||||
|
Smart_Park
|
||||||
|
M117 Heating...
|
||||||
|
#M190 S{BED_TEMP}
|
||||||
|
M109 S{EXTRUDER_TEMP} ; M109 heat and wait for it to reach temp
|
||||||
|
SFS_ENABLE
|
||||||
|
M117
|
||||||
|
STATUS_CLEANING
|
||||||
|
VORON_PURGE
|
||||||
|
STATUS_PRINTING
|
||||||
|
RESTORE_GCODE_STATE NAME=start
|
||||||
|
SKEW_PROFILE LOAD=default
|
||||||
|
#SET_SKEW XY=140.56,141.21,99.82
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro PRINT_END]
|
||||||
|
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
|
||||||
|
variable_retract_amount: 16 #
|
||||||
|
variable_park_speed: 6000 #3600
|
||||||
|
variable_park_xy: [350,350]
|
||||||
|
variable_up_z: 4 #12
|
||||||
|
gcode:
|
||||||
|
{% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %}
|
||||||
|
STATUS_BUSY
|
||||||
|
SET_SKEW CLEAR=1
|
||||||
|
M400 ; wait for buffer to clear
|
||||||
|
G92 E0 ; zero the extruder
|
||||||
|
G1 E-{retract_amount} F3600 ; retract filament {max_velocity}
|
||||||
|
G91 ; relative positioning
|
||||||
|
G0 Z1.00 X20.0 Y20.0 F20000 ; move nozzle to remove stringing
|
||||||
|
TURN_OFF_HEATERS
|
||||||
|
M107 ; turn off fan
|
||||||
|
G1 Z{up_z} F3000 ; move nozzle up 2mm
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G0 X{park_xy[0]} Y{park_xy[1]} F{park_speed} ; park nozzle at rear
|
||||||
|
#BED_MESH_CLEAR
|
||||||
|
SFS_DISABLE
|
||||||
|
#M141 S35
|
||||||
|
SET_STEPPER_ENABLE STEPPER=extruder ENABLE=0 #disable stepper
|
||||||
|
STATUS_OFF
|
||||||
|
SET_VELOCITY_DEFAULT
|
||||||
|
INIT_BED_TYPE BED_TYPE="None"
|
||||||
|
M400
|
||||||
|
TIMELAPSE_TAKE_FRAME
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro SET_VELOCITY_DEFAULT]
|
||||||
|
gcode:
|
||||||
|
SET_VELOCITY_LIMIT ACCEL={printer.configfile.settings.printer.max_accel}
|
||||||
|
SET_VELOCITY_LIMIT ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel / 2}
|
||||||
|
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={printer.configfile.settings.printer.square_corner_velocity}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro M141]
|
||||||
|
gcode:
|
||||||
|
{% set s = params.S|default(0)|float %}
|
||||||
|
SET_TEMPERATURE_FAN_TARGET temperature_fan=chamber target={s}
|
||||||
|
|
||||||
|
[gcode_macro M191]
|
||||||
|
gcode:
|
||||||
|
{% set s = params.S|default(0)|float %}
|
||||||
|
M141 S{s}
|
||||||
|
TEMPERATURE_WAIT SENSOR="temperature_fan chamber" MINIMUM={s}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro M600]
|
||||||
|
gcode:
|
||||||
|
#LCDRGB R=0 G=1 B=0 ; Turn LCD green
|
||||||
|
PAUSE ; Pause
|
||||||
|
|
||||||
|
[gcode_macro PAUSE]
|
||||||
|
rename_existing: BASE_PAUSE
|
||||||
|
gcode:
|
||||||
|
# Parameters
|
||||||
|
{% set z = params.Z|default(10)|int %} ; z hop amount
|
||||||
|
|
||||||
|
{% if printer['pause_resume'].is_paused|int == 0 %}
|
||||||
|
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE={z} ; set z hop variable for reference in resume macro
|
||||||
|
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=etemp VALUE={printer['extruder'].target} ; set hotend temp variable for reference in resume macro
|
||||||
|
|
||||||
|
SFS_DISABLE ; disable filament sensor
|
||||||
|
SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume
|
||||||
|
BASE_PAUSE ; pause print
|
||||||
|
{% if (printer.gcode_move.position.z + z) < printer.toolhead.axis_maximum.z %} ; check that zhop doesn't exceed z max
|
||||||
|
G91 ; relative positioning
|
||||||
|
G1 Z{z} F900 ; raise Z up by z hop amount
|
||||||
|
{% else %}
|
||||||
|
{ action_respond_info("Pause zhop exceeds maximum Z height.") } ; if z max is exceeded, show message and set zhop value for resume to 0
|
||||||
|
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=zhop VALUE=0
|
||||||
|
{% endif %}
|
||||||
|
G90 ; absolute positioning
|
||||||
|
G1 X{printer.toolhead.axis_maximum.x/2} Y{printer.toolhead.axis_minimum.y+5} F6000 ; park toolhead at front center
|
||||||
|
SAVE_GCODE_STATE NAME=PAUSEPARK ; save parked position in case toolhead is moved during the pause (otherwise the return zhop can error)
|
||||||
|
M104 S0 ; turn off hotend
|
||||||
|
SET_IDLE_TIMEOUT TIMEOUT=43200 ; set timeout to 12 hours
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro RESUME]
|
||||||
|
rename_existing: BASE_RESUME
|
||||||
|
variable_zhop: 0
|
||||||
|
variable_etemp: 0
|
||||||
|
gcode:
|
||||||
|
# Parameters
|
||||||
|
{% set e = params.E|default(2.5)|int %}
|
||||||
|
|
||||||
|
{% if printer['pause_resume'].is_paused|int == 1 %}
|
||||||
|
SFS_ENABLE ; enable filament sensor
|
||||||
|
#RESETRGB ; reset LCD color
|
||||||
|
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ; set timeout back to configured value
|
||||||
|
{% if etemp > 0 %}
|
||||||
|
M109 S{etemp|int} ; wait for hotend to heat back up
|
||||||
|
{% endif %}
|
||||||
|
RESTORE_GCODE_STATE NAME=PAUSEPARK MOVE=1 MOVE_SPEED=100 ; go back to parked position in case toolhead was moved during pause (otherwise the return zhop can error)
|
||||||
|
G91 ; relative positioning
|
||||||
|
M83 ; relative extruder positioning
|
||||||
|
{% if printer[printer.toolhead.extruder].temperature >= printer.configfile.settings.extruder.min_extrude_temp %}
|
||||||
|
G1 Z{zhop * -1} E{e} F900 ; prime nozzle by E, lower Z back down
|
||||||
|
{% else %}
|
||||||
|
G1 Z{zhop * -1} F900 ; lower Z back down without priming (just in case we are testing the macro with cold hotend)
|
||||||
|
{% endif %}
|
||||||
|
RESTORE_GCODE_STATE NAME=PAUSE MOVE=1 MOVE_SPEED=60 ; restore position
|
||||||
|
BASE_RESUME ; resume print
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[gcode_macro CANCEL_PRINT]
|
||||||
|
description: Cancel the actual running print
|
||||||
|
rename_existing: CANCEL_PRINT_BASE
|
||||||
|
gcode:
|
||||||
|
SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout} ;
|
||||||
|
CLEAR_PAUSE
|
||||||
|
SDCARD_RESET_FILE
|
||||||
|
PRINT_END
|
||||||
|
CANCEL_PRINT_BASE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro DUMP_PARAMETERS]
|
||||||
|
gcode:
|
||||||
|
{% for name1 in printer %}
|
||||||
|
{% for name2 in printer[name1] %}
|
||||||
|
{ action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) }
|
||||||
|
{% else %}
|
||||||
|
{ action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) }
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
[gcode_macro M109]
|
||||||
|
rename_existing: M99109
|
||||||
|
gcode:
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE=True
|
||||||
|
STATUS_HEATING
|
||||||
|
{% set s = params.S|float %}
|
||||||
|
|
||||||
|
{% if s != 0 %}
|
||||||
|
M104 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set hotend temp
|
||||||
|
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={s} MAXIMUM={s+1} ; Wait for hotend temp (within 1 degree)
|
||||||
|
{% endif %}
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_nozzle VALUE=False
|
||||||
|
STATUS_OFF
|
||||||
|
|
||||||
|
[gcode_macro M190]
|
||||||
|
rename_existing: M99190
|
||||||
|
gcode:
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE=True
|
||||||
|
STATUS_HEATING
|
||||||
|
{% set s = params.S|float %}
|
||||||
|
|
||||||
|
{% if s != 0 %}
|
||||||
|
M140 {% for p in params %}{'%s%s' % (p, params[p])}{% endfor %} ; Set bed temp
|
||||||
|
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={s} MAXIMUM={s+1} ; Wait for bed temp (within 1 degree)
|
||||||
|
{% endif %}
|
||||||
|
SET_GCODE_VARIABLE MACRO=_KNOMI_STATUS VARIABLE=heating_bed VALUE=False
|
||||||
|
STATUS_OFF
|
||||||
|
|
||||||
|
[gcode_macro DISABLE_XY]
|
||||||
|
gcode:
|
||||||
|
SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=0
|
||||||
|
SET_STEPPER_ENABLE STEPPER=stepper_y ENABLE=0
|
||||||
|
|
||||||
|
[gcode_macro INIT_BED_TYPE]
|
||||||
|
variable_bed_z_offset: 0
|
||||||
|
variable_bed_types: { 'Textured PEI Plate': 0.00, 'None': 0 }
|
||||||
|
gcode:
|
||||||
|
{% set bed_type = params.BED_TYPE|default("None") %}
|
||||||
|
{% set new_bed_z_offset = bed_types[bed_type] %}
|
||||||
|
{% if bed_z_offset != 0 %}
|
||||||
|
SET_GCODE_OFFSET Z_ADJUST={0-bed_z_offset|float}
|
||||||
|
SET_GCODE_VARIABLE MACRO=INIT_BED_TYPE VARIABLE=bed_z_offset VALUE=0
|
||||||
|
{% endif %}
|
||||||
|
{ action_respond_info("Selected bed type: {}".format(bed_type)) }
|
||||||
|
{ action_respond_info("Used bed z offset: {}".format(bed_z_offset)) }
|
||||||
|
{% if new_bed_z_offset %}
|
||||||
|
{ action_respond_info("Use bed type {} with z offset {}".format(bed_type, new_bed_z_offset)) }
|
||||||
|
SET_GCODE_VARIABLE MACRO=INIT_BED_TYPE VARIABLE=bed_z_offset VALUE={new_bed_z_offset}
|
||||||
|
SET_GCODE_OFFSET Z_ADJUST={new_bed_z_offset}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro LOAD_FILAMENT]
|
||||||
|
variable_load_distance: 72
|
||||||
|
variable_purge_distance: 0
|
||||||
|
gcode:
|
||||||
|
{% set speed = params.SPEED|default(300) %}
|
||||||
|
{% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %}
|
||||||
|
SAVE_GCODE_STATE NAME=load_state
|
||||||
|
G91
|
||||||
|
G92 E0
|
||||||
|
G1 E{load_distance} F{max_velocity} # fast-load
|
||||||
|
G1 E{purge_distance} F{speed} # purge
|
||||||
|
RESTORE_GCODE_STATE NAME=load_state
|
||||||
|
|
||||||
|
[gcode_macro UNLOAD_FILAMENT]
|
||||||
|
variable_unload_distance: 76
|
||||||
|
variable_purge_distance: 0
|
||||||
|
gcode:
|
||||||
|
{% set speed = params.SPEED|default(300) %}
|
||||||
|
{% set max_velocity = printer.configfile.settings['extruder'].max_extrude_only_velocity * 60 %}
|
||||||
|
SAVE_GCODE_STATE NAME=unload_state
|
||||||
|
G91
|
||||||
|
G92 E0
|
||||||
|
G1 E{purge_distance} F{speed} # purge
|
||||||
|
G1 E-{unload_distance} F{max_velocity} # fast-unload
|
||||||
|
RESTORE_GCODE_STATE NAME=unload_state
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro test_speed_fast]
|
||||||
|
gcode:
|
||||||
|
G28 X0 Y0
|
||||||
|
GET_POSITION
|
||||||
|
G1 X0 Y0 F27000
|
||||||
|
G1 X350 Y350 F27000
|
||||||
|
G1 X0 Y0 F27000
|
||||||
|
G1 X350 Y350 F27000
|
||||||
|
|
||||||
|
G1 X0 Y350 F36000
|
||||||
|
|
||||||
|
G1 X350 Y0 F27000
|
||||||
|
G1 X0 Y350 F27000
|
||||||
|
G1 X350 Y0 F27000
|
||||||
|
G1 X0 Y350 F27000
|
||||||
|
|
||||||
|
G1 X0 Y0 F36000
|
||||||
|
G1 X350 Y0 F36000
|
||||||
|
G1 X350 Y350 F36000
|
||||||
|
G1 X0 Y350 F36000
|
||||||
|
G1 X0 Y0 F36000
|
||||||
|
#DISABLE_XY
|
||||||
|
G28 X0 Y0
|
||||||
|
GET_POSITION
|
||||||
|
|
||||||
|
[gcode_macro TEST_SPEED]
|
||||||
|
# Home, get position, throw around toolhead, home again.
|
||||||
|
# If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured.
|
||||||
|
# We only measure to a full step to accomodate for endstop variance.
|
||||||
|
# Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10
|
||||||
|
# https://github.com/AndrewEllis93/Print-Tuning-Guide/blob/main/articles/determining_max_speeds_accels.md
|
||||||
|
|
||||||
|
description: Test for max speed and acceleration parameters for the printer. Procedure: Home -> ReadPositionFromMCU -> MovesToolhead@Vel&Accel -> Home -> ReadPositionfromMCU
|
||||||
|
|
||||||
|
gcode:
|
||||||
|
# Speed
|
||||||
|
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
|
||||||
|
# Iterations
|
||||||
|
{% set iterations = params.ITERATIONS|default(5)|int %}
|
||||||
|
# Acceleration
|
||||||
|
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
|
||||||
|
# Minimum Cruise Ratio
|
||||||
|
{% set min_cruise_ratio = params.MIN_CRUISE_RATIO|default(0.5)|float %}
|
||||||
|
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
|
||||||
|
{% set bound = params.BOUND|default(20)|int %}
|
||||||
|
# Size for small pattern box
|
||||||
|
{% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}
|
||||||
|
|
||||||
|
# Large pattern
|
||||||
|
# Max positions, inset by BOUND
|
||||||
|
{% set x_min = printer.toolhead.axis_minimum.x + bound %}
|
||||||
|
{% set x_max = printer.toolhead.axis_maximum.x - bound %}
|
||||||
|
{% set y_min = printer.toolhead.axis_minimum.y + bound %}
|
||||||
|
{% set y_max = printer.toolhead.axis_maximum.y - bound %}
|
||||||
|
|
||||||
|
# Small pattern at center
|
||||||
|
# Find X/Y center point
|
||||||
|
{% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
|
||||||
|
{% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}
|
||||||
|
|
||||||
|
# Set small pattern box around center point
|
||||||
|
{% set x_center_min = x_center - (smallpatternsize/2) %}
|
||||||
|
{% set x_center_max = x_center + (smallpatternsize/2) %}
|
||||||
|
{% set y_center_min = y_center - (smallpatternsize/2) %}
|
||||||
|
{% set y_center_max = y_center + (smallpatternsize/2) %}
|
||||||
|
|
||||||
|
# Save current gcode state (absolute/relative, etc)
|
||||||
|
SAVE_GCODE_STATE NAME=TEST_SPEED
|
||||||
|
|
||||||
|
# Output parameters to g-code terminal
|
||||||
|
{ action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }
|
||||||
|
|
||||||
|
# Home and get position for comparison later:
|
||||||
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
||||||
|
G28
|
||||||
|
# QGL if not already QGLd (only if QGL section exists in config)
|
||||||
|
{% if printer.configfile.settings.quad_gantry_level %}
|
||||||
|
{% if printer.quad_gantry_level.applied == False %}
|
||||||
|
QUAD_GANTRY_LEVEL
|
||||||
|
G28 Z
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
# Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24)
|
||||||
|
G90
|
||||||
|
G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60}
|
||||||
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
||||||
|
G28 X Y
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
|
||||||
|
G4 P1000
|
||||||
|
GET_POSITION
|
||||||
|
|
||||||
|
# Go to starting position
|
||||||
|
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}
|
||||||
|
|
||||||
|
# Set new limits
|
||||||
|
{% if printer.configfile.settings.printer.minimum_cruise_ratio is defined %}
|
||||||
|
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} MINIMUM_CRUISE_RATIO={min_cruise_ratio}
|
||||||
|
{% else %}
|
||||||
|
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for i in range(iterations) %}
|
||||||
|
# Large pattern diagonals
|
||||||
|
G0 X{x_min} Y{y_min} F{speed*60}
|
||||||
|
G0 X{x_max} Y{y_max} F{speed*60}
|
||||||
|
G0 X{x_min} Y{y_min} F{speed*60}
|
||||||
|
G0 X{x_max} Y{y_min} F{speed*60}
|
||||||
|
G0 X{x_min} Y{y_max} F{speed*60}
|
||||||
|
G0 X{x_max} Y{y_min} F{speed*60}
|
||||||
|
|
||||||
|
# Large pattern box
|
||||||
|
G0 X{x_min} Y{y_min} F{speed*60}
|
||||||
|
G0 X{x_min} Y{y_max} F{speed*60}
|
||||||
|
G0 X{x_max} Y{y_max} F{speed*60}
|
||||||
|
G0 X{x_max} Y{y_min} F{speed*60}
|
||||||
|
|
||||||
|
# Small pattern diagonals
|
||||||
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
||||||
|
G0 X{x_center_max} Y{y_center_max} F{speed*60}
|
||||||
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
||||||
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
||||||
|
G0 X{x_center_min} Y{y_center_max} F{speed*60}
|
||||||
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
||||||
|
|
||||||
|
# Small pattern box
|
||||||
|
G0 X{x_center_min} Y{y_center_min} F{speed*60}
|
||||||
|
G0 X{x_center_min} Y{y_center_max} F{speed*60}
|
||||||
|
G0 X{x_center_max} Y{y_center_max} F{speed*60}
|
||||||
|
G0 X{x_center_max} Y{y_center_min} F{speed*60}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
# Restore max speed/accel/accel_to_decel to their configured values
|
||||||
|
{% if printer.configfile.settings.printer.minimum_cruise_ratio is defined %}
|
||||||
|
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} MINIMUM_CRUISE_RATIO={printer.configfile.settings.printer.minimum_cruise_ratio}
|
||||||
|
{% else %}
|
||||||
|
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# Re-home and get position again for comparison:
|
||||||
|
M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
|
||||||
|
G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12
|
||||||
|
# Go to XY home positions (in case your homing override leaves it elsewhere)
|
||||||
|
G90
|
||||||
|
G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
|
||||||
|
G4 P1000
|
||||||
|
GET_POSITION
|
||||||
|
|
||||||
|
# Restore previous gcode state (absolute/relative, etc)
|
||||||
|
RESTORE_GCODE_STATE NAME=TEST_SPEED
|
||||||
|
|
||||||
|
[gcode_macro test]
|
||||||
|
gcode:
|
||||||
|
{% set iterations = params.ITERATIONS|default(5)|int %}
|
||||||
|
;G32
|
||||||
|
SAVE_GCODE_STATE NAME=TEST
|
||||||
|
G1 Z10
|
||||||
|
;SET_VELOCITY_LIMIT ACCEL=8000
|
||||||
|
SET_VELOCITY_LIMIT ACCEL=10000 SQUARE_CORNER_VELOCITY=12
|
||||||
|
{% for i in range(iterations) %}
|
||||||
|
G1 F18000
|
||||||
|
G1 X300 Y300
|
||||||
|
G1 X150 Y50
|
||||||
|
{% endfor %}
|
||||||
|
SET_VELOCITY_DEFAULT
|
||||||
|
RESTORE_GCODE_STATE NAME=TEST
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _bot_data]
|
||||||
|
variable_lapse_video_size: 0
|
||||||
|
variable_lapse_filename: 'None'
|
||||||
|
variable_lapse_path: 'None'
|
||||||
|
gcode:
|
||||||
|
M118 Setting bot lapse variables
|
||||||
158
macros/nozzle_scrub.cfg
Normal file
158
macros/nozzle_scrub.cfg
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
[gcode_macro clean_nozzle]
|
||||||
|
variable_location_bucket_rear: True
|
||||||
|
variable_enable_purge: True
|
||||||
|
|
||||||
|
# These parameters define your filament purging. The retract variable is used to retract right after purging to prevent unnecessary
|
||||||
|
# oozing. Some filament are particularly oozy and may continue to ooze out of the nozzle for a second or two after retracting. The
|
||||||
|
# ooze dwell variable makes allowance for this. Update as necessary. If you decided to not enable purge, you can ignore this section.
|
||||||
|
variable_purge_len: 20 ; Amount of filament, in mm, to purge.
|
||||||
|
variable_purge_spd: 150 ; Speed, in mm/min, of the purge.
|
||||||
|
variable_purge_temp_min: 200 ; Minimum nozzle temperature to permit a purge. Otherwise, purge will not occur.
|
||||||
|
variable_purge_ret: 2 ; Retract length, in mm, after purging to prevent slight oozing. Adjust as necessary.
|
||||||
|
variable_ooze_dwell: 4 ; Dwell/wait time, in seconds, after purging and retracting.
|
||||||
|
|
||||||
|
# Adjust this so that your nozzle scrubs within the brush. Currently defaulted to be a lot higher for safety. Be careful not to go too low!
|
||||||
|
variable_brush_top: 0
|
||||||
|
|
||||||
|
# These parameters define your scrubbing, travel speeds, safe z clearance and how many times you want to wipe. Update as necessary. Wipe
|
||||||
|
# direction is randomized based off whether the left or right bucket is randomly selected in the purge & scrubbing routine.
|
||||||
|
variable_clearance_z: 5 ; When traveling, but not cleaning, the clearance along the z-axis between nozzle and brush.
|
||||||
|
variable_wipe_qty: 3 ; Number of complete (A complete wipe: left, right, left OR right, left, right) wipes.
|
||||||
|
variable_prep_spd_xy: 3000 ; Travel (not cleaning) speed along x and y-axis in mm/min.
|
||||||
|
variable_prep_spd_z: 1500 ; Travel (not cleaning) speed along z axis in mm/min.
|
||||||
|
variable_wipe_spd_xy: 5000 ; Nozzle wipe speed in mm/min.
|
||||||
|
|
||||||
|
|
||||||
|
# These parameters define the size of the brush. Update as necessary. A visual reference is provided below. Note that orientation of
|
||||||
|
# parameters remain the same whether bucket is at rear or front.
|
||||||
|
#
|
||||||
|
# ← brush_width →
|
||||||
|
# _________________ ↑
|
||||||
|
# | | ↑ If you chose location_bucket_rear = True, Y position is acquired
|
||||||
|
# brush_start (x) | | brush_depth from your stepper_y position_max. Adjust your brush physically in
|
||||||
|
# |_________________| ↓ Y so that the nozzle scrubs within the brush.
|
||||||
|
# (y) ↓
|
||||||
|
# brush_front
|
||||||
|
# __________________________________________________________
|
||||||
|
# PRINTER FRONT
|
||||||
|
#
|
||||||
|
#
|
||||||
|
variable_brush_start: 75
|
||||||
|
# This value is defaulted from brush location in CAD (rear left). Change if your brush width is different.
|
||||||
|
variable_brush_width: 52
|
||||||
|
|
||||||
|
## These are only used if location_bucket_rear is False. You specify a custom location in y axis for your brush - see diagram above. ##
|
||||||
|
variable_brush_front: 0
|
||||||
|
variable_brush_depth: 2
|
||||||
|
|
||||||
|
|
||||||
|
# These parameters define the size of your purge bucket. Update as necessary. If you decided to not enable purge, you can ignore
|
||||||
|
# this section. A visual reference is provided below. Note that orientation of parameters remain the same whether bucket is at rear
|
||||||
|
# or front.
|
||||||
|
#
|
||||||
|
# bucket_gap
|
||||||
|
# ← ---- →
|
||||||
|
# __________________________________________
|
||||||
|
# | | | |
|
||||||
|
# | | | |
|
||||||
|
# bucket_start (x) | |______| |
|
||||||
|
# | | | |
|
||||||
|
# | | | |
|
||||||
|
# |_________________|. . . |_________________|
|
||||||
|
# ← ------------- → ← ------------- →
|
||||||
|
# bucket_left_width bucket_right_width
|
||||||
|
# _______________________________________________________________________________________
|
||||||
|
# PRINTER FRONT
|
||||||
|
#
|
||||||
|
## For V2.4 350mm build, uncomment below
|
||||||
|
variable_bucket_left_width: 92
|
||||||
|
|
||||||
|
# These values are defaulted from bucket geometry in CAD (rear left location). Change only if you're using a custom bucket.
|
||||||
|
variable_bucket_right_width: 40
|
||||||
|
variable_bucket_gap: 22
|
||||||
|
|
||||||
|
# For V1.8, you may need to measure where your bucket start is and input into bucket_start. Otherwise, a value of 0 is for a default
|
||||||
|
# installation of purge bucket at rear left.
|
||||||
|
variable_bucket_start: 0
|
||||||
|
variable_bucket_pos: 1
|
||||||
|
gcode:
|
||||||
|
STATUS_CLEANING
|
||||||
|
# First, check if the axes are homed.
|
||||||
|
{% if "xyz" in printer.toolhead.homed_axes %}
|
||||||
|
|
||||||
|
## Save the gcode state in this macro instance.
|
||||||
|
SAVE_GCODE_STATE NAME=clean_nozzle
|
||||||
|
|
||||||
|
## Set to absolute positioning.
|
||||||
|
G90
|
||||||
|
|
||||||
|
## Grab max position of Y-axis from config to use in setting a fixed y position for location_bucket_rear = True.
|
||||||
|
{% set Ry = printer.configfile.config["stepper_y"]["position_max"]|float %}
|
||||||
|
|
||||||
|
## Check if user enabled purge option or not.
|
||||||
|
{% if enable_purge %}
|
||||||
|
|
||||||
|
### Randomly select left or right bin for purge. 0 = left, 1 = right
|
||||||
|
SET_GCODE_VARIABLE MACRO=clean_nozzle VARIABLE=bucket_pos VALUE={(range(2) | random)}
|
||||||
|
|
||||||
|
### Raise Z for travel.
|
||||||
|
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||||
|
|
||||||
|
### Check if user chose to use rear location.
|
||||||
|
{% if location_bucket_rear %}
|
||||||
|
G1 Y{Ry} F{prep_spd_xy}
|
||||||
|
{% else %}
|
||||||
|
G1 Y{brush_front + (brush_depth / 2)} F{prep_spd_xy}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
### Position for purge. Randomly selects middle of left or right bucket. It references from the middle of the left bucket.
|
||||||
|
G1 X{bucket_start + (bucket_left_width / (2 - bucket_pos)) + (bucket_pos * bucket_gap) + (bucket_pos * (bucket_right_width / 2))}
|
||||||
|
|
||||||
|
### Perform purge if the temp is up to min temp. If not, it will skip and continue executing rest of macro. Small retract after
|
||||||
|
### purging to minimize any persistent oozing at 5x purge_spd. G4 dwell is in milliseconds, hence * 1000 in formula.
|
||||||
|
{% if printer.extruder.temperature >= purge_temp_min %}
|
||||||
|
M83 ; relative mode
|
||||||
|
G1 E{purge_len} F{purge_spd}
|
||||||
|
G1 E-{purge_ret} F{purge_spd * 5}
|
||||||
|
G4 P{ooze_dwell * 1000}
|
||||||
|
G92 E0 ; reset extruder
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
## Position for wipe. Either left or right of brush based off bucket_pos to avoid unnecessary travel.
|
||||||
|
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||||
|
G1 X{brush_start + (brush_width * bucket_pos)} F{prep_spd_xy}
|
||||||
|
|
||||||
|
## Check if user chose to use rear location.
|
||||||
|
{% if location_bucket_rear %}
|
||||||
|
G1 Y{Ry}
|
||||||
|
{% else %}
|
||||||
|
G1 Y{brush_front + (brush_depth / 2)}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
## Move nozzle down into brush.
|
||||||
|
G1 Z{brush_top} F{prep_spd_z}
|
||||||
|
|
||||||
|
## Perform wipe. Wipe direction based off bucket_pos for cool random scrubby routine.
|
||||||
|
{% for wipes in range(1, (wipe_qty + 1)) %}
|
||||||
|
G1 X{brush_start + (brush_width * (1 - bucket_pos))} F{wipe_spd_xy}
|
||||||
|
G1 X{brush_start + (brush_width * bucket_pos)} F{wipe_spd_xy}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
## Clear from area.
|
||||||
|
M117 Cleaned!
|
||||||
|
G1 Z{brush_top + clearance_z} F{prep_spd_z}
|
||||||
|
G1 X{bucket_start + (bucket_left_width / 4)} F{prep_spd_xy} #bugfix for right side mounted buckets
|
||||||
|
|
||||||
|
## Restore the gcode state to how it was before the macro.
|
||||||
|
RESTORE_GCODE_STATE NAME=clean_nozzle
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
|
||||||
|
## raise error will stop any macros that clean_nozzle is referenced in from proceeding for safety.
|
||||||
|
{ action_raise_error("Please home your axes!") }
|
||||||
|
M117 Please home first!
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
STATUS_READY
|
||||||
254
macros/stealthburner_leds.cfg
Normal file
254
macros/stealthburner_leds.cfg
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
# Macros for setting the status leds on the Voron StealthBurner toolhead (or for any neopixel-type leds).
|
||||||
|
#
|
||||||
|
# You will need to configure a neopixel (or other addressable led, such as dotstar). See
|
||||||
|
# https://www.klipper3d.org/Config_Reference.html#neopixel for configuration details.
|
||||||
|
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# INSTRUCTIONS #
|
||||||
|
#####################################
|
||||||
|
# How to use all this stuff:
|
||||||
|
#
|
||||||
|
# 1. Copy this .cfg file into your Klipper config directory and then add [include stealthburner_leds.cfg]
|
||||||
|
# to the top of your printer.cfg in order to register the LEDs and macros with Klipper.
|
||||||
|
# 2. Define your LEDs by editing [neopixel sb_leds] below and entering the data pin from your control board
|
||||||
|
# as well as the color order.
|
||||||
|
#
|
||||||
|
# Note: RGB and RGBW are different and must be defined explicitly. RGB and RGBW are also not able to
|
||||||
|
# be mix-and-matched in the same chain. A separate data line would be needed for proper functioning.
|
||||||
|
#
|
||||||
|
# RGBW LEDs will have a visible yellow-ish phosphor section to the chip. If your LEDs do not have
|
||||||
|
# this yellow portion, you have RGB LEDs.
|
||||||
|
#
|
||||||
|
# 3. Save your config and restart Klipper.
|
||||||
|
#
|
||||||
|
# Note: We set RED and BLUE to 1.0 to make it easier for users and supporters to detect
|
||||||
|
# misconfigurations or miswiring. The default color format is for Neopixels with a dedicated
|
||||||
|
# white LED. On startup, all three SB LEDs should light up.
|
||||||
|
#
|
||||||
|
# If you get random colors across your LEDs, change the color_order to GRB and restart. Then
|
||||||
|
# omit the W for each suggested color_order in the next paragraph.
|
||||||
|
#
|
||||||
|
# If you get MAGENTA, your color order is correct. If you get CYAN, you need to use RGBW. If
|
||||||
|
# you get YELLOW, you need to use BRGW (note that BRG is only supported in the latest Klipper
|
||||||
|
# version).
|
||||||
|
#
|
||||||
|
# 4. Once you have confirmed that the LEDs are set up correctly, you must now decide where you want
|
||||||
|
# these macros called up...which means adding them to your existing gcode macros. NOTHING will happen
|
||||||
|
# unless you add the STATUS_????? macros to your existing gcode macros.
|
||||||
|
#
|
||||||
|
# Example: add STATUS_LEVELING to the beginning of your QGL gcode macro, and then add STATUS_READY
|
||||||
|
# to the end of it to set the logo LED and nozzle LEDs back to the `ready` state.
|
||||||
|
#
|
||||||
|
# Example: add STATUS_CLEANING to the beginning of your nozzle-cleaning macro, and then STATUS_READY
|
||||||
|
# to the end of it to return the LEDs back to `ready` state.
|
||||||
|
#
|
||||||
|
# 5. Feel free to change colors of each macro, create new ones if you have a need to. The macros provided below
|
||||||
|
# are just an example of what is possible. If you want to try some more complex animations, you will most
|
||||||
|
# likely have to use WLED with Moonraker and a small micro-controller
|
||||||
|
#
|
||||||
|
#####################################
|
||||||
|
# END INSTRUCTRUCTIONS #
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
[neopixel sb_leds]
|
||||||
|
#pin: EBBCan:gpio16 #sht:RGBLED
|
||||||
|
#pin: EXP1_6
|
||||||
|
# The pin connected to the neopixel. This parameter must be provided.
|
||||||
|
chain_count: 3
|
||||||
|
# The number of Neopixel chips that are "daisy chained" to the
|
||||||
|
# provided pin. The default is 1 (which indicates only a single
|
||||||
|
# Neopixel is connected to the pin).
|
||||||
|
color_order: GRBW
|
||||||
|
# Set the pixel order required by the LED hardware. Options are GRB,
|
||||||
|
# RGB, GRBW, or RGBW. The default is GRB.
|
||||||
|
initial_RED: 1.0
|
||||||
|
initial_GREEN: 0.0
|
||||||
|
initial_BLUE: 1.0
|
||||||
|
initial_WHITE: 0.0
|
||||||
|
# Sets the initial LED color of the Neopixel. Each value should be
|
||||||
|
# between 0.0 and 1.0. The WHITE option is only available on RGBW
|
||||||
|
# LEDs. The default for each color is 0.#
|
||||||
|
|
||||||
|
# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro
|
||||||
|
# at the start of this file.
|
||||||
|
|
||||||
|
##########
|
||||||
|
# MACROS #
|
||||||
|
##########
|
||||||
|
|
||||||
|
# The following status macros are available (these go inside of your macros):
|
||||||
|
#
|
||||||
|
# STATUS_READY
|
||||||
|
# STATUS_OFF
|
||||||
|
# STATUS_BUSY
|
||||||
|
# STATUS_HEATING
|
||||||
|
# STATUS_LEVELING
|
||||||
|
# STATUS_HOMING
|
||||||
|
# STATUS_CLEANING
|
||||||
|
# STATUS_MESHING
|
||||||
|
# STATUS_CALIBRATING_Z
|
||||||
|
#
|
||||||
|
# With additional macros for basic control:
|
||||||
|
#
|
||||||
|
# SET_NOZZLE_LEDS_ON
|
||||||
|
# SET_LOGO_LEDS_OFF
|
||||||
|
# SET_NOZZLE_LEDS_OFF
|
||||||
|
#
|
||||||
|
# Contributed by Voron discord users wile.e, Tetsunosuke, and etherwalker
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _sb_vars]
|
||||||
|
# User settings for the StealthBurner status leds. You can change the status colors and led
|
||||||
|
# configurations for the logo and nozzle here.
|
||||||
|
variable_colors: {
|
||||||
|
'logo': { # Colors for logo states
|
||||||
|
'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0},
|
||||||
|
'calibrating_z': {'r': 0.8, 'g': 0., 'b': 0.35, 'w': 0.0},
|
||||||
|
'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0},
|
||||||
|
'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0},
|
||||||
|
'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0},
|
||||||
|
'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'standby': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1},
|
||||||
|
},
|
||||||
|
'nozzle': { # Colors for nozzle states
|
||||||
|
'heating': {'r': 0.8, 'g': 0.35, 'b': 0.0, 'w':0.0},
|
||||||
|
'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'on': {'r': 0.8, 'g': 0.8, 'b': 0.8, 'w':1.0},
|
||||||
|
'standby': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0},
|
||||||
|
},
|
||||||
|
'thermal': {
|
||||||
|
'hot': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
|
||||||
|
'cold': {'r': 0.3, 'g': 0.0, 'b': 0.3, 'w': 0.0}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
variable_logo_led_name: "sb_leds"
|
||||||
|
# The name of the addressable LED chain that contains the logo LED(s)
|
||||||
|
variable_logo_idx: "1"
|
||||||
|
# A comma-separated list of indexes LEDs in the logo
|
||||||
|
variable_nozzle_led_name: "sb_leds"
|
||||||
|
# The name of the addressable LED chain that contains the nozzle LED(s). This will
|
||||||
|
# typically be the same LED chain as the logo.
|
||||||
|
variable_nozzle_idx: "2,3"
|
||||||
|
# A comma-separated list of indexes of LEDs in the nozzle
|
||||||
|
gcode:
|
||||||
|
# This section is required. Do Not Delete.
|
||||||
|
|
||||||
|
|
||||||
|
[gcode_macro _set_sb_leds]
|
||||||
|
gcode:
|
||||||
|
{% set red = params.RED|default(0)|float %}
|
||||||
|
{% set green = params.GREEN|default(0)|float %}
|
||||||
|
{% set blue = params.BLUE|default(0)|float %}
|
||||||
|
{% set white = params.WHITE|default(0)|float %}
|
||||||
|
{% set led = params.LED|string %}
|
||||||
|
{% set idx = (params.IDX|string).split(',') %}
|
||||||
|
{% set transmit_last = params.TRANSMIT|default(1) %}
|
||||||
|
|
||||||
|
{% for led_index in idx %}
|
||||||
|
{% set transmit=transmit_last if loop.last else 0 %}
|
||||||
|
set_led led={led} red={red} green={green} blue={blue} white={white} index={led_index} transmit={transmit}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
[gcode_macro _set_sb_leds_by_name]
|
||||||
|
gcode:
|
||||||
|
{% set leds_name = params.LEDS %}
|
||||||
|
{% set color_name = params.COLOR %}
|
||||||
|
{% set color = printer["gcode_macro _sb_vars"].colors[leds_name][color_name] %}
|
||||||
|
{% set led = printer["gcode_macro _sb_vars"][leds_name + "_led_name"] %}
|
||||||
|
{% set idx = printer["gcode_macro _sb_vars"][leds_name + "_idx"] %}
|
||||||
|
{% set transmit = params.TRANSMIT|default(1) %}
|
||||||
|
|
||||||
|
_set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro _set_logo_leds]
|
||||||
|
gcode:
|
||||||
|
{% set red = params.RED|default(0)|float %}
|
||||||
|
{% set green = params.GREEN|default(0)|float %}
|
||||||
|
{% set blue = params.BLUE|default(0)|float %}
|
||||||
|
{% set white = params.WHITE|default(0)|float %}
|
||||||
|
{% set led = printer["gcode_macro _sb_vars"].logo_led_name %}
|
||||||
|
{% set idx = printer["gcode_macro _sb_vars"].logo_idx %}
|
||||||
|
{% set transmit=params.TRANSMIT|default(1) %}
|
||||||
|
|
||||||
|
_set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro _set_nozzle_leds]
|
||||||
|
gcode:
|
||||||
|
{% set red = params.RED|default(0)|float %}
|
||||||
|
{% set green = params.GREEN|default(0)|float %}
|
||||||
|
{% set blue = params.BLUE|default(0)|float %}
|
||||||
|
{% set white = params.WHITE|default(0)|float %}
|
||||||
|
{% set led = printer["gcode_macro _sb_vars"].nozzle_led_name %}
|
||||||
|
{% set idx = printer["gcode_macro _sb_vars"].nozzle_idx %}
|
||||||
|
{% set transmit=params.TRANSMIT|default(1) %}
|
||||||
|
|
||||||
|
_set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro set_logo_leds_off]
|
||||||
|
gcode:
|
||||||
|
{% set transmit=params.TRANSMIT|default(1) %}
|
||||||
|
_set_logo_leds red=0 blue=0 green=0 white=0 transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro set_nozzle_leds_on]
|
||||||
|
gcode:
|
||||||
|
{% set transmit=params.TRANSMIT|default(1) %}
|
||||||
|
_set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro set_nozzle_leds_off]
|
||||||
|
gcode:
|
||||||
|
{% set transmit=params.TRANSMIT|default(1) %}
|
||||||
|
_set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit}
|
||||||
|
|
||||||
|
[gcode_macro status_off]
|
||||||
|
gcode:
|
||||||
|
set_logo_leds_off transmit=0
|
||||||
|
set_nozzle_leds_off
|
||||||
|
|
||||||
|
[gcode_macro status_ready]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="standby" transmit=0
|
||||||
|
_set_sb_leds_by_name leds="nozzle" color="standby" transmit=1
|
||||||
|
|
||||||
|
[gcode_macro status_busy]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="busy" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_heating]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="heating" transmit=0
|
||||||
|
_set_sb_leds_by_name leds="nozzle" color="heating" transmit=1
|
||||||
|
|
||||||
|
[gcode_macro status_leveling]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="leveling" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_homing]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="homing" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_cleaning]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="cleaning" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_meshing]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="meshing" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_calibrating_z]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
|
|
||||||
|
[gcode_macro status_printing]
|
||||||
|
gcode:
|
||||||
|
_set_sb_leds_by_name leds="logo" color="printing" transmit=0
|
||||||
|
set_nozzle_leds_on
|
||||||
91
macros/tools.cfg
Normal file
91
macros/tools.cfg
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
#Аргументы
|
||||||
|
#NAME (строка) — отфильтруйте результаты по названию (отображайте только переменные с названиями, содержащими эту строку)
|
||||||
|
#VALUE (строка) — отфильтруйте результаты по значению (отображайте только значения, содержащие это значение)
|
||||||
|
#SHOW_CFG (целое число, 0-1) — установите значение 1, чтобы включить в вывод всю конфигурацию. По умолчанию 0 (конфигурация отфильтровывается)
|
||||||
|
#Примеры
|
||||||
|
#DUMP_VARIABLES: Возвращает все переменные (за исключением printer['configfile'].config и printer['configfile'].settings, так как они содержат всю конфигурацию).
|
||||||
|
#DUMP_VARIABLES NAME=stepper: Возвращает все переменные, в имени которых есть строка stepper.
|
||||||
|
#DUMP_VARIABLES VALUE=extruder : Возвращает все переменные, в значении которых есть строка extruder.
|
||||||
|
#DUMP_VARIABLES NAME=stepper VALUE=extruder : Возвращает все переменные, в названии которых есть строка stepper и в значении которых есть строка extruder.
|
||||||
|
#DUMP_VARIABLES SHOW_CFG=1 : Возвращает все переменные, включая конфигурацию.
|
||||||
|
|
||||||
|
[gcode_macro DUMP_VARIABLES]
|
||||||
|
gcode:
|
||||||
|
{% set filter_name = params.NAME|default('')|string|lower %}
|
||||||
|
{% set filter_value = params.VALUE|default('')|string|lower %}
|
||||||
|
{% set show_cfg = params.SHOW_CFG|default(0)|int %}
|
||||||
|
|
||||||
|
{% set out = [] %}
|
||||||
|
|
||||||
|
{% for key1 in printer %}
|
||||||
|
{% for key2 in printer[key1] %}
|
||||||
|
{% if (show_cfg or not (key1|lower == 'configfile' and key2|lower in ['config', 'settings'])) and (filter_name in key1|lower or filter_name in key2|lower) and filter_value in printer[key1][key2]|string|lower %}
|
||||||
|
{% set dummy = out.append("printer['%s'].%s = %s" % (key1, key2, printer[key1][key2])) %}
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if filter_name in key1|lower and filter_value in printer[key1]|string|lower %}
|
||||||
|
{% set dummy = out.append("printer['%s'] = %s" % (key1, printer[key1])) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{action_respond_info(out|join("\n"))}
|
||||||
|
|
||||||
|
|
||||||
|
#Аргументы
|
||||||
|
#NAME (строка) (обязательно) — укажите имя переменной, которую вы хотите получить.
|
||||||
|
#Примеры
|
||||||
|
#GET_VARIABLE NAME=toolhead: Возвращает значение и тип переменной printer.toolhead.
|
||||||
|
#GET_VARIABLE NAME=bed_mesh.profiles.default.points.1.0: Возвращает значение и тип переменной printer.bed_mesh.profiles.default.points[1][0].
|
||||||
|
[gcode_macro GET_VARIABLE]
|
||||||
|
gcode:
|
||||||
|
{% set names = (params.NAME).split('.')|list %}
|
||||||
|
{% set join = (params.JOIN)|default(1)|int %}
|
||||||
|
|
||||||
|
{% set _dummy0 = namespace( break = 0 ) %}
|
||||||
|
{% set _dummy1 = namespace( out = printer[names|first] ) %}
|
||||||
|
|
||||||
|
{% for name in names if _dummy0.break == 0 %}
|
||||||
|
{% if loop.index > 1 %}
|
||||||
|
{% if name in _dummy1.out %}
|
||||||
|
{% set _dummy1.out = _dummy1.out[name] %}
|
||||||
|
{% elif name[0] in '0123456789' and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping and _dummy1.out|length > name[0]|int %}
|
||||||
|
{% set _dummy1.out = _dummy1.out[name|int] %}
|
||||||
|
{% else %}
|
||||||
|
{% set _dummy0.break = loop.index0 %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if _dummy1.out is boolean %}
|
||||||
|
{ action_respond_info('Type: boolean') }
|
||||||
|
{% elif _dummy1.out is float %}
|
||||||
|
{ action_respond_info('Type: float') }
|
||||||
|
{% elif _dummy1.out is integer %}
|
||||||
|
{ action_respond_info('Type: integer') }
|
||||||
|
{% elif _dummy1.out is mapping %}
|
||||||
|
{ action_respond_info('Type: mapping') }
|
||||||
|
{% elif _dummy1.out is string %}
|
||||||
|
{ action_respond_info('Type: string') }
|
||||||
|
{% elif _dummy1.out is iterable %}
|
||||||
|
{ action_respond_info('Type: iterable') }
|
||||||
|
{% elif _dummy1.out is none %}
|
||||||
|
{ action_respond_info('Type: none') }
|
||||||
|
{% elif _dummy1.out is undefined %}
|
||||||
|
{ action_respond_info('Type: undefined') }
|
||||||
|
{% elif _dummy1.out is callable %}
|
||||||
|
{ action_respond_info('Type: callable') }
|
||||||
|
{% else %}
|
||||||
|
{ action_respond_info('Type: unknown') }
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if join and _dummy1.out is iterable and _dummy1.out is not string and _dummy1.out is not mapping %}
|
||||||
|
{ action_respond_info('%s' % _dummy1.out|join("\n")) }
|
||||||
|
{% else %}
|
||||||
|
{ action_respond_info('%s' % _dummy1.out) }
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if _dummy0.break != 0 %}
|
||||||
|
{ action_respond_info('"printer.%s" does not contain "%s"!' % (names[0:_dummy0.break]|join('.'), names[_dummy0.break])) }
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
1
mainsail.cfg
Symbolic link
1
mainsail.cfg
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/home/biqu/mainsail-config/client.cfg
|
||||||
9
moonraker-obico-update.cfg
Normal file
9
moonraker-obico-update.cfg
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[update_manager moonraker-obico]
|
||||||
|
type: git_repo
|
||||||
|
path: /home/biqu/moonraker-obico
|
||||||
|
origin: https://github.com/TheSpaghettiDetective/moonraker-obico.git
|
||||||
|
env: /home/biqu/moonraker-obico/../moonraker-obico-env/bin/python
|
||||||
|
requirements: requirements.txt
|
||||||
|
install_script: install.sh
|
||||||
|
managed_services:
|
||||||
|
moonraker-obico
|
||||||
34
moonraker-obico.cfg
Normal file
34
moonraker-obico.cfg
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
[server]
|
||||||
|
url = https://app.obico.io
|
||||||
|
|
||||||
|
[moonraker]
|
||||||
|
host = 127.0.0.1
|
||||||
|
port = 7125
|
||||||
|
# api_key = <grab one or set trusted hosts in moonraker>
|
||||||
|
|
||||||
|
[webcam]
|
||||||
|
disable_video_streaming = False
|
||||||
|
|
||||||
|
# CAUTION: Don't modify the settings below unless you know what you are doing
|
||||||
|
# In most cases webcam configuration will be automatically retrived from moonraker
|
||||||
|
#
|
||||||
|
# Lower target_fps if ffmpeg is using too much CPU. Capped at 25 for Pro users (including self-hosted) and 5 for Free users
|
||||||
|
# target_fps = 25
|
||||||
|
#
|
||||||
|
snapshot_url = http://127.0.0.1:8080/?action=snapshot
|
||||||
|
stream_url = http://127.0.0.1:8080/?action=stream
|
||||||
|
# flip_h = False
|
||||||
|
# flip_v = False
|
||||||
|
# rotation = 0
|
||||||
|
# aspect_ratio_169 = False
|
||||||
|
|
||||||
|
[logging]
|
||||||
|
path = /home/biqu/printer_data/logs/moonraker-obico.log
|
||||||
|
# level = INFO
|
||||||
|
|
||||||
|
[tunnel]
|
||||||
|
# CAUTION: Don't modify the settings below unless you know what you are doing
|
||||||
|
# dest_host = 127.0.0.1
|
||||||
|
dest_port = 80
|
||||||
|
# dest_is_ssl = False
|
||||||
|
|
||||||
120
moonraker.conf
Normal file
120
moonraker.conf
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
[server]
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 7125
|
||||||
|
klippy_uds_address: /home/biqu/printer_data/comms/klippy.sock
|
||||||
|
|
||||||
|
[authorization]
|
||||||
|
trusted_clients:
|
||||||
|
10.0.0.0/8
|
||||||
|
127.0.0.0/8
|
||||||
|
169.254.0.0/16
|
||||||
|
172.16.0.0/12
|
||||||
|
192.168.0.0/16
|
||||||
|
FE80::/10
|
||||||
|
::1/128
|
||||||
|
cors_domains:
|
||||||
|
*.lan
|
||||||
|
*.local
|
||||||
|
*://localhost
|
||||||
|
*://localhost:*
|
||||||
|
*://my.mainsail.xyz
|
||||||
|
*://app.fluidd.xyz
|
||||||
|
|
||||||
|
[octoprint_compat]
|
||||||
|
|
||||||
|
[history]
|
||||||
|
|
||||||
|
[file_manager]
|
||||||
|
enable_object_processing: True
|
||||||
|
|
||||||
|
[timelapse]
|
||||||
|
#snapshoturl: http://192.168.1.31/capture
|
||||||
|
#output_path: /mnt/microsd/video
|
||||||
|
#frame_path: /mnt/microsd/video/tmp/
|
||||||
|
ffmpeg_binary_path: /usr/bin/ffmpeg
|
||||||
|
|
||||||
|
[update_manager]
|
||||||
|
channel: stable
|
||||||
|
refresh_interval: 168
|
||||||
|
|
||||||
|
[power MainPower]
|
||||||
|
type: klipper_device
|
||||||
|
object_name: output_pin ps_on
|
||||||
|
initial_state: on
|
||||||
|
|
||||||
|
[update_manager klipper_tmc_autotune]
|
||||||
|
type: git_repo
|
||||||
|
channel: dev
|
||||||
|
path: ~/klipper_tmc_autotune
|
||||||
|
origin: https://github.com/andrewmcgr/klipper_tmc_autotune.git
|
||||||
|
managed_services: klipper
|
||||||
|
primary_branch: main
|
||||||
|
install_script: install.sh
|
||||||
|
|
||||||
|
[update_manager timelapse]
|
||||||
|
type: git_repo
|
||||||
|
primary_branch: main
|
||||||
|
path: ~/moonraker-timelapse
|
||||||
|
origin: https://github.com/mainsail-crew/moonraker-timelapse.git
|
||||||
|
managed_services: klipper moonraker
|
||||||
|
|
||||||
|
[update_manager mainsail-config]
|
||||||
|
type: git_repo
|
||||||
|
primary_branch: master
|
||||||
|
path: ~/mainsail-config
|
||||||
|
origin: https://github.com/mainsail-crew/mainsail-config.git
|
||||||
|
managed_services: klipper
|
||||||
|
|
||||||
|
[update_manager mainsail]
|
||||||
|
type: web
|
||||||
|
channel: stable
|
||||||
|
repo: mainsail-crew/mainsail
|
||||||
|
path: ~/mainsail
|
||||||
|
|
||||||
|
# Crowsnest update_manager entry
|
||||||
|
[update_manager crowsnest]
|
||||||
|
type: git_repo
|
||||||
|
path: ~/crowsnest
|
||||||
|
origin: https://github.com/mainsail-crew/crowsnest.git
|
||||||
|
managed_services: crowsnest
|
||||||
|
install_script: tools/pkglist.sh
|
||||||
|
|
||||||
|
# Sonar update_manager entry
|
||||||
|
[update_manager sonar]
|
||||||
|
type: git_repo
|
||||||
|
path: ~/sonar
|
||||||
|
origin: https://github.com/mainsail-crew/sonar.git
|
||||||
|
primary_branch: main
|
||||||
|
managed_services: sonar
|
||||||
|
install_script: tools/install.sh
|
||||||
|
|
||||||
|
[update_manager katapult]
|
||||||
|
type: git_repo
|
||||||
|
origin: https://github.com/Arksine/katapult.git
|
||||||
|
path: ~/katapult
|
||||||
|
is_system_service: False
|
||||||
|
|
||||||
|
[update_manager KlipperScreen]
|
||||||
|
type: git_repo
|
||||||
|
path: ~/KlipperScreen
|
||||||
|
origin: https://github.com/KlipperScreen/KlipperScreen.git
|
||||||
|
virtualenv: ~/.KlipperScreen-env
|
||||||
|
requirements: scripts/KlipperScreen-requirements.txt
|
||||||
|
system_dependencies: scripts/system-dependencies.json
|
||||||
|
managed_services: KlipperScreen
|
||||||
|
|
||||||
|
[update_manager Klipper-Adaptive-Meshing-Purging]
|
||||||
|
type: git_repo
|
||||||
|
channel: dev
|
||||||
|
path: ~/Klipper-Adaptive-Meshing-Purging
|
||||||
|
origin: https://github.com/kyleisah/Klipper-Adaptive-Meshing-Purging.git
|
||||||
|
managed_services: klipper
|
||||||
|
primary_branch: main
|
||||||
|
|
||||||
|
[update_manager moonraker-telegram-bot]
|
||||||
|
install_script: scripts/install.sh
|
||||||
|
requirements: scripts/requirements.txt
|
||||||
|
env: /home/biqu/moonraker-telegram-bot-env/bin/python
|
||||||
|
origin: https://github.com/nlef/moonraker-telegram-bot.git
|
||||||
|
path: /home/biqu/moonraker-telegram-bot
|
||||||
|
type: git_repo
|
||||||
1
moonraker_obico_macros.cfg
Symbolic link
1
moonraker_obico_macros.cfg
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/home/biqu/moonraker-obico/scripts/../include_cfgs/moonraker_obico_macros.cfg
|
||||||
46
nevermore.cfg
Normal file
46
nevermore.cfg
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
## This is a simple include for the Nevermore. To use it with your printer, edit
|
||||||
|
## the pin definition in line 16 so it matches your printer.
|
||||||
|
## What you get:
|
||||||
|
## - a generic fan "Nevermore" which is adjustable in GCODE and in Mainsail/Fluidd
|
||||||
|
## - Commands in your 12864-controller to turn the fan on/off or adjust in 10%-steps
|
||||||
|
## - a Macro to turn the fan off some time after the print.
|
||||||
|
##
|
||||||
|
## Slicer integration: Add "SET_FAN_SPEED FAN=Nevermore SPEED=1" in your start-macro
|
||||||
|
## (or less fan depending on your needs, like SPEED=0.8)
|
||||||
|
## in your end print code, add "UPDATE_DELAYED_GCODE ID=filter_off DURATION=180"
|
||||||
|
## this keeps your Nevermore running for 180s after the print finishes to clean the chamber a bit more.
|
||||||
|
|
||||||
|
[fan_generic Nevermore]
|
||||||
|
## Nevermore - FAN5 on Octopus
|
||||||
|
## Adjust if you use a different board or a different terminal.
|
||||||
|
pin: PD15
|
||||||
|
|
||||||
|
[menu __main __control __nevermoreonoff]
|
||||||
|
type: command
|
||||||
|
name: Nevermore {'ON' if printer['fan_generic Nevermore'].speed > 0 else 'OFF'}
|
||||||
|
enable: {'fan_generic Nevermore' in printer}
|
||||||
|
gcode:
|
||||||
|
TOGGLE_NEVERMORE
|
||||||
|
|
||||||
|
[menu __main __control __filterspeed]
|
||||||
|
type: input
|
||||||
|
enable: {'fan_generic Nevermore' in printer}
|
||||||
|
name: Filter %: {'%3d' % (menu.input*100)}%
|
||||||
|
input: {printer["fan_generic Nevermore"].speed}
|
||||||
|
input_min: 0
|
||||||
|
input_max: 1
|
||||||
|
input_step: 0.1
|
||||||
|
gcode:
|
||||||
|
SET_FAN_SPEED FAN=Nevermore SPEED={menu.input}
|
||||||
|
|
||||||
|
[delayed_gcode filter_off]
|
||||||
|
gcode:
|
||||||
|
SET_FAN_SPEED FAN=Nevermore SPEED=0
|
||||||
|
|
||||||
|
[gcode_macro TOGGLE_NEVERMORE]
|
||||||
|
gcode:
|
||||||
|
{% if printer['fan_generic Nevermore'].speed > 0 %}
|
||||||
|
SET_FAN_SPEED FAN=Nevermore SPEED=0
|
||||||
|
{% else %}
|
||||||
|
SET_FAN_SPEED FAN=Nevermore SPEED=1
|
||||||
|
{% endif %}
|
||||||
203
octopus_pro_1.1.cfg
Normal file
203
octopus_pro_1.1.cfg
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
[mcu]
|
||||||
|
canbus_uuid: afcf80281237
|
||||||
|
|
||||||
|
[temperature_sensor OctopusPro]
|
||||||
|
sensor_type: temperature_mcu
|
||||||
|
|
||||||
|
[output_pin ps_on]
|
||||||
|
pin: PE11
|
||||||
|
value: 1
|
||||||
|
shutdown_value: 1
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# X/Y Stepper Settings
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
## ldo-42sth48-2004mah
|
||||||
|
|
||||||
|
## X Stepper on Motor0 (B Motor)
|
||||||
|
[stepper_x]
|
||||||
|
enable_pin: !PF14
|
||||||
|
step_pin: PF13
|
||||||
|
dir_pin: PF12
|
||||||
|
microsteps: 128
|
||||||
|
endstop_pin: tmc2240_stepper_x:virtual_endstop
|
||||||
|
|
||||||
|
[tmc2240 stepper_x]
|
||||||
|
interpolate: True
|
||||||
|
cs_pin: PC4
|
||||||
|
spi_software_sclk_pin: PA5
|
||||||
|
spi_software_mosi_pin: PA7
|
||||||
|
spi_software_miso_pin: PA6
|
||||||
|
diag0_pin: ^!PG6
|
||||||
|
driver_SGT: 2 #1-3 # -64 is most sensitive value, 63 is least sensitive
|
||||||
|
run_current: 1.25 #1.25
|
||||||
|
stealthchop_threshold: 0
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
## Y Stepper on Motor2 (A Motor)
|
||||||
|
[stepper_y]
|
||||||
|
enable_pin: !PG5
|
||||||
|
step_pin: PF11
|
||||||
|
dir_pin: PG3
|
||||||
|
microsteps: 128
|
||||||
|
endstop_pin: tmc2240_stepper_y:virtual_endstop
|
||||||
|
|
||||||
|
[tmc2240 stepper_y]
|
||||||
|
interpolate: True
|
||||||
|
cs_pin: PC6
|
||||||
|
spi_software_sclk_pin: PA5
|
||||||
|
spi_software_mosi_pin: PA7
|
||||||
|
spi_software_miso_pin: PA6
|
||||||
|
diag0_pin: ^!PG10
|
||||||
|
driver_SGT: 2 #2-3 #range is -64 to +63
|
||||||
|
run_current: 1.25 #1.25
|
||||||
|
stealthchop_threshold: 0
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
|
||||||
|
[autotune_tmc stepper_x]
|
||||||
|
motor: ldo-42sth48-2004mah
|
||||||
|
extra_hysteresis: 4
|
||||||
|
sgt: 2
|
||||||
|
[autotune_tmc stepper_y]
|
||||||
|
motor: ldo-42sth48-2004mah
|
||||||
|
extra_hysteresis: 4
|
||||||
|
sgt: 2
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Z Stepper Settings
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
## Z0 Stepper - Front Left on MOTOR4
|
||||||
|
[stepper_z]
|
||||||
|
enable_pin: !PG2
|
||||||
|
step_pin: PF9
|
||||||
|
dir_pin: PF10
|
||||||
|
microsteps: 128 #128
|
||||||
|
endstop_pin: probe:z_virtual_endstop
|
||||||
|
|
||||||
|
[tmc2209 stepper_z]
|
||||||
|
uart_pin: PF2
|
||||||
|
interpolate: True
|
||||||
|
run_current: 0.8
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
## Z1 Stepper - Rear Left on Motor5
|
||||||
|
[stepper_z1]
|
||||||
|
enable_pin: !PF1
|
||||||
|
step_pin: PC13
|
||||||
|
dir_pin: !PF0
|
||||||
|
microsteps: 128
|
||||||
|
|
||||||
|
[tmc2209 stepper_z1]
|
||||||
|
uart_pin: PE4
|
||||||
|
interpolate: True
|
||||||
|
run_current: 0.8
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
## Z2 Stepper - Rear Right on Motor6
|
||||||
|
[stepper_z2]
|
||||||
|
enable_pin: !PD4
|
||||||
|
step_pin: PE2
|
||||||
|
dir_pin: PE3
|
||||||
|
microsteps: 128
|
||||||
|
|
||||||
|
[tmc2209 stepper_z2]
|
||||||
|
uart_pin: PE1
|
||||||
|
interpolate: True
|
||||||
|
run_current: 0.8
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
## Z3 Stepper - Fron Right on Motor7
|
||||||
|
[stepper_z3]
|
||||||
|
enable_pin: !PE0
|
||||||
|
step_pin: PE6
|
||||||
|
dir_pin: !PA14
|
||||||
|
microsteps: 128
|
||||||
|
|
||||||
|
[tmc2209 stepper_z3]
|
||||||
|
uart_pin: PD3
|
||||||
|
interpolate: True
|
||||||
|
run_current: 0.8
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 999999
|
||||||
|
|
||||||
|
[autotune_tmc stepper_z]
|
||||||
|
motor: ldo-42sth48-2004ac
|
||||||
|
[autotune_tmc stepper_z1]
|
||||||
|
motor: ldo-42sth48-2004ac
|
||||||
|
[autotune_tmc stepper_z2]
|
||||||
|
motor: ldo-42sth48-2004ac
|
||||||
|
[autotune_tmc stepper_z3]
|
||||||
|
motor: ldo-42sth48-2004ac
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Bed Heater
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[heater_bed]
|
||||||
|
heater_pin: PA0
|
||||||
|
sensor_type: Generic 3950
|
||||||
|
sensor_pin: PF3
|
||||||
|
#max_power: 0.6
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Fans
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[controller_fan stepper_drivers_fan]
|
||||||
|
pin: PA8
|
||||||
|
stepper: stepper_x, stepper_y
|
||||||
|
idle_speed: 0
|
||||||
|
fan_speed: 0.6
|
||||||
|
|
||||||
|
[heater_fan Nevermore]
|
||||||
|
pin: PE5
|
||||||
|
heater_temp: 90
|
||||||
|
max_power: 1.0
|
||||||
|
kick_start_time: 0.5
|
||||||
|
heater: heater_bed
|
||||||
|
fan_speed: 1
|
||||||
|
|
||||||
|
[temperature_fan chamber]
|
||||||
|
pin: PD14
|
||||||
|
max_power: 1.0
|
||||||
|
shutdown_speed: 0.0
|
||||||
|
kick_start_time: 5.0
|
||||||
|
cycle_time:0.01
|
||||||
|
off_below:0.1
|
||||||
|
hardware_pwm: True
|
||||||
|
sensor_type: ATC Semitec 104NT-4-R025H42G
|
||||||
|
sensor_pin: PF4
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 70
|
||||||
|
target_temp: 40
|
||||||
|
control: watermark
|
||||||
|
gcode_id: C
|
||||||
|
|
||||||
|
|
||||||
|
[multi_pin soc_pin]
|
||||||
|
pins: PD12, PD13
|
||||||
|
|
||||||
|
|
||||||
|
[fan_generic SoC]
|
||||||
|
pin: multi_pin: soc_pin
|
||||||
|
max_power: 1
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# LED Control
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[neopixel chamber_leds]
|
||||||
|
pin: PB10
|
||||||
|
chain_count: 50 #50
|
||||||
|
color_order: GRB
|
||||||
|
initial_RED: 1.0
|
||||||
|
initial_GREEN: 1.0
|
||||||
|
initial_BLUE: 1.0
|
||||||
|
initial_WHITE: 0.0
|
||||||
229
printer.cfg
Normal file
229
printer.cfg
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
|
||||||
|
[include mainsail.cfg]
|
||||||
|
[include timelapse.cfg]
|
||||||
|
#[include hbb.cfg]
|
||||||
|
|
||||||
|
[mcu host]
|
||||||
|
serial: /tmp/klipper_host_mcu
|
||||||
|
|
||||||
|
[temperature_sensor BttPi2]
|
||||||
|
sensor_type: temperature_host
|
||||||
|
|
||||||
|
[include octopus_pro_1.1.cfg]
|
||||||
|
[include toolhead_sb.cfg]
|
||||||
|
#[include toolhead_sht36v2.cfg]
|
||||||
|
|
||||||
|
[printer]
|
||||||
|
kinematics: corexy
|
||||||
|
max_velocity: 500
|
||||||
|
max_accel: 8000 #Max 4000
|
||||||
|
max_z_velocity: 15 #Max 15 for 12V TMC Drivers, can increase for 24V
|
||||||
|
max_z_accel: 350
|
||||||
|
square_corner_velocity: 5.0
|
||||||
|
|
||||||
|
[force_move]
|
||||||
|
enable_force_move: true
|
||||||
|
|
||||||
|
[respond]
|
||||||
|
default_type: echo
|
||||||
|
default_prefix: echo:
|
||||||
|
|
||||||
|
[exclude_object]
|
||||||
|
|
||||||
|
[gcode_arcs]
|
||||||
|
resolution: 0.1
|
||||||
|
|
||||||
|
[skew_correction]
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# X/Y Stepper Settings
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
## X Stepper on Motor1(B Motor)
|
||||||
|
[stepper_x]
|
||||||
|
rotation_distance: 40 #39.8
|
||||||
|
full_steps_per_rotation:400
|
||||||
|
position_min: 0
|
||||||
|
position_endstop: 355 #355
|
||||||
|
position_max: 355 #355
|
||||||
|
homing_speed: 80 #25 #Max 100
|
||||||
|
#homing_retract_dist: 10
|
||||||
|
homing_retract_dist: 0
|
||||||
|
homing_positive_dir: true
|
||||||
|
|
||||||
|
## Y Stepper on Motor2 (A Motor)
|
||||||
|
[stepper_y]
|
||||||
|
full_steps_per_rotation:400
|
||||||
|
rotation_distance: 40 #39.8
|
||||||
|
position_min: 0
|
||||||
|
position_endstop: 355
|
||||||
|
position_max: 355
|
||||||
|
homing_speed: 100 #25 #Max 100
|
||||||
|
#homing_retract_dist: 5
|
||||||
|
homing_retract_dist: 0
|
||||||
|
homing_positive_dir: true
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Z Stepper Settings
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
## Z0 Stepper - Front Left on MOTOR3_A
|
||||||
|
[stepper_z]
|
||||||
|
rotation_distance: 40
|
||||||
|
gear_ratio: 80:16
|
||||||
|
position_max: 300
|
||||||
|
position_min: -20
|
||||||
|
homing_speed: 15
|
||||||
|
second_homing_speed: 3
|
||||||
|
homing_retract_dist: 3
|
||||||
|
|
||||||
|
[stepper_z1]
|
||||||
|
rotation_distance: 40
|
||||||
|
gear_ratio: 80:16
|
||||||
|
|
||||||
|
[stepper_z2]
|
||||||
|
rotation_distance: 40
|
||||||
|
gear_ratio: 80:16
|
||||||
|
|
||||||
|
[stepper_z3]
|
||||||
|
rotation_distance: 40
|
||||||
|
gear_ratio: 80:16
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Heater
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[verify_heater heater_bed]
|
||||||
|
max_error: 120
|
||||||
|
check_gain_time: 60
|
||||||
|
hysteresis: 5
|
||||||
|
heating_gain: 2
|
||||||
|
|
||||||
|
[verify_heater extruder]
|
||||||
|
#max_error: 120
|
||||||
|
check_gain_time: 30
|
||||||
|
#hysteresis: 5
|
||||||
|
#heating_gain: 2
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Bed Heater
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[heater_bed]
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 120
|
||||||
|
control: pid
|
||||||
|
pid_kp: 55.796
|
||||||
|
pid_ki: 2.797
|
||||||
|
pid_kd: 278.281
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Probe
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[probe]
|
||||||
|
x_offset: 0
|
||||||
|
y_offset: 0
|
||||||
|
#z_offset: -0.825
|
||||||
|
lift_speed: 15 #10
|
||||||
|
speed: 3.0 #5
|
||||||
|
samples: 3
|
||||||
|
samples_result: median
|
||||||
|
sample_retract_dist: 3
|
||||||
|
samples_tolerance: 0.005
|
||||||
|
samples_tolerance_retries: 6
|
||||||
|
activate_gcode:
|
||||||
|
{% set PROBE_TEMP = 150 %}
|
||||||
|
{% set MAX_TEMP = PROBE_TEMP + 5 %}
|
||||||
|
{% set ACTUAL_TEMP = printer.extruder.temperature %}
|
||||||
|
{% set TARGET_TEMP = printer.extruder.target %}
|
||||||
|
|
||||||
|
{% if TARGET_TEMP > PROBE_TEMP %}
|
||||||
|
{ action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) }
|
||||||
|
M109 S{ PROBE_TEMP }
|
||||||
|
{% else %}
|
||||||
|
# Temperature target is already low enough, but nozzle may still be too hot.
|
||||||
|
{% if ACTUAL_TEMP > MAX_TEMP %}
|
||||||
|
{ action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) }
|
||||||
|
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP }
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Homing and Gantry Adjustment Routines
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[idle_timeout]
|
||||||
|
timeout: 1800
|
||||||
|
gcode:
|
||||||
|
#_CHAMBER_LED_OFF
|
||||||
|
|
||||||
|
[quad_gantry_level]
|
||||||
|
gantry_corners:
|
||||||
|
-60,10
|
||||||
|
410,420
|
||||||
|
points:
|
||||||
|
#50,50
|
||||||
|
#50,300
|
||||||
|
#300,300
|
||||||
|
#300,50
|
||||||
|
50,50
|
||||||
|
50,300
|
||||||
|
300,300
|
||||||
|
300,50
|
||||||
|
speed: 500
|
||||||
|
horizontal_move_z: 6
|
||||||
|
retries: 10
|
||||||
|
retry_tolerance: 0.0075
|
||||||
|
max_adjust: 15
|
||||||
|
|
||||||
|
[bed_mesh]
|
||||||
|
speed: 450
|
||||||
|
horizontal_move_z: 5
|
||||||
|
#mesh_min: 40, 40
|
||||||
|
#mesh_max: 310,310
|
||||||
|
mesh_min: 35, 30
|
||||||
|
mesh_max: 316,308
|
||||||
|
fade_start: 0.6
|
||||||
|
fade_end: 10.0
|
||||||
|
probe_count: 5,5 # Values should be odd, so one point is directly at bed center
|
||||||
|
algorithm: bicubic
|
||||||
|
#relative_reference_index: 12 #40 #12 # Update when changing probe_count, to ((x points * y points) - 1) / 2. (the center point)
|
||||||
|
|
||||||
|
|
||||||
|
[include macros/main.cfg]
|
||||||
|
|
||||||
|
[include moonraker_obico_macros.cfg]
|
||||||
|
|
||||||
|
#*# <---------------------- SAVE_CONFIG ---------------------->
|
||||||
|
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
|
||||||
|
#*#
|
||||||
|
#*# [skew_correction default]
|
||||||
|
#*# xy_skew = -0.002120454472795053
|
||||||
|
#*# xz_skew = 0.0
|
||||||
|
#*# yz_skew = 0.0
|
||||||
|
#*#
|
||||||
|
#*# [probe]
|
||||||
|
#*# z_offset = -0.890
|
||||||
|
#*#
|
||||||
|
#*# [bed_mesh default]
|
||||||
|
#*# version = 1
|
||||||
|
#*# points =
|
||||||
|
#*# 0.010937, -0.010313, 0.022500
|
||||||
|
#*# 0.036562, 0.007812, 0.023750
|
||||||
|
#*# 0.033437, 0.001562, 0.022500
|
||||||
|
#*# x_count = 3
|
||||||
|
#*# y_count = 3
|
||||||
|
#*# mesh_x_pps = 2
|
||||||
|
#*# mesh_y_pps = 2
|
||||||
|
#*# algo = lagrange
|
||||||
|
#*# tension = 0.2
|
||||||
|
#*# min_x = 133.45799999999997
|
||||||
|
#*# max_x = 217.19799999999998
|
||||||
|
#*# min_y = 146.587
|
||||||
|
#*# max_y = 202.78699999999998
|
||||||
17
rapido_ace.cfg
Normal file
17
rapido_ace.cfg
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[extruder]
|
||||||
|
#Classic Ziegler-Nichols PID parameters:
|
||||||
|
#pid_kp: 41.785
|
||||||
|
#pid_ki: 25.323
|
||||||
|
#pid_kd: 17.237
|
||||||
|
##Pessen Integral Rule PID parameters:
|
||||||
|
#pid_kp: 48.749
|
||||||
|
#pid_ki: 36.930
|
||||||
|
#pid_kd: 24.131
|
||||||
|
#Some Overshoot PID parameters:
|
||||||
|
#pid_kp: 22.982
|
||||||
|
#№pid_ki: 13.928
|
||||||
|
#pid_kd: 25.027
|
||||||
|
#No Overshoot PID parameters:
|
||||||
|
pid_kp: 13.928
|
||||||
|
pid_ki: 8.441
|
||||||
|
pid_kd: 15.168
|
||||||
5
rapido_v2.cfg
Normal file
5
rapido_v2.cfg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[extruder]
|
||||||
|
control: pid
|
||||||
|
pid_Kp: 26.171
|
||||||
|
pid_Ki: 2.684
|
||||||
|
pid_Kd: 63.793
|
||||||
17
sonar.conf
Normal file
17
sonar.conf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#### Sonar - A WiFi Keepalive daemon
|
||||||
|
####
|
||||||
|
#### Written by Stephan Wendel aka KwadFan <me@stephanwe.de>
|
||||||
|
#### Copyright 2022
|
||||||
|
#### https://github.com/mainsail-crew/sonar
|
||||||
|
####
|
||||||
|
#### This File is distributed under GPLv3
|
||||||
|
####
|
||||||
|
|
||||||
|
[sonar]
|
||||||
|
enable: false # false to disable till next reboot (will stop again if not set to true)
|
||||||
|
debug_log: false # if set to true, sonar will log ever ping with triptime and date/time
|
||||||
|
persistant_log: false # If true logs in /var/log/sonar.log, false logs to systemd
|
||||||
|
target: auto # IP Address, URL or auto as ping target
|
||||||
|
count: 3 # How often should be pinged?
|
||||||
|
interval: 60 # Ping again after X seconds
|
||||||
|
restart_treshold: 10 # If failed, restart WiFi after X seconds
|
||||||
22
telegram.conf
Normal file
22
telegram.conf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Please refer to the wiki(https://github.com/nlef/moonraker-telegram-bot/wiki) for detailed information on how to configure the bot
|
||||||
|
|
||||||
|
[bot]
|
||||||
|
server: localhost
|
||||||
|
bot_token: 6179338772:AAGjgcT186TxlyuUM6lYfeymKLBaSYy-TZw
|
||||||
|
chat_id: 438453744
|
||||||
|
|
||||||
|
[camera]
|
||||||
|
host: http://localhost/webcam2/?action=stream #http://192.168.1.33:81/stream
|
||||||
|
flip_vertically: true
|
||||||
|
flip_horizontally: true
|
||||||
|
|
||||||
|
[progress_notification]
|
||||||
|
percent: 5
|
||||||
|
height: 5
|
||||||
|
time: 30
|
||||||
|
|
||||||
|
#[timelapse]
|
||||||
|
#cleanup: true
|
||||||
|
#height: 0.2
|
||||||
|
#time: 5
|
||||||
|
#target_fps: 30
|
||||||
1
timelapse.cfg
Symbolic link
1
timelapse.cfg
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
/home/biqu/moonraker-timelapse/klipper_macro/timelapse.cfg
|
||||||
161
toolhead_sb.cfg
Normal file
161
toolhead_sb.cfg
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
# SB RapidoV2 G2E
|
||||||
|
|
||||||
|
[include rapido_v2.cfg]
|
||||||
|
|
||||||
|
[mcu EBBCan]
|
||||||
|
canbus_uuid: 350f10596216
|
||||||
|
|
||||||
|
[firmware_retraction]
|
||||||
|
retract_length: 0.4
|
||||||
|
# The length of filament (in mm) to retract when G10 is activated,
|
||||||
|
# and to unretract when G11 is activated (but see
|
||||||
|
# unretract_extra_length below). The default is 0 mm.
|
||||||
|
retract_speed: 30
|
||||||
|
# The speed of retraction, in mm/s. The default is 20 mm/s.
|
||||||
|
#unretract_extra_length: 0
|
||||||
|
# The length (in mm) of *additional* filament to add when
|
||||||
|
# unretracting.
|
||||||
|
unretract_speed: 30
|
||||||
|
# The speed of unretraction, in mm/s. The default is 10 mm/s.
|
||||||
|
|
||||||
|
[adxl345]
|
||||||
|
cs_pin: EBBCan:gpio1
|
||||||
|
spi_software_sclk_pin: EBBCan:gpio2
|
||||||
|
spi_software_mosi_pin: EBBCan:gpio0
|
||||||
|
spi_software_miso_pin: EBBCan:gpio3
|
||||||
|
axes_map: z,-y,x
|
||||||
|
|
||||||
|
[resonance_tester]
|
||||||
|
probe_points: 177.5, 177.5, 50
|
||||||
|
accel_chip: adxl345
|
||||||
|
min_freq: 15
|
||||||
|
max_freq: 120
|
||||||
|
accel_per_hz: 125
|
||||||
|
hz_per_sec: 1
|
||||||
|
|
||||||
|
[input_shaper]
|
||||||
|
shaper_type_x: mzv
|
||||||
|
shaper_freq_x: 51
|
||||||
|
shaper_type_y: mzv
|
||||||
|
shaper_freq_y: 41.6
|
||||||
|
|
||||||
|
[temperature_sensor SB2209]
|
||||||
|
sensor_type: temperature_mcu
|
||||||
|
sensor_mcu: EBBCan
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Extruder
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[extruder]
|
||||||
|
step_pin: EBBCan:gpio18
|
||||||
|
dir_pin: EBBCan:gpio19
|
||||||
|
enable_pin: !EBBCan:gpio17
|
||||||
|
microsteps: 16
|
||||||
|
rotation_distance: 46.64 #G2E
|
||||||
|
gear_ratio: 9:1 #G2E
|
||||||
|
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
|
||||||
|
nozzle_diameter: 0.400
|
||||||
|
filament_diameter: 1.750
|
||||||
|
heater_pin: EBBCan:gpio7
|
||||||
|
|
||||||
|
#sensor_type: ATC Semitec 104NT-4-R025H42G
|
||||||
|
#sensor_pin: EBBCan:gpio27
|
||||||
|
|
||||||
|
#sensor_type: PT1000
|
||||||
|
#sensor_pin: EBBCan:gpio27
|
||||||
|
|
||||||
|
#pullup_resistor: 1000
|
||||||
|
|
||||||
|
sensor_type: MAX31865
|
||||||
|
sensor_pin: EBBCan:gpio9
|
||||||
|
spi_software_sclk_pin: EBBCan:gpio10
|
||||||
|
spi_software_mosi_pin: EBBCan:gpio8
|
||||||
|
spi_software_miso_pin: EBBCan:gpio11
|
||||||
|
rtd_nominal_r: 1000
|
||||||
|
rtd_reference_r: 4300
|
||||||
|
rtd_num_of_wires: 2
|
||||||
|
|
||||||
|
min_temp: 20
|
||||||
|
max_temp: 350
|
||||||
|
max_power: 1.0
|
||||||
|
max_extrude_only_distance: 300
|
||||||
|
max_extrude_cross_section: 5
|
||||||
|
min_extrude_temp: 20
|
||||||
|
|
||||||
|
control: pid
|
||||||
|
pid_Kp: 26.171
|
||||||
|
pid_Ki: 2.684
|
||||||
|
pid_Kd: 63.793
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[tmc2209 extruder]
|
||||||
|
uart_pin: EBBCan:gpio20
|
||||||
|
interpolate: false
|
||||||
|
run_current: 0.65 #0.6
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 0 # 999999
|
||||||
|
|
||||||
|
[autotune_tmc extruder]
|
||||||
|
motor: ldo-36sth20-1004ahg-9T
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Probe
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[probe]
|
||||||
|
pin: ^!EBBCan:gpio24
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Fan Control
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[fan]
|
||||||
|
hardware_pwm: True
|
||||||
|
off_below: 0.05
|
||||||
|
# Время (в секундах), необходимое для запуска вентилятора на полной скорости при первом включении
|
||||||
|
# или увеличении ее более чем на 50% (помогает запустить вентилятор). Значение по умолчанию равно 0,100 секунды.
|
||||||
|
#kick_start_time: 0.200
|
||||||
|
#kick_start_time: 0.5
|
||||||
|
# Время (в секундах), затрачиваемое на каждый цикл подачи питания на вентилятор с помощью ШИМ.
|
||||||
|
# Рекомендуется, чтобы это значение составляло 10 миллисекунд или более при использовании программного управления ШИМ.
|
||||||
|
# Значение по умолчанию равно 0,010 секунды.
|
||||||
|
#cycle_time: 0.01
|
||||||
|
pin: EBBCan:gpio15
|
||||||
|
tachometer_pin: EBBCan:gpio12
|
||||||
|
tachometer_poll_interval: 0.0005 #0.0005
|
||||||
|
#tachometer_ppr: 1
|
||||||
|
|
||||||
|
[heater_fan hotend_fan]
|
||||||
|
## Hotend Fan - CNC_FAN1
|
||||||
|
pin: EBBCan:gpio14
|
||||||
|
#max_power: 1.0
|
||||||
|
#kick_start_time: 0.5
|
||||||
|
heater: extruder
|
||||||
|
## If you are experiencing back flow, you can reduce fan_speed
|
||||||
|
#fan_speed: 1.0
|
||||||
|
|
||||||
|
[temperature_fan EbbFan]
|
||||||
|
pin: EBBCan:gpio6
|
||||||
|
max_power: 1.0
|
||||||
|
shutdown_speed: 0.0
|
||||||
|
#kick_start_time: 5.0
|
||||||
|
#cycle_time:0.01
|
||||||
|
#off_below:0.1
|
||||||
|
sensor_type: Generic 3950
|
||||||
|
sensor_pin: EBBCan:gpio28
|
||||||
|
min_temp: 0
|
||||||
|
max_temp: 100
|
||||||
|
target_temp: 60.0
|
||||||
|
control: watermark
|
||||||
|
#gcode_id: C
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# LED Control
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[neopixel sb_leds]
|
||||||
|
pin: EBBCan:gpio16
|
||||||
104
toolhead_sht36v2.cfg
Normal file
104
toolhead_sht36v2.cfg
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
[mcu sht]
|
||||||
|
canbus_uuid: 8ce295109ef0
|
||||||
|
|
||||||
|
[firmware_retraction]
|
||||||
|
retract_length: 0.4
|
||||||
|
retract_speed: 30
|
||||||
|
unretract_speed: 30
|
||||||
|
|
||||||
|
[adxl345]
|
||||||
|
cs_pin: sht:PA9
|
||||||
|
spi_bus: spi2
|
||||||
|
#axes_map: z,-y,x
|
||||||
|
|
||||||
|
[resonance_tester]
|
||||||
|
probe_points: 177.5, 177.5, 50
|
||||||
|
accel_chip: adxl345
|
||||||
|
min_freq: 15
|
||||||
|
max_freq: 120
|
||||||
|
accel_per_hz: 125
|
||||||
|
hz_per_sec: 1
|
||||||
|
|
||||||
|
[input_shaper]
|
||||||
|
shaper_type_x: mzv
|
||||||
|
shaper_freq_x: 51
|
||||||
|
shaper_type_y: mzv
|
||||||
|
shaper_freq_y: 41.6
|
||||||
|
|
||||||
|
[temperature_sensor sht36_v2]
|
||||||
|
sensor_type: temperature_mcu
|
||||||
|
sensor_mcu: sht
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Extruder
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[extruder]
|
||||||
|
step_pin: sht:PB4
|
||||||
|
dir_pin: sht:PB3
|
||||||
|
enable_pin: !sht:PA15
|
||||||
|
microsteps: 16
|
||||||
|
rotation_distance: 53.494165
|
||||||
|
gear_ratio: 44:10, 37:17
|
||||||
|
full_steps_per_rotation: 200 #200 for 1.8 degree, 400 for 0.9 degree
|
||||||
|
nozzle_diameter: 0.400
|
||||||
|
filament_diameter: 1.750
|
||||||
|
heater_pin: sht:PA8
|
||||||
|
sensor_type: PT1000
|
||||||
|
sensor_pin: sht:PA3
|
||||||
|
pullup_resistor: 1100
|
||||||
|
min_temp: 20
|
||||||
|
max_temp: 350
|
||||||
|
max_power: 1.0
|
||||||
|
max_extrude_only_distance: 300
|
||||||
|
max_extrude_cross_section: 5
|
||||||
|
min_extrude_temp: 20
|
||||||
|
control: pid
|
||||||
|
pid_Kp: 26.171
|
||||||
|
pid_Ki: 2.684
|
||||||
|
pid_Kd: 63.793
|
||||||
|
|
||||||
|
|
||||||
|
[tmc2209 extruder]
|
||||||
|
uart_pin: sht:PB5
|
||||||
|
#diag_pin: sht:PB6
|
||||||
|
interpolate: false
|
||||||
|
run_current: 0.65 #0.6
|
||||||
|
#sense_resistor: 0.110
|
||||||
|
#stealthchop_threshold: 0 # 999999
|
||||||
|
|
||||||
|
[autotune_tmc extruder]
|
||||||
|
motor: ldo-36sth20-1004ahg
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Probe
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[probe]
|
||||||
|
pin: ^!sht:PA2
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Fan Control
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[fan]
|
||||||
|
#hardware_pwm: True
|
||||||
|
#kick_start_time: 0.25
|
||||||
|
#cycle_time: 0.15
|
||||||
|
off_below: 0.05
|
||||||
|
pin: sht:PB11
|
||||||
|
|
||||||
|
[heater_fan hotend_fan]
|
||||||
|
pin: sht:PB10
|
||||||
|
heater: extruder
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# LED Control
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
[neopixel sb_leds]
|
||||||
|
pin: sht:PB0
|
||||||
Reference in New Issue
Block a user