MP3DP V4 Build - SW Virginia

That’s a sign of a good thread here. :yum: Wait a few posts more and @kvcummins comes to make a weird joke. :joy:

3 Likes

LOL That tends to happen around here. Your build is looking good!!! My daughter loves purple…She picked the colors for my Primo and that’s one of them. She saw your build and told me “why didn’t you make yours purple like that??” lol

3 Likes

OK, I was summoned this time, nobody gets to complain… :candle: :candle: :goat: :candle: :candle:

What Ryan was unaware of when he switched forum software, years ago, was that the new software came with an undocumented “feature”:

1 Like

Got a pile of parts in the mail today! Manta M8P with 2209 drivers, CB1 and heat sink, BL Touch, BTT EBB36 Can Bus tool head and my aluminum for my bed.

4 Likes

Also wanted to show the starting point for my Hemera to H2 adapter.

It will require some heat set inserts but I could make it with nut recesses to aleviate that.


4 Likes


Next gen version of the Hemera to H2 adapter in the making. It will also serve as rhe mounting for my EBB36 CAN board.

3 Likes

Waiting for new parts to print and couldnt resist playing with the electronics.

I am planning on running Klipper on this. I figured that a good start for the configs would be the Voron Trident as it uses the same three point leveling.

The Manta M8P is supposed to support CAN bus operations onboard. The documentation is severely lacking but it looks like I can set the board up as a USB to CAN bridge and it will work. It changes communication within Klipper to CAN vs serial and enables the onboard CAN headers. I will be using the EBB36 as the toolhead board which seems to be well documented.

Wish me luck!

2 Likes

I have pretty much the same setup, Manta M8P V1.0 (No CAN) U2C and EBB42 and the H2.
I redesign the extruder carrier to accommodate the H2, and design a fan mount (2 -5015 fans) that also holds the EBB42.

1 Like





That is cool! I know I can use the U2C just wanted to see if I could get the new onboard one to work.

I looks like we went close to the same way for the mount design!

Would you be interested in sharing your config files for Klipper?

5 Likes

Why do i feel like I might have a problem?

3 Likes

HAHAHA I leave them all over the house for my wife to find

1 Like

Yes of course, give me couple min and I will share it.

2 Likes

Here it is.
printer.cfg.zip (4.8 KB)

# This file contains common pin mappings for the BIGTREETECH Manta M8P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" and USB communication.

# See docs/Config_Reference.md for a description of parameters.

[virtual_sdcard]
path: /home/biqu/printer_data/gcodes

[display_status]

[pause_resume]

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32g0b1xx_210036000C504B4633373520-if00

[mcu EBBCan]
canbus_uuid: 716f2d3151ab #c26bdd8865fb

########################################
# STEPPERS
#######################################

[stepper_x]
step_pin: PE2
dir_pin: !PB4 #add ! to invert motor
enable_pin: !PC11
microsteps: 16
rotation_distance: 32
endstop_pin: EBBCan: PB6 #^PF3
position_endstop: 0
position_max: 300
homing_speed: 50

[stepper_y]
step_pin: PF12
dir_pin: !PF11 # add ! to invert motor
enable_pin: !PB3 #Remove !
microsteps: 16
rotation_distance: 32
endstop_pin: ^PF4
position_endstop: 0
position_max: 300
homing_speed: 50

[stepper_z]
step_pin: PD7
dir_pin: PD6
enable_pin: !PF10
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop
#position_endstop: 0
position_max: 285
position_min: -5.0
homing_speed: 30
second_homing_speed: 3
homing_retract_dist: 15

[stepper_z1]
step_pin: PD3
dir_pin: PD2
enable_pin: !PD5
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop
#position_endstop: 0

[stepper_z2]
step_pin: PC9
dir_pin: !PC8
enable_pin: !PD1
microsteps: 16
rotation_distance: 32
endstop_pin: probe:z_virtual_endstop
#position_endstop: 0


########################################
# EXTRUDER
#######################################

[extruder]
step_pin: EBBCan: PD0
dir_pin: !EBBCan: PD1
enable_pin: !EBBCan: PD2 
microsteps: 16
rotation_distance: 3.484 #3.433
#gear_ratio: 7:1
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan: PB13 #PA2 V1.1
sensor_type: Generic 3950 #EPCOS 100K B57560G104F
sensor_pin: EBBCan: PA3
#control: pid
#pid_Kp: 21.527
#pid_Ki: 1.063
#pid_Kd: 108.982
min_temp: 0
max_temp: 270
pressure_advance = 0.019

[heater_bed]
heater_pin: PB7
sensor_pin: PA0 # TB
sensor_type: EPCOS 100K B57560G104F #ATC Semitec 104GT-2
#control: watermark
min_temp: 0
max_temp: 130

########################################
# FAN
#######################################

[fan]
pin: EBBCan: PA0

[heater_fan hotend_fan]
pin: EBBCan: PA1
heater: extruder
heater_temp: 50.0
kick_start_time: 2

########################################
# PRINTER
#######################################

[printer]
kinematics: corexy
max_velocity: 800
max_accel: 10000 #4000
max_accel_to_decel: 10000 #4000
max_z_velocity: 100
max_z_accel: 200
square_corner_velocity: 5.0 #4.5

[input_shaper]
shaper_freq_x: 75.8
shaper_type_x: mzv
shaper_freq_y: 75.8
shaper_type_y: mzv

[adxl345]
cs_pin: EBBCan: PB12
spi_software_sclk_pin: EBBCan: PB10
spi_software_mosi_pin: EBBCan: PB11
spi_software_miso_pin: EBBCan: PB2
axes_map: x,y,z

[resonance_tester]
accel_chip: adxl345
probe_points: 150, 150, 30

[bltouch]
sensor_pin: ^EBBCan: PB8
control_pin: EBBCan: PB9
x_offset: 0
y_offset: -25
#z_offset: 3.35
speed: 7.5
samples: 2
sample_retract_dist: 10.0
stow_on_each_sample: False  
probe_with_touch_mode: True

[safe_z_home]
home_xy_position: 150,150
speed: 50

[z_tilt]
z_positions:
    0, 50
    160, 300
    200, 50
    
    #center_Y186
points:
    0, 50
    160, 300
    300, 50
    
speed: 150
horizontal_move_z: 10
retries: 10
retry_tolerance: 0.005

[bed_screws]
screw1: 30, 0
screw2: 30, 270
screw3: 280, 270
screw4: 280, 0 

########################################
# FIRMWARE RETRACTION
########################################
[firmware_retraction]
retract_length: 0.2
retract_speed: 20


########################################
# BED MESH
########################################

[bed_mesh]
speed: 80
horizontal_move_z: 8
mesh_min: 12, 0
mesh_max: 298,273
probe_count: 5,5
algorithm: bicubic #lagrange
mesh_pps: 4, 4 #1, 1
bicubic_tension: .5 #.5
move_check_distance: 5 #10
split_delta_z: .025
fade_start: 1
fade_end: 10
fade_target: 0


########################################
# TMC2209 configuration
########################################

[tmc2209 stepper_x]
uart_pin: PC10
run_current: 1.0 #0.800
#hold_current: 0.600
interpolate: False
#stealthchop_threshold: 999999

[tmc2209 stepper_y]
uart_pin: PF13
run_current: 1.0 #0.800
#hold_current: 0.600
interpolate: False
#stealthchop_threshold: 999999

[tmc2209 stepper_z]
uart_pin: PF9
run_current: 0.60000
#hold_current: 0.500
interpolate: False

#stealthchop_threshold: 999999

[tmc2209 extruder]
uart_pin: EBBCan: PA15
run_current: 0.800
#stealthchop_threshold: 999999


[tmc2209 stepper_z1] # was z1
uart_pin: PD4
run_current: 0.600
#hold_current: 0.500
interpolate: False
#stealthchop_threshold: 999999

[tmc2209 stepper_z2] # was z2
uart_pin: PD0
run_current: 0.600
#hold_current: 0.500
interpolate: False
#stealthchop_threshold: 999999


########################################
# BOARD PINS
#######################################

[board_pins]
aliases:
    # EXP1 header
    EXP1_1=PE9, EXP1_2=PE10,
    EXP1_3=PE11, EXP1_4=PE12,
    EXP1_5=PE13, EXP1_6=PE14,    # Slot in the socket on this side
    EXP1_7=PE15, EXP1_8=PB10,
    EXP1_9=<GND>, EXP1_10=<5V>,

    # EXP2 header
    EXP2_1=PB14, EXP2_2=PB13,
    EXP2_3=PF7, EXP2_4=PB12,
    EXP2_5=PE7, EXP2_6=PB11,      # Slot in the socket on this side
    EXP2_7=PE8, EXP2_8=<RST>,
    EXP2_9=<GND>, EXP2_10=PC5

# See the sample-lcd.cfg file for definitions of common LCD displays.


#############################
# MACROS
#############################

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
gcode:
  PAUSE_BASE
  _TOOLHEAD_PARK_PAUSE_CANCEL


[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
  ##### read extrude from  _TOOLHEAD_PARK_PAUSE_CANCEL  macro #####
  {% set extrude = printer['gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL'].extrude %}
  #### get VELOCITY parameter if specified ####
  {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
  {%else %}
    {% set get_params = "" %}
  {% endif %}
  ##### end of definitions #####
  {% if printer.extruder.can_extrude|lower == 'true' %}
    M83
    G1 E{extrude} F2100
    {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
  {% 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
variable_park: True
gcode:
  ## Move head and retract only if not already in the pause state and park set to true
  {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
    _TOOLHEAD_PARK_PAUSE_CANCEL
  {% endif %}
  TURN_OFF_HEATERS
  CANCEL_PRINT_BASE


[gcode_macro _TOOLHEAD_PARK_PAUSE_CANCEL]
description: Helper: park toolhead used in PAUSE and CANCEL_PRINT
variable_extrude: 1.0
gcode:
  ##### set park positon for x and y #####
  # default is your max posion from your printer.cfg
  {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
  {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
  {% set z_park_delta = 2.0 %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% if act_z < (max_z - z_park_delta) %}
    {% set z_safe = z_park_delta %}
  {% else %}
    {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  {% if printer.extruder.can_extrude|lower == 'true' %}
    M83
    G1 E-{extrude} F2100
    {% if printer.gcode_move.absolute_extrude |lower == 'true' %} M82 {% endif %}
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}
  {% if "xyz" in printer.toolhead.homed_axes %}
    G91
    G1 Z{z_safe} F900
    G90
    G1 X{x_park} Y{y_park} F6000
    {% if printer.gcode_move.absolute_coordinates|lower == 'false' %} G91 {% endif %}
  {% else %}
    {action_respond_info("Printer not homed")}
  {% endif %}

########################################
# Bed Leveling
########################################
[gcode_macro BED_LEVEL]
gcode:
       G28 X Y 
       G28 Z F9000
 Z_TILT_ADJUST


######################################
# Start GCode
######################################


[gcode_macro START_PRINT]
gcode:    

      #Get Bed and Extruder temperature from Slicer GCode
      #{% set BED_TEMP = params.BED_TEMP| default|}
      #{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP| defaut|}
      {% set BED_TEMP = params.BED_TEMP|default(60)|float %}
      {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(205)|float %}
      #Preheat nozzle and bed
      M104 S{EXTRUDER_TEMP} T0                        
      M140 S{BED_TEMP}                                

      # Use absolute coordinates
      G90

      #Home
      G28 X Y 
      G28 Z F4800

      Z_TILT_ADJUST #[<probe_parameter>=<value>]
      
      #Use defaut bed mesh
      BED_MESH_PROFILE LOAD=default           

      #Heat nozzle and bed
      M190 S{BED_TEMP}                               
      M109 S{EXTRUDER_TEMP} T0                       

      #Precondition extruder
      G92 E0              
      G1 Z2.0 F600        
      G1 Z0.2 F600        
      G1 Z2.0 F600

      #Prime line
      PRIME_LINE
      M117 Printing...

######################################
# Prime line
######################################

[gcode_macro PRIME_LINE]
gcode: 
    M117 Prime Line
    G92 E0 ;Reset Extruder
    # move z axis 
    G1 Z3.6 F3000 ;Move Z Axis up
    # move to prime position 
    G1 X5 Y85 Z2 F5000.0 ;Move to start position
    G1 X5 Y200.0 Z0.35 F1500.0 E15 ;Draw the first line
    G1 X7 Y200.0 Z0.35 F5000.0 ;Move to side a little
    G1 X7 Y85 Z0.35 F1500.0 E30 ;Draw the second line
    G92 E0 ;Reset Extruder
    G1 Z4.0 F3000 ;Move Z Axis up


######################################
# load filament
######################################

[gcode_macro M701]
gcode:
    SAVE_GCODE_STATE NAME=loading_filament
    M117 Loading Filament
    M83
    G92 E0.0
    LOW_TEMP_CHECK
    G1 E50 F6000  # length of bowden tube till cold-end (~420mm) 
    G1 E50 F200  # some extra to prime the nozzle --> slower 
    G92 E0.0
    RESTORE_GCODE_STATE NAME=loading_filament

######################################
# unload filament
######################################

[gcode_macro M702]
gcode:
    SAVE_GCODE_STATE NAME=unloading_filament
    M125 # park
    M117 Unloading Filament 
    LOW_TEMP_CHECK
    G91 # set relative
    G1 E10 F100 
    G92 E0.0
    G1 E-50 F6000 # the E is the length of the bowden tube (420mm) + 100 mm. 
    G92 E0.0
    RESTORE_GCODE_STATE NAME=unloading_filament

######################################
# filament change 
######################################
[gcode_macro M600]
gcode:
    M117 Filament Change
    M118 Filament Change
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    LOW_TEMP_CHECK
    G91 # relative
    G1 E-1 F300 # retract 1
    M125 # park
    M702 # unload

    M117 New filament
    M118 New filament
    COUNTDOWN TIME=25 MSG="Switch"
    M701
    COUNTDOWN TIME=10 MSG="Clean"
    RESUME
    M117 Resuming
    M118 Resuming
    RESTORE_GCODE_STATE NAME=filament_change
    M117 Printing..
    M118 Printing..

#######################################
# COUNTDOWN MACRO
#######################################
[gcode_macro COUNTDOWN]
gcode:
    {% set MSG = params.MSG|default("Time: ") %}
    {% set TIME = params.TIME|default(10) %}
    # countdown 
    {% for s in range(TIME|int, 0, -1) %}
        # dwell 1 second
        G4 P1000
        # echo
        M117 {params.MSG} {s}s
        M118 {params.MSG} {s}s
    {% endfor %}

######################################
# End Gcode
######################################

[gcode_macro END_PRINT]
gcode:
    # Turn off bed, extruder, and fan
    M140 S0
    M104 S0
    M106 S0
    # Move nozzle away from print while retracting
    G91
    G1 E-3
    # Raise nozzle by 10mm
    G1 Z10 F3000
    G90
    G1 X298 Y298 Z284 F7000
    G1 E-1 F100
    #G1 X-2 Y-2 E-3 F300
    # Disable steppers
    M84

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	0.028709, 0.173709, 0.173709, 0.118709, -0.006291
#*# 	-0.076291, 0.043709, 0.123709, 0.043709, -0.026291
#*# 	-0.136291, -0.026291, -0.006291, -0.101291, -0.131291
#*# 	-0.146291, -0.041291, -0.011291, -0.091291, -0.196291
#*# 	-0.246291, -0.066291, -0.051291, -0.146291, -0.196291
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 4
#*# mesh_y_pps = 4
#*# algo = bicubic
#*# tension = 0.5
#*# min_x = 12.0
#*# max_x = 298.0
#*# min_y = 0.0
#*# max_y = 273.0
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 17.614
#*# pid_ki = 0.599
#*# pid_kd = 129.462
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 62.610
#*# pid_ki = 6.049
#*# pid_kd = 162.003
#*#
#*# [bltouch]
#*# z_offset = 1.000

1 Like

Cheers for all the info sharing! Hoping to use yours/someone’s adaptors and/or carriage mods if that’s ok.

Sounds like @probrwr has BiQU H2S Revo and @gpagnozzi is using BIQU H2 V2.0?

BIQU H2 V2.0

BIQU H2 V2S REVO Manual

1 Like

That is right, H2 V2.0, and the M8P V1.0 at the same time, months ago…
And yes, I will share my files once the printer is working.

1 Like

I do have the REVO. As soon as i have all the bugs ironed out of the mount I will share it with you.

I used the fan shroud from another user on here. It came from @InoxDragoon from the repeat H2 Build thread. I tried the BLTouch mount but it would have interfered with the Homing so I designed one that sandwiches between the fan and heat sink. The fan mount one will work great on my Ender3 with H@ if I decide to add a BL Touch.

2 Likes

Working on an alternate option for bed mounting on my machine.

I made brackets for the ends that overhang the z trucks and are pinned down by springs like the standard bed to allow movement. The holes are close fit and then filleted over from the top so they give some flex space.

I plan to mount the bed on silicone deb spacers using tnuts into the extrusion.

6 Likes

NICE! That was actually my original plan!

Hey where did you get your 12 x 12 by quarter inch thick aluminum plate? And how much did you have to pay for it?

Appreciate this question, curious too.
Bought Alu for my LR3 XZ plates from https://www.amazon.com/gp/product/B095HBG4YF/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1, my other option was local metalsupermarkets.com

1 Like