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

    FILAMENT_RUNOUT_DISTANCE_MM or similar at reprap?

    Scheduled Pinned Locked Moved
    Firmware wishlist
    6
    24
    1.6k
    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.
    • OwenDundefined
      OwenD
      last edited by

      Just confirming that this is now possible with 3.4.0b7
      Albeit you must be aware that the macro called is now filament_error.g, not filament-error.g
      i.e. must have an underscore "_" and not a hyphen "-"
      There is also a problem if filament_error.g contains an M291 as described here

      filament_error.g

      ;0:/sys/filament_error.g
      ;run when a filament sensor error is detected.  Print will be paused bt Daemon.g after runout distance.
      var runoutDistance = 350 ; this is just so you can change easily 
      ; first check that we are not currently in an error state and the switch has been toggled again.
      if (global.filamentDistance !=0) || !(state.status = "processing")
      	echo "Filament sensor triggered, but already no print in progress.  No action taken"
      	M99 ; exit macro
      echo "filament_error.g run"
      
      G4 P10 ; delay 10ms to debounce
      if sensors.filamentMonitors[0].status="ok"
      	echo "switch bounce detected - error cancelled"
      	M99 ; break out if sensor value is zero again (bouncing)
      echo {"Filament error type " ^ param.P ^ " detected on extruder " ^ param.D}
      ;M291 R"Filament Error" P{"Filament error type " ^ param.P ^ " detected on extruder " ^ param.D} S1 T3
      
      var thisExtruderValue = move.extruders[tools[state.currentTool].filamentExtruder].position
      set global.filamentDistance = var.thisExtruderValue + var.runoutDistance
      echo "filament_error.g run - print will be paused after " ^ var.runoutDistance ^ "mm"
      

      In daemon.g
      (Note this is run in a while loop so it's called at intervals less than 10 seconds)

      while true
      	; I have a bunch of other stuff in here
      	;check the filament runout
      	if state.currentTool != -1
      		if (move.extruders[tools[state.currentTool].filamentExtruder].position > global.filamentDistance)  &&  (global.filamentDistance !=0) && (state.status = "processing")
      			echo "paused called from daemon - filament runout"	
      			M25 ; pause print if filament has run out
      	G4 S2 ; add a delay for these checks
      

      In resume.g we reset the distance

      if sensors.filamentMonitors[0].status="ok"
      	set global.filamentDistance = 0 ; reset filament sensor extrusion distance
      ;do all the other stuff needed for resuming
      

      You also need to set the distance to zero in start.g

      if sensors.filamentMonitors[0].status="ok"
      	set global.filamentDistance = 0 ; reset filament sensor extrusion distance 
      else
      	abort "Filament sensor shows no filament loaded.  Print aborted"
      

      and of course define the global in config.g

      if !exists(global.filamentDistance)
      	global filamentDistance = 0 ; global for use to allow filament to feed for set distance after sensor trips 
      else
      	set global.filamentDistance = 0
      
      apakundefined 1 Reply Last reply Reply Quote 2
      • apakundefined
        apak @OwenD
        last edited by apak

        thanks, will try

        MrTwinkysundefined 1 Reply Last reply Reply Quote 0
        • apakundefined
          apak
          last edited by

          This post is deleted!
          1 Reply Last reply Reply Quote 0
          • MrTwinkysundefined
            MrTwinkys @apak
            last edited by

            @apak any word on whether or not this is functioning correctly? I would like to set this up for a reverse Bowden setup also.

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