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

Filament Presence & Trigger via Same Input?

Scheduled Pinned Locked Moved
Third-party add-ons
2
6
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.
  • undefined
    CCS86
    last edited by 22 Jan 2023, 17:21

    Hi guys,

    I am trying to configure an Orbiter filament presence sensor on my Maestro.

    My issue is that the filament presence lead essentially needs to perform 2 functions:

    • Runout detection via M591
    • Trigger for filament auto-load

    These are my configuration lines, but it won't accept the M950 because "pin not free".

    M591 D0 P1 C"e0stop" S1 ; presence sensor connected to E0 endstop for drive 0, enabled
    M950 J1 C"e0stop" ; define logical input for filament auto load
    M581 P1 T2 S0 R0 ; define trigger for filament auto load triggers trigger2.g
    M950 J2 C"e1stop" ; define logical input for filament unload
    M581 P2 T3 S0 R0 ; define trigger for filament auto load triggers trigger3.g

    Is there a way to use that e0stop pin for double duty, or do I have to split the wire and run it to a second pin?

    undefined 1 Reply Last reply 23 Jan 2023, 17:25 Reply Quote 0
    • undefined
      T3P3Tony administrators @CCS86
      last edited by T3P3Tony 23 Jan 2023, 17:25

      @CCS86 you could not define it directly as a filament presence sensor and then change the behaviour of the trigger depending on either the state of the machine or some variable in start gcode or filament load gcode or both.

      www.duet3d.com

      undefined 1 Reply Last reply 23 Jan 2023, 19:00 Reply Quote 0
      • undefined
        CCS86 @T3P3Tony
        last edited by 23 Jan 2023, 19:00

        @T3P3Tony said in Filament Presence & Trigger via Same Input?:

        @CCS86 you could not define it directly as a filament presence sensor and then change the behaviour of the trigger depending on either the state of the machine or some variable in start gcode or filament load gcode or both.

        Could, or could not?

        It seems viable to have full functionality as a presence sensor and as an autoload trigger, since they each work in opposite directions with the signal.

        Not present > present = autoload trigger
        Present > not present = filament runout

        @dc42 Is this something that could be implemented in a future version?

        undefined 1 Reply Last reply 24 Jan 2023, 14:05 Reply Quote 0
        • undefined
          T3P3Tony administrators @CCS86
          last edited by 24 Jan 2023, 14:05

          @CCS86 said in Filament Presence & Trigger via Same Input?:

          Could, or could not?

          Sorry! could!

          @CCS86 said in Filament Presence & Trigger via Same Input?:

          It seems viable to have full functionality as a presence sensor and as an autoload trigger, since they each work in opposite directions with the signal.
          Not present > present = autoload trigger
          Present > not present = filament runout

          you should be able to use conditional gcode within your trigger macro to implement this functionality.

          www.duet3d.com

          undefined 1 Reply Last reply 24 Jan 2023, 16:06 Reply Quote 1
          • undefined
            CCS86 @T3P3Tony
            last edited by 24 Jan 2023, 16:06

            @T3P3Tony said in Filament Presence & Trigger via Same Input?:

            you should be able to use conditional gcode within your trigger macro to implement this functionality.

            Could you shed some light on this?

            Would I use M591 to define the pin for filament sensing, then skip the M950? Can the M581 reference the pin defined in the M591?

            undefined 1 Reply Last reply 25 Jan 2023, 10:45 Reply Quote 0
            • undefined
              T3P3Tony administrators @CCS86
              last edited by 25 Jan 2023, 10:45

              @CCS86 one option is to undefine it as a filament sensor and define it as a trigger in your sprint start and end macros. Roughly (untested):
              start gcode:

              M950 J1 C"nil" ; free up the pin
              M591 D0 P1 C"nil"
              M581 T2 P-1

              end gcode:

              M591 D0 P0
              M950 J1 C"e0stop"
              M581 P1 T2 S0 R0

              The other option is keep it as a trigger the whole time (which is probably easier) and have the conditional gcode to check the state (https://github.com/Duet3D/RepRapFirmware/wiki/Object-Model-Documentation#statestatus)

              e.g.

              ;trigger2.g
              if state.status = "processing"
              M98 filament-error.g ;example of some logic to handle the filament out situation
              else
              ;the existing logic to handle filament loading.

              www.duet3d.com

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