Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Dual Markforged Kinematics Setup

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    1
    2
    367
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • RogerPodacterundefined
      RogerPodacter
      last edited by

      I converted a CoreXY printer to Dual Markforged IDEX based on the RatRig Vcore 3.1 prototype to IDEX. its nearly working except for the 2nd carriage U axis.

      When i home X, both carriages work properly. left carriage homes to the left, then right carriage homes to the right.

      but when i home the Y axis, the left carriage stays stationary properly, but the right carriage drifts rightward. the motor is not counteracting properly. I suspect its simply the Y matrix improperly configured, but i dont understand the kinematics matrix and the definitions dont seem to help much when i tried to read the documentation.

      config.g

      ; General preferences
      G90                                     ; send absolute coordinates...
      M83                                     ; ...but relative extruder moves
      M550 P"V-Core3"                         ; set printer name
      ;M669 K11 Y1:-1:0:-1                     ; Dual Markforged Kinematics  https://forum.duet3d.com/topic/7796/haq-xy/125  https://forum.duet3d.com/topic/21021/dual-markforged-kinematics?_=1672244913067
      M669 K1 X1:0:0:0 Y1:-1:0:1 Z0:0:1:0 U0:0:0:1; Matrix mapping for Axis - X:Y:Z:U
      G21                                     ; Set Units to Millimeters
      
      ; Network
      M552 S2                                 ; enable network
      M586 P0 S1                              ; enable HTTP
      M586 P1 S0                              ; disable FTP
      M586 P2 S0                              ; disable Telnet
      
      G4 S2 ; wait for expansion boards to start
      
      ; Drives
      M569 P0.0 S0 D2								; Left Z physical drive 0.0 goes forwards
      M569 P0.1 S0 D2								; Rear Z physical drive 0.1 goes forwards
      M569 P0.2 S0 D2								; Right Z physical drive 0.2 goes forwards
      M569 P0.3 S1 D2								; Right U toolhead drive 0.3 goes forwards
      M569 P0.4 S1 D2								; Left X toolhead drive 0.4 goes forwards
      M569 P0.5 S0 D2								; Left Y drive 0.5 goes forwards
      M569 P0.6 S1 D2								; Right Y drive 0.6 goes reverse
      
      M569 P121.0 S1 D2                            ; Extruder physical drive 121.0 goes forwards
      ;M569 P122.0 S1 D2                            ; Extruder physical drive 122.0 goes forwards
      M584 Z0.0:0.1:0.2 Y0.5:0.6 X0.4 U0.3 E121.0;:122.0        ; set drive mapping
      M350 U16 X16 Y16 Z16 E16 I1                 ; configure microstepping with interpolation
      
      M92 U80.0 X80.00 Y80.00 Z800.00 E690 ;E400               ; set steps per mm
      M906 U2000 X2000 Y2000 Z1800 E1000 I10 ;E700 I30              ; set motor currents (mA) and motor idle factor in per cent -- safe for Duet 3 mini 5+
      M84 S30                                 ; Set idle timeout
      
      M566 U500.00 X500.00 Y500.00 Z60.00 E300 P1 				;X1500.00 Y1500.00 Z6.00 E300 P1 ;E120.00 P1          ; set maximum instantaneous speed changes (mm/min)
      M203 U30000.00 X30000.00 Y30000.00 Z1000.00 E7200 			;E3600.00     ; set maximum speeds (mm/min)
      M201 U10000.00 X10000.00 Y10000.00 Z100.00 E10000 			;E3600.00        ; set accelerations (mm/s^2)
      
      M207 S0.6 F7200 Z0.2						; firmware retraction orbiter 2.0
      
      ; Axis Limits
      M208 X0 U0 Y0 Z0 S1                               ; set axis minima
      M208 X310 U310 Y310 Z300 S0                         ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"121.io2.in"                           ; configure active high endstops Toolhead 1 low end
      M574 U2 S1 P"io3.in"                           ; configure active high endstops Toolhead 2 high end
      M574 Y2 S1 P"io2.in"                           ; configure active high endstops.  IO0 and IO1 also are UART, so do not put endstops on them, use them elsewhere to free up UART.
      M574 Z1 S2
      
      M671 X-4.5:150:304.5 Y-4.52:305:-4.52 S5       ; define positions of Z leadscrews or bed levelling screws
      M557 X30:280 Y20:290 P5                        ; define 5x5 mesh grid
      
      ; Heaters
      M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Keenevo 600W Bed"    ; configure sensor 0 as thermistor on pin temp0
      M950 H0 C"out0" T0 Q10												; Define Heater0 as the heated bed, bind to Sensor0
      M140 H0 P0															; Define Heated Bed
      M307 H0 R0.602 K0.401:0.000 D2.44 E1.35 S1.00 B0							; PID Tuning for Heater0, Heated Bed (100C)
      M143 H0 S140														; Set temperature limit for Heater0 to 120C
      
      M308 S1 P"121.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 A"Slice Hotend"  ;Slice Engineering 300C thermistor, settings are online
      M950 H1 C"121.out0" T1 Q100													; Define Heater1 as Extruder0 heater, bind to Sensor1
      M307 H1 R2.808 K0.368:0.000 D4.56 E1.35 S1.00 B0 V23.8					; PID Tuning for Heater1, Extruder0 (240C)
      M143 H1 S325														; Set temperature limit for heater 1 to 285C
      
      M308 S2 P"temp1" Y"thermistor" T100000 B3950 C7.060000e-8 A"Chamber" ; configure sensor 2 as thermistor on pin temp1
      M950 H2 C"out1" T2 ;Q10												; create chamber heater output on out1 and map it to sensor 2
      M307 H2 R0.01 K0.200:0.000 D60 E1.35 S1.00 B1                              ; enable bang-bang mode for the chamber heater and set PWM limit
      M141 H2                                      ; map chamber to heater 2
      M143 H2 S120                                  ; set temperature limit for heater 2 to 60C
      
      M308 S3 P"121.temp1" Y"thermistor" A"Cooling Block" T100000 B3950 C7.060000e-8 ; Define Sensor as Chamber temperature
      
      M308 S4 Y"drivers" A"4028 Power"    								; 4028 power using spare heater
      
      M308 S5 Y"mcu-temp" A"MCU"											; Define Sensor3 as the integrated MCU temperature sensor
      M308 S6 Y"drivers" A"TMC Drivers"									; Define Sensor4 as the TMC overheat sensor
      
      M308 S7 Y"mcu-temp" P"121.dummy" A"Toolboard MCU"
      M308 S8 Y"drivers" P"121.dummy" A"1LC Stepper"
      
      M308 S9 P"temp2" Y"thermistor" T100000 B3950 C7.060000e-8 A"Orbiter Motor" ; configure sensor 9 as thermistor on pin temp2
      
      M308 S10 P"spi.cs1" Y"thermocouple-max31856" K"K" A"TC0 Chamber Heater"; define temperature sensor number 10 as a K Type thermocouple on the first port of a temperature daughter board plugged into the expansion board with CAN bus address 3.
      M308 S11 P"spi.cs2" Y"thermocouple-max31856" K"K" A"TC1 Chamber Fins"; define temperature sensor number11 as a T Type thermocouple on the first port of a temperature daughter board plugged into the expansion board with CAN bus address 3.
      
      ; Fans
      M950 H3 C"!out2" T2 Q10	;H2											; Define Heater2 as the 4028 fan power, bind to Sensor3
      M143 H3 P2 S200														; Needed M143 to set max temp so the graph scaled correctly
      
      M950 F0 C"!121.out1+out1.tach" Q25000 ;Q500							; create fan 0 on pin out4 and set its frequency
      M106 P0 C"T0 Layer Fan" L0.0 X1.0 S0 H-1 B0.1							; set fan 0 name and value. Thermostatic control is turned off
      
      M950 F1 C"121.out2+out2.tach" Q500 				; Fan 1 uses out3, and using out3.tach as a tacho input
      M106 P1 C"T0 Hotend Fan" S0 H1 T45        ; set fan 1 name and value. Thermostatic control turned on for Hotend
      
      M950 F2 C"out5" Q500                   ; create fan 1 on pin out5 and set its frequency
      M106 P2 C"Board Fan" S0 H4:5:6 T46        ; set fan 1 name and value. Thermostatic control turned on for Hotend
      
      M950 F3 C"!out3+out3.tach" Q500                   ; Chamber Heater Fan Noctua NF-F12 Industrial
      M106 P3 C"Chamber Heater Fan" H10 T30 ; S0.3  L0.3 X0.6 B0.1 T30:40       ; set fan 1 name and value. Thermostatic control turned on for Hotend.
      
      M950 F4 C"out6" Q500                   ; create fan 4 for Water Cooling 12V Fan 4 on pin out4 and set its frequency
      M106 P4 C"Radiator Cooling Fan" S0 H3 T35        ; set fan 1 name and value. Thermostatic control turned on for liquid cooling hotend
      
      M950 F5 C"out4+out4.tach" Q500                   ; create fan 4 for Water Cooling 12V Fan 4 on pin out4 and set its frequency
      M106 P5 C"Liquid Cooling Pump" S0 H3 T20        ; set fan 1 name and value. Thermostatic control turned on for liquid cooling hotend
      
      M950 F6 C"!122.out1+out1.tach" Q25000 ;Q500							; create fan 6 on pin out4 and set its frequency
      M106 P6 C"T1 Layer Fan" L0.0 X1.0 S0 H-1 B0.1							; set fan 6 name and value. Thermostatic control is turned off
      
      M950 F7 C"122.out2+out2.tach" Q500 				; Fan 7 uses out3, and using out3.tach as a tacho input
      M106 P7 C"T1 Hotend Fan" S0 H1 T45        ; set fan 7 name and value. Thermostatic control turned on for Hotend
      
      ; Tool 0 X Axis
      M563 P0 D0 H1 F0 S"Mosquito Mag Liquid"           										; define tool 0
      G10 P0 X0 Y0 Z0 R0 S0            ; set tool 0 axis offsets, set initial tool 0 active 60C and standby temperatures to 0C
      
      ; Tool 1 U Axis
      M563 P1 D1 H3 F6 S"Mosquito Mag Air"           										; define tool 0
      G10 P1 U0 Y0 Z0 R0 S0            ; set tool 0 axis offsets, set initial tool 0 active 60C and standby temperatures to 0C
      
      ;M563 P0 H0 F0 S"Keenevo 600W Bed"
      ;G10 P0 X0 Y0 Z0
      ;G10 P0 R50 S0
      
      ; Z-Probe Inductive Probe
      ;M558 P5 C"121.io0.in" H5 F400 T5000       ; set Z probe type to unmodulated and the dive height + speeds
      M558 P8 C"^121.io0.in" H8 F400 T9000 A1 ; S0.01       ; set Z probe type to unmodulated and the dive height + speeds
      G31 P1000 X-28 Y-20 Z8.85    ; K0           ; set Z probe trigger value, offset and trigger height, more Z means closer to the bed
      
      ;; BLTouch
      ; M950 S0 C"io7.out"                     ; Create a servo pin on io7
      ; M558 P9 C"io7.in" H5 F240 T10800 A5    ; set Z probe type to unmodulated and the dive height + speeds
      ; G31 P25 X-28.00 Y-13.00 Z0.78          ; set Z probe trigger value, offset and trigger height, more Z means closer to the bed
      
      ;Accelerometer
      M955 P121.0 I16
      
      ;Input Shaper
      M593 P"zvdd" F44		; for 10k acceleration
      ;M593 P"mzv" F42.5		; for 15k acceleration
      
      ;Filament Sensor0
      M591 D0 P3 C"121.io1.in" S1
      M591 D0 L27 R10:190
      
      ;PanelDue 5i
      M575 P1 S1 B57600
      
      ;NeoPixels x3
      M150 X3 Q4000000 ;R128 U128 B128 P128 S2 F0
      M150 X3 R255 U255 B255 W255 P255 S2 F0      ; display led
      
      ; Custom settings
      G29 S1
      M572 D0 S0.01; set Pressure Advance K-factor
      M501
      ;M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
      
      ; init filament sensor error global variables
      if !exists(global.filamentTimestamp)
      	global filamentCounter = 0
      	global filamentTimestamp = state.Uptime
      
      ; init print time logging
      if !exists(global.runtime)
        M98 P"runtime.g"
      
      ; init LED variables
      if !exists(global.warmUp)
      	global warmUp = false
      
      ; Select default tool
      M404 N1.75															; Define filament diameter for print monitor
      T0
      

      homex.g

      M201 X500.00 U500.00    ; Reduce acceleration for homing moves
      
      G91                     ; Relative positioning
      G1 H2 Z5 F6000          ; Lift Z relative to current position
      
      G1 H1 X-625 F1800       ; Move quickly to X endstop and stop there (first pass)
      G1 X3 F600              ; Go back a few mm
      G1 H1 X-625 F360        ; Move slowly to X endstop once more (second pass)
      
      G1 H1 U625 F1800
      G1 U-3 F600
      G1 H1 U625 F360
      
      M201 X3000 U3000        ; Return to full acceleration
      
      G1 H2 Z-5 F6000         ; Lower Z relative to current position
      G90                     ; Absolute positioning
      

      homeall.g

      ; Home X and Y simultaneously
      G91																	; Relative positioning
      G1 Z10 F6000 H2														; Lift Z relative to current position
      G1 X-999 U999 F4800 H1												; coarse home X and U
      G1 X5 U-5 F360														; move 5mm away from the homing switches
      G1 X-10 U10 F360													; fine home X and U
      G1 Y999 F4800
      G1 Y-5 F360
      G1 Y10 F360
      
      ;G1 X-999 Y999 F4800 H1												; Move X and Y-axes to the endstops and stop (first pass)
      ;G1 X-999 F4800 H1													; Move X-axis to the endstop and stop (first pass)
      ;G1 Y999 F4800 H1													; Move Y-axis to the endstop and stop (first pass)
      ;G1 X5 Y-5 F360														; Go back a few mm
      ;G1 X-999 F360 H1													; Move X-axis to the endstop once more (second pass)
      ;G1 Y999 F360 H1														; Move X-axis to the endstop once more (second pass)
      G90																	; Absolute positioning
      
      M401 ; deploy Z probe (omit if using bltouch)
      
      ; Home Z using the Z-Probe
      M290 R0 S0															; Reset baby-stepping to 0
      G1 X183 Y170 F6000											; Move T0 to probing point (X150, Y150), including probe offset
      G30																	; Probe the bed and set Z to the probe offset
      
      M402 ; retract probe (omit if using bltouch)
      

      homey.g

      M201 X500.00 Y500.00    ; Reduce acceleration for homing moves
      
      G91                     ; Relative positioning
      G1 H2 Z5 F6000          ; Lift Z relative to current position
      
      G1 H1 Y605 F1800        ; Move quickly to Y endstop and stop there (first pass)
      G1 Y-3 F600             ; Go back a few mm
      G1 H1 Y605 F360         ; Move slowly to Y endstop once more (second pass)
      
      M201 X3000 Y3000        ; Return to full acceleration
      
      G1 H2 Z-5 F6000         ; Lower Z relative to current position
      G90                     ; Absolute positioning
      
      1 Reply Last reply Reply Quote 0
      • RogerPodacterundefined
        RogerPodacter
        last edited by

        @RogerPodacter said in Dual Markforged Kinematics Setup:

        M669 K1 X1:0:0:0 Y1👎0:1 Z0:0:1:0 U0:0:0:1; Matrix mapping for Axis - X:Y:Z:U

        i solved my issue. maybe this helps someone in the future. i simply changed the Y matrix:

        old

        M669 K1 X1:0:0:0 Y1:-1:0:1 Z0:0:1:0 U0:0:0:1; Matrix mapping for Axis - X:Y:Z:U
        

        new

        M669 K1 X1:0:0:0 Y1:-1:0:-1 Z0:0:1:0 U0:0:0:1; Matrix mapping for Axis - X:Y:Z:U
        
        1 Reply Last reply Reply Quote 2
        • droftartsundefined droftarts referenced this topic
        • First post
          Last post
        Unless otherwise noted, all forum content is licensed under CC-BY-SA