How to extrude until trigger
-
For info :
M115
FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 2.0(RTOS) ELECTRONICS: Duet Ethernet 1.02 or later + DueX5 FIRMWARE_DATE: 2018-06-05b3 -
there is something that escape me.
I'm just trying to stop the G1 E1000 command when E0's trigger is off.
I'm not in printing mod, but in cold extrusion enable to test the gcode. -
There is currently no direct facility in RepRapFirmware to extrude until trigger. However, there is a facility to extrude until the extruder motor stalls - just use a G1 S1 Exxx Fxxx command.
To achieve the effect of extrude until endstop switch triggered, you could create an additional axis (say U) using M584, and assign the extruder moor to both the extruder and U. Then a G1 S1 Uxxx command will drive the motor until the U endstop is triggered. Afterwards, use the M584 P parameter to hide the U axis.
-
exactly, a solution not very elegant, but which remains in the concept of all gcode.
Why so much difference between the management of the XYZ and E axes?
Finally it probably saves me, I will test this step!
-
@nicolab28 said in How to extrude until trigger:
exactly, a solution not very elegant, but which remains in the concept of all gcode.
Why so much difference between the management of the XYZ and E axes?
Finally it probably saves me, I will test this step!
I don't think anyone has asked for extrude-until-trigger before. What is the use case?
-
Yes but how to affect E0 endstop to U axe?
I need to wire it? -
it's for create a MMU.
I want to push/retract the filament until a position. Perhaps there is another method?For my MMU, I use one extruder for direct drive, and 2 stepper for selecting et bowden.
For the moment I use an 5 multi filament. this one https://www.thingiverse.com/thing:2785379
I use a sensor before the direct drive, to know exactly where the filament is.
So I need to push until trig. -
Another question
how to do an
if (E5 trig sensor) then G1 U-100 -
@nicolab28 said in How to extrude until trigger:
Yes but how to affect E0 endstop to U axe?
I need to wire it?The first axis you create using M584 will use the E0 endstop, and the next will use the E1 endstop.
I use a sensor before the direct drive, to know exactly where the filament is.
Are you sure you can't use extruder stall detection instead?
Another question
how to do an
if (E5 trig sensor) then G1 U-100Conditions in GCode are planned to be supported in RRF 2.03.
-
@dc42 said in How to extrude until trigger:
The first axis you create using M584 will use the E0 endstop, and the next will use the E1 endstop.
I use
M584 X0 Y1 Z4:5 E3:6:7:8:9 U6 P4
So E3 use E0 endstop
E6 and U6 -> E1 endstop ...Ok I will try
If i do
M584 X0 Y1 Z4:5 E9:8:7:6:3 U6 P4
So E9 become E0 endstop
E6 and U6 -> E3 endstop ...
And I can do this on the fly without loosing my tool definition?
My T1 def:
M563 P1 D0:1 H1 S"Tool 1" ; Define tool 1
M567 P1 E1:0.975 ; mixing
G10 P1 X0 Y0 Z0So I need to do this
M584 X0 Y1 Z4:5 E3:6:7:8:9 U6 P4
T1
G1 E-100 S1 ; with E1 endstopAre you sure you can't use extruder stall detection instead?
When I'm looking for Extruder stop I saw "stall" in a gcode title command, but I was thinking that was for loosing step for the XYZ axes, I will take a look.
Conditions in GCode are planned to be supported in RRF 2.03.
YES YES YES!!!
Varaiable too?
when? 1 week, 1 month or 1 year?
A python/php/lua would be grate -
@nicolab28 said in How to extrude until trigger:
I use
M584 X0 Y1 Z4:5 E3:6:7:8:9 U6 P4
So E3 use E0 endstop
E6 and U6 -> E1 endstop ...No, because extruders are not axes. U will use the E0 endstop.
-
OK,
even if Z use driver 4:5 it doens't take E4 E5 endstop
P4 from M584 say E0 for 4th axe U and only 4 axes
So I need to use P8 for U V W and A? B? -
@dc42 said in How to extrude until trigger:
Are you sure you can't use extruder stall detection instead?
I took a look in the doc, but I don't understand how stall detection will help me. how did you see the thing?
I did not take the time to test the M584, for the endstop, I'm experiment without for the moment.
-
Back from holidays!
Ok it works, if I affect a 4th axis "A" it has the E0 endstop.
By mapping the axis A to the extruder E0, I can extrude and control the position of my filament.M569 P5 S0 ; Driver 5
M584 X0 Y1 Z2 E5 A5 P4 ; Extruder E and A-axis on the driver 5
... set step / mm speed ...
M574 X1 Y1 A1 S1 ; Set active high endstopsSo if I want to extrude normally I use as usual G1 Exx
And If I want to get the filament back to endstop I use the function G1 A-1000 S1Thank you DC42 !!!
What is the M577 command for? in which situation to use it?
-
Another question...
Can we use the laser filament sensor as endstop for an axis? If yes, how?
-
@nicolab28 said in How to extrude until trigger:
Another question...
Can we use the laser filament sensor as endstop for an axis? If yes, how?
That's not supported, or planned at present. Would you be wanting to extrude until the filament monitor detects motion, or until it detects no motion?
-
both ... It's mostly to have contactless sensors.
2 extruders (a bowden and a direct drive)
In fact I have an extruder that pushes the filament to the second which is a direct drive.
I have an endstop that is just after the first extruder, which serves me to change filament. I retract until endstop, I retract a few millimeters again, and I change my filament.
And I push the filament until the second endstop, before the direct drive, I push a few millimeters to hang the direct drive, and I disengaged the first extruder that pushed the filament.My printer is big enough, my bed is 500x500, I have a long tube of ptfe, and it's quite complicated to be precise enough in the position of the filament.
-
@nicolab28 said in How to extrude until trigger:
In fact I have an extruder that pushes the filament to the second which is a direct drive.
I have an endstop that is just after the first extruder, which serves me to change filament. I retract until endstop, I retract a few millimeters again, and I change my filament.
And I push the filament until the second endstop, before the direct drive, I push a few millimeters to hang the direct drive, and I disengaged the first extruder that pushed the filament.You should be able to use extruder stall detection for that one.
You should be able to use extruder stall detection to use the first extruder to push the filament and stop when it reaches the direct drive extruder.
The way endstops are configured and used is scheduled to be reworked in firmware 2.03, so I'll bear your suggestions in mind.
-
I do not think I can use the stall, with the extruder pushing, because the filament must always be engaged in it.
With a servo I engage or I disengage this extruder.But it is to test for the direct drive.
Normally, all parts are finished product tomorrow, I will finally be able to make the first tests ...
-
@NicoLab28 im currently doing the same project running a MMU2 with the duet, your welcomed to use my macros if you like. they work ok so far but dont have many miles on them yet so use them as you will. they detect loading and unloading failures. the triggers are very new and not fully tested but seem ok so far
My axes:
A=selector B=filament gear C=idler pulleysi aim to install the laser sensor once it comes back in stock. you can see where ive added space for it.
cheers
Gavtpre0.g ( 1-4 are the same apart from the A and C positions)
G90 ; absolute moves
M913 A100 B100 C100
G1 A1 F2000 ; move selector to T0 position
G1 C4 F10000 ; move idler to T0 position
M400 ; wait for moves to stop
M98 P"tpremaster.g"
M913 A50 B20 C20tpremaster.g (global loading macro)
M591 D0 P2 C3 S0 ; deactivate filament sensor
M574 B2 S0 ; set B axis max endstop to switched low
G91 ; relative moves
G1 B30 S1 F3000 ; feed filament to filament sensor
G92 B0 ; force B to 0mm
G1 B20 F3000 ; feed a bit more to reliably switch sensor and reach tube
M400 ; wait till moves finish
M574 B2 S3 ; set B axis max endstop to sensorless
M581 E0 S0 T2 C0 ; activate trigger 2 on falling edge
M582 T2 ; check filament sensor to confirm loading successful
G4 P4000 ; trial wait to signify it progress
M913 B50 ; reduce motor current to 50% to prevent grinding
M915 B S5 F0 ; set stall guard parameters
G1 S1 B550 F3600 ; fast feed filament into extruder
M591 D0 P2 C3 S1 ; activate filament sensor
G92 B0 ; force B to 0mm
G90 ; absolute movestpost0.g (1-4 are the same apart from C position)
M913 A100 B100 C100
G1 C4
M98 P"tpostmaster.g"
M116 P0
M913 A50 B20 C20tpostmaster.g ( global loading macro)
G91 ; relative moves
G1 E5 B5 F300 ; feed filament into extruder with both B and E axis
;activate laser pew pew pew
G90 ; absolute moves
G1 C78 F10000 ; move C to safe position
M400 ; wait for moves to finish
G91 ; relative moves
M915 E S3 F0 ; set extruder stall parameters
M913 E70 ; lower extruder current by 50%
G1 S1 E100 F3000 ; drive extruder till stall
M913 E100 ; return extruder current to 100%
G90 ; absolute movestfree0.g
M913 A100 B100 C100
M98 P"TipSmoothing.g"
G90 ; absolute moves
G1 C4 F10000 ; select T0 with idler
M98 P"tfreemaster.g"
M913 A50 B20 C20tfreemaster.g (global unloading macro)
M591 D0 P2 C3 S0 ; deactivate filament sensor
G91 ; relative moves
M574 B1 S1 ; set B axis min endstop to switched high temporarily
G4 P4000 ; trial wait to show progress
G1 B-500 S1 F3000 ; retract filament till sensor switches off
G92 B0 ; force B axis position to 0mm
M581 E0 S1 T3 C1 ; activate trigger 3 on rising edge while printing
M582 T3 ; check filament sensor to confirm unloading successful
G1 B-22 F3000 ; retract to position clear of selector
G90 ; absolute moves
;G1 C78 F10000 ; move C to safe position
M400 ; wait for moves to finishtrigger2.g
; for detecting loading problems
M400
M291 P"Loading failure detected" S2 B1trigger3.g
;for detecting unloading problems
M400
M291 P"Unloading failure detected" S2 B1