reference the X-axis on both rails
-
@fcwilt So I connected the probe to test it and tried it out successfully.
The problem is that the Z axis does not stop when the end stop is triggered manually but only when the probe is triggered. But I would like to use the end stops for stopping and the probe only for mesh bed compensation. Here my code:; Endstops
M574 X1 S1 P"xstop + e0stop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop
M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop
M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop; Z-Probe
M558 K0 P1 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds (Kapazitiver Sensor)
M557 X0:735 Y-27:573 S35 ; define mesh grid -
Do you have anything else in the config.g file that is already using the "zstop" input?
Errors like that don't show up when you boot (or re-boot) the printer.
Once up and running you can execute from the DWC console M98 P"config.g" and you may see error messages.
And remember to use G32 to do auto bed leveling you will need 4 Z axis endstops and thus 4 unused inputs.
Frederick
-
@fcwilt said in reference the X-axis on both rails:
M98 P"config.g"
I don't have any error messages. However, it doesn't stop at the z endstop but only at the probe... I'm happy with it. It is clear to me that I will need 4 endstops and 4 motor drivers later. This is about the test...but my Z-endstop should work here too. Here is the whole code again
; Configuration file for Duet WiFi (firmware version 3.3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun May 28 2023 15:23:44 GMT+0200 (Mitteleuropäische Sommerzeit); General preferences
M575 P1 S1 B57600 ; enable support for PanelDue
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"DUKA1300" ; set printer name; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; enable FTP
M586 P2 S1 ; enable Telnet; Drives
M569 P0 S1 ; physical drive 0 goes forwards
M569 P1 S1 ; physical drive 1 goes forwards
M569 P2 S1 ; physical drive 2 goes forwards
M569 P3 S1 ; physical drive 3 goes forwards
M569 P4 S0 ; physical drive 3 goes forwards
M584 X0:4 Y1 Z2 E3 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z640 E322.58 ; set steps per mm
M566 X900.00 Y900.00 Z100.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z300.00 E1200.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z40.00 E250.00 ; set accelerations (mm/s^2)
M906 X1800 Y1800 Z1800 E1600 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X100 Y0 Z0 S1 ; set axis minima
M208 X750 Y640 Z1220 S0 ; set axis maxima; Endstops
M574 X1 S1 P"xstop + e0stop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop
M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop
M574 Z1 S1 P"e1-stop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop; Z-Probe
M558 K0 P5 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds (Kapazitiver Sensor)
M557 X0:735 Y-27:573 S35 ; define mesh grid; Heaters
; Bed
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M307 H0 R0.283 K0.463:0.000 D7.17 E1.35 S1.00 B0 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S280 ; set temperature limit for heater 0 to 120C;Hotend
M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M307 H1 R1.797 K0.742:0.000 D7.57 E1.35 S1.00 B0 V23.8 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S400 ; set temperature limit for heater 1 to 400C; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F2 C"fan2" Q350 ; create fan 2 on pin fan2 and set its frequency
M106 P2 S1 H1 T60 ; set fan 2 value. Thermostatic control is turned on; Tools
M563 P0 D0 H1 F0 ; define tool 1
G10 P0 X0 Y0 Z0 ; set tool 1 axis offsets
G10 P0 R0 S0 ; set initial tool 1 active and standby temperatures to 0C; Filamentsensor
;M591 D0 P1 C"e1-stop" S1 ;R40:120 E3.0 S1 Filament Sensor;Auto Z-Offset
; Custom settings are not defined
M501 -
I don't see anything there in the config.g.
When testing the Z endstop you are doing a G1 H1 Znnn move?
If the endstop switch is not working then that would seem to leave only a hardware problem - defective switch, incorrect wiring.
You are using firmware 3.3.
That has the Object Model Browser doesn't it?
If so, you can use that to look at the Z endstop state and see if it changes with the state of the Z endstop switch.
Frederick
-
@fcwilt I test the endstop with the homing function
-
@fcwilt I tried the endstop before on the y-axis and it worked there...so the wiring/plugs and the function of the endstop are no longer necessary
-
@fcwilt Ok...with G1 H1 Z0 it works...homing is probably reserved for the probe
-
@axiom said in reference the X-axis on both rails:
with G1 H1 Z0 it works...homing is probably reserved for the probe
When testing it is usually best to use the smallest bit of code that will do the job, thus the question about G1 H1.
Please post your homing files.
Frederick
-
@fcwilt Ok here they are:
; homeall.g
; called to home all axes
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun May 28 2023 15:23:44 GMT+0200 (Mitteleuropäische Sommerzeit)
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G1 H1 X-755 Y-643 F1500 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 H2 X5 Y5 F6000 ; go back a few mm
G1 H1 X-755 Y-643 F360 ; move slowly to X and Y axis endstops once more (second pass)
G90 ; absolute positioning
G1 X10 Y10 F6000 ; go to first bed probe point and home Z
G30 ; home Z by probing the bed; Uncomment the following lines to lift Z after probing
;G91 ; relative positioning
;G1 Z5 F100 ; lift Z relative to current position
;G90 ; absolute positioning; homex.g
; called to home the X axis
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun May 28 2023 15:23:44 GMT+0200 (Mitteleuropäische Sommerzeit)
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G1 H1 X-755 F1500 ; move quickly to X axis endstop and stop there (first pass)
G1 H2 X5 F6000 ; go back a few mm
G1 H1 X-755 F360 ; move slowly to X axis endstop once more (second pass)
G1 H2 Z-5 F6000 ; lower Z again
G90 ; absolute positioning; homey.g
; called to home the Y axis
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun May 28 2023 15:23:44 GMT+0200 (Mitteleuropäische Sommerzeit)
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G1 H1 Y-643 F1500 ; move quickly to Y axis endstop and stop there (first pass)
G1 H2 Y5 F6000 ; go back a few mm
G1 H1 Y-643 F360 ; move slowly to Y axis endstop once more (second pass)
G1 H2 Z-5 F6000 ; lower Z again
G90 ; absolute positioning; homez.g
; called to home the Z axis
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Sun May 28 2023 15:23:44 GMT+0200 (Mitteleuropäische Sommerzeit)
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G90 ; absolute positioning
G1 X1 Y61 F6000 ; go to first probe point
G30 ; home Z by probing the bed; Uncomment the following lines to lift Z after probing
;G91 ; relative positioning
;G1 Z5 F100 ; lift Z relative to current position
;G90 ; absolute positioning -
Thanks.
As I expected homing of Z is being done with the probe.
Once you have the Z endstop sensor (or multiple sensors) in place you can use them instead of the Z probe to home the Z axis.
It will make the homing a bit simpler.
Just FYI.
I don't like having actual homing code in homeall.g.
I simply have this:
M98 P"homeZ.g" M98 P"homeX.g" M98 P"homeY.g"
Remember that I always install Z endstop sensors on my printers so I can home Z first. Also I don't use the Z probe during homing at all, it is not necessary.
Yes, by putting actual homing code in homeall.g you can optimize things slightly but I don't consider it worth it for the added complexity of having essentially duplicate code in two places.
Frederick
-
@fcwilt What do I have to write into the Homing.g files instead of the G30 command?
-
@fcwilt or to put it another way...if I delete homeall.g, how do I correct homez.g?
-
Do you have the Z endstop sensor installed and ready to use? Good job.
OK as to the code...
Basically you use the same sort of G1 H1 commands that you do with X and Y axes.
The three files homeX.g, homeY.g and homeZ.g could end up looking pretty much the same.
To provide example code let's assume that all three axes home to the axis minimum. Let's also assume that the range of motion on each axis is a total of 300mm. The essential code would look something like this:
In homeX.g:
G91 ; relative moves G1 H1 X-310 F6000 ; fast move to min endstop G1 X20 ; back off a bit G1 H1 X-25 F600 ; slow move to min endstop G92 X### ; where ### is the actual axis position when the motion stopped - usually determined by testing
In homeY.g:
G91 ; relative moves G1 H1 Y-310 F6000 ; fast move to min endstop G1 Y20 ; back off a bit G1 H1 Y-25 F600 ; slow move to min endstop G92 Y### ; where ### is the actual axis position when the motion stopped - usually determined by testing
In home Z.g:
G91 ; relative moves G1 H1 Z-310 F1200 ; fast move to min endstop G1 Z20 ; back off a bit G1 H1 Z-25 F300 ; slow move to min endstop G92 Z### ; where ### is the actual axis position when the motion stopped - usually determined by testing
Regards the G92 commands:
Remember that the G1 H1 moves stop when the endstop is triggered and the logical axis position is set to the min/max value from the M208 for that axis, depending on the configured location of the endstop.
But if your endstops don't actually trigger at exactly the min/max position (mine never do) then you can use G92 so the logical position of the axis (which G92 sets) is in sync with the physical position.
Hope that helps rather than confuses.
Frederick
-
@fcwilt Thank you very much first of all... now I have to wait until the expansion board arrives (hopefully this week)... only then can I try it out and then report back... have a nice Sunday!
Cheers,
Don -
If I cannot help I am always happy to confused.
I just noticed a mistake in my example code the F letter was missing from the slow moves speed setting. I just corrected them.
Frederick
-
@fcwilt ; General preferences
I have now installed the expansion board and wired everything up. All axes work and endstops also react. but with the m119 command the message Z comes: no endstop, what could be the problem...here is my current codeM575 P1 S1 B57600 ; enable support for PanelDue
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"DUKA1300" ; set printer name; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; enable FTP
M586 P2 S1 ; enable Telnet; Drives
;M569 P4 R-1 ; Treiber 4 deaktivieren
;M569 P3 R-1 ; Treiber 4 deaktivieren
M569 P0 S1 ; physical drive 0 goes forwards
M569 P1 S1 ; physical drive 1 goes forwards
M569 P2 S1 ; physical drive 2 goes forwards
M569 P3 S1 ; physical drive 3 goes forwards
M569 P4 S0 ; physical drive 3 goes forwards
M569 P5 S1 ; physical drive 3 goes forwards Expansionboard
M569 P6 S1 ; physical drive 3 goes forwards Expansionboard
M569 P7 S1 ; physical drive 3 goes forwards Expansionboard
M569 P8 S1 ; physical drive 3 goes forwards Expansionboard
;M584 X0 Z2 E1 ; set drive mapping
;M584 X0 Z2 E1 ; set drive mapping
;M584 X0:4 Y1 Z2 E3 ; set drive mapping
M584 X0:4 Y1 Z5:6:7:8 E3 ; set drive mapping
M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z640 E322.58 ; set steps per mm
M566 X900.00 Y900.00 Z100.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z300.00 E1200.00 ; set maximum speeds (mm/min)
;M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2)
M201 X500.00 Y500.00 Z40.00 E250.00 ; set accelerations (mm/s^2)
M906 X1800 Y1800 Z1700 E1600 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X100 Y0 Z0 S1 ; set axis minima
M208 X750 Y640 Z1220 S0 ; set axis maxima; Endstops
M574 X1 S1 P"xstop + e0stop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop
M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop
M574 Z1 S1 P"e2stop + e3stop + e4stop + e5stop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop; Z-Probe
;M558 K0 P1 C"e1stop" ;H5 F120 T6000
M558 K0 P5 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds (Kapazitiver Sensor)
;M557 X0:735 Y-27:573 S35 ; define mesh grid; Z-Probe two of them
;M558 K0 P1 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds (Kapazitiver Sensor)
;M558 K1 P8 A2 S0.2 C"!zstop" H5 F80 T3000
;G31 P1000 K0 X-1 Y-61 Z0.484 ; set Z probe trigger value, offset and trigger height (Kapazitiver Sensor)
;G31 P1000 K1 X0 Y0 Z12.664 ; Second Z-offset
;M557 X0:735 Y-27:573 S35 ; define mesh grid; Heaters
; Bed
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
;M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
;M307 H2 R0.283 K0.463:0.000 D7.17 E1.35 S1.00 B0 ; enable bang-bang mode for the bed heater and set PWM limit
M307 H0 R0.283 K0.463:0.000 D7.17 E1.35 S1.00 B0 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S280 ; set temperature limit for heater 0 to 120C;Hotend
M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M307 H1 R1.797 K0.742:0.000 D7.57 E1.35 S1.00 B0 V23.8 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S400 ; set temperature limit for heater 1 to 400C; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F2 C"fan2" Q350 ; create fan 2 on pin fan2 and set its frequency
M106 P2 S1 H1 T60 ; set fan 2 value. Thermostatic control is turned on; Tools
M563 P0 D0 H1 F0 ; define tool 1
G10 P0 X0 Y0 Z0 ; set tool 1 axis offsets
G10 P0 R0 S0 ; set initial tool 1 active and standby temperatures to 0C; Filamentsensor
;M591 D0 P1 C"zstop" S1 ;R40:120 E3.0 S1 Filament Sensor;Auto Z-Offset
; Custom settings are not defined
M501 -
@axiom for displaying code in posts, please use the code tags. It’s the
</>
icon on the toolbar above where you type in your post. It should put 3 tick marks at the beginning and end of your code. It makes it much more readable for people trying to help you. Single tick marks either side of text make that text inline code,like this
.Ian
-
What expansion board are you using?
On my 3 Z stepper printer I am using Duet 2 boards: Duet WiFi and a Duex5.
My M574 for the Z endstops looks like this:
M574 Z1 S1 P"!duex.e2stop + !duex.e3stop + !duex.e4stop" ; configure active-high endstop for low end on Z
The Z endstop sensors are connected to the Duex5 and I included the duex. prefix. I recall that it was necessary.
Frederick
-
@axiom said in reference the X-axis on both rails:
M574 Z1 S1 P"e2stop + e3stop + e4stop + e5stop"
If you send M98 P"config.g" you'll probably get an error saying invalid pin or something like that for that line.
-
@fcwilt as @Phaedrux says, the pin names are wrong. See https://docs.duet3d.com/Duet3D_hardware/Duet_2_family/DueX2_and_DueX5#pin-names
Should be duex.e2stop etc.
Ian