Wiring Multiple Endstops in Parallel or Series with Duet 6XD
-
I am trying to wire Multiple Endstops in Parallel or Series for X-axix and Y-axis. I have several Panasonic Photoelectric Sensors PM25U that i am using as Endstops . I know that the general rule with Duet 3 6XD as per documentation is to have 1 Endstop Per Axis Per Motor and then define the Min and Max distance from Homing point. Since after homing the Min and Max distance is defined in the config.g file, i want to do it a little different i.e the old school way. i have already crushed my PnP machine a couple of times today, so i want to take a few precautions,
-
Endstop X_Min_1 - a Single Min Endstop(Homing X-Axis Endstop at the Low End)
-
Endstop X_Max_2 - a Single Max Endstop(Limiting X-Axis Endstop at the High End -- just slightly 10mm beyond Max Distance )
-
Endstop Y_Min_1 and Endstop Y_Min_2 Connected in Parallel/Series to serve as a Single Min Endstop(Homing Y-Axis Endstop at the Low End )
-
Endstop Y_Max_1 and Endstop Y_Max_2 Connected in Parallel/Series to serve as a Single Max Endstop(Limiting Y-Axis Endstop at the High End -- just slightly 10mm beyond Max Distance)
Panasonic photoelectric Sensors PM25 used as Endstops -- Datasheet
How would i wire them first and then configure them in config.g to have all this to work correctly. Do i need a Relay for this to work with Duet 3 6XD ?
-
-
@developeralgo222 each sensor will need its own input on the 6Xd do you have enough spare inputs ?
-
@developeralgo222 if they are NPN normally open ones then you can connect the outputs in parallel.
-
@moth4017 said in Wiring Multiple Endstops in Series with Duet 6XD:
@developeralgo222 each sensor will need its own input on the 6Xd do you have enough spare inputs ?
They are NPN sensors. i have about 6 inputs left and i might use those for the Solenoid Valves , i think i might need extra inputs if that's the case. Any way of adding extra inputs apart from getting another 3HC board
-
@developeralgo222 Do you have only one motor on the Y axis? If so, you may as well wire both X axis endstops in parallel, and all four Y axis endstops in parallel, and only use two inputs.
If you do have two motors on the Y axis, driven by separate drivers, you can use the endstops for squaring the Y axis, and you would wire only the pair of Y endstops on the same motor together in parallel.Most of the time you want the switches defined as physical limit switches, which pause the machine when triggered. Define these in config.g.
You would create two triggers, one for X and one for Y, in config.g, and set them to pause the machine, eg:
; Triggers M950 J1 C"io1.in" ; define input 1 pin M950 J2 C"io2.in" ; define input 2 pin M581 T1 S1 P1:2 S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time
See M950 and M581 for parameters.
Then, when homing, redefine them as endstops. Homing can then be done to either end of the axes, though either max OR min will have to be used in homeall.g. You can set up a macro for the other end, if you want.
In homeall.g (and other homing macros), it would look something like:
M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine X axis limit switch triggers M574 X1 S1 P"io1.in" ; define X axis endstop, minimum end M574 Y1 S1 P"io2.in" ; define Y axis endstop, minimum end [normal homing routine for X and Y axis in here] M574 X0 M574 Y0 M950 J1 C"io1.in" M950 J2 C"io2.in"
Wires connecting normally-open endstop switches are susceptible to capacitive interference pickup, in particular from nearby stepper motor cables but to a lesser extent from heater and fan cables, which may cause false triggering. You can mitigate this to some extent by using shielded cable to connect the normally-open endstop switch, or lower value pullup resistors.
I'm going to add the above set up example to the Triggers page, here: https://docs.duet3d.com/en/User_manual/Tuning/Triggers
Ian
-
@droftarts said in Wiring Multiple Endstops in Series with Duet 6XD:
Do you have only one motor on the Y axis? If so, you may as well wire both X axis endstops in parallel, and all four Y axis endstops in parallel, and only use two inputs.
@droftarts , i only have 1x Nema 34 Closed Loop Motor for X-axis and 1x Nema 34 Closed Loop Motor for Y-axis. i.e Each Axis has only a single Motor.
Updated Config.g
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"MYTEST PNP" ; set printer name ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network if {network.interfaces[0].type = "ethernet"} M552 P10.0.0.200 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P10.0.0.1 ; set gateway else M552 S1 M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ;The X axis to control the movement of the PnP head right and left. Right(Clockwise rotation to move Forward = S0) is positive. ;The Y axis to control the movement of the PnP head forward and back. Forward( AntiClockwise rotation to move Forward = S1) is positive. ;The Z axis to control raising and lowering of the PnP nozzle up and down. Up is positive. ;The V, U, W, A, B, C (for 6-Head nozzles) axes rotates clockwise and counter-clockwise. Counter-clockwise is positive. ;RepRapFirmware supports X, Y and Z axes as standard and allows you to create up to 7 additional axes depending on the firmware ;version and which Duet you are using. Axes are created and associated with ;stepper motors using the M584 command in config.g. ;You may use any of the following letters to refer to the new axes: U V W A B C D (letter D is not supported in older firmware versions) ;If no T parameter is given, then on boards having internal drivers the step pulse width and interval are guaranteed to be suitable for the on-board drivers only, ;and will generally be too fast for external drivers. On the MB6XD board the default is T2.5:2.5:2.5:2.5. ; Drives ;Physical Drives CAN ID = 0 M569 P0.0 S0 R1 T5:5:10:10 ; X-Axis physical drive 0.0 goes forwards on CAN ID = 0 - Duet 6XD Drive 0.0 with 2.5us timings between pulses M569 P0.1 S1 R1 T5:5:10:10 ; Y-Axis physical drive 0.1 goes forwards on CAN ID = 0 - Duet 6XD Drive 0.1 with 2.5us timings between pulses ;Physical Drives CAN ID = 1 M569 P1.0 S1 ; Z & U Axis physical drive 1.0 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on Z & U axis on CAN ID = 1 - Duet 3HC Drive 1.0 M569 P1.1 S1 ; V & W Axis physical drive 1.1 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on V & W axis on CAN ID = 1 - Duet 3HC Drive 1.1 M569 P1.2 S1 ; A & B Axis physical drive 1.2 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on A & B axis on CAN ID = 1 - Duet 3HC Drive 1.2 ;Physical Drives CAN ID = 2 M569 P2.0 S1 ; C-Axis physical drive 2.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.0 M569 P2.1 S1 ; D-Axis physical drive 2.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.1 M569 P2.2 S1 ; 'A-Axis physical drive 2.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.2 ;Physical Drives CAN ID = 3 M569 P3.0 S1 ; 'B-Axis physical drive 3.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.0 M569 P3.1 S1 ; 'C-Axis physical drive 3.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.1 M569 P3.2 S1 ; 'D-Axis physical drive 3.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.2 ;By default Z U V W are linear and A B C D are rotary; but you can change that using the R ; Enable All the drives M17 ; Enable All the drives ; set visible drive mapping ; X-Axis , Y-Axis (2 x Nema 34 Closed Loop Motors) and Z-Axes (Z,U,V,W,A,B) mapping to 3 Stepper motors ; directly connected to 3HC (CAN ID = 1) (which moves the nozzles up and down along Z-axis) ;M584 X0.0 Y0.1 Z1.0 U1.0 V1.1 W1.1 A1.2 B1.2 R0 ; LIN R0 = LINEAR, R1 = ROTATION M584 X0.0 Y0.1 R0 ; LIN R0 = LINEAR, R1 = ROTATION ; Rotational Axes mapping (C, D, 'A, 'B, 'C, 'D ) to 6 motors directly connected to 3HC (CAN ID 2 and 3) (which rotates the nozzles +180 / -180 along Rotational axis) ;M584 C2.0 D2.1 'A2.2 'B3.0 'C3.1 'D3.2 R1 ; LIN R0 = LINEAR, R1 = ROTATION M584 Z1.0 U1.0 V1.1 W1.1 A1.2 B1.2 C2.0 D2.1 'A2.2 'B3.0 'C3.1 'D3.2 R1 ; LIN R0 = LINEAR, R1 = ROTATION M350 Z16 U16 V16 W16 A16 B16 C16 D16 'A16 'B16 'C16 'D16 I1 ; configure microstepping with interpolation. This is irrelevant for external drives (X & Y ) M92 X64.00 Y64.00 Z8.888 U8.888 V8.888 W8.888 A8.888 B8.888 C8.888 D8.888 'A8.888 'B8.888 'C8.888 'D8.888 ; set steps per mm 50mm/rev M566 X300.0 Y300.0 Z300.0 U300.0 V300.0 W300.0 A300.0 B300.0 C100.0 D100.0 'A100.0 'B100.0 'C100.0 'D100.0 ; set maximum instantaneous speed changes (mm/min) M203 X5000.00 Y5000.00 Z5000.00 U5000.00 V5000.00 W5000.00 A5000.00 B5000.00 C5000.00 D5000.00 'A5000.00 'B5000.00 'C5000.00 'D5000.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z500.00 U500.00 V500.00 W500.00 A500.00 B500.00 C1000.00 D1000.00 'A1000.00 'B1000.00 'C1000.00 'D1000.00 ; set accelerations (mm/s^2) M906 Z600.0 U600.0 V600.0 W600.0 A600.0 B600.0 C500.0 D500.0 'A500.0 'B500.0 'C500.0 'D500.0 I30 ; set motor currents (mA) and motor idle factor in per cent. This is irrelevant for external drives (X & Y ) M84 S30 ; Set idle timeout M564 H0 ; Sets homing, H0 allows mvmnt wo homing ; Axis Limits M208 X0 Y0 Z-160 U-160 V-160 W-160 A-160 B-160 C0 D0 'A0 'B0 'C0 'D0 S1 ; Set axis minima M208 X500 Y500 Z0 U0 V0 W0 A0 B0 C180 D180 'A180 'B180 'C180 'D180 S0 ; Set axis maxima ; Triggers -- Two triggers, one for X and one for Y, and set them to pause the machine M950 J1 C"io1.in" ; define input 1 pin M950 J2 C"io2.in" ; define input 2 pin M581 T1 S1 P1:2 S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time ; There are two parameters to be set for each endstop: ; (1) The electrical type of the endstop (S parameter). S0 = active low (S0, e.g. normally-open switch or Hall sensor), S1 = active high (S1, e.g. a normally-closed switch or opto switch), ; S2 = Use Z probe (S2) and S3 = for using motor stall detection (S3). ; (2) Whether the endstop is at the minimum end (Low End) or the maximum end (High End) of the axis. ; These are the X, Y and Z parameters. 0 = no endstop present(e.g X0) , 1 = an endstop switch at the Minimum end (e.g X1) , 2 = an endstop switch at the Maximum end (e.g X2) of the axis. ; Endstops ; For X and Y Axis M574 X1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in M574 Y1 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in ; For Z-Axis (Z,U,V,W,A,B) - Up/down) -- CAM Driven Dual Nozzles ( 1 Motor rotates up/down to drive 2 Nozzles ) M574 Z1 S1 P"!1.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin 1.io0.in M574 U1 S1 P"!1.io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on U via pin 1.io1.in M574 V1 S1 P"!1.io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on V via pin 1.io2.in M574 W1 S1 P"!1.io3.in" ; configure switch-type (e.g. microswitch) endstop for low end on W via pin 1.io3.in M574 A1 S1 P"!1.io4.in" ; configure switch-type (e.g. microswitch) endstop for low end on A via pin 1.io4.in M574 B1 S1 P"!1.io5.in" ; configure switch-type (e.g. microswitch) endstop for low end on B via pin 1.io5.in ; For Rotational Axes only (C,D,'A,'B,'C,'D) +180 / - 180 ) M574 C1 S1 P"!2.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on C via pin 2.io0.in M574 D1 S1 P"!2.io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on D via pin 2.io1.in M574 'A1 S1 P"!2.io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on 'A via pin 2.io2.in M574 'B1 S1 P"!3.io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on 'B via pin 3.io0.in M574 'C1 S1 P"!3.io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on 'C via pin 3.io1.in M574 'D1 S1 P"!3.io2.in" ; configure switch-type (e.g. microswitch) endstop for low end on 'D via pin 3.io2.in ; SMC NPN Vacuum Sensors -ZSE30A-01-N-L (Not Z-Probe) M558 P8 C"!2.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 1 M558 P8 C"!2.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 2 M558 P8 C"!2.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 3 M558 P8 C"!3.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 4 M558 P8 C"!3.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 5 M558 P8 C"!3.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 6 ; 6X LINGERA Integrated Solenoid Valves (Pump and Vacuum) M558 P8 C"!io2.in" ; Duet 3 6XD CAN_ID 0 Port 3- Pump and Vacuum Solenoid Valve for Nozzle 1 M558 P8 C"!io3.in" ; Duet 3 6XD CAN_ID 0 Port 4- Pump and Vacuum Solenoid Valve for Nozzle 2 M558 P8 C"!io4.in" ; Duet 3 6XD CAN_ID 0 Port 5- Pump and Vacuum Solenoid Valve for Nozzle 3 M558 P8 C"!io5.in" ; Duet 3 6XD CAN_ID 0 Port 6- Pump and Vacuum Solenoid Valve for Nozzle 4 M558 P8 C"!io6.in" ; Duet 3 6XD CAN_ID 0 Port 7- Pump and Vacuum Solenoid Valve for Nozzle 5 M558 P8 C"!io7.in" ; Duet 3 6XD CAN_ID 0 Port 8- Pump and Vacuum Solenoid Valve for Nozzle 6
Updated homeall.g
; homeall.g M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine Y axis limit switch triggers M574 X1 S1 P"io1.in" ; define X axis endstop, minimum end M574 Y1 S1 P"io2.in" ; define Y axis endstop, minimum end ; Home X-Axis and Y-Axis second M98 P"homex.g" M98 P"homey.g" M574 X0 M574 Y0 M950 J1 C"io1.in" M950 J2 C"io2.in" ; Home all other axis ; Home Z-Axes first (Z, U, V, W, A, B ) M98 P"homez.g" M98 P"homeu.g" M98 P"homev.g" M98 P"homew.g" M98 P"homea.g" M98 P"homeb.g" ; Home Rotational axes (C, D, 'A, 'B, 'C, 'D ) = ( C, D, a, b, c, d) last M98 P"homec.g" M98 P"homed.g" M98 P"home'a.g" M98 P"home'b.g" M98 P"home'c.g" M98 P"home'd.g"
Updated homex.g
; homex.g ; called to home the X axis ; Undefine any Triggers for X and Y-axis M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine Y axis limit switch triggers ;Define The Triggers for X and Y-axis M574 X1 S1 P"io1.in" ; define X axis endstop, minimum end M574 Y1 S1 P"io2.in" ; define Y axis endstop, minimum end ; Home X-Axis G91 ; relative positioning G1 H1 X500 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 H1 X-15 F6000 ; go back a few mm G1 H1 X500 F360 ; move slowly to X axis endstop once more (second pass) G90 ; absolute positioning ; M574 X0 M574 Y0 ; Triggers M950 J1 C"io1.in" M950 J2 C"io2.in"
Updated homey.g
; homey.g ; called to home the Y axis ; Undefine any Triggers for X and Y-axis M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine Y axis limit switch triggers ;Define The Triggers for X and Y-axis M574 X1 S1 P"io1.in" ; define X axis endstop, minimum end M574 Y1 S1 P"io2.in" ; define Y axis endstop, minimum end ; Home Y-Axis G91 ; relative positioning G1 H1 Y500 F1800 ; move quickly to Y axis endstop and stop there (first pass) G1 H1 Y-15 F6000 ; go back a few mm G1 H1 Y500 F360 ; move slowly to Y axis endstop once more (second pass) G90 ; absolute positioning ; M574 X0 M574 Y0 ; Triggers M950 J1 C"io1.in" M950 J2 C"io2.in"
i will now try as per @droftarts , To wire both X axis endstops in parallel, and all four Y axis endstops in parallel, and only use two inputs
Here my Schematic for the parallel Connections for the Endstops , is this correct as per your description ?
X-Axis Endstops parallel connections
Y-Axis Endstops parallel connections
Having an issue with Panasonic Photo Sensors PM25 used as endstops(i have 2 PM25 connected in parallel for X-axis to act a single endstop and 4 x PM25U connected in parallel for Y-axis) .
Can't seem to figure out where the main issue is located ? Should i wire all the Power inputs (Brown Wires) from Sensors to a 24V ( since required Supply Voltage is 5 - 24V +/- 10% ) and GND (Blue Wires) directly to a 24V PSU instead of 5V being supplied by Duet 6XD 5V_EXT. I tried it ealier but it didn't resolve my issue
-
@developeralgo222
Modified config.g snapshots to :; Triggers -- Two triggers, one for X and one for Y, and set them to pause the machine M950 J1 C"!io0.in" ; define Trigger input pin #1 on IO_0 M950 J2 C"!io1.in" ; define Trigger input pin #2 on IO_1 ; Trigger number 0 causes an emergency stop as if M112 had been received. Trigger number 1 causes the print to be paused as if M25 had been received. Any trigger number # greater than 1 causes ; the macro file sys/trigger#.g to be executed. Polling for further trigger conditions is suspended until the trigger macro file has been completed M581 T1 P1:2 S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time ; There are two parameters to be set for each endstop: ; (1) The electrical type of the endstop (S parameter). S0 = active low (S0, e.g. normally-open switch or Hall sensor), S1 = active high (S1, e.g. a normally-closed switch or opto switch), ; S2 = Use Z probe (S2) and S3 = for using motor stall detection (S3). ; (2) Whether the endstop is at the minimum end (Low End) or the maximum end (High End) of the axis. ; These are the X, Y and Z parameters. 0 = no endstop present(e.g X0) , 1 = an endstop switch at the Minimum end (e.g X1) , 2 = an endstop switch at the Maximum end (e.g X2) of the axis. ; Endstops ; For X and Y Axis M574 X1 S1 P"!io0.in" ; configure active high endstop switch for low end on X via pin io0.in M574 Y1 S1 P"!io1.in" ; configure active high endstop switch for low end on Y via pin io1.in
Then sent commands
Able to move X-Axis: Endstop visible
G1 G1 H2 X-5 G1 H2 X0
Able to move Y-Axis: --- Still No Y-Axis Endstop visible on M119
G1 G1 H2 Y5 G1 H2 Y0
M119 Endstops - X: at min stop, Y: no endstop, Z: at min stop, U: at min stop, V: at min stop, W: at min stop, A: at min stop, B: at min stop, C: not stopped, D: not stopped, a: not stopped, b: not stopped, c: not stopped, d: not stopped, Z probe: at min stop
-
@developeralgo222 Maybe it would have been easier to test it with one endstop on X and one on Y, to get the homing working correctly, before wiring them all together!
However, there is an error in your config.g. You CANNOT define both the triggers AND the endstops in your config.g. One or the other. (Edit: it looks like I didn't make this clear in my earlier explanation, sorry!) I would define the triggers. If your run your config.g by using
M98 P"config.g"
(does this still reboot the 6XD? I think you said it did before) you will see an error, something likeError: M574: Pin 'io[x].in' is not free
, which basically says the pin is not available as it is already defined.Your homing macros should define the endstop pins, after the triggers have been undefined. Apart from within the macro, you won't have X and Y endstops. Which is fine, because unless you actually call a homing move, endstops are ignored and the limits set by M208 are used as soft limits. And the triggers are there to catch the axis if they have skipped steps, and end up going to the endstops.
I think you are just changing io ports used for X and Y endstops/triggers, as it looked like you had defined the wrong ones for the endstops, ie io1 and io2 for triggers and io0 and io1 for endstops.
Ian
-
@droftarts
i did define the wrong pins. The correct pins areI am able to move the X and Y-axis to homing points except the triggers or Endstops were not working correctly. I will update as per your advice and comment out the endstop lines for X and Y axis in the config.g and just leave Trigger 1 then test again
Updated Config.g Snapshot
On trigger 1 for X and Y-axis and commented out Endstops for X and Y-axis; Triggers -- Two triggers, one for X and one for Y, and set them to pause the machine M950 J1 C"!0.io0.in" ; define Trigger input pin #1 on IO_0 M950 J2 C"!0.io1.in" ; define Trigger input pin #2 on IO_1 M581 T1 P1:2 S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time ; Endstops ; For X and Y Axis ;M574 X1 S1 P"!0.io0.in" ; configure active high endstop switch for low end on X via pin io0.in ;M574 Y1 S1 P"!0.io1.in" ; configure active high endstop switch for low end on Y via pin io1.in
Updated homex.g
; homex.g ; called to home the X axis ; Undefine any Triggers for X and Y-axis M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine Y axis limit switch triggers ;Define The Triggers for X and Y-axis M574 X1 S1 P"0.io0.in" ; define X axis endstop, minimum end M574 Y1 S1 P"0.io1.in" ; define Y axis endstop, minimum end ; Home X-Axis G91 ; relative positioning G1 H2 X0 ; move X-axis Minimum Homing endstop and stop there (first pass) G1 H2 X-1575 F1800 ; move quickly to X-axis Maximum endstop and stop there (first pass) G1 H2 X-15 F6000 ; go back a few mm G1 H2 X-1575 F360 ; move slowly to X-axis Maximum endstop once more (second pass) G1 H2 X0 ; move back to X-axis Minimum Homing endstop and stop there (second pass) G92 X0 G90 ; absolute positioning ; M574 X0 M574 Y0 ; Triggers M950 J1 C"0.io0.in" M950 J2 C"0.io1.in"
Updated homey.g
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Tue Dec 05 2023 09:51:46 GMT-0500 (Eastern Standard Time) M950 J1 C"nil" ; undefine X axis limit switch triggers M950 J2 C"nil" ; undefine X axis limit switch triggers M574 X1 S1 P"!0.io0.in" ; define X axis endstop, minimum end M574 Y1 S1 P"!0.io1.in" ; define Y axis endstop, minimum end G91 ; relative positioning G1 H2 Y0 ; move Y-axis Minimum Homing endstop and stop there (first pass) G1 H2 Y2125 F1800 ; move quickly to Y-axis Maximum endstop and stop there (first pass) G1 H2 Y15 F6000 ; go back a few mm G1 H2 Y2125 F360 ; move slowly to Y-axis Maximum endstop once more (second pass) G1 H2 Y0 ; move back to Y-axis Minimum Homing endstop and stop there (second pass) G92 Y0 G90 ; absolute positioning M574 X0 M574 Y0 M950 J1 C"!0.io0.in" M950 J2 C"!0.io1.in"
@droftarts , Does this look correct to you ?
-
@developeralgo222
@droftarts , @dc42
On the DWC console , when i sendM98 P"config.g"
i get "connection Interrupted HTTP request timed out" error with connection Lost, attempting to reconnect message and it disconnects DWC completely and i have to reboot manually. It does not even reboot or reset itself. Is that a bug on the RRF Software ? It seems it completely locks out Duet 6XD and i have to manually turn off the power and then power it back on. Even M112 does not reset it . Any reason why it would do that from the config.g ?
I am running RRF 3.4.6Below is my current Full config.g
; Configuration file for Duet 3 MB 6XD (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Tue Dec 05 2023 09:51:46 GMT-0500 (Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"MYTEST PNP" ; set printer name ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network if {network.interfaces[0].type = "ethernet"} M552 P10.0.0.200 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P10.0.0.1 ; set gateway else M552 S1 M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ;The X axis to control the movement of the PnP head right and left. Right(Clockwise rotation to move Forward = S0) is positive. ;The Y axis to control the movement of the PnP head forward and back. Forward( AntiClockwise rotation to move Forward = S1) is positive. ;The Z axis to control raising and lowering of the PnP nozzle up and down. Up is positive. ;The V, U, W, A, B, C (for 6-Head nozzles) axes rotates clockwise and counter-clockwise. Counter-clockwise is positive. ;RepRapFirmware supports X, Y and Z axes as standard and allows you to create up to 7 additional axes depending on the firmware ;version and which Duet you are using. Axes are created and associated with ;stepper motors using the M584 command in config.g. ;You may use any of the following letters to refer to the new axes: U V W A B C D (letter D is not supported in older firmware versions) ;If no T parameter is given, then on boards having internal drivers the step pulse width and interval are guaranteed to be suitable for the on-board drivers only, ;and will generally be too fast for external drivers. On the MB6XD board the default is T2.5:2.5:2.5:2.5. ; Drives ;Physical Drives CAN ID = 0 M569 P0.0 S1 T5:5:10:10 ; X-Axis physical drive 0.0 goes backwards on CAN ID = 0 - Duet 6XD Drive 0.0 with 2.5us timings between pulses M569 P0.1 S0 T5:5:10:10 ; Y-Axis physical drive 0.1 goes forwards on CAN ID = 0 - Duet 6XD Drive 0.1 with 2.5us timings between pulses ;Physical Drives CAN ID = 1 M569 P1.0 S1 ; Z & U Axis physical drive 1.0 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on Z & U axis on CAN ID = 1 - Duet 3HC Drive 1.0 M569 P1.1 S1 ; V & W Axis physical drive 1.1 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on V & W axis on CAN ID = 1 - Duet 3HC Drive 1.1 M569 P1.2 S1 ; A & B Axis physical drive 1.2 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on A & B axis on CAN ID = 1 - Duet 3HC Drive 1.2 ;Physical Drives CAN ID = 2 M569 P2.0 S1 ; C-Axis physical drive 2.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.0 M569 P2.1 S1 ; D-Axis physical drive 2.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.1 M569 P2.2 S1 ; 'A-Axis physical drive 2.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.2 ;Physical Drives CAN ID = 3 M569 P3.0 S1 ; 'B-Axis physical drive 3.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.0 M569 P3.1 S1 ; 'C-Axis physical drive 3.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.1 M569 P3.2 S1 ; 'D-Axis physical drive 3.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.2 ;By default Z U V W are linear and A B C D are rotary; but you can change that using the R ; Enable All the drives M17 ; Enable All the drives ; set visible drive mapping ; X-Axis , Y-Axis (2 x Nema 34 Closed Loop Motors) and Z-Axes (Z,U,V,W,A,B) mapping to 3 Stepper motors ; directly connected to 3HC (CAN ID = 1) (which moves the nozzles up and down along Z-axis) ;M584 X0.0 Y0.1 Z1.0 U1.0 V1.1 W1.1 A1.2 B1.2 R0 ; LIN R0 = LINEAR, R1 = ROTATION M584 X0.0 Y0.1 R0 ; LIN R0 = LINEAR, R1 = ROTATION ; Rotational Axes mapping (C, D, 'A, 'B, 'C, 'D ) to 6 motors directly connected to 3HC (CAN ID 2 and 3) (which rotates the nozzles +180 / -180 along Rotational axis) ;M584 C2.0 D2.1 'A2.2 'B3.0 'C3.1 'D3.2 R1 ; LIN R0 = LINEAR, R1 = ROTATION M584 Z1.0 U1.0 V1.1 W1.1 A1.2 B1.2 C2.0 D2.1 'A2.2 'B3.0 'C3.1 'D3.2 R1 ; LIN R0 = LINEAR, R1 = ROTATION M350 Z16 U16 V16 W16 A16 B16 C16 D16 'A16 'B16 'C16 'D16 I1 ; configure microstepping with interpolation. This is irrelevant for external drives (X & Y ) M92 X64.00 Y64.00 Z8.888 U8.888 V8.888 W8.888 A8.888 B8.888 C8.888 D8.888 'A8.888 'B8.888 'C8.888 'D8.888 ; set steps per mm 50mm/rev M566 X300.0 Y300.0 Z300.0 U300.0 V300.0 W300.0 A300.0 B300.0 C100.0 D100.0 'A100.0 'B100.0 'C100.0 'D100.0 ; set maximum instantaneous speed changes (mm/min) M203 X5000.00 Y5000.00 Z5000.00 U5000.00 V5000.00 W5000.00 A5000.00 B5000.00 C5000.00 D5000.00 'A5000.00 'B5000.00 'C5000.00 'D5000.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z500.00 U500.00 V500.00 W500.00 A500.00 B500.00 C1000.00 D1000.00 'A1000.00 'B1000.00 'C1000.00 'D1000.00 ; set accelerations (mm/s^2) M906 Z600.0 U600.0 V600.0 W600.0 A600.0 B600.0 C500.0 D500.0 'A500.0 'B500.0 'C500.0 'D500.0 I30 ; set motor currents (mA) and motor idle factor in per cent. This is irrelevant for external drives (X & Y ) M84 S30 ; Set idle timeout M564 H0 ; Sets homing, H0 allows mvmnt wo homing ; Axis Limits M208 X0 Y0 Z-160 U-160 V-160 W-160 A-160 B-160 C0 D0 'A0 'B0 'C0 'D0 S1 ; Set axis minima M208 X-1575 Y2125 Z0 U0 V0 W0 A0 B0 C180 D180 'A180 'B180 'C180 'D180 S0 ; Set axis maxima ; Triggers -- Two triggers, one for X and one for Y, and set them to pause the machine M950 J1 C"!0.io0.in" ; define input #1 pin IO_0 M950 J2 C"!0.io1.in" ; define input #2 pin IO_1 ; Trigger number 0 causes an emergency stop as if M112 had been received. Trigger number 1 causes the print to be paused as if M25 had been received. Any trigger number # greater than 1 causes ; the macro file sys/trigger#.g to be executed. Polling for further trigger conditions is suspended until the trigger macro file has been completed M581 T1 P1:2 S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time ; There are two parameters to be set for each endstop: ; (1) The electrical type of the endstop (S parameter). S0 = active low (S0, e.g. normally-open switch or Hall sensor), S1 = active high (S1, e.g. a normally-closed switch or opto switch), ; S2 = Use Z probe (S2) and S3 = for using motor stall detection (S3). ; (2) Whether the endstop is at the minimum end (Low End) or the maximum end (High End) of the axis. ; These are the X, Y and Z parameters. 0 = no endstop present(e.g X0) , 1 = an endstop switch at the Minimum end (e.g X1) , 2 = an endstop switch at the Maximum end (e.g X2) of the axis. ; Endstops ; For X and Y Axis ;M574 X1 S1 P"!0.io0.in" ; configure active high endstop switch for low end on X via pin io0.in ;M574 Y1 S1 P"!0.io1.in" ; configure active high endstop switch for low end on Y via pin io1.in ; For Z-Axis (Z,U,V,W,A,B) - Up/down) -- CAM Driven Dual Nozzles ( 1 Motor rotates up/down to drive 2 Nozzles ) M574 Z1 S1 P"!1.io0.in" ; configure active high endstop switch for low end on Z via pin 1.io0.in M574 U1 S1 P"!1.io1.in" ; configure active high endstop switch for low end on U via pin 1.io1.in M574 V1 S1 P"!1.io2.in" ; configure active high endstop switch for low end on V via pin 1.io2.in M574 W1 S1 P"!1.io3.in" ; configure active high endstop switch for low end on W via pin 1.io3.in M574 A1 S1 P"!1.io4.in" ; configure active high endstop switch for low end on A via pin 1.io4.in M574 B1 S1 P"!1.io5.in" ; configure active high endstop switch for low end on B via pin 1.io5.in ; For Rotational Axes only (C,D,'A,'B,'C,'D) +180 / - 180 ) M574 C1 S1 P"!2.io0.in" ; configure active high endstop switch for low end on C via pin 2.io0.in M574 D1 S1 P"!2.io1.in" ; configure active high endstop switch for low end on D via pin 2.io1.in M574 'A1 S1 P"!2.io2.in" ; configure active high endstop switch for low end on 'A via pin 2.io2.in M574 'B1 S1 P"!3.io0.in" ; configure active high endstop switch for low end on 'B via pin 3.io0.in M574 'C1 S1 P"!3.io1.in" ; configure active high endstop switch for low end on 'C via pin 3.io1.in M574 'D1 S1 P"!3.io2.in" ; configure active high endstop switch for low end on 'D via pin 3.io2.in ; SMC NPN Vacuum Sensors -ZSE30A-01-N-L (Not Z-Probe) M558 P8 C"!2.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 1 M558 P8 C"!2.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 2 M558 P8 C"!2.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 3 M558 P8 C"!3.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 4 M558 P8 C"!3.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 5 M558 P8 C"!3.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 6 ; (SMC) LINGERA CM85-10-A-6S Integrated Solenoid Valves (Pump and Vacuum) on the Duet 6XD M558 P8 C"!0.io3.in" ; Duet 3 6XD CAN_ID 0 Port 4- Pump and Vacuum Solenoid Valve for Nozzle 1 M558 P8 C"!0.io4.in" ; Duet 3 6XD CAN_ID 0 Port 5- Pump and Vacuum Solenoid Valve for Nozzle 2 M558 P8 C"!0.io5.in" ; Duet 3 6XD CAN_ID 0 Port 6- Pump and Vacuum Solenoid Valve for Nozzle 3 M558 P8 C"!0.io6.in" ; Duet 3 6XD CAN_ID 0 Port 7- Pump and Vacuum Solenoid Valve for Nozzle 4 M558 P8 C"!0.io7.in" ; Duet 3 6XD CAN_ID 0 Port 8- Pump and Vacuum Solenoid Valve for Nozzle 5 M558 P8 C"!0.io8.in" ; Duet 3 6XD CAN_ID 0 Port 9- Pump and Vacuum Solenoid Valve for Nozzle 6 ; Heaters ; Fans ; Tools ; Custom settings are not defined
-
@developeralgo222 are you saying that it boots up OK and you can connect with DWC; but if you try to re-run config.g using M98, you lose the DWC connection?
If that's the case then I think it's most likely to do with the triggers. Try commenting out the M581 line(s) in config.g.
BTW you don't need to switch those inputs between being endstops and GpIn ports for triggers, because a trigger can monitor endstops as well as GpIn pins. See the line starting "X, Y Z or any..." at https://docs.duet3d.com/en/User_manual/Reference/Gcodes#m581-configure-external-trigger.
-
@developeralgo222 I think your config.g crashing predated adding the triggers, but as @dc42 says, triggers in RRF 3.01 and later can read the endstop without redefining it as a trigger (older versions can't, and need to be redefined). Sorry I didn't spot this, it's been a while since having to set up endstops as limit switches! Comment out or delete the M950 J1 and J2 lines, add the endstop M574 X1 and Y1 commands back in, and change the trigger command to
M581 T1 X Y S1 R0
.Some other things to try:
You have M17 very early in config.g, before any of the axes are assigned. I suggest moving to the end, or don't have it at all. The motors will all turn on as soon as one axis is commanded to move.
Your X axis limits are strange, I think swap them over, or maybe it should be
M208 X1575 ... S0
.
Also, your other limits:; Axis Limits M208 X0 Y0 Z-160 U-160 V-160 W-160 A-160 B-160 C0 D0 'A0 'B0 'C0 'D0 S1 ; Set axis minima M208 X-1575 Y2125 Z0 U0 V0 W0 A0 B0 C180 D180 'A180 'B180 'C180 'D180 S0 ; Set axis maxima
I'm not even sure axis ranges should be from -[nnn] to 0, but I don't see why not. On a CNC machine, you have machine coordinates, and then work coordinates. This article looks like it covers this (and RRF supports) https://mhcc.pressbooks.pub/supportcnc/chapter/g54-g59-an-introduction/
It looks like OpenPNP is similar: https://github.com/openpnp/openpnp/wiki/Machine-AxesThe rest is mostly setting up the endstop triggers, endstops. However, you have setup all the sensors and valves with M558, which is used for defining probes! I think the sensors should be set up with M950 as inputs:
M950 J1 C"!2.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 1 M950 J2 C"!2.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 2 [etc]
with each input having a unique J[nn] parameter. Make sure the number doesn't clash with the triggers, though I expect you will replace these with endstop definitions.
The valves should be outputs, again set with M950, with unique P[nn] parameter:
M950 P1 C"!0.io3.in" ; Duet 3 6XD CAN_ID 0 Port 4- Pump and Vacuum Solenoid Valve for Nozzle 1 M950 P2 C"!0.io4.in" ; Duet 3 6XD CAN_ID 0 Port 5- Pump and Vacuum Solenoid Valve for Nozzle 2 [etc]
Please make these changes, post your updated config.g, and try sending
M98 P"config.g"
again.Ian
-
@droftarts
before i runM98 P"config.g"
Here is the updated config.g with suggested changes
; Configuration file for Duet 3 MB 6XD (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.16 on Tue Dec 05 2023 09:51:46 GMT-0500 (Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"MYTEST PNP" ; set printer name ; Wait a moment for the CAN expansion boards to start G4 S2 ; Network if {network.interfaces[0].type = "ethernet"} M552 P10.0.0.200 S1 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P10.0.0.1 ; set gateway else M552 S1 M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ;The X axis to control the movement of the PnP head right and left. Right(Clockwise rotation to move Forward = S0) is positive. ;The Y axis to control the movement of the PnP head forward and back. Forward( AntiClockwise rotation to move Forward = S1) is positive. ;The Z axis to control raising and lowering of the PnP nozzle up and down. Up is positive. ;The V, U, W, A, B, C (for 6-Head nozzles) axes rotates clockwise and counter-clockwise. Counter-clockwise is positive. ;RepRapFirmware supports X, Y and Z axes as standard and allows you to create up to 7 additional axes depending on the firmware ;version and which Duet you are using. Axes are created and associated with ;stepper motors using the M584 command in config.g. ;You may use any of the following letters to refer to the new axes: U V W A B C D (letter D is not supported in older firmware versions) ;If no T parameter is given, then on boards having internal drivers the step pulse width and interval are guaranteed to be suitable for the on-board drivers only, ;and will generally be too fast for external drivers. On the MB6XD board the default is T2.5:2.5:2.5:2.5. ; Drives ;Physical Drives CAN ID = 0 M569 P0.0 S0 T5:5:10:10 ; X-Axis physical drive 0.0 goes backwards on CAN ID = 0 - Duet 6XD Drive 0.0 with 2.5us timings between pulses M569 P0.1 S0 T5:5:10:10 ; Y-Axis physical drive 0.1 goes forwards on CAN ID = 0 - Duet 6XD Drive 0.1 with 2.5us timings between pulses ;Physical Drives CAN ID = 1 M569 P1.0 S1 ; Z & U Axis physical drive 1.0 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on Z & U axis on CAN ID = 1 - Duet 3HC Drive 1.0 M569 P1.1 S1 ; V & W Axis physical drive 1.1 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on V & W axis on CAN ID = 1 - Duet 3HC Drive 1.1 M569 P1.2 S1 ; A & B Axis physical drive 1.2 Rotates Clockwise or Anticlockwise to move CAM driven dual nozzles down and up on A & B axis on CAN ID = 1 - Duet 3HC Drive 1.2 ;Physical Drives CAN ID = 2 M569 P2.0 S1 ; C-Axis physical drive 2.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.0 M569 P2.1 S1 ; D-Axis physical drive 2.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.1 M569 P2.2 S1 ; 'A-Axis physical drive 2.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 2 - Duet 3HC Drive 2.2 ;Physical Drives CAN ID = 3 M569 P3.0 S1 ; 'B-Axis physical drive 3.0 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.0 M569 P3.1 S1 ; 'C-Axis physical drive 3.1 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.1 M569 P3.2 S1 ; 'D-Axis physical drive 3.2 goes Rotates forwards and backwards (+180 and -180 ) on CAN ID = 3 - Duet 3HC Drive 3.2 ;By default Z U V W are linear and A B C D are rotary; but you can change that using the R ; set visible drive mapping ; X-Axis , Y-Axis (2 x Nema 34 Closed Loop Motors) and Z-Axes (Z,U,V,W,A,B) mapping to 3 Stepper motors ; directly connected to 3HC (CAN ID = 1) (which moves the nozzles up and down along Z-axis) M584 X0.0 Y0.1 R0 ; LIN R0 = LINEAR, R1 = ROTATION ; Rotational Axes mapping (C, D, 'A, 'B, 'C, 'D ) to 6 motors directly connected to 3HC (CAN ID 2 and 3) (which rotates the nozzles +180 / -180 along Rotational axis) M584 Z1.0 U1.0 V1.1 W1.1 A1.2 B1.2 C2.0 D2.1 'A2.2 'B3.0 'C3.1 'D3.2 R1 ; LIN R0 = LINEAR, R1 = ROTATION M350 Z16 U16 V16 W16 A16 B16 C16 D16 'A16 'B16 'C16 'D16 I1 ; configure microstepping with interpolation. This is irrelevant for external drives (X & Y ) M92 X64.00 Y64.00 Z8.888 U8.888 V8.888 W8.888 A8.888 B8.888 C8.888 D8.888 'A8.888 'B8.888 'C8.888 'D8.888 ; set steps per mm 50mm/rev M566 X300.0 Y300.0 Z300.0 U300.0 V300.0 W300.0 A300.0 B300.0 C100.0 D100.0 'A100.0 'B100.0 'C100.0 'D100.0 ; set maximum instantaneous speed changes (mm/min) M203 X5000.00 Y5000.00 Z5000.00 U5000.00 V5000.00 W5000.00 A5000.00 B5000.00 C5000.00 D5000.00 'A5000.00 'B5000.00 'C5000.00 'D5000.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z500.00 U500.00 V500.00 W500.00 A500.00 B500.00 C1000.00 D1000.00 'A1000.00 'B1000.00 'C1000.00 'D1000.00 ; set accelerations (mm/s^2) M906 Z600.0 U600.0 V600.0 W600.0 A600.0 B600.0 C500.0 D500.0 'A500.0 'B500.0 'C500.0 'D500.0 I30 ; set motor currents (mA) and motor idle factor in per cent. This is irrelevant for external drives (X & Y ) M84 S30 ; Set idle timeout M564 H0 ; Sets homing, H0 allows mvmnt wo homing ; Axis Limits M208 X0 Y0 Z-160 U-160 V-160 W-160 A-160 B-160 C0 D0 'A0 'B0 'C0 'D0 S1 ; Set axis minima M208 X1575 Y2125 Z0 U0 V0 W0 A0 B0 C180 D180 'A180 'B180 'C180 'D180 S0 ; Set axis maxima ; Triggers -- Two triggers, one for X and one for Y, and set them to pause the machine ;M950 J1 C"!0.io0.in" ; define input #1 pin IO_0 ;M950 J2 C"!0.io1.in" ; define input #2 pin IO_1 ; Trigger number 0 causes an emergency stop as if M112 had been received. Trigger number 1 causes the print to be paused as if M25 had been received. Any trigger number # greater than 1 causes ; the macro file sys/trigger#.g to be executed. Polling for further trigger conditions is suspended until the trigger macro file has been completed M581 T1 X Y S1 R0 ; invoke trigger 1 (pause) when an inactive-to-active edge (correct for NO switches) is detected on input 1 or input 2 at any time ; There are two parameters to be set for each endstop: ; (1) The electrical type of the endstop (S parameter). S0 = active low (S0, e.g. normally-open switch or Hall sensor), S1 = active high (S1, e.g. a normally-closed switch or opto switch), ; S2 = Use Z probe (S2) and S3 = for using motor stall detection (S3). ; (2) Whether the endstop is at the minimum end (Low End) or the maximum end (High End) of the axis. ; These are the X, Y and Z parameters. 0 = no endstop present(e.g X0) , 1 = an endstop switch at the Minimum end (e.g X1) , 2 = an endstop switch at the Maximum end (e.g X2) of the axis. ; Endstops ; For X and Y Axis M574 X1 S1 P"!0.io0.in" ; configure active high endstop switch for low end on X via pin io0.in M574 Y1 S1 P"!0.io1.in" ; configure active high endstop switch for low end on Y via pin io1.in ; For Z-Axis (Z,U,V,W,A,B) - Up/down) -- CAM Driven Dual Nozzles ( 1 Motor rotates up/down to drive 2 Nozzles ) M574 Z1 S1 P"!1.io0.in" ; configure active high endstop switch for low end on Z via pin 1.io0.in M574 U1 S1 P"!1.io1.in" ; configure active high endstop switch for low end on U via pin 1.io1.in M574 V1 S1 P"!1.io2.in" ; configure active high endstop switch for low end on V via pin 1.io2.in M574 W1 S1 P"!1.io3.in" ; configure active high endstop switch for low end on W via pin 1.io3.in M574 A1 S1 P"!1.io4.in" ; configure active high endstop switch for low end on A via pin 1.io4.in M574 B1 S1 P"!1.io5.in" ; configure active high endstop switch for low end on B via pin 1.io5.in ; For Rotational Axes only (C,D,'A,'B,'C,'D) +180 / - 180 ) M574 C1 S1 P"!2.io0.in" ; configure active high endstop switch for low end on C via pin 2.io0.in M574 D1 S1 P"!2.io1.in" ; configure active high endstop switch for low end on D via pin 2.io1.in M574 'A1 S1 P"!2.io2.in" ; configure active high endstop switch for low end on 'A via pin 2.io2.in M574 'B1 S1 P"!3.io0.in" ; configure active high endstop switch for low end on 'B via pin 3.io0.in M574 'C1 S1 P"!3.io1.in" ; configure active high endstop switch for low end on 'C via pin 3.io1.in M574 'D1 S1 P"!3.io2.in" ; configure active high endstop switch for low end on 'D via pin 3.io2.in ; SMC NPN Vacuum Sensors -ZSE30A-01-N-L (Not Z-Probe) M950 J1 C"!2.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 1 M950 J2 C"!2.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 2 M950 J3 C"!2.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 3 M950 J4 C"!3.io3.in" ; Duet 3 3HC CAN_ID 2 Port 4- Vacuum Sensor Nozzle 4 M950 J5 C"!3.io4.in" ; Duet 3 3HC CAN_ID 2 Port 5- Vacuum Sensor Nozzle 5 M950 J6 C"!3.io5.in" ; Duet 3 3HC CAN_ID 2 Port 6- Vacuum Sensor Nozzle 6 ; (SMC) LINGERA CM85-10-A-6S Integrated Solenoid Valves (Pump and Vacuum) on the Duet 6XD M950 P1 C"!0.io3.in" ; Duet 3 6XD CAN_ID 0 Port 4- Pump and Vacuum Solenoid Valve for Nozzle 1 M950 P2 C"!0.io4.in" ; Duet 3 6XD CAN_ID 0 Port 5- Pump and Vacuum Solenoid Valve for Nozzle 2 M950 P3 C"!0.io5.in" ; Duet 3 6XD CAN_ID 0 Port 6- Pump and Vacuum Solenoid Valve for Nozzle 3 M950 P4 C"!0.io6.in" ; Duet 3 6XD CAN_ID 0 Port 7- Pump and Vacuum Solenoid Valve for Nozzle 4 M950 P5 C"!0.io7.in" ; Duet 3 6XD CAN_ID 0 Port 8- Pump and Vacuum Solenoid Valve for Nozzle 5 M950 P6 C"!0.io8.in" ; Duet 3 6XD CAN_ID 0 Port 9- Pump and Vacuum Solenoid Valve for Nozzle 6 ; Enable All the drives M17 ; Enable All the drives ; Heaters ; Fans ; Tools ; Custom settings are not defined
-
@developeralgo222 You haven't changed the X axis limits; it still shows X0 as the minimum, and X-1575 as the maximum. Either swap them, or remove the minus from X-1575.
Otherwise, looks okay.
Ian
-
@droftarts
when i test it manually according to the right-hand cartesian coordinates . My X-Axis moves Backwards from Home(Right to Left) instead of the Normal Forward ( Left to Right ) , that's why i was using Negative infront of that otherwise it crashes the X-Axis. If you look at the Endpoints and motor placements diagram above , you will see the description -
@developeralgo222 In that case, change the direction of the motor with the S parameter in M569, eg:
M569 P0.0 S0 T5:5:10:10
Then update the M208 command, and check it goes the right direction.
Ian
-
@droftarts said in Wiring Multiple Endstops in Parallel or Series with Duet 6XD:
@developeralgo222 In that case, change the direction of the motor with the S parameter in M569, eg:
M569 P0.0 S0 T5:5:10:10
Then update the M208 command, and check it goes the right direction.
Ian
yes updated config.g and that fixed X-axis negative max issue
-
@developeralgo222 Okay. Does it still crash when you send
M98 P"config.g"
?Ian
-
@developeralgo222 Another snag on homing; I checked with @dc42 if the trigger is ignored on homing moves. He said:
No, you have to deactivate the trigger.
..because after the homing move you need to move away form the endst9p to release it, to avoid triggeringSo in your homing macros, rather than disabling the trigger pin and enabling the endstop, you need to disable the trigger itself, while homing. So now the homing macros will look like this:
M581 T1 P-1 ; disable trigger [normal homing routine for X and Y axis in here] M581 T1 X Y S1 R0 ; re enable trigger
Ian
-
@droftarts Going to test that now. i was just testing if its able to Home X and Y-axis and it seems its able . Anything i need to modify on homex.g and homey.g files in relation to config.g
homex.g
; homex.g ; called to home the X axis M581 T1 P-1 ; disable trigger ; Home X-Axis G91 ; relative positioning G1 H2 X0 ; move X-axis Minimum Homing endstop and stop there (first pass) G1 H2 X1575 F5000 ; move quickly to X-axis Maximum endstop and stop there (first pass) G1 H2 X-1575 F5000 ; go back to X0 Minimum Homing endstop G1 H2 X1575 F5000 ; move quickly to X-axis Maximum endstop and stop there (second pass) G1 H2 X-1575 F5000 ; go back quickly to X0 Minimum Homing endstop once more (second pass) G1 H2 X0 ; Mark it as the X-axis Minimum Homing endstop and stop there (second pass) G92 X0 G90 ; absolute positioning M581 T1 X Y S1 R0 ; re enable trigger
Homey.g
; homey.g ; called to home the Y axis M581 T1 P-1 ; disable trigger ; Home Y-Axis G91 ; relative positioning G1 H2 Y0 ; move Y-axis Minimum Homing endstop and stop there (first pass) G1 H2 Y2135 F5000 ; move quickly to Y-axis Maximum endstop and stop there (first pass) G1 H2 Y-2135 F5000 ; go back to Y0 Minimum Homing endstop G1 H2 Y2135 F5000 ; move quickly to Y-axis Maximum endstop and stop there (second pass) G1 H2 Y-2135 F5000 ; go back quickly to Y0 Minimum Homing endstop once more (second pass) G1 H2 Y0 ; Mark it as the Y-axis Minimum Homing endstop and stop there (second pass) G92 Y0 G90 ; absolute positioning M581 T1 X Y S1 R0 ; re enable trigger