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

    E3D Roto Filament Runout Issue

    Scheduled Pinned Locked Moved Solved
    General Discussion
    3
    9
    285
    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.
    • SonnyD1undefined
      SonnyD1
      last edited by SonnyD1

      I have an IDEX running two E3D Rotos with toolboards. I have the Roto sensors that are the simple switch type connected to IO_1 (Image included). I have them configured in tfree0.g, tfree1.g, tpost0.g, and tpost1.g. I get an error that there is no filament present when I start a print. However, when I manually put filament in it, the light goes off and when I remove it the little red light goes on. Based on earlier posts and replies on similar issues, I have it wired correctly but I'm including a picture to be sure. M122 gives me no filament in either case. It may be worth mentioning that it printed perfectly fine until I configured the filament runout sensors. What am I missing?
      121 pins2.JPG

      ; Configuration file for RepRapFirmware on Duet 3 Mini 5+ WiFi
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sat Aug 10 2024 17:00:36 GMT-0400 (Eastern Daylight Time)
       
      ; General
      G90                                                             ; absolute coordinates
      M83                                                             ; relative extruder moves
      M550 P"M3ID V2"                                                 ; set hostname
       
      ; Accessories
      M575 P1 S0 B57600                                               ; configure PanelDue support
       
      ; Network
      M552 S1                                                         ; configure WiFi adapter
      M586 P0 S1                                                      ; configure HTTP
       
      ; Wait a moment for the CAN expansion boards to become available
      G4 S2
       
      ; Accelerometers
      M955 P121.0 I20                                                 ; configure accelerometer on board #121
      M955 P122.0 I20                                                 ; configure accelerometer on board #122
       
      ; Smart Drivers
      M569 P0.1 S0 D2                                                 ; driver 0.1 goes backwards (X axis)
      M569 P0.2 S1 D2                                                 ; driver 0.2 goes forwards (Y axis)
      M569 P0.3 S0 D2                                                 ; driver 0.3 goes backwards (Z axis)
      M569 P0.4 S0 D2                                                 ; driver 0.4 goes forwards (U axis)
      M569 P121.0 S1 D2                                               ; driver 121.0 goes forwards (extruder 0)
      M569 P122.0 S1 D2                                               ; driver 122.0 goes forwards (extruder 1)
       
      ; Motor Idle Current Reduction
      M906 I30                                                        ; set motor current idle factor
      M84 S30                                                         ; set motor current idle timeout
       
      ; Axes
      M584 X0.1 Y0.2 Z0.3 U0.4                                        ; set axis mapping
      M350 X16 Y16 Z16 U16 I1                                         ; configure 16X microstepping with interpolation
      M906 X1750 Y1750 Z800 U1750                                     ; set axis driver currents
      M92 X80 Y88 Z1010 U80                                           ; configure steps per mm
      M208 X-7:203 Y-9:250 Z0:200 U28:258                             ; set minimum and maximum axis limits
      M205 X12 Y12 Z0.2 U12                                           ; set maximum instantaneous speed changes (mm/min)(JERK)
      M203 X6000 Y6000 Z600 U6000                                     ; set maximum speeds (mm/min)
      M201 X800 Y800 Z20 U800                                         ; set accelerations (mm/s^2)
       
      ; Extruders
      M584 E121.0:122.0                                               ; set extruder mapping
      M350 E16:16 I1                                                  ; configure microstepping with interpolation
      M906 E450:450                                                   ; set extruder driver currents
      M92 E2676:2682                                                  ; configure steps per mm
      M566 E150:150                                                   ; set maximum instantaneous speed changes (mm/min)
      M203 E3600:3600                                                 ; set maximum speeds (mm/min)
      M201 E3000:3000                                                 ; set accelerations (mm/s^2)
      M205 E2.5                                                       ; E max jerk (mm/s^2)
      M207 S0.5 F2400                                                 ; set retraction for T0 and T1
      M572 D0:1 S0.035                                                ; set pressure advance for T0 and T1
       
      ; Kinematics
      M669 K0                                                         ; configure Cartesian kinematics
       
      ; BLtouch
      M558 K0 P9 C"121.io0.in" H5 F120 T6000                          ; configure BLTouch probe via slot #0
      G31 P500 X0 Y24 Z4.14                                           ; set Z probe trigger value, offset and trigger height. If you have to move the nozzle closer to the bed, increase the G31 Z value by the amount of baby stepping used. If you have to move the nozzle farther away from the bed, decrease the G31 Z value by the amount of baby stepping used.
      M950 S0 C"121.io0.out"                                          ; create servo #0 for BLtouch
       
      ; Scanning Z probe
      M558 K1 P11 C"121.i2c.ldc1612" F36000 T36000
      M308 A"SZP coil" S10 Y"thermistor" P"121.temp2"                 ; thermistor on coil
      G31 K1 Z1.8 Y-38                                                ; define probe 1 offsets and trigger height
      M558.2 K1 S16 R134218                                           ; set drive current and reading offset
       
      ; Endstops
      M574 X1 P"io1.in" S1                                            ; configure X axis low end endstop
      M574 Y1 P"io2.in" S1                                            ; configure Y axis low end endstop
      M574 Z2 S1 P"io3.in"                                            ; configure Z axis high end endstop
      M574 U2 P"io4.in" S1                                            ; configure U axis high end endstop
       
      ; Mesh Bed Compensation
      M557 X19:188 Y15:210 S40:40                                     ; define grid for mesh bed compensation
      M376 H10													    ; taper off bed compensation over 10mm
       
      ; Sensors
      M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0
      M308 S1 P"121.temp1" Y"thermistor" A"Nozzle" T100000 B4725 C7.06e-8 ; configure sensor #1
      M308 S2 P"122.temp0" Y"thermistor" A"Nozzle" T100000 B4725 C7.06e-8 ; configure sensor #2
       
      ; Heaters
      M950 H0 C"out2" T0                                              ; create heater #0 (Bed)
      M143 H0 P0 T0 C0 S120 A0                                        ; configure heater monitor #0 for heater #0 (Bed)
      M307 H0 R0.167 K0.222:0.000 D26.05 E1.35 S1.00 B0               ; configure model of heater #0 (Bed)
      M950 H1 C"121.out0" T1                                          ; create heater #1 (T0)
      M143 H1 P0 T1 C0 S300 A0                                        ; configure heater monitor #0 for heater #1 (T0)
      M307 H1 R4.287 K0.528:0.232 D2.33 E1.35 S1.00 B0 V24.1          ; configure model of heater #1 (T0)
      M950 H2 C"122.out0" T2                                          ; create heater #2 (T1)
      M143 H2 P0 T1 C0 S300 A0                                        ; configure heater monitor #0 for heater #2 (T1)
      M307 H2 R4.334 K0.514:0.239 D2.21 E1.35 S1.00 B0 V24.0          ; configure model of heater #2 (T1)
       
      ; Heated beds
      M140 P0 H0                                                      ; configure heated bed #0
       
      ; Fans
      M950 F0 C"121.out2"                                             ; create fan #0 T0 Heat Sink Fan
      M106 P0 C"T0 Heatsink Fan" S0 B0.1 H1 T45                       ; configure fan #0 T0 Heat Sink Fan
      M950 F1 C"121.out1"                                             ; create fan #1 T0 Part Cooling fan
      M106 P1 C"T0 Part Cooling Fan" S0 L25 X255 B0.1                 ; configure fan #1 T0 Part Cooling Fan
      M950 F2 C"122.out2"                                             ; create fan #2 T1 Heat Sink Fan
      M106 P2 C"T1 Heatsink Fan" S0 B0.1 H2 T45                       ; configure fan #2 T1 Heat Sink Fan
      M950 F3 C"122.out1"                                             ; create fan #3 T1 Part Cooling Fan
      M106 P3 C"T1 Part Cooling Fan" S0 L25 X255 B0.1                 ; configure fan #3 T1 Part Cooling Fan
       
      ; Tools
      M563 P0 D0 H1 F1                                                ; create tool #0 T0
      M568 P0 R0 S0                                                   ; set initial tool #0 active and standby temperatures to 0C
      G10 P0 X0 Y0 Z0                                                 ; set tool 0 axis offsets
      G10 P0 R0 S0                                                    ; set initial tool 0 active and standby temperatures to 0C
      M563 P1 D1 H2 F3                                                ; create tool #1 T1
      M568 P1 R0 S0                                                   ; set initial tool #1 active and standby temperatures to 0C
      G10 P1 X0 Y0 Z-.04                                              ; set tool 1 axis offsets
      G10 P1 R0 S0                                                    ; set initial tool 1 active and standby temperatures to 0C
      
      
      
      ; Miscellaneous
      T0 ; select first tool
      ;M950 J2 C"121.io2.in"                                           ; configure the action button on T0
      ;M950 J2 C"122.io2.in"                                           ; configure the action button on T1
      M593 P"ZVDDD" F50.6                                             ; set input shaper for X/U axis
      
      M122
      === Diagnostics ===
      RepRapFirmware for Duet 3 Mini 5+ version 3.5.4 (2024-11-24 10:44:24) running on Duet 3 Mini5plus WiFi (standalone mode)
      Board ID: ZBVGS-QP6KL-K65J0-409N0-NK02Z-HT6JA
      Used output buffers: 13 of 40 (35 max)
      === RTOS ===
      Static ram: 103496
      Dynamic ram: 123516 of which 0 recycled
      Never used RAM 14736, free system stack 192 words
      Tasks: NETWORK(2,nWait 7,17.0%,215) LASER(5,nWait 7,0.0%,269) HEAT(3,nWait 6,0.0%,352) Move(4,nWait 6,0.0%,241) CanReceiv(6,nWait 1,0.1%,798) CanSender(5,nWait 7,0.0%,336) CanClock(7,delaying,0.0%,348) TMC(4,nWait 6,0.8%,101) MAIN(1,running,81.2%,665) IDLE(0,ready,0.0%,29) AIN(4,delaying,0.8%,255), total 100.0%
      Owned mutexes:
      === Platform ===
      Last reset 00:02:42 ago, cause: power up
      Last software reset at 2024-12-19 22:16, reason: User, Gcodes spinning, available RAM 11148, slot 1
      Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
      Error status: 0x00
      Aux0 errors 0,0,0
      MCU revision 3, ADC conversions started 122487, completed 122485, timed out 0, errs 0
      MCU temperature: min 27.0, current 27.0, max 27.4
      Supply voltage: min 24.2, current 24.3, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes
      Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
      Events: 0 queued, 0 completed
      Driver 0: standstill, SG min 0, read errors 0, write errors 0, ifcnt 10, reads 3346, writes 0, timeouts 0, DMA errors 0, CC errors 0
      Driver 1: standstill, SG min 0, read errors 0, write errors 0, ifcnt 13, reads 3347, writes 0, timeouts 0, DMA errors 0, CC errors 0
      Driver 2: standstill, SG min 0, read errors 0, write errors 0, ifcnt 13, reads 3347, writes 0, timeouts 0, DMA errors 0, CC errors 0
      Driver 3: standstill, SG min 0, read errors 0, write errors 0, ifcnt 13, reads 3346, writes 0, timeouts 0, DMA errors 0, CC errors 0
      Driver 4: standstill, SG min 0, read errors 0, write errors 0, ifcnt 13, reads 3346, writes 0, timeouts 0, DMA errors 0, CC errors 0
      Driver 5: not present
      Driver 6: not present
      Date/time: 2024-12-21 23:27:17
      Cache data hit count 314375956
      Slowest loop: 9.31ms; fastest: 0.16ms
      === Storage ===
      Free file entries: 20
      SD card 0 detected, interface speed: 22.5MBytes/sec
      SD card longest read time 0.4ms, write time 0.0ms, max retries 0
      === Move ===
      DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, height map offset 0.000, max steps late 0, min interval 0, bad calcs 0, ebfmin 0.00, ebfmax 0.00
      no step interrupt scheduled
      Moves shaped first try 0, on retry 0, too short 0, wrong shape 0, maybepossible 0
      === DDARing 0 ===
      Scheduled moves 1, completed 1, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
      === DDARing 1 ===
      Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
      === Heat ===
      Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0
      Heater 1 is on, I-accum = 0.0
      === GCodes ===
      Movement locks held by null, null
      HTTP is idle in state(s) 0
      Telnet is idle in state(s) 0
      File is idle in state(s) 0
      USB is idle in state(s) 0
      Aux is idle in state(s) 0
      Trigger is idle in state(s) 0
      Queue is idle in state(s) 0
      LCD is idle in state(s) 0
      SBC is idle in state(s) 0
      Daemon is idle in state(s) 0
      Aux2 is idle in state(s) 0
      Autopause is idle in state(s) 0
      File2 is idle in state(s) 0
      Queue2 is idle in state(s) 0
      Q0 segments left 0, axes/extruders owned 0x0000803
      Code queue 0 is empty
      Q1 segments left 0, axes/extruders owned 0x0000000
      Code queue 1 is empty
      === Filament sensors ===
      check 0 clear 0
      Extruder 0 sensor: no filament
      === CAN ===
      Messages queued 572, received 2583, lost 0, errs 0, boc 0
      Longest wait 0ms for reply type 0, peak Tx sync delay 6, free buffers 26 (min 26), ts 318/318/0
      Tx timeouts 0,0,0,0,0,0
      === Network ===
      Slowest loop: 20.97ms; fastest: 0.07ms
      Responder states: MQTT(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0)
      HTTP sessions: 1 of 8
      === WiFi ===
      Interface state: active
      Module is connected to access point 
      Failed messages: pending 0, notrdy 0, noresp 0
      Firmware version 2.2.0
      MAC address e8:68:e7:e1:4e:33
      Module reset reason: Power up, Vcc 3.35, flash size 2097152, free heap 39032
      WiFi IP address 192.168.1.163
      Signal strength -45dBm, channel 2, mode 802.11n, reconnections 0
      Clock register 00002002
      Socket states: 0 0 0 0 0 0 0 0
      
      ; tfree0.g
      ; called when tool 0 is freed
      ;
      ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sat Aug 10 2024 17:00:41 GMT-0400 (Eastern Daylight Time)
      
      M591 D0 P1 C"121.io1.in" S0                 	; configure/disable filament monitor (simple switch) for E0
      M83                                             ; relative extruder movement
      G1 E-3 F3600                                    ; retract 3mm
      M106 S0                                         ; turn off the print cooling fan
      G91                                             ; relative axis movement
      G1 Z3 F500                                      ; up 3mm
      G90                                             ; absolute axis movement
      G1 H3 X0 F6000                                  ; park the X carriage at zero
      
      ; tpost0.g
      ; called after tool 0 has been selected
      ;
      ; generated by RepRapFirmware Configuration Tool v3.5.4 on Sat Aug 10 2024 17:00:41 GMT-0400 (Eastern Daylight Time)
      
      M591 D0 P1 C"121.io1.in" S1                 	; configure/enable filament monitor (simple switch) for E0
      M106 R2					                        ; restore print cooling fan speed
      M116 P0     			                        ; wait for tool 0 heaters to reach operating temperature
      M83         			                        ; relative extruder movement
      G1 E2 F3600 			                        ; extrude 2mm
      
      
      jay_s_ukundefined dc42undefined 2 Replies Last reply Reply Quote 0
      • jay_s_ukundefined
        jay_s_uk @SonnyD1
        last edited by

        @SonnyD1 why are you configuring them in the tool change files? Why not just have them configured all the time in config.g?

        Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

        SonnyD1undefined 1 Reply Last reply Reply Quote 0
        • SonnyD1undefined
          SonnyD1 @jay_s_uk
          last edited by SonnyD1

          @jay_s_uk Because then I will have to have filament in the T1 all the time wether I am using it or not. @Phaedrux suggested this method when I built another IDEX some time ago in this post https://forum.duet3d.com/topic/32174/filament-runout-sensor?_=1734881028599. I could have the T0 in the config.g and the T1 in the tool change files but it doesn't matter really. That said, my other IDEX works perfectly utilizing this method. Any idea as to what the solution to this issue could be?

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

            @SonnyD1 filament monitors are only checked when you use the corresponding extruder. Also, if you wish you can leave a filament monitor configured but then enable and disable it. See the S parameter of the M591 command, https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m591-configure-filament-sensing.

            Have you tried using the DWC Object Model browser to look at the filament sensor state with and without filament? It's at sensors.filamentMonitors[N] where N is the extruder number.

            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

            SonnyD1undefined 1 Reply Last reply Reply Quote 1
            • SonnyD1undefined
              SonnyD1 @dc42
              last edited by SonnyD1

              @dc42 So, to be clear, your telling me that I can in fact configure them both in the config.g and enable them all the time via a S2 parameter, and it will only check it when the corresponding extruder is active? If I understand you correctly, that may be worth exploring.
              I did take a look at the DWC object Model as you suggested. I obviously have something backwards. When I remove the filament, it tells me "ok." When I put it in, it tells me "no filament." I feel like this is a very simple solution that is eluding me. What do I do?

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

                @SonnyD1 said in E3D Roto Filament Runout Issue:

                M591 D0 P1 C"121.io1.in" S0

                Change to:

                M591 D0 P1 C"!121.io1.in" S0

                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

                SonnyD1undefined 1 Reply Last reply Reply Quote 0
                • SonnyD1undefined
                  SonnyD1 @dc42
                  last edited by SonnyD1

                  @dc42 Did I overlook the "!" In the documentation? If not, is that something we should add?

                  What about configuring them both in the config.g with an S2 parameter?

                  @SonnyD1 said in E3D Roto Filament Runout Issue:

                  @dc42 So, to be clear, your telling me that I can in fact configure them both in the config.g and enable them all the time via a S2 parameter, and it will only check it when the corresponding extruder is active?

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

                    @SonnyD1 filament presence detectors vary, Some output a high signal when filament is present, others output a low signal. Yours evidently outputs a low signal. You can either use the ! in front of the pin name, or use P2 instead of P1 in the M591 command. Either (but not both together) will invert the sense of the filament presence detection.

                    Assuming you are printing from SD card, you probably want to use the S1 parameter instead of S2 so that you don't get filament errors reported when loading or unloading filament.

                    BTW we make a filament monitor that measures filament motion (as opposed to a filament sensor that just senses present/not-present) for the Revo Roto/Roto tool board combination, see https://www.duet3d.com/rotofilamentmonitor.

                    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

                    SonnyD1undefined 1 Reply Last reply Reply Quote 0
                    • SonnyD1undefined
                      SonnyD1 @dc42
                      last edited by SonnyD1

                      @dc42 Well now we know that the Roto sensor that comes from E3D outputs a low signal. Utilizing the "!" in front of the pin name did the trick. Right now having them configured in the pre/post files is working so think I'll leave them there. It is good to know of other options though.

                      I am familiar with the Duet Roto Filament monitor. I'm gonna have to stick with these as they are not cheap. But I appreciate the info.

                      As usual, thank you for your help in resolving this issue for me.

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