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

    Help tramming z axis with 4 motors and multiple endstop types

    Scheduled Pinned Locked Moved
    General Discussion
    3
    9
    307
    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.
    • p8blrundefined
      p8blr
      last edited by

      I home z with a probe, however, I have optical endstops at the low-end of the 4 screws on my z-axis to assist with tramming if the screws get out of sync. This is necessary because the bed is too large and rigid to safely level the 4 screws if they are too far out of alignment. My issue is that my macro works, however, the printer will not home z with the probe after I run this. It is also preventing my brakes from turning back on after I run this. (Honestly, the brakes don't behave very well at all, but that's a different issue.) So I would like a more robust solution. Suggestions please?

      Z-Tramming Macro

      G1 X600 Y600 F10000 ; go to center of bed
      
      G92 Z1201 ; set fake z posistion 1mm away from max to ensure it travels far enough
      
      G91 ; relative mode
      
      G1 Z5 ; move z 5mm away to ensure sensors are not blocked
      
      M574 Z1 S1 P"0.io3.in+0.io4.in+0.io5.in+0.io6.in"	;configure active-high endstops for low end on z via those pins
      
      G1 H1 Z-1300 F100 ; home fast
      
      G1 Z5 ; move 5mm
      
      G1 H1 Z-1300 F50 ; home slow
      
      G1 Z10 F400 ; move 5mm away
      
      G90 ; absolute mode
      
      

      config.g

      ; Configuration file for Duet 3 MB 6XD (firmware version 3.5.0 Release Candidate 1)  
      ; executed by the firmware on start-up  
      
      ; generated by RepRapFirmware Configuration Tool v3.3.15 on Fri Dec 09 2022 12:10:26 GMT-0600 (Central Standard Time) 
      
      ; General preferences
      M575 P1 S1 B57600                                           ; enable support for PanelDue
      G90                                                         ; send absolute coordinates...
      M83                                                         ; ...but relative extruder moves
      M550 P"myPrinter"                                            ; set printer name 
      
      ; Declare global variables
      M98 P"variables.g"
      
      ; Wait a moment for the CAN expansion boards to start
      G4 S2
      
      ; Drive Setup
      M18                                     ; disable steppers to disable old axes config
      
      ; Drive setup
      ; TX:X:X:X Min stp pls width, stp ple interval, dir setup time, dir hold time, in microseconds
      M569 P121.0 S1 R1 T1:2:1:1              ; physical drive X dc42 recommends T1:1:0.5:0 but we were using T1:2:1:1 for everything, 0.75:1.5:0.025:1 might make y stall
      M569 P0.0   S1 R1 T1:2:1:1              ; physical drive Y1
      M569 P0.1   S1 R1 T1:2:1:1              ; physical drive Y2
      M569 P0.2   S0 R1 T1:2:1:1              ; physical drive Z1
      M569 P0.3   S0 R1 T1:2:1:1              ; physical drive Z2
      M569 P0.4   S0 R1 T1:2:1:1              ; physical drive Z3
      M569 P0.5   S0 R1 T1:2:1:1              ; physical drive Z4
      M569 P3.1 S1 R1                         ; physical drive E1 Mosquito 1 extruder
      M569 P3.2 S1 R1                         ; physical drive E2 Mosquito 2 extruder
      M569 P122.0 S1 R0                       ; physical drive E0 primary Extruder
      M569 P4.0 S1 R1                         ; physical drive actuator 1
      M569 P4.1 S1 R1                         ; physical drive actuator 2
      G4 S1                                   ; wait for drive to setup
      
      ; Drive mapping
      M584 X121.0                             ; set drive mapping for x axis
      M584 Y0.0:0.1                           ; set drive mapping for y axis
      M584 Z0.2:0.3:0.4:0.5                   ; set drive mapping for z axes
      M584 E3.1:3.2:122.0                     ; set drive mapping for extruder axes
      M584 U4.0                               ; set drive mapping for mosquito actuator 1
      M584 V4.1                               ; set drive mapping for mosquito actuator 2
      G4 S1                                   ; wait for drives to be mapped to letters
      
      ; Drive config
      M350 E16:16:16 U1 V1                                      ; configure microstepping with interpolation
      M92  X64 Y128 Z6400 E410:410:224.6 U200 V200              ; set steps per mm
      M566 X4000.00 Y2000.00 Z60.00 E600:600:7001 U600 V600 P1  ; set maximum instantaneous speed changes (mm/min)
      M203 X35000 Y76050 Z1500 E1200:1200:9000 U300 V300         ; set maximum speeds (mm/min), XYZ speeds based on cont. torque curve and RMS limit, currently at max values, e value set by Dyze
      M201 X2000 Y2000 Z1000 E3000:3000:5000 U100 V100           ; set accelerations (mm/s^2) X300 Y300 looks best for mosquitos, Y8000 is RMS risk, not tested above 13000 but could cause coupler failure, e was 5000
      M906 E600:600 U500 V500 I30                               ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                                   ; Set idle timeout
      
      ; Brakes
      M569.7 P0.2 C"out3" S100               ; driver 2 on board 6XD uses port out3 to control the brake
      M569.7 P0.3 C"out4" S100               ; driver 3 on board 6XD uses port out4 to control the brake
      M569.7 P0.4 C"out5" S100               ; driver 4 on board 6XD uses port out5 to control the brake
      M569.7 P0.5 C"out6" S100               ; driver 5 on board 6XD uses port out6 to control the brake
      
      ; Endstops
      M574 X1 S1 P"3.io0.in"                 ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 3.io0.in
      M574 Y1 S1 P"0.io1.in+io2.in"          ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in and io2.in
      M574 Z1 S2                             ; configure Z-probe endstop for low end on Z
      M574 U1 S1 P"3.!io3.in"                ; configure actuator 1 endstop, high end, microswitch
      M574 V1 S1 P"3.!io5.in"                ; configure actuator 2 endstop, high end, microswitch
      
      ; Hobby Servos                         ; no longer used b/c ooze control not necessary
      ;M950 S0 C"3.io1.out"			       ; create servo 1 output on 3.io2 for mosquito acutator 1
      ;M950 S1 C"3.io4.out"				   ; create servo 1 output on 3.io3 for mosquito acutator 2
      
      
      ;Bed Leveling
      M671 X1205:1205:-285.1:-285.1 Y-207.2:1451.4:1451.4:-207.2 S1.5 P5 F1.0 ;Define Z screw X Y locations, max correction, pitch, fudge factor
      
      ; Axis Limits
      M208 X0 Y0 Z-0.5 U0 V0 W0 S1                              ; set axis minima
      M208 X1184 Y1175 Z1200 U17 V17 W100 S0                   ; set axis maxima true X max is 1204 so we are using 1184 for safety. true Y max is 1195 so we are using 1175 for safety
      
      ; Z-Probe
      ; servo pin defined in accessories section           	 ; create servo pin for BLTouch
      M558 P8 C"!0.io8.in" H5 F{global.probeSpeeds} T99999999 R0.75 A{global.probeCycles} S0.03  ; set Z probe type and the dive height + speeds R0.5 b/c probe needs time to deploy without triggering.
      G31 P1000 X{global.probeXOffset} Y{global.probeYOffset} Z5.27                              ; set Z probe trigger value, offset and trigger height. Z4.07 for 5mm nozzle
      M557 X{{global.probeXOffset},{1184+{global.probeXOffset}}} Y{{global.probeYOffset},1175} P10:10  	  ; define mesh grid
      
      ; Heaters
      M308 S0 P"0.temp0" Y"PT1000" A"Bed Inner"                ; configure bed A sensor 0 as thermistor on pin temp0
      M308 S7 P"0.temp2" Y"PT1000" A"Bed Outer"                ; configure bed B sensor 9 as thermistor on pin temp2
      M950 H0 C"0.out0" T0                                     ; create bed heater output on out0 and map it to sensor 0
      M307 H0 R0.033 K0.020:0.000 D182.23 E1.35 S1.00 B0       ; disable bang-bang for bed and set pwm
      M140 P0 H0 S0 R0                                         ; bed heater 0 uses heater 0
      M143 H0 S255 P0 T0 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S1 P"0.temp1" Y"PT1000" A"Chamber Inner"            ; configure chamber A sensor 1 as thermistor on pin temp1
      M308 S8 P"0.temp3" Y"PT1000" A"Chamber Outer"            ; configure chamber B sensor 10 as thermistor on pin temp3
      M950 H1 C"0.out1" T1                                     ; create chamber heater output on out1 and map it to sensor 1                                      
      M307 H1 R0.078 K0.081:0.000 D38.73 E1.35 S1.00 B0		 ; disable bang-bang for chamber and set pwm
      M141 P0 H1 S0 R0                                         ; chamber heater 1 uses heater 1
      M143 H1 S255 P0 T1 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S2 P"3.spi.cs0" Y"rtd-max31865" A"primary Top"       ; configure primary sensor top as PT100 on pin spi.cs0
      M950 H2 C"3.out8" T2                                     ; create primary heater output on out3 and map it to sensor 2
      M307 H2 A940 C810 D22 S1.0 B0                            ; disable bang-bang for primary and set pwm
      M143 H2 S480 P0 T2 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S3 P"3.spi.cs1" Y"rtd-max31865" A"primary Middle"    ; configure primary sensor middle as PT100 on pin spi.cs1
      M950 H3 C"3.out7" T3                                     ; create primary heater output on out4 and map it to sensor 3
      M307 H3 A940 C810 D22 S1.0 B0                            ; disable bang-bang for primary and set pwm
      M143 H3 S480 P0 T3 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S4 P"4.spi.cs0" Y"rtd-max31865" A"primary Nozzle"   ; configure primary sensor nozzle as PT100 on pin spi.cs0 - WAS P"4.spi.cs0" Y"rtd-max31865"
      M950 H4 C"4.out8" T4                                     ; create primary heater output on out0 and map it to sensor 4
      M307 H4 A795 C920 D10 S1.0 B0                            ; disable bang-bang for primary and set pwm
      M143 H4 S480 P0 T4 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S5 P"3.temp1" Y"PT1000" A"Mosquito 1"               ; configure mosquito sensor top as PT1000 on pin 3.temp0 - other thermistor is shorted
      M950 H5 C"3.out0+out1" T5                                ; create primary heater output on out3 and map it to sensor 2
      M307 H5 R2.262 K0.361:0.160 D7.99 E1.35 S1.00 B0 V24.1   ; disable bang-bang for primary and set pwm
      M143 H5 S505 P0 T5 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      M308 S6 P"4.temp0" Y"PT1000" A"Mosquito 2"               ; configure mosquito sensor top as PT1000 on pin 3.temp0
      M950 H6 C"4.out0+out1" T6                                ; create primary heater output on out3 and map it to sensor 2
      M307 H6 R2.364 K0.493:0.022 D7.12 E1.35 S1.00 B0 V24.1   ; disable bang-bang for primary and set pwm
      M143 H6 S505 P0 T6 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
      
      ; Heater Faults
      M570 H0 P60 T15 R10
      M570 H1 P60 T15 R10	;commented out because of test of combined heaters
      M570 H2 P60 T15 R10
      M570 H3 P60 T15 R10
      M570 H4 P60 T15 R10
      M570 H5 P60 T15 R10
      M570 H6 P60 T15 R10
      
      ; Redundant Sensors
      
      M308 S9  P"2.temp0"	Y"PT1000" A"Bed Strip 1"		; configure bed strip array 1 sensor
      M308 S10 P"2.temp1"	Y"PT1000" A"Bed Strip 2"		; configure bed strip array 2 sensor
      M308 S11 P"2.temp2"	Y"PT1000" A"Bed Strip 3"		; configure bed strip array 3 sensor
      
      M308 S12 P"1.temp0"	Y"PT1000" A"Chamber Coil 1"		; configure chamber coil 1 sensor
      M308 S13 P"1.temp1"	Y"PT1000" A"Chamber Coil 2"		; configure chamber coil 2 sensor
      M308 S14 P"1.temp2"	Y"PT1000" A"Chamber Coil 3"		; configure chamber coil 3 sensor
      
      ; Outputs
      M950 F0 C"0.out7"                     	  ; create chassis fan 0 on relay
      M106 P0 S0 H-1 C"Chassis Fan"             ; set fan 0 value, thermostatic control off
      
      M950 F1 C"5.io1.out"                      ; create chamber fan 1 was !5.out3
      M106 P1 S0 H-1 C"Chamber Fan"             ; set fan 1 value, thermostatic control from sensor 1 H12:13:14 T50
      
      M950 F2 C"0.out2"                         ; create primary pc fan 2
      M106 P2 S0 H-1 C"primary Fan"       	      ; set fan 2 value, thermostatic control off
      
      M950 F3 C"1.out1"                         ; create mosquito pc fan 3
      M106 P3 S0 H-1 C"Mosquito Fan"     	      ; set fan 3 value, thermostatic control off
      
      M950 P0 C{global.vacZone1Pin}         	  ; create bed vac valve 1
      M42 P0 S0								  ; set output value to off
      
      M950 P1 C{global.vacZone2Pin}             ; create bed vac valve 2
      M42 P1 S0								  ; set output value to off
      
      M950 P2 C{global.vacZone3Pin}             ; create bed vac valve 3
      M42 P2 S0								  ; set output value to off
      
      M950 P3 C{global.vacZone4Pin}             ; create bed vac valve 4
      M42 P3 S0								  ; set output value to off
      
      M950 P4 C"2.out6"                         ; create door locks on relay
      M42 P4 S0								  ; set output value to off
      
      M950 F4 C"2.out4"                         ; create radiator on relay
      M106 P4 S1 H2:3:4:5:6 T50 C"Radiator"     ; set fan 8 value, thermostatic control on
      
      M950 P5 C"1.out4"                         ; create probe on relay
      M42 P5 S0								  ; set output value to off
      
      M950 P6 C"2.out3"	                      ; create venturi valve was 1.out0
      M42 P6 S0								  ; set output value to off
      
      M950 F5 C"4.out6"                         ; create head electronics fan
      M106 P5 S255 H-1 C"Head Fan 1"            ; set fan 12 value, thermostatic control off
      
      ;M950 F6 C"4.out7"                         ; create head electronics fan REMOVED
      ;M106 P6 S255 H-1 C"Head Fan 2"            ; set fan 12 value, thermostatic control off
      
      M950 P7 C"1.out8"						  ; create yellow stack led
      M42 P7 S0								  ; set output value to off
      
      M950 P8 C"1.out7"						  ; create green stack led
      M42 P8 S0								  ; set output value to off
      
      M950 P9 C"1.out6"						  ; create white stack led
      M42 P9 S0								  ; set output value to off
      
      M950 P10 C"1.out3"						  ; create beep stack led
      M42 P10 S0								  ; set output value to off
      
      M950 P11 C"2.io1.out"					  ; create secondary extruder reverse for mosquito 1
      M42 P11 S0								  ; set output value to off
      
      M950 P12 C"2.io2.out"					  ; create secondary extruder reset/forward for mosquito 1
      M42 P12 S0								  ; set output value to off
      
      M950 P13 C"2.out7"						  ; create chamber lights
      M42 P13 S0								  ; set output value to off						
      
      M950 P14 C"2.io4.out"					  ; create secondary extruder reverse for mosquito 2
      M42 P14 S0								  ; set output value to off
      
      M950 P15 C"2.io5.out"					  ; create secondary extruder reset/forward for mosquito 2
      M42 P15 S0								  ; set output value to off
      
      M950 P16 C"2.out5"						  ; create garage door on/off
      M42 P16 S0								  ; set output value to off		
      
      M950 P17 C"1.out5"						  ; create garage door direction
      M42 P17 S0								  ; set output value to off		
      
      M950 P18 C"121.out1"					  ; create speaker wait sound - piano
      M42 P18 S0								  ; set output value to off
      
      M950 P19 C"2.out8"						  ; create speaker startup sound - Alert
      M42 P19 S0								  ; set output value to off
      
      M950 P20 C"121.out0"					  ; create speaker notification sound - Notify
      M42 P20 S0								  ; set output value to off
      
      M950 P21 C"1.out0"						  ; create speaker alarm sound - spaceship
      M42 P21 S0								  ; set output value to off
      
      M950 P22 C"5.out0"						  ; create air pressure override relay
      M42 P22 S0								  ; set output value to off
      
      M950 P23 C"5.out1"						  ; create duet reset enable relay
      M42 P23 S0								  ; set output value to off
      
      G4 S2   ; adding this seems to prevent the fans from blipping on during startup
      
      ; Trigger Inputs
      M950 J0 C"2.io0.in"						  ; assign input J0 to 2.io0.in for emergency stop
      M581 P0 T0 S0 R0					      ; configur external trigger, pin 0, trigger 0, inactive-active, any time
      
      M950 J1 C"2.io1.in"						  ; assign input J1 to 1.io1.in for pause button
      M581 P1 T1 S0 R1						  ; configure external trigger, pin 1, trigger 1, inactive-active, during print
      
      ; Other Inputs
      M950 J3 C"1.io0.in"   				      ; create door lock gpio input
      
      M950 J4 C"1.io1.in"   				      ; create door lock gpio input
      
      M950 J5 C"1.io2.in"   				      ; create door lock gpio input
      
      M950 J6 C"1.io3.in"   				      ; create door lock gpio input
      
      M950 J7 C"1.io4.in"   				      ; create door lock gpio input
      
      M950 J8 C"1.io5.in"   				      ; create door lock gpio input
      
      M950 J9 C"5.io0.in"					      ; create air pressure input gpio input
      
      M950 J10 C"5.io1.in"					  ; create vacuum zone 1 input gpio input
      
      M950 J11 C"5.io2.in"					  ; create vacuum zone 2 input gpio input
      
      M950 J12 C"5.io3.in"					  ; create vacuum zone 3 input gpio input
      
      M950 J13 C"5.io4.in"					  ; create vacuum zone 4 input gpio input
      
      M950 J14 C"5.io5.in"					  ; create garage door close input gpio input
      
      M950 J15 C"2.io3.in"					  ; create garage door open input gpio input
      
      ; Tools
      M563 P0 S"primary" D2 H2:3:4 F2    	   		; define tool 0 as primary, extruder 2, Heaters 2 3 4, Fan 2
      M568 P0 R0 S0                         		; set tool 0 active and standby temperatures to 0C
      G10 P0 X0 Y0 Z0 U0 V0 W0               		; set tool 0 axis offests
      
      M563 P1 S"Mosquito 1" D0 H5 F3          	; define tool 1 as Mosquito 1, extruder 0, Heaters 5, Fan 3 was H5:6
      M568 P1 R0 S0                           	; set tool 1 active and standby temperatures to 0C
      G10 P1 X-71.815 Y-10.976 Z{global.T1ZOffset} U0 V0 W0   ; set tool 1 axis offests
      
      M563 P2 S"Mosquito 2" D1 H6 F3          	; define tool 2 as Mosquito 2, extruder 1, Heaters 6, Fan 3 was H7:8
      M568 P2 R0 S0                           	; set tool 2 active and standby temperatures to 0C
      G10 P2 X-71.815 Y41.411 Z{global.T2ZOffset} U0 V0 W0   ; set tool 2 axis offests
      
      ; Custom settings are not defined
      
      ; Miscellaneous
      G4 S1
      
      T0 ; switch to T0 when first booting up
      
      M98 P"soundAlert.g" ; alert that config.g has ran
      
      M98 P"0:/sys/startup.g"
      
      
      p8blrundefined 1 Reply Last reply Reply Quote 0
      • p8blrundefined
        p8blr @p8blr
        last edited by

        @p8blr I hit the 2000 character limit so here's variables.g

        ; this file declares global variables and is ran by config.g
        
        if !exists(global.T1ActuationDist)
        	global T1ActuationDist = 17
        	global T2ActuationDist = {global.T1ActuationDist}
        	global T12FeedRt = 1000
        	global T1ZOffset = -6.34 ; used to be 7.55
        	global T2ZOffset = {global.T1ZOffset} + 0.11
        	global layerSpeed = 2400
        	global pulsarFanSpeed = 0
        	global mosqFanSpeed = 0
        	global vacZone1Pin = "1.out2"
        	global vacZone2Pin = "2.out0"
        	global vacZone3Pin = "2.out1"
        	global vacZone4Pin = "2.out2"
        	global pressureAdvanceT0 = 0
        	global pressureAdvanceT1 = 0.25
        	global pressureAdvanceT2 = 0.25
        	global probeCycles = 5
        	global errorFlag = false
        	global bedStripTempMin = 0
        	global bedStripTempMax = 0
        	global bedStripErrorCount = 0
        	global heaterFaultBedEnabled = true
        	global chamberCoilTempMin = 0
        	global chamberCoilTempMax = 0
        	global chamberCoilErrorCount = 0
        	global heaterFaultChamberEnabled = true
        	global lockStatus = ""
        	global airStatus = ""
        	global vacStatus = ""
        	global vac1Status = ""
        	global vac2Status = ""
        	global vac3Status = ""
        	global vac4Status = ""
        	global probeSpeeds = {1000,100}	; fast:slow probing speeds
        	global doorLockStatus = ""
        	global probeXOffset = -47.8		; probe offset from nozzle
        	global probeYOffset = 15.2		; probe offset from nozzle
        	global bedProbeXMin = 122		; minimum x posistion for 4 point leveling probing
        	global bedProbeXMax = 1050		; maximum x posistion for 4 point leveling probing
        	global bedProbeYMin = 141		; minimum y posistion for 4 point leveling probing
        	global bedProbeYMax = 1065		; maximum y posistion for 4 point leveling probing
        	global fudge = 1				; a small offset used in between G30s used in bed.g
        	global chamberFanMaxSpeed = 1
        	global userPrompt = 0
        else
        	set global.T1ActuationDist = 17
        	set global.T2ActuationDist = {global.T1ActuationDist}
        	set global.T12FeedRt = 1000
        	set global.T1ZOffset = -6.34
        	set global.T2ZOffset = {global.T1ZOffset} + 0.11
        	set global.layerSpeed = 2400
        	set global.pulsarFanSpeed = 0
        	set global.mosqFanSpeed = 0
        	set global.vacZone1Pin = "1.out2"
        	set global.vacZone2Pin = "2.out0"
        	set global.vacZone3Pin = "2.out1"
        	set global.vacZone4Pin = "2.out2"
        	set global.pressureAdvanceT0 = 0
        	set global.pressureAdvanceT1 = 0.25
        	set global.pressureAdvanceT2 = 0.25
        	set global.probeCycles = 5
        	set global.errorFlag = false
        	set global.bedStripTempMin = 0
        	set global.bedStripTempMax = 0
        	set global.bedStripErrorCount = 0
        	set global.heaterFaultBedEnabled = true
        	set global.chamberCoilTempMin = 0
        	set global.chamberCoilTempMax = 0
        	set global.chamberCoilErrorCount = 0
        	set global.heaterFaultChamberEnabled = true
        	set global.lockStatus = ""
        	set global.airStatus = ""
        	set global.vacStatus = ""
        	set global.vac1Status = ""
        	set global.vac2Status = ""
        	set global.vac3Status = ""
        	set global.vac4Status = ""
        	set global.probeSpeeds = {1000,100}	; fast:slow probing speeds
        	set global.doorLockStatus = ""
        	set global.probeXOffset = -47.8
        	set global.probeYOffset = 15.2
        	set global.bedProbeXMin = 122			;150
        	set global.bedProbeXMax = 1050			;1034
        	set global.bedProbeYMin = 141			;150
        	set global.bedProbeYMax = 1065			;1025
        	set global.fudge = 1
        	set global.chamberFanMaxSpeed = 1
        	set global.userPrompt = 0
        
        droftartsundefined 1 Reply Last reply Reply Quote 0
        • droftartsundefined
          droftarts administrators @p8blr
          last edited by

          @p8blr Please post your homeall.g and/or homez.g if the following doesn't work. Also, what firmware version?

          In your config.g, you define the Z endstop as using a probe:

          M574 Z1 S2  ; configure Z-probe endstop for low end on Z
          

          If you're using a G1 H2 move to home Z in homeall.g/homez.g, when you redefine the Z endstop in your macro as:

          M574 Z1 S1 P"0.io3.in+0.io4.in+0.io5.in+0.io6.in"
          

          it then uses this for the G1 H2 move in homeall.g/homez.g.

          Either:

          • Use G30 to home Z with the probe. You don't need M574 Z1 S2 in config.g, this can just set the other endstops. Or
          • At the end of the Z tramming macro, set the Z endstop back to M574 Z1 S2.

          Ian

          Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

          p8blrundefined 2 Replies Last reply Reply Quote 0
          • p8blrundefined
            p8blr @droftarts
            last edited by

            @droftarts I'm currently struggling to get my printer working in SBC mode again after running a firmware update. I appreciate your suggestions and I'll be sure try them as soon as I get back to an operational state. Thanks.

            1 Reply Last reply Reply Quote 0
            • p8blrundefined
              p8blr @droftarts
              last edited by p8blr

              @droftarts I was able to get my printer running again if I changed it to standalone mode, rather than SBC, and upgraded to 3.5.3-rc.1. Here's some new code that I tried, the idea is creating a new axis A will stop it from interfering with the z probe, but what I'm noticing is the brakes quit working after this is run. Thoughts?

              zTramming.g

              ; new z tramming routine
              ; if it works explain how here
              
              M18 Z   ; disable drive so it can be reassigned
              
              ; Drive mapping
              M584 A0.2:0.3:0.4:0.5   ; set drive mapping for new A axis - same as z is defined in driveSetup.g, note the order matters
              
              G4 S1   ; wait for drives to be mapped to letters
              
              ; Drive config - same as z is defined in driveSetup.g
              M92 A6400   ; set steps per mm
              M566 A60    ; set max instantaneous speed changes
              M203 A1500  ; set max speed
              M201 A1000  ; set max acceleration
              
              ; Brakes are assigned at drive level in driveSetup.g
              
              ; Endstops
              M574 A1 S1 P"0.io3.in+0.io4.in+0.io5.in+0.io6.in"
              
              ; Axis Limits
              M208 A-2 S1		; set axis minima
              M208 A1205 S0	; set axis maxama
              
              ; perform tramming
              M17 A   ; enable
              G4 S1	; wait
              
              M98 P"soundNotifyShort.g"   ; beep
              G4 S1   ; wait
              
              M402    			; retract probe to be safe
              M98 P"uvHomeCond.g" ; home u and v if they aren't homed
              G1 U0 V0 F999999	; retract tools
              M98 P"doorLock.g"   ; ensure doors are locked befor moving
              
              if {global.errorFlag}
              	M99 ; exit current file
              
              G91 						; relative mode
              G1 H1 A-5 F500  			; try moving A just a little bit
              M98 P"soundNotifyShort.g"
              G1 H2 A5 F500   			; move in positive A now that we know it's safe
              M98 P"soundNotifyShort.g"
              G1 H1 A-1205 F200			; move quickly in A to the endstop
              M98 P"soundNotifyShort.g"
              G1 H2 A5 F200				; back off 5mm
              M98 P"soundNotifyShort.g"
              G1 H1 A-6 F50				; home slowly for accurate homing
              M98 P"soundNotifyShort.g"
              G1 H2 A10 F500				; back off 10mm
              G90							; absolute mode
              M98 P"soundAlertShort.g"
              
              G4 S1	; wait
              
              ; restore axis back to normal
              
              M18 A   ; disable drive so it can be reassigned
              
              M98 P"driveSetup.g" ; restore default setup
              
              M584 P5 ; hide unused axes
              

              driveSetup.g (this is also called to setup the drives in config.g)

              M18                                     ; disable steppers to disable old axes config
              
              ; Drive setup
              ; TX:X:X:X Min stp pls width, stp ple interval, dir setup time, dir hold time, in microseconds
              M569 P121.0 S1 R1 T1:2:1:1              ; physical drive X dc42 recommends T1:1:0.5:0 but we were using T1:2:1:1 for everything, 0.75:1.5:0.025:1 might make y stall
              M569 P0.0   S1 R1 T1:2:1:1              ; physical drive Y1
              M569 P0.1   S1 R1 T1:2:1:1              ; physical drive Y2
              M569 P0.2   S0 R1 T1:2:1:1              ; physical drive Z1
              M569 P0.3   S0 R1 T1:2:1:1              ; physical drive Z2
              M569 P0.4   S0 R1 T1:2:1:1              ; physical drive Z3
              M569 P0.5   S0 R1 T1:2:1:1              ; physical drive Z4
              M569 P3.1 S1 R1                         ; physical drive E1 Mosquito 1 extruder
              M569 P3.2 S1 R1                         ; physical drive E2 Mosquito 2 extruder
              M569 P122.0 S1 R0                       ; physical drive E0 Pulsar Extruder
              M569 P4.0 S1 R1                         ; physical drive actuator 1
              M569 P4.1 S1 R1                         ; physical drive actuator 2
              G4 S1                                   ; wait for drive to setup
              
              ; Drive mapping
              M584 X121.0                             ; set drive mapping for x axis
              M584 Y0.0:0.1                           ; set drive mapping for y axis
              M584 Z0.2:0.3:0.4:0.5                   ; set drive mapping for z axes
              M584 E3.1:3.2:122.0                     ; set drive mapping for extruder axes
              M584 U4.0                               ; set drive mapping for mosquito actuator 1
              M584 V4.1                               ; set drive mapping for mosquito actuator 2
              G4 S1                                   ; wait for drives to be mapped to letters
              
              ; Drive config
              M350 E16:16:16 U1 V1                                      ; configure microstepping with interpolation
              M92  X64 Y128 Z6400 E410:410:224.6 U200 V200              ; set steps per mm
              M566 X4000.00 Y2000.00 Z60.00 E600:600:7001 U600 V600 P1  ; set maximum instantaneous speed changes (mm/min)
              M203 X35000 Y76050 Z1500 E1200:1200:9000 U300 V300        ; set maximum speeds (mm/min), XYZ speeds based on cont. torque curve and RMS limit, currently at max values, e value set by Dyze
              M201 X2000 Y2000 Z1000 E3000:3000:5000 U100 V100          ; set accelerations (mm/s^2) X300 Y300 looks best for mosquitos, Y8000 is RMS risk, not tested above 13000 but could cause coupler failure, e was 5000
              M906 E600:600 U500 V500 I30                               ; set motor currents (mA) and motor idle factor in per cent
              M84 S30                                                   ; Set idle timeout
              
              ; Brakes
              M569.7 P0.2 C"out3" S10               ; driver 2 on board 6XD uses port out3 to control the brake - was a 10ms delay but increased to a second to help with position recovery
              M569.7 P0.3 C"out4" S10               ; driver 3 on board 6XD uses port out4 to control the brake
              M569.7 P0.4 C"out5" S10               ; driver 4 on board 6XD uses port out5 to control the brake
              M569.7 P0.5 C"out6" S10               ; driver 5 on board 6XD uses port out6 to control the brake
              
              ; Endstops
              M574 X1 S1 P"3.io0.in"                 ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 3.io0.in
              M574 Y1 S1 P"0.io1.in+io2.in"          ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in and io2.in
              M574 Z1 S2                             ; configure Z-probe endstop for low end on Z
              M574 U1 S1 P"3.!io3.in"                ; configure actuator 1 endstop, high end, microswitch
              M574 V1 S1 P"3.!io5.in"                ; configure actuator 2 endstop, high end, microswitch
              
              ; Hobby Servos                         ; no longer used b/c ooze control not necessary
              ;M950 S0 C"3.io1.out"			       ; create servo 1 output on 3.io2 for mosquito acutator 1
              ;M950 S1 C"3.io4.out"				   ; create servo 1 output on 3.io3 for mosquito acutator 2
              
              
              p8blrundefined 1 Reply Last reply Reply Quote 0
              • p8blrundefined
                p8blr @p8blr
                last edited by

                @timschneider @chrishamm Is this issue here also related to the other brake issues we've been having? I'm running 3.5.3-rc.1 and still have the issue of the brakes not working after being re-mapped to different axes.

                gloomyandyundefined droftartsundefined 2 Replies Last reply Reply Quote 0
                • gloomyandyundefined
                  gloomyandy @p8blr
                  last edited by

                  @p8blr You still have the probe mapped as an endstop:

                  M574 Z1 S2                             ; configure Z-probe endstop for low end on Z
                  

                  Do you actually need to do this? You do not need to define the probe as an endstop if you are using G30 to home/probe the bed. See Ian's post above, it may well be that this is causing the interference with the z probe you are seeing.

                  1 Reply Last reply Reply Quote 0
                  • droftartsundefined
                    droftarts administrators @p8blr
                    last edited by

                    @p8blr I don't see how remapping the Z axis would change the behaviour. A G1 Z# H1 move will use the defined endstop to home. A G30 command will use the probe. Can you post your homeall.g and/or homez.g?

                    The issue with the brakes not re-engaging should have been fixed, though it hasn't been closed, as is marked as 'requires testing': https://github.com/Duet3D/RepRapFirmware/issues/1023
                    It's mentioned as a bug fix in the 3.5.3-rc.1 release notes https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-RC#reprapfirmware-353-rc1-changes-since-352

                    M17 did not energise the motor brake solenoid (issue 1023)

                    Are you saying there's also an issue with M18, that the brake doesn't come on when the drives are disabled? If you are sure it's not working for you, can you post to the Github issue?

                    Ian

                    dc42 created this issue in Duet3D/RepRapFirmware

                    closed M17 doesn't re-engage motor brake #1023

                    Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                    p8blrundefined 1 Reply Last reply Reply Quote 0
                    • p8blrundefined
                      p8blr @droftarts
                      last edited by p8blr

                      @droftarts so here's my code after making the changes: (this is 3.5.3-rc.1 in standalone mode)

                      config.g

                      ; Configuration file for RepRapFirmware on Duet 3 Main Board 6XD
                      ; executed by the firmware on start-up
                      ;
                      ; generated by RepRapFirmware Configuration Tool v3.5.4 on Thu Aug 29 2024 08:20:24 GMT-0500 (Central Daylight Time)
                      
                      ; General
                      M575 P1 S1 B57600 ; enable support for PanelDue
                      G90 ; absolute coordinates
                      M83 ; relative extruder moves
                      M550 P"MyPrinter" ; set hostname
                      
                      ; Declare global variables
                      M98 P"variables.g"
                      
                      ; Wait a moment for the CAN expansion boards to start
                      G4 S2
                      
                      ; Network
                      M552 P0.0.0.0 S1 ; configure Ethernet adapter
                      M586 P0 S1 ; configure HTTP
                      
                      M18                                     ; disable steppers to disable old axes config
                      
                      ; Drive setup
                      ; TX:X:X:X Min stp pls width, stp ple interval, dir setup time, dir hold time, in microseconds
                      M569 P121.0 S1 R1 T1:2:1:1              ; physical drive X dc42 recommends T1:1:0.5:0 but we were using T1:2:1:1 for everything, 0.75:1.5:0.025:1 might make y stall
                      M569 P0.0   S1 R1 T1:2:1:1              ; physical drive Y1
                      M569 P0.1   S1 R1 T1:2:1:1              ; physical drive Y2
                      M569 P0.2   S0 R1 T1:2:1:1              ; physical drive Z1
                      M569 P0.3   S0 R1 T1:2:1:1              ; physical drive Z2
                      M569 P0.4   S0 R1 T1:2:1:1              ; physical drive Z3
                      M569 P0.5   S0 R1 T1:2:1:1              ; physical drive Z4
                      M569 P3.1 S1 R1                         ; physical drive E1 Mosquito 1 extruder
                      M569 P3.2 S1 R1                         ; physical drive E2 Mosquito 2 extruder
                      M569 P122.0 S1 R0                       ; physical drive E0 Primary Extruder
                      M569 P4.0 S1 R1                         ; physical drive actuator 1
                      M569 P4.1 S1 R1                         ; physical drive actuator 2
                      G4 S1                                   ; wait for drive to setup
                      
                      ; Drive mapping
                      M584 X121.0                             ; set drive mapping for x axis
                      M584 Y0.0:0.1                           ; set drive mapping for y axis
                      M584 Z0.2:0.3:0.4:0.5                   ; set drive mapping for z axes
                      M584 E3.1:3.2:122.0                     ; set drive mapping for extruder axes
                      M584 U4.0                               ; set drive mapping for mosquito actuator 1
                      M584 V4.1                               ; set drive mapping for mosquito actuator 2
                      G4 S1                                   ; wait for drives to be mapped to letters
                      
                      ; Drive config
                      M350 E16:16:16 U1 V1                                      ; configure microstepping with interpolation
                      M92  X64 Y128 Z6400 E410:410:224.6 U200 V200              ; set steps per mm
                      M566 X4000.00 Y2000.00 Z60.00 E600:600:7001 U600 V600 P1  ; set maximum instantaneous speed changes (mm/min)
                      M203 X35000 Y76050 Z1500 E1200:1200:9000 U300 V300        ; set maximum speeds (mm/min), XYZ speeds based on cont. torque curve and RMS limit, currently at max values, e value set by Dyze
                      M201 X2000 Y2000 Z1000 E3000:3000:5000 U100 V100          ; set accelerations (mm/s^2) X300 Y300 looks best for mosquitos, Y8000 is RMS risk, not tested above 13000 but could cause coupler failure, e was 5000
                      M906 E600:600 U500 V500 I30                               ; set motor currents (mA) and motor idle factor in per cent
                      M84 S30                                                   ; Set idle timeout
                      
                      ; Brakes
                      M569.7 P0.2 C"out3" S10               ; driver 2 on board 6XD uses port out3 to control the brake
                      M569.7 P0.3 C"out4" S10               ; driver 3 on board 6XD uses port out4 to control the brake
                      M569.7 P0.4 C"out5" S10               ; driver 4 on board 6XD uses port out5 to control the brake
                      M569.7 P0.5 C"out6" S10               ; driver 5 on board 6XD uses port out6 to control the brake
                      
                      ; Endstops
                      M574 X1 S1 P"3.io0.in"                 ; configure switch-type (e.g. microswitch) endstop for low end on X via pin 3.io0.in
                      M574 Y1 S1 P"0.io1.in+io2.in"          ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in and io2.in
                      ;M574 Z1 S2                             ; configure Z-probe endstop for low end on Z
                      M574 U1 S1 P"3.!io3.in"                ; configure actuator 1 endstop, high end, microswitch
                      M574 V1 S1 P"3.!io5.in"                ; configure actuator 2 endstop, high end, microswitch
                      
                      ; Hobby Servos                         ; no longer used b/c ooze control not necessary
                      ;M950 S0 C"3.io1.out"			       ; create servo 1 output on 3.io2 for mosquito acutator 1
                      ;M950 S1 C"3.io4.out"				   ; create servo 1 output on 3.io3 for mosquito acutator 2
                      
                      
                      ;Bed Leveling
                      M671 X1205:1205:-285.1:-285.1 Y-207.2:1451.4:1451.4:-207.2 S1.5 P5 F1.0 ;Define Z screw X Y locations, max correction, pitch, fudge factor
                      
                      ; Axis Limits
                      M208 X0 Y0 Z-0.5 U0 V0 W0 S1                              ; set axis minima
                      M208 X1184 Y1175 Z1200 U17 V17 W100 S0                   ; set axis maxima true X max is 1204 so we are using 1184 for safety. true Y max is 1195 so we are using 1175 for safety
                      
                      ; Kinematics
                      M669 K0 ; configure Cartesian kinematics
                      
                      ; Z-Probe
                      ; servo pin defined in accessories section           	 ; create servo pin for BLTouch
                      M558 P8 C"!0.io8.in" H5 F{global.probeSpeeds} T99999999 R0.75 A{global.probeCycles} S0.03  ; set Z probe type and the dive height + speeds R0.5 b/c probe needs time to deploy without triggering.
                      G31 P1000 X{global.probeXOffset} Y{global.probeYOffset} Z5.27                              ; set Z probe trigger value, offset and trigger height. Z4.07 for 5mm nozzle
                      M557 X{{global.probeXOffset},{1184+{global.probeXOffset}}} Y{{global.probeYOffset},1175} P10:10  	  ; define mesh grid
                      
                      ; Heaters
                      M308 S0 P"0.temp0" Y"PT1000" A"Bed Inner"                ; configure bed A sensor 0 as thermistor on pin temp0
                      M308 S7 P"0.temp2" Y"PT1000" A"Bed Outer"                ; configure bed B sensor 9 as thermistor on pin temp2
                      M950 H0 C"0.out0" T0                                     ; create bed heater output on out0 and map it to sensor 0
                      M307 H0 R0.033 K0.020:0.000 D182.23 E1.35 S1.00 B0       ; disable bang-bang for bed and set pwm
                      M140 P0 H0 S0 R0                                         ; bed heater 0 uses heater 0
                      M143 H0 S255 P0 T0 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S1 P"0.temp1" Y"PT1000" A"Chamber Inner"            ; configure chamber A sensor 1 as thermistor on pin temp1
                      M308 S8 P"0.temp3" Y"PT1000" A"Chamber Outer"            ; configure chamber B sensor 10 as thermistor on pin temp3
                      M950 H1 C"0.out1" T1                                     ; create chamber heater output on out1 and map it to sensor 1                                      
                      M307 H1 R0.078 K0.081:0.000 D38.73 E1.35 S1.00 B0		 ; disable bang-bang for chamber and set pwm
                      M141 P0 H1 S0 R0                                         ; chamber heater 1 uses heater 1
                      M143 H1 S255 P0 T1 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S2 P"3.spi.cs0" Y"rtd-max31865" A"Primary Top"       ; configure Primary sensor top as PT100 on pin spi.cs0
                      M950 H2 C"3.out8" T2                                     ; create Primary heater output on out3 and map it to sensor 2
                      M307 H2 A940 C810 D22 S1.0 B0                            ; disable bang-bang for Primary and set pwm
                      M143 H2 S480 P0 T2 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S3 P"3.spi.cs1" Y"rtd-max31865" A"Primary Middle"    ; configure Primary sensor middle as PT100 on pin spi.cs1
                      M950 H3 C"3.out7" T3                                     ; create Primary heater output on out4 and map it to sensor 3
                      M307 H3 A940 C810 D22 S1.0 B0                            ; disable bang-bang for Primary and set pwm
                      M143 H3 S480 P0 T3 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S4 P"4.spi.cs0" Y"rtd-max31865" A"Primary Nozzle"   ; configure Primary sensor nozzle as PT100 on pin spi.cs0 - WAS P"4.spi.cs0" Y"rtd-max31865"
                      M950 H4 C"4.out8" T4                                     ; create Primary heater output on out0 and map it to sensor 4
                      M307 H4 A795 C920 D10 S1.0 B0                            ; disable bang-bang for Primary and set pwm
                      M143 H4 S480 P0 T4 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S5 P"3.temp1" Y"PT1000" A"Mosquito 1"               ; configure mosquito sensor top as PT1000 on pin 3.temp0 - other thermistor is shorted
                      M950 H5 C"3.out0+out1" T5                                ; create Primary heater output on out3 and map it to sensor 2
                      M307 H5 R2.262 K0.361:0.160 D7.99 E1.35 S1.00 B0 V24.1   ; disable bang-bang for Primary and set pwm
                      M143 H5 S505 P0 T5 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      M308 S6 P"4.temp0" Y"PT1000" A"Mosquito 2"               ; configure mosquito sensor top as PT1000 on pin 3.temp0
                      M950 H6 C"4.out0+out1" T6                                ; create Primary heater output on out3 and map it to sensor 2
                      M307 H6 R2.364 K0.493:0.022 D7.12 E1.35 S1.00 B0 V24.1   ; disable bang-bang for Primary and set pwm
                      M143 H6 S505 P0 T6 A2 C0                                 ; Max heater temp: Heater number, max temp, monitor number, sensor number, action, condition
                      
                      ; Heater Faults
                      M570 H0 P60 T15 R10
                      M570 H1 P60 T15 R10
                      M570 H2 P60 T15 R10
                      M570 H3 P60 T15 R10
                      M570 H4 P60 T15 R10
                      M570 H5 P60 T15 R10
                      M570 H6 P60 T15 R10
                      
                      ; Redundant Sensors
                      
                      M308 S9  P"2.temp0"	Y"PT1000" A"Bed Strip 1"		; configure bed strip array 1 sensor
                      M308 S10 P"2.temp1"	Y"PT1000" A"Bed Strip 2"		; configure bed strip array 2 sensor
                      M308 S11 P"2.temp2"	Y"PT1000" A"Bed Strip 3"		; configure bed strip array 3 sensor
                      
                      M308 S12 P"1.temp0"	Y"PT1000" A"Chamber Coil 1"		; configure chamber coil 1 sensor
                      M308 S13 P"1.temp1"	Y"PT1000" A"Chamber Coil 2"		; configure chamber coil 2 sensor
                      M308 S14 P"1.temp2"	Y"PT1000" A"Chamber Coil 3"		; configure chamber coil 3 sensor
                      
                      ; Outputs
                      M950 F0 C"0.out7"                     	  ; create chassis fan 0 on relay
                      M106 P0 S0 H-1 C"Chassis Fan"             ; set fan 0 value, thermostatic control off
                      
                      M950 F1 C"5.io1.out"                      ; create chamber fan 1 was !5.out3
                      M106 P1 S0 H-1 C"Chamber Fan"             ; set fan 1 value, thermostatic control from sensor 1 H12:13:14 T50
                      
                      M950 F2 C"0.out2"                         ; create Primary pc fan 2
                      M106 P2 S0 H-1 C"Primary Fan"       	      ; set fan 2 value, thermostatic control off
                      
                      M950 F3 C"1.out1"                         ; create mosquito pc fan 3
                      M106 P3 S0 H-1 C"Mosquito Fan"     	      ; set fan 3 value, thermostatic control off
                      
                      M950 P0 C{global.vacZone1Pin}         	  ; create bed vac valve 1
                      M42 P0 S0								  ; set output value to off
                      
                      M950 P1 C{global.vacZone2Pin}             ; create bed vac valve 2
                      M42 P1 S0								  ; set output value to off
                      
                      M950 P2 C{global.vacZone3Pin}             ; create bed vac valve 3
                      M42 P2 S0								  ; set output value to off
                      
                      M950 P3 C{global.vacZone4Pin}             ; create bed vac valve 4
                      M42 P3 S0								  ; set output value to off
                      
                      M950 P4 C"2.out6"                         ; create door locks on relay
                      M42 P4 S0								  ; set output value to off
                      
                      M950 F4 C"2.out4"                         ; create radiator on relay
                      M106 P4 S1 H2:3:4:5:6 T50 C"Radiator"     ; set fan 8 value, thermostatic control on
                      
                      M950 P5 C"1.out4"                         ; create probe on relay
                      M42 P5 S0								  ; set output value to off
                      
                      M950 P6 C"2.out3"	                      ; create venturi valve was 1.out0
                      M42 P6 S0								  ; set output value to off
                      
                      M950 F5 C"4.out6"                         ; create head electronics fan
                      M106 P5 S255 H-1 C"Head Fan 1"            ; set fan 12 value, thermostatic control off
                      
                      ;M950 F6 C"4.out7"                         ; create head electronics fan REMOVED
                      ;M106 P6 S255 H-1 C"Head Fan 2"            ; set fan 12 value, thermostatic control off
                      
                      M950 P7 C"1.out8"						  ; create yellow stack led
                      M42 P7 S0								  ; set output value to off
                      
                      M950 P8 C"1.out7"						  ; create green stack led
                      M42 P8 S0								  ; set output value to off
                      
                      M950 P9 C"1.out6"						  ; create white stack led
                      M42 P9 S0								  ; set output value to off
                      
                      M950 P10 C"1.out3"						  ; create beep stack led
                      M42 P10 S0								  ; set output value to off
                      
                      M950 P11 C"2.io1.out"					  ; create secondary extruder reverse for mosquito 1
                      M42 P11 S0								  ; set output value to off
                      
                      M950 P12 C"2.io2.out"					  ; create secondary extruder reset/forward for mosquito 1
                      M42 P12 S0								  ; set output value to off
                      
                      M950 P13 C"2.out7"						  ; create chamber lights
                      M42 P13 S0								  ; set output value to off						
                      
                      M950 P14 C"2.io4.out"					  ; create secondary extruder reverse for mosquito 2
                      M42 P14 S0								  ; set output value to off
                      
                      M950 P15 C"2.io5.out"					  ; create secondary extruder reset/forward for mosquito 2
                      M42 P15 S0								  ; set output value to off
                      
                      M950 P16 C"2.out5"						  ; create garage door on/off
                      M42 P16 S0								  ; set output value to off		
                      
                      M950 P17 C"1.out5"						  ; create garage door direction
                      M42 P17 S0								  ; set output value to off		
                      
                      M950 P18 C"121.out1"					  ; create speaker wait sound - piano
                      M42 P18 S0								  ; set output value to off
                      
                      M950 P19 C"2.out8"						  ; create speaker startup sound - Alert
                      M42 P19 S0								  ; set output value to off
                      
                      M950 P20 C"121.out0"					  ; create speaker notification sound - Notify
                      M42 P20 S0								  ; set output value to off
                      
                      M950 P21 C"1.out0"						  ; create speaker alarm sound - spaceship
                      M42 P21 S0								  ; set output value to off
                      
                      M950 P22 C"5.out0"						  ; create air pressure override relay
                      M42 P22 S0								  ; set output value to off
                      
                      M950 P23 C"5.out1"						  ; create duet reset enable relay
                      M42 P23 S0								  ; set output value to off
                      
                      G4 S2   ; adding this seems to prevent the fans from blipping on during startup
                      
                      ; Trigger Inputs
                      M950 J0 C"2.io0.in"						  ; assign input J0 to 2.io0.in for emergency stop
                      M581 P0 T0 S0 R0					      ; configur external trigger, pin 0, trigger 0, inactive-active, any time
                      
                      M950 J1 C"2.io1.in"						  ; assign input J1 to 1.io1.in for pause button
                      M581 P1 T1 S0 R1						  ; configure external trigger, pin 1, trigger 1, inactive-active, during print
                      
                      ; Other Inputs
                      M950 J3 C"1.io0.in"   				      ; create door lock gpio input
                      
                      M950 J4 C"1.io1.in"   				      ; create door lock gpio input
                      
                      M950 J5 C"1.io2.in"   				      ; create door lock gpio input
                      
                      M950 J6 C"1.io3.in"   				      ; create door lock gpio input
                      
                      M950 J7 C"1.io4.in"   				      ; create door lock gpio input
                      
                      M950 J8 C"1.io5.in"   				      ; create door lock gpio input
                      
                      M950 J9 C"5.io0.in"					      ; create air pressure input gpio input
                      
                      M950 J10 C"5.io1.in"					  ; create vacuum zone 1 input gpio input
                      
                      M950 J11 C"5.io2.in"					  ; create vacuum zone 2 input gpio input
                      
                      M950 J12 C"5.io3.in"					  ; create vacuum zone 3 input gpio input
                      
                      M950 J13 C"5.io4.in"					  ; create vacuum zone 4 input gpio input
                      
                      M950 J14 C"5.io5.in"					  ; create garage door close input gpio input
                      
                      M950 J15 C"2.io3.in"					  ; create garage door open input gpio input
                      
                      ; Tools
                      M563 P0 S"Primary" D2 H2:3:4 F2    	   		; define tool 0 as Primary, extruder 2, Heaters 2 3 4, Fan 2
                      M568 P0 R0 S0                         		; set tool 0 active and standby temperatures to 0C
                      G10 P0 X0 Y0 Z0 U0 V0 W0               		; set tool 0 axis offests
                      
                      M563 P1 S"Mosquito 1" D0 H5 F3          	; define tool 1 as Mosquito 1, extruder 0, Heaters 5, Fan 3 was H5:6
                      M568 P1 R0 S0                           	; set tool 1 active and standby temperatures to 0C
                      G10 P1 X-71.815 Y-10.976 Z{global.T1ZOffset} U0 V0 W0   ; set tool 1 axis offests
                      
                      M563 P2 S"Mosquito 2" D1 H6 F3          	; define tool 2 as Mosquito 2, extruder 1, Heaters 6, Fan 3 was H7:8
                      M568 P2 R0 S0                           	; set tool 2 active and standby temperatures to 0C
                      G10 P2 X-71.815 Y41.411 Z{global.T2ZOffset} U0 V0 W0   ; set tool 2 axis offests
                      
                      ; Misc
                      G4 S1   ; wait
                      T0      ; switch to T0
                      M98 P"soundAlert.g" ; beep
                      M98 P"startup.g"
                      

                      zTramming.g

                      ; new z tramming routine
                      ; if it works explain how here
                      
                      ; disable axis
                      M18 Z
                      G4 S2	; wait
                      
                      ; Endstops
                      M574 Z1 S1 P"0.io3.in+0.io4.in+0.io5.in+0.io6.in" ; configure actice high endstops at low-end
                      
                      ; check brakes
                      M17 Z
                      G4 S2	; wait
                      M291 P"Are brake lights illuminated?" S3
                      
                      ; perform tramming
                      M98 P"soundNotifyShort.g"   ; beep
                      
                      M402    			; retract probe to be safe
                      M98 P"uvHomeCond.g" ; home u and v if they aren't homed
                      G1 U0 V0 F999999	; retract tools
                      M98 P"doorLock.g"   ; ensure doors are locked befor moving
                      
                      if {global.errorFlag}
                      	M99 ; exit current file
                      
                      G91 						; relative mode
                      G1 H1 Z-5 F500  			; try moving Z just a little bit
                      M98 P"soundNotifyShort.g"
                      G1 H2 Z5 F500   			; move in positive Z now that we know it's safe
                      M98 P"soundNotifyShort.g"
                      G1 H1 Z-1205 F200			; move quickly in Z to the endstop
                      M98 P"soundNotifyShort.g"
                      G1 H2 Z5 F200				; back off 5mm
                      M98 P"soundNotifyShort.g"
                      G1 H1 Z-6 F50				; home slowly for accurate homing
                      M98 P"soundNotifyShort.g"
                      G1 H2 Z0 F500				; back off 10mm
                      G90							; absolute mode
                      M98 P"soundAlertShort.g"
                      

                      This all works and the brakes keep working. But if I unmap the brakes and re-map the brakes, or remap the drive that uses brakes to a different axis, the brakes... break. The only way to get them to work again is to reboot.

                      Also on the M569.7 command, if the S parameter is too high, it causes SPI issues in the DWC console.

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post
                      Unless otherwise noted, all forum content is licensed under CC-BY-SA