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

    Magnet Filament Monitor V4 - Calibration Issue

    Scheduled Pinned Locked Moved Solved
    Filament Monitor
    6
    36
    2.0k
    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.
    • Diamondbackundefined
      Diamondback @dc42
      last edited by

      @dc42

      ;M929 S3                                        ;enable debug logging
      ;M575 P1 S1 B57600                              ;Enable PanelDue Port
      G90                                             ; send absolute coordinates...
      M83                                             ; ...but relative extruder moves
      M550 P"V-Core Toolchanger"                      ; set printer name
      
      ; Enable network
      M552 P0.0.0.0 S1
      
      M669 K1                                         ; select CoreXY mode
      
      G4 S2 ; wait for expansion boards to start
      
      ; Drives
      ;XY1: back left
      ;XY2: back right
      M569 P0.2 S0                                      ; stepper XY1
      M569 P0.3 S0                                      ; stepper XY2
      M569 P0.4 S1                                      ; stepper Coupler
      M569 P100.0 S0                                    ; stepper E0
      M569 P100.1 S0                                    ; stepper E1
      M569 P100.2 S0                                    ; stepper E2
      M569 P100.3 S0                                    ; stepper E3
      M569 P0.0 S0                                      ; stepper Z1
      M569 P0.1 S0                                      ; stepper Z2
      M569 P0.5 S0                                      ; stepper Z3
      M569 P100.5 S1                                    ; wiper disk
      M569 P100.6 S0                                    ; wiper Z height
      
      M584 X0.3 Y0.2 C0.4                               ; set drive mapping (motion system X Y C)
      M584 E100.0:100.1:100.2:100.3                     ; set drive mapping (extruders)
      M584 Z0.0:0.1:0.5                                 ; set drive mapping (motion system Z)
      M584 W100.6								 		  ; set drive mapping (Wiper Z height
      M584 D100.5	R1									  ; set drive mapping (Wiper disk, rotary)
      ;Leadscrew order (starting back center, then clockwise):
      ;1: back center
      ;2: front right
      ;3: front left
      M671 X-12:216:-203 Y222:-179:-179 S30             ; set Z leadscrew positions
      
      
      ; Axis Limits
      if !exists(global.hasRunInit)
      	global minY = -266
      	global maxY = 115
      
      M208 X-148:160 Y{global.minY,global.maxY}       ; set axis minima & maxima
      M208 C0:250 Z-2:270                             ; set axis minima & maxima
      M208 W0:25 D-100000:100000						; set axis minima & maxima, D(isk) limit can't be disabled, so it's big and additionally, the position gets reset each time when using it in the wiper macro
      
      M92 X80.00 Y80.00                               ; X/Y: 1.8°/step
      ;M92 X160.00 Y160.00                            ; X/Y: 0.9°/step
      M92 C200.00                                     ; C: E3D coupler
      M92 Z800.00                                     ; Z: 0.9 Stepper TR8x4 leadscrews
      M92 W800.00 D{400 * 16 / 360}								; W: 0.9 Stepper TR8x8 leadscrew, D: 0.9 Stepper with a disk
      M350 X16 Y16 I1                                 ; configure microstepping with interpolation
      M350 C16 Z16 I1                                 ; configure microstepping with interpolation
      M350 W16 D16 I1
      M566 X600 Y600 C2 Z200                           ; set maximum instantaneous speed changes (mm/min)
      M566 W50 D200
      M203 X30000 Y30000 C10000 Z2000                 ; set maximum speeds (mm/min)
      M203 W4000 D20000
      M201 X5000 Y5000 Z500                           ; set accelerations (mm/s^2)
      M201.1 X5000 Y5000 Z500                         ; set accelerations for special moves (mm/s^2)
      M201 C500                                       ; set accelerations (mm/s^2)
      M201 W400 D10000
      M204 P500 T5000
      ;M204 P5000 T5000
      
      M906 X2000 Y2000                             ; set motor currents (mA) for X/Y
      M906 C700                                    ; set motor currents (mA) for coupler
      M906 Z1500                                   ; set motor currents (mA) for Z
      M906 W1000 D1400							 ; set motor currents (mA) for wiper Z and disk
      M906 E500:500:500:500                        ; set motor currents (mA) for 4x LGX
      M906 I50                                     ;only a single idle factor allowed for ALL steppers
      M84 S30                                      ; Set idle timeout    
      
      ;=================== Extruder ======================
      M92 E408:408:408:408                            ; set steps per mm 
      M350 E16:16:16:16 I1                            ; configure microstepping 
      M566 E500:500:500:500                           ; set maximum instantaneous speed changes (mm/min) ; used to be at 1200
      M203 E15000:15000:15000:15000                   ; set maximum speeds (mm/min) 
      M201 E3000:3000:3000:3000                       ; set accelerations (mm/s^2)
      M201.1 E3000                                    ; set accelerations for special moves (mm/s^2)
      ;====================================================
      
      ; Endstops
      M574 X2 S1 P"0.io0.in"                          ; configure active-high endstop for high end on X via pin xstop
      M574 Y1 S1 P"0.io1.in"                          ; configure active-high endstop for high end on Y via pin ystop
      M574 Z0                                         ; No Z-Endstop (use as probe instead)
      
      ; Z-Probe
      if !exists(global.hasRunInit)
      	global zProbeSpeedFeed = 300
      	global zProbeSpeedFeedLevel = 1500
      	global zProbeSpeedTravel = 20000
      	global zProbeDiveHeightLevel = 30
      	global zProbeDiveHeightMesh = 3
      	global zProbePin = "0.io2.in"
      	global zProbeType = 8
      	global zProbeTriggerValue = 200
      	global minXMesh = -146 
      	global maxXMesh = 150
      	global minYMesh = -150
      	global maxYMesh = 150
      	global meshPointSpacing = 30
      
      M558 K0 P{global.zProbeType} C{global.zProbePin} H{global.zProbeDiveHeightMesh} F{global.zProbeSpeedFeed} T{global.zProbeSpeedTravel}  ; Z Endstop/probe
      M558 K2 P8 C"0.io4.in" H10 F100 T20000  ; tool length switch
      
      G31 K0 X0 Y0 Z0 P200 
      ;G31 K1 X0 Y0 Z0 P200
      G31 K2 X0 Y0 Z0 P200 
      
      ;G31 K0 X0 Y0 Z0 P{global.zProbeTriggerValue}                               ; set Z probe trigger value, offset and trigger height, offsets here are hardcoded in leveling macro as well
      
      M557 X{global.minXMesh, global.maxXMesh} Y{global.minYMesh, global.maxYMesh} S{global.meshPointSpacing}   ; define mesh grid
      M376 H30                                        ; Set bed correction taper
      
      ; Heaters
      M308 S0 P"100.temp0" Y"thermistor" T100000 B3950           ; configure sensor 0 as thermistor 
      M950 H0 C"100.out0" T0 Q10                                 ; create bed heater output and map it to sensor 0
      M143 H0 S121                                               ; set temperature limit for heater 0 to 121C
      M307 H0 R0.648 K0.269:0.000 D2.51 E1.35 S1.00 B0           ; Bed PID Tuning
      M140 H0                                                    ; map heated bed to heater 0
      
      M308 S1 P"0.temp1" Y"thermistor" T100000 B4725 C7.06e-8    ; configure sensor 1 as thermistor
      M950 H1 C"0.out1" T1                                       ; create nozzle heater output and map it to sensor 1
      M143 H1 S301                                               ; set temperature limit for heater 1 to 301C
      
      M308 S2 P"0.temp2" Y"thermistor" T100000 B4725 C7.06e-8    ; configure sensor 2 as thermistor
      M950 H2 C"0.out2" T2                                       ; create nozzle heater output and map it to sensor 2
      M143 H2 S301                                               ; set temperature limit for heater 2 to 301C
      
      M308 S3 P"100.temp1" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 3 as thermistor
      M950 H3 C"100.out1" T3                                     ; create nozzle heater output and map it to sensor 3
      M143 H3 S301                                               ; set temperature limit for heater 3 to 301C
      
      M308 S4 P"100.temp2" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 2 as thermistor
      M950 H4 C"100.out2" T4                                     ; create nozzle heater output and map it to sensor 2
      M143 H4 S301                                               ; set temperature limit for heater 2 to 301C
      
      M302 S190 R190                                             ;Cold extrusion settings
      
      M307 H1 R2.870 K0.424:0.004 D1.67 E1.35 S1.00 B0 V23.7     ; PID Tuning T0
      M307 H2 R4.192 K0.576:0.000 D1.72 E1.35 S1.00 B0 V23.7     ; PID Tuning T1
      M307 H3 R4.265 K0.638:0.023 D2.27 E1.35 S1.00 B0 V23.6     ; PID Tuning T2
      M307 H4 R3.767 K0.441:0.050 D2.28 E1.35 S1.00 B0 V23.5     ; PID Tuning T3
      
      ; Fans
      M950 F0 C"0.out7"                                 ; Hotend Fan Tool 0
      M106 P0 S255 L255 H1 T50 C"T0 Hotend"             ; Hotend Fan Tool 0
      M950 F1 C"0.out4" Q50                             ; Layer Fan Tool 0
      M106 P1 S0 H-1 C"T0"                              ; Layer Fan Tool 0
      
      M950 F2 C"0.out8"                                 ; Hotend Fan Tool 1
      M106 P2 S255 L255 H2 T50 C"T1 Hotend"             ; Hotend Fan Tool 1
      M950 F3 C"0.out5" Q50                             ; Layer Fan Tool 1
      M106 P3 S0 H-1 C"T1"                              ; Layer Fan Tool 1
      
      M950 F4 C"100.out5"                               ; Hotend Fan Tool 2
      M106 P4 S255 L255 H3 T50 C"T2 Hotend"             ; Hotend Fan Tool 2
      M950 F5 C"100.out3" Q50                           ; Layer Fan Tool 2
      M106 P5 S0 H-1 C"T2"                              ; Layer Fan Tool 2
      
      M950 F6 C"100.out6"                               ; Hotend Fan Tool 3
      M106 P6 S255 L255 H4 T50 C"T3 Hotend"             ; Hotend Fan Tool 3
      M950 F7 C"100.out4" Q50                           ; Layer Fan Tool 3
      M106 P7 S0 H-1 C"T3"                              ; Layer Fan Tool 3
      
      ;Static layer fan
      M950 F8 C"0.out0" Q65535                          ; static layer fan
      M106 P8 S0 H-1 I1 L0.2 C"RSCS"
      
      ; Tools
      M563 P0 D0 H1 F1                                 ; define tool 0
      G10 P0 R0 S0                                     ; set initial tool 0 active and standby temperatures to 0C
      
      M563 P1 D1 H2 F3                                 ; define tool 1
      G10 P1 R0 S0                                     ; set initial tool 1 active and standby temperatures to 0C
      
      M563 P2 D2 H3 F5                                 ; define tool 2
      G10 P2 R0 S0                                     ; set initial tool 2 active and standby temperatures to 0C
      
      M563 P3 D3 H4 F7                                 ; define tool 3
      G10 P3 R0 S0                                     ; set initial tool 3 active and standby temperatures to 0C
      
      M563 P4 S"Pen"                                   ; define tool 4 (Pen)
      
      ;Dock present switches
      M950 J0 C"0.io7.in"                              ; Tool 0 Dock switch
      M950 J1 C"0.io8.in"                              ; Tool 1 Dock switch
      M950 J2 C"100.io5.in"                            ; Tool 2 Dock switch
      M950 J3 C"100.io6.in"                            ; Tool 3 Dock switch
      
      ;additional tool related switches
      M950 J4 C"0.io3.in"                             ;toolhead tool present switch
      
      ;Filament sensors
      M591 D0 P4 C"100.io0.in" S1
      M591 D1 P4 C"100.io1.in" S1
      M591 D2 P4 C"100.io2.in" S1
      M591 D3 P4 C"100.io3.in" S1
      
      M950 S0 C"0.out9" Q333                          ;PebbleWiper Servo
      M280 P0 S70                                     ;Servo in idle position
      M950 P1 C"0.io5.out"                            ;Light switch PWM
      
      ;Toolhead Dotstar
      M950 E0 C"led" T0
      
      ;Accelerometer
      M955 P0 C"spi.cs2+spi.cs3"
      
      ;Inputshaping
      ;M593 P"zvddd" F70 S0.2 
      
      ; Miscellaneous
      M98 P"/macros/ToolheadDisplay/InitToolheadDisplay"
      M98 P"/macros/Misc/Lights/On"
      M98 P"/sys/config-tools.g"
      M98 P"/sys/config-filaments.g"
      
      if !exists(global.hasRunInit)
      	global deactivateToolAfterFilamentChange = false
      	global hasRunInit = true
      	global daemonActive = true
      	global lastMacroResult = null
      
      1 Reply Last reply Reply Quote 0
      • Diamondbackundefined
        Diamondback @dc42
        last edited by

        @dc42
        InitToolheadDisplay:

        if !exists(global.dispLEDCount)
        	global dispLEDCount = 64
        	global dispDefaultBrightness = 10
        	global lastDisplayContent = ""
        	global toolheadDisplayState = ""
        	
        if !exists(global.RGBWhite) && boards[0].firmwareVersion != "3.4.5"
        	
        	;Digits
        	global displayDigit = vector(10, vector(8, null))
        	
        	;0
        	set global.displayDigit[0][0] = {0,1,1,1,1,1,1,0}
        	set global.displayDigit[0][1] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[0][2] = {1,1,1,0,0,1,1,1}
        	set global.displayDigit[0][3] = {1,1,1,0,0,1,1,1}
        	set global.displayDigit[0][4] = {1,1,1,0,0,1,1,1}
        	set global.displayDigit[0][5] = {1,1,1,0,0,1,1,1}
        	set global.displayDigit[0][6] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[0][7] = {0,1,1,1,1,1,1,0}
        	
        	;1
        	set global.displayDigit[1][0] = {0,0,1,1,1,0,0,0}
        	set global.displayDigit[1][1] = {0,0,1,1,1,1,0,0}
        	set global.displayDigit[1][2] = {0,0,1,1,1,1,1,0}
        	set global.displayDigit[1][3] = {0,0,1,1,1,0,0,0}
        	set global.displayDigit[1][4] = {0,0,1,1,1,0,0,0}
        	set global.displayDigit[1][5] = {0,0,1,1,1,0,0,0}
        	set global.displayDigit[1][6] = {0,0,1,1,1,0,0,0}
        	set global.displayDigit[1][7] = {0,0,1,1,1,0,0,0}
        	
        	;2
        	set global.displayDigit[2][0] = {0,1,1,1,1,1,1,0}
        	set global.displayDigit[2][1] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[2][2] = {1,1,1,0,0,1,1,1}
        	set global.displayDigit[2][3] = {0,1,1,1,0,0,0,0}
        	set global.displayDigit[2][4] = {0,0,0,1,1,1,0,0}
        	set global.displayDigit[2][5] = {0,0,0,0,0,1,1,1}
        	set global.displayDigit[2][6] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[2][7] = {1,1,1,1,1,1,1,1}
        	
        	;3
        	set global.displayDigit[3][0] = {0,1,1,1,1,1,1,1}
        	set global.displayDigit[3][1] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[3][2] = {1,1,1,0,0,0,0,0}
        	set global.displayDigit[3][3] = {0,1,1,1,1,1,1,1}
        	set global.displayDigit[3][4] = {0,1,1,1,1,1,1,1}
        	set global.displayDigit[3][5] = {1,1,1,0,0,0,0,0}
        	set global.displayDigit[3][6] = {1,1,1,1,1,1,1,1}
        	set global.displayDigit[3][7] = {0,1,1,1,1,1,1,1}
        	
        
        	
        	var FLF1 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF2 = {{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF3 = {{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF4 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0},{0,1,0,0,0,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,0,0,1,0},{1,1,1,0,0,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,0,1,1,1},{0,1,0,0,0,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF7 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,0,0,1,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0}}
        	var FLF8 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,0,0,0,0},{0,0,0,0,0,0,0,0}}
        	var FLF9 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,1,0,1,1,0,1,0},{1,1,1,1,1,1,1,1},{0,1,0,1,1,0,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,0,0,0,0}}
        	global filamentLoadFrames = {var.FLF1, var.FLF2, var.FLF3, var.FLF4, var.FLF5, var.FLF6, var.FLF7, var.FLF8, var.FLF9}
        	global filamentLoadFrameIndex = 0
        		
        	var HTF1 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var HTF2 = {{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0}}
        	var HTF3 = {{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}}
        	var HTF4 = {{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0}}
        	var HTF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0}}
        	var HTF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0}}
        	var HTF7 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0}}
        	var HTF8 = {{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	var HTF9 = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0}}
        	global heatingToolFrames = {var.HTF1, var.HTF2, var.HTF3, var.HTF4, var.HTF5, var.HTF6, var.HTF7, var.HTF8, var.HTF9}
        	global heatingToolFrameIndex = 0
        	
        	var HBF1 = {{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF2 = {{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF3 = {{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF4 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF5 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF6 = {{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{1,1,1,1,1,1,1,1}}
        	var HBF7 = {{0,0,0,1,1,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF8 = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}}
        	var HBF9 = {{0,0,0,0,0,0,0,0},{0,0,0,1,1,0,0,0},{0,0,1,1,1,1,0,0},{0,1,1,1,1,1,1,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{0,0,0,1,1,0,0,0},{1,1,1,1,1,1,1,1}}
        	global heatingBedFrames = {var.HBF1, var.HBF2, var.HBF3, var.HBF4, var.HBF5, var.HBF6, var.HBF7, var.HBF8, var.HBF9}
        	global heatingBedFrameIndex = 0
        	
        	global RGBOff = {0,0,0,0}
        	global RGBRed = {255,0,0,25}
        	global RGBGreen = {0,255,0,10}
        	global RGBBlue = {0,0,255,45}
        	global RGBYellow = {255,255,0,30}
        	global RGBPink = {255,20,147,10}
        	global RGBWhite = {255,255,255,10}	
        	global ToolColors = {global.RGBRed, global.RGBGreen, global.RGBYellow, global.RGBBlue}
        

        Misc/Lights/On:

        M42 P1 S230
        

        config-tools.g:

        M98 P"/sys/config-tools-size.g"
        M98 P"/sys/config-tools-material.g"
        ;Z-Offset: 	
        ;If nozzle is too close to bed _reduce_ offset (negative number becomes more negative)
        ;If nozzle is too far away, _increase_ offset (negative number becomes less negative)
        M98 P"/sys/config-tools-offset.g"
        
        
        
        ;Tool offsets
        G10 P4 X0 Y46.5 Z-20.000                        ; set tool 4 axis offsets
        

        config-tools-size.g:

        ;nozzle sizes
        if !exists(global.toolNozzleSizes)
          global toolNozzleSizes = vector(5,0)
        set global.toolNozzleSizes[0] = 0.6
        set global.toolNozzleSizes[1] = 0.4
        set global.toolNozzleSizes[2] = 0.6
        set global.toolNozzleSizes[3] = 0.6
        set global.toolNozzleSizes[4] = 0.0
        

        config-tools-material.g:

        ;nozzle materials
        if !exists(global.toolNozzleMaterials)
          global toolNozzleMaterials = vector(5,"")
        set global.toolNozzleMaterials[0] = "Brass"
        set global.toolNozzleMaterials[1] = "Hardened"
        set global.toolNozzleMaterials[2] = "Brass"
        set global.toolNozzleMaterials[3] = "Brass HF"
        set global.toolNozzleMaterials[4] = ""
        

        config-tools-offset.g:

        ;Z-Offset:
        ;If nozzle is too close to bed _reduce_ offset (negative number becomes more negative)
        ;If nozzle is too far away, _increase_ offset (negative number becomes less negative)
        ;tool offsets
        G10 P0 X-8.300 Y39.975 Z-3.620
        G10 P1 X-8.756 Y40.144 Z-3.340
        G10 P2 X-8.438 Y40.700 Z-3.320
        G10 P3 X-8.450 Y40.600 Z-3.460
        

        config-filaments.g:

        var filaments = {"PETG - Generic","PLA - Generic","PLA - PolyTerra","PLA - Silk", "XTCF20", "PCCF - Prusament", "PLA - Wood"}
        
        if !exists(global.filamentSettings)
            global pebbleFeedSpeedDefault = 0
            global pebbleFeedSpeed = global.pebbleFeedSpeedDefault	
        
            global nozzleSizeMap = vector(6, null)
            set global.nozzleSizeMap[0] = 0.25
            set global.nozzleSizeMap[1] = 0.4
            set global.nozzleSizeMap[2] = 0.6
            set global.nozzleSizeMap[3] = 0.8
            set global.nozzleSizeMap[4] = 1.0
            set global.nozzleSizeMap[5] = 1.2
        
            global filamentSettings = null
        
        set global.filamentSettings = vector(#var.filaments, vector(2,null))
        set global.pebbleFeedSpeedDefault = 300
        set global.pebbleFeedSpeed = global.pebbleFeedSpeedDefault	
        
        while iterations < #var.filaments
            set global.filamentSettings[iterations][0] = var.filaments[iterations]
            set global.filamentSettings[iterations][1] = vector(#global.nozzleSizeMap, {0.0, 0.5, 2000, 0.2, 150, global.pebbleFeedSpeedDefault}) ; default settings: PA, retraction distance, retraction speed, Z-Hop, min extrusionTemp, pebble feed speed	
        
        ;                                       PA          R-Dist      R-Speed     Z-Hop       MinTemp     Pebble Speed
        ;PETG - Generic
        set global.filamentSettings[0][1][0] = {0.175,  	0.5,  	    2100, 	    0.2, 	    200, 	    global.pebbleFeedSpeedDefault} ;0.25
        set global.filamentSettings[0][1][1] = {0.1,  		0.5,  	    2100, 	    0.2, 	    200, 	    global.pebbleFeedSpeedDefault} ;0.4
        set global.filamentSettings[0][1][2] = {0.05,  		0.7,  	    2500, 	    0.2, 	    200, 	    global.pebbleFeedSpeedDefault} ;0.6
        set global.filamentSettings[0][1][3] = {0.03,  		0.5,  	    2100, 	    0.2, 	    200, 	    global.pebbleFeedSpeedDefault} ;0.8
        set global.filamentSettings[0][1][5] = {0.015,  	0.5,  	    2100, 	    0.2, 	    200, 	    global.pebbleFeedSpeedDefault} ;1.2
        
        ;PLA - PolyTerra
        set global.filamentSettings[2][1][0] = {0.115,  	0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.25
        set global.filamentSettings[2][1][1] = {0.04,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.4
        set global.filamentSettings[2][1][2] = {0.025,  	0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.6
        set global.filamentSettings[2][1][3] = {0.02,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.8
        
        ;PLA - Silk
        set global.filamentSettings[3][1][0] = {0.0,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.25
        set global.filamentSettings[3][1][1] = {0.055,  	0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.4
        set global.filamentSettings[3][1][2] = {0.0,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.6
        set global.filamentSettings[3][1][3] = {0.0,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.8
        
        ;XTCF20
        set global.filamentSettings[4][1][2] = {0.05,  		0.5,  	    2100, 	    0.0, 	    180, 	    global.pebbleFeedSpeedDefault * 0.5} ;0.6
        
        ;PCCF - Prusament
        set global.filamentSettings[5][1][2] = {0.04,  		0.3,  	    3000, 	    0.0, 	    260, 	    global.pebbleFeedSpeedDefault * 0.5} ;0.6
        
        ;PLA - Wood
        set global.filamentSettings[6][1][2] = {0.04,  		0.3,  	    3000, 	    0.2, 	    180, 	    global.pebbleFeedSpeedDefault} ;0.6
        
        1 Reply Last reply Reply Quote 0
        • Nurgelrotundefined
          Nurgelrot
          last edited by Nurgelrot

          Im basically seeing this same behavior with other monitors. Once the Monitor is qureried with an M591 D0 It will repeat the same value for the rest of the print. It will however trigger an error and pause the printer if I go over and interfear with the feed.

          7/19/2023, 6:58:47 PM	M591 D0
          Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm
          7/19/2023, 5:49:24 PM	M591 D0
          Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm
          7/19/2023, 3:42:30 PM	M591 D0
          Pulse-type filament monitor on pin 124.io0.in, enabled, sensitivity 0.156mm/pulse, allowed movement 75% to 120%, check every 2.4mm, measured sensitivity 0.162mm/pulse, measured minimum 86%, maximum 109% over 949.8mm
          

          as you can see I've polled the monitor over a good sampling of time durring a print and its not changing.
          Actaul filimaernt use at the time of the last poll:Filament Usage: 22419.1 mm

          Granted I'm using the SMT32 port of RRF 3.5.beta4 (and an experimental toolboard) but seems to be the same or simular issue as the OP:

          fly_super8_pro_h723	stm32h723-wifi	3.5.0-beta.4_101
          Duet 3 Expansion FlySB2040v1_0	FlySB2040v1_0	3.5.0-beta.4_101
          Duet WiFi Server	n/a	1.27-02S32-D
          Duet Web Control	DWC	3.5.0-beta.4
          
          Nurgelrotundefined 1 Reply Last reply Reply Quote 1
          • Nurgelrotundefined
            Nurgelrot @Nurgelrot
            last edited by

            NVM my issue seems to be spacific to the experimental nature of the hardware in that printer. I tested with another printer using current supported toolboars and it worked fine. Will test again when I can get a supported toolboard installed.

            1 Reply Last reply Reply Quote 0
            • Diamondbackundefined
              Diamondback @dc42
              last edited by Diamondback

              @dc42 Any news on this? I saw lots of changes on github, but not much being mentioned in the changelog of 3.5rc1.
              I updated to rc1 just a few minutes ago and it seems like currently it's a regression compared to 3.5b4.
              Looks like my sensors are now completely useless, RRF does not even recognize them anymore, meaning that also the runout switch doesn't work anymore (which did work fine on 3.5.b4)

              The status is now noDataReceived all the time... 😞

              M591 D0
              Duet3D rotating magnet filament monitor v1 with switch on pin 100.io0.in, disabled, sensitivity 28.80mm/rev, allow 60% to 160%, check every 3.0mm, no data received
              

              Please also note that it now says v1? Used to say v4. I guess that's because it doesn't seem to communicate at all with them anymore?

              All my 4 sensors show exactly the same.

              Hardware- and software setup is exactly the same as in the posts above except for upgrading to 3.5rc1

              dc42undefined 1 Reply Last reply Reply Quote 0
              • dc42undefined
                dc42 administrators @Diamondback
                last edited by

                @Diamondback we didn't have time to reproduce this one prior to the RC1 release, so it may still be an issue in RC1. It's still on our list to look at.

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                Diamondbackundefined 1 Reply Last reply Reply Quote 1
                • Diamondbackundefined
                  Diamondback @dc42
                  last edited by

                  @dc42 Ok, please let me know if I can assist you in any way, I'd really like to see these monitors working completely for me for the first time 😀

                  dc42undefined 1 Reply Last reply Reply Quote 1
                  • dc42undefined
                    dc42 administrators @Diamondback
                    last edited by

                    @Diamondback please can you try the firmware build at https://www.dropbox.com/scl/fo/tjznycpk7bv7sj71p0ssl/h?rlkey=096p4nvgmigyrb20jj8olg3wu&dl=0 and see whether this issue is still present. There are partial release notes at https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-RC#reprapfirmware-350-rc2-changes-since-350-rc1---in-preparation. The filament monitor code has changed significantly since rc1.

                    Duet WiFi hardware designer and firmware engineer
                    Please do not ask me for Duet support via PM or email, use the forum
                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                    Diamondbackundefined 2 Replies Last reply Reply Quote 1
                    • Diamondbackundefined
                      Diamondback @dc42
                      last edited by

                      @dc42 Looks like the issue is the same as with rc1. I do not seem to get any communication with my sensors. The sensors themself appear to be booting up correctly (3x green flash) then they continue to flash alternating green and red. When i insert filament the green LED starts to flash rapidly to the point where it's always lit.

                      Some data bits:
                      753b7bd9-671e-444a-824b-7eb1eae2df7d-image.png

                      d714b0af-e129-497f-9254-e184b7e46549-image.png

                      d6299bbd-0d52-49bc-bc37-a79d1283a249-image.png

                      eeedcdd9-c4f5-4cd3-a6ee-a69a8deba74a-image.png

                      1 Reply Last reply Reply Quote 0
                      • Diamondbackundefined
                        Diamondback
                        last edited by Diamondback

                        For comparision the same sensor and settings on beta 4 (recorded minutes ago), which at least does communicate with it to some degree, the switch signal works perfectly fine.
                        Without filament in it:
                        4da73d80-1d26-4c4b-813a-3c80cd5515a7-image.png

                        With filament in it:
                        65a7cc63-03b6-48f5-837a-5850fd589fd8-image.png

                        1 Reply Last reply Reply Quote 0
                        • zendesignerundefined zendesigner referenced this topic
                        • Diamondbackundefined
                          Diamondback @dc42
                          last edited by

                          @dc42 Good news 🙂 With 3.5rc2, all my sensors appear to work for now 🙂 They collect data that seems right, they change status when inserting filament etc.
                          I haven't tested yet what happens if they actually detect an issue, but so far so good. Will keep you posted if anything weird comes up. Many thanks 🙂

                          1 Reply Last reply Reply Quote 0
                          • T3P3Tonyundefined T3P3Tony has marked this topic as solved
                          • First post
                            Last post
                          Unless otherwise noted, all forum content is licensed under CC-BY-SA