This is the “newcomer”, added to the collection as a gift to my son that had just turned one which I’m no the guardian of until he is at least twenty-five.
Picked this after thinking for a while of what I wanted from a new FDM machine, the only drawback was it’s bowden setup which I had never used before and mostly head bad things about. (Spoiler, it’s fine… After adjustments).
The following article helped a heap on getting down into the details.
https://3dprintbeginner.com/anycubic-vyper-review/
Firmware
Currently running Klipper.
Config
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_accel_to_decel: 3000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PC8
dir_pin: PC9
enable_pin: !PA15
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PD3
position_endstop: 0
position_min: -3
position_endstop: -3
position_max: 245
homing_speed: 50
[stepper_y]
step_pin: PA10
dir_pin: !PA14
enable_pin: !PA13
microsteps: 16
rotation_distance: 32
endstop_pin: ^!PD2
position_min: -17
position_endstop: -17
position_max: 245
homing_speed: 50
[stepper_z]
step_pin: PC6
dir_pin: PC7
enable_pin: !PA9
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC3
position_endstop: 0.0
position_max: 260
position_min: -6
# Z1 is created by combining the E1 stepper and filament runout sensor pin that is
# default in the m5p configuration
[stepper_z1]
step_pin: PB0
dir_pin: PB1
enable_pin: !PC4
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC2
[extruder]
step_pin: PB12
dir_pin: !PB11
enable_pin: !PA8
microsteps: 16
rotation_distance: 7.710
full_steps_per_rotation: 200
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC5
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA1
#control: pid
#pid_kp: 28.937
#pid_ki: 1.295
#pid_kd: 161.688
min_temp: 0
max_temp: 260
pressure_advance: 0.675
min_extrude_temp: 0
[fan]
pin: PA4
[heater_fan cold_end]
pin: PA3
[heater_bed]
heater_pin: PA5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA0
control: pid
pid_kp: 67.648
pid_ki: 1.044
pid_kd: 1095.893
min_temp: 0
max_temp: 110
[bed_mesh]
mesh_min: 15,15
mesh_max: 230, 230
probe_count: 6,6
algorithm: bicubic
speed: 80
[bltouch]
sensor_pin: PC13
control_pin: PC15
#z_offset: 0
#x_offset: -53
x_offset: 16
#y_offset: 15
y_offset: 17.5
[safe_z_home]
home_xy_position: -3,-17
z_hop: 10
speed: 50
z_hop_speed: 5
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_450055000C504B5735313920-if00
[virtual_sdcard]
path: ~/printer_data/gcodes
[display_status]
[pause_resume]
########################################
# TMC2209 configuration
########################################
[tmc2209 stepper_x]
uart_pin: PD9
run_current: 0.800
diag_pin: PD3
[tmc2209 stepper_y]
uart_pin: PD8
run_current: 0.800
diag_pin: PD2
[tmc2209 stepper_z]
uart_pin: PB10
run_current: 0.800
diag_pin: PC3
[tmc2209 stepper_z1]
uart_pin: PA6
run_current: 0.800
diag_pin:
[tmc2209 extruder]
uart_pin: PB2
run_current: 0.800
diag_pin: PC2
[board_pins]
aliases:
# EXP1 header
EXP1_1=PD5, EXP1_3=PB3, EXP1_5=PB5, EXP1_7=PB7, EXP1_9=<GND>,
EXP1_2=PD4, EXP1_4=PD6, EXP1_6=PB4, EXP1_8=PB6, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PB14, EXP2_3=PB8, EXP2_5=PC10, EXP2_7=PC12, EXP2_9=<GND>,
EXP2_2=PB13, EXP2_4=PB9, EXP2_6=PB15, EXP2_8=<RST>, EXP2_10=<NC>
#########################
#
# CUSTOM MACROS
#
#########################
[gcode_macro probe_reset]
gcode:
SET_PIN PIN=probe_reset_pin VALUE=0
G4 P300
SET_PIN PIN=probe_reset_pin VALUE=1
G4 P100
[gcode_macro START_PRINT]
gcode:
#Get Printer built volume dimensions
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
{% set Z_MAX = printer.toolhead.axis_maximum.z|default(100)|float %}
#Get Nozzle diameter and filament width for conditioning
{% set NOZZLE = printer.extruder.nozzle_diameter|default(0.4)|float %}
{% set FILADIA = printer.extruder.filament_diameter|default(1.75)|float %}
#Set Start coordinates of priming lines
{% set X_START = 10.0|default(10.0)|float %}
{% set Y_START = 20.0|default(20.0)|float %}
#Get Bed and Extruder temperature from Slicer GCode
{% set BED_TEMP = params.BED_TEMP|default(60)|float %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
#Preheat nozzle and bed
M104 S{EXTRUDER_TEMP} T0
M140 S{BED_TEMP}
#Home
G28
#Heat nozzle and bed
M190 S{BED_TEMP}
M109 S{EXTRUDER_TEMP} T0
[gcode_macro END_PRINT]
gcode:
#Get Printer built volume dimensions
{% set X_MAX = printer.toolhead.axis_maximum.x|default(100)|float %}
{% set Y_MAX = printer.toolhead.axis_maximum.y|default(100)|float %}
#Fix-up extruder
G91
G1 E-2 F2700
G1 E-1.5 Z0.2 F2400
G1 X5 Y5 F6000
G1 Z10
G90
#Present print
G1 Z{printer.toolhead.position.z + 10} F600
G1 X{X_MAX} Y{Y_MAX / 1.25} F3000
M106 S0
M104 S0
M140 S0
#Disable Steppers
M84 X Y E
[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
gcode:
##### set defaults #####
{% set x = params.X|default(230) %} #edit to your park position
{% set y = params.Y|default(230) %} #edit to your park position
{% set z = params.Z|default(10)|float %} #edit to your park position
{% set e = params.E|default(1) %} #edit to your retract length
##### calculate save lift position #####
{% set max_z = printer.toolhead.axis_maximum.z|float %}
{% set act_z = printer.toolhead.position.z|float %}
{% set lift_z = z|abs %}
{% if act_z < (max_z - lift_z) %}
{% set z_safe = lift_z %}
{% else %}
{% set z_safe = max_z - act_z %}
{% endif %}
##### end of definitions #####
PAUSE_BASE
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E-{e} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
{% if "xyz" in printer.toolhead.homed_axes %}
G1 Z{z_safe}
G90
G1 X{x} Y{y} F6000
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
##### set defaults #####
{% set e = params.E|default(1) %} #edit to your retract length
#### get VELOCITY parameter if specified ####
{% if 'VELOCITY' in params|upper %}
{% set get_params = ('VELOCITY=' + params.VELOCITY) %}
{%else %}
{% set get_params = "" %}
{% endif %}
##### end of definitions #####
G91
{% if printer.extruder.can_extrude|lower == 'true' %}
G1 E{e} F2100
{% else %}
{action_respond_info("Extruder not hot enough")}
{% endif %}
RESUME_BASE {get_params}
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
TURN_OFF_HEATERS
CANCEL_PRINT_BASE
[gcode_macro m205]
description: Eats the m205 command klipper hates
gcode:
[gcode_macro ZUP]
gcode:
SET_GCODE_OFFSET Z_ADJUST=0.01 MOVE=1
[gcode_macro ZDOWN]
gcode:
SET_GCODE_OFFSET Z_ADJUST=-0.01 MOVE=1Hardware specifications
Board: BTT M5P.
Display: None, removed stock for aerodynamic purposes.
Hotend: V6 Volcano, would write stock but the current one is some copy from Amazon.
Extruder: BondTech MBG
Y-Carriage: Stock
Bed distances: Replaced stock plastic ones with silicone versions that allow for tuning the bed level a bit.
Probe: BLTouch v3.1 ( Could not get strain-gauge to work with M5P, but the BLTouch seem less error-prone anyways! )
Bed: Stock (Textured PEI)
Belts: Stock
Cabling
Due to having fried both the hotend board and mainboard the cabling has been mostly redone as the original used ribbon-cables that didn’t match up with how the M5P from BTT needed it.