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

    reference the X-axis on both rails

    Scheduled Pinned Locked Moved
    Using Duet Controllers
    4
    59
    2.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.
    • fcwiltundefined
      fcwilt @axiom
      last edited by

      @axiom

      The Z probe is configured (reference M950, M558 and G31) just one way for all uses which are:

      • setting the Z=0 Datum
      • auto leveling the bed
      • creating the height map

      There are of course other settings that need to be made for:

      • auto leveling the bed - reference M671 and G30 P#
      • creating the height map - reference M557 and G29

      I can help with the details as needed.

      The sensors I used for the Z axis endstops where typical slotted "beam break" detectors:

      These are like the ones I use but, as typical with Amazon, the specific ones I order are "no longer available":

      Optical Limit Sensors

      I would avoid this style as the connector on the same side of the board as the slotted sensor makes them a bit harder to mount:

      Another style


      Again I can help with the details when you have need.

      Frederick

      Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

      axiomundefined 2 Replies Last reply Reply Quote 0
      • axiomundefined
        axiom @fcwilt
        last edited by

        @fcwilt ;That sounds super interesting! Your “Optical Limit Sensors” are available from German Amazon and I have ordered them and they will arrive tomorrow.
        Then I will replace the mechanical endstops (2 pieces on the x-axis and 1 piece on the y-axis) and try to adjust them and of course first construct brackets for them. To test the z-stop variant (I can't order the expansion board until next week) I would simply connect a sensor. I currently use the capacitive sensor both as an endstop and for bed leveling (G29). If I now connect the optical sensor for the Z axis, I only want to use the capacitive sensor for compensation (G29). So what do I need to change in my code? Here is my current code without the optical sensors:

        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

        ; 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
        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
        G31 P1000 K1 X0 Y0 Z12.664 ; Second Z-offset
        M557 X0:735 Y-27:573 S35 ; define mesh grid

        fcwiltundefined 1 Reply Last reply Reply Quote 0
        • axiomundefined
          axiom @fcwilt
          last edited by

          @fcwilt I can first comment out the second Z-offset in the code "K1"...that is for a later project to use a puck instead of a sheet of paper and is not relevant at the moment...so I also use the z-stop sensor Insert "!zstop" into C

          1 Reply Last reply Reply Quote 0
          • fcwiltundefined
            fcwilt @axiom
            last edited by

            @axiom

            As previously posted you have to have a M574 command for all 4 Z endstop sensors:

            M574 Z1 S1 P"pin_name_for_z_sensor_1 + pin_name_for_z_sensor_2 + pin_name_for_z_sensor_3 + pin_name_for_z_sensor_4"

            Remember that the order of the pin names must match the order of the steppers in your M584:

            So lets assume your drive assignments for the Z steppers is like this:

            M569 P5  S0       ; drive  5 - normal - Z at left front
            M569 P6  S0       ; drive  6 - normal - Z at left rear
            M569 P7  S1       ; drive  7 - normal - Z at right rear
            M569 P8  S1       ; drive  8 - normal - Z at right front
            
            M584 Z5:6:7:8    ; set what motors do what
            

            And let's also assume sensor 1 will be for drive 5, sensor 2 for drive 6, sensor 3 for drive 7 and sensor 4 for drive 8.

            The M574 will be as above

            M574 Z1 S1 P"pin_name_for_z_sensor_1 + pin_name_for_z_sensor_2 + pin_name_for_z_sensor_3 + pin_name_for_z_sensor_4"
            
            

            If the order is not correct the sensor activated will stop the wrong motor.

            It is easy to check once everything is wired up and configured, asumming the bed is not yet mounted and each Z axis is free to move independently from all the others.

            • Jog Z down near limit of travel
            • Start a Z homing move at a nice slow speed
            • Trigger by hand each sensor and verify that it stops the correct stepper

            Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

            axiomundefined 1 Reply Last reply Reply Quote 1
            • axiomundefined
              axiom @fcwilt
              last edited by

              @fcwilt I understand that, this is for the Enstops...but what do I write for the capacitive sensor for the Meshbed compensation?

              fcwiltundefined 1 Reply Last reply Reply Quote 0
              • fcwiltundefined
                fcwilt @axiom
                last edited by

                @axiom

                As mentioned the configuration of the Z probe does not change.

                What you have to do is include the commands that tell the firmware how to create the height map

                M557

                Xaaa:bbb : Minimum and maximum X coordinates to probe
                Yaaa:bbb : Minimum and maximum Y coordinates to probe
                Pxx:yy : Number of points on X axis, number of points on Y axis

                So for example let's say the min/max limits of your bed on the X axis is -150 to 150 and on the Y axis -100 to 100. I always place X=0 and Y=0 at the center of the bed so the min/max limits are as you see.

                Now you have to determine where in that area your probe can reach - this is determined by the X and Y offsets of the probe and the possible range of motion outside of the min/max limits.

                So let's assume your probe has an X offset of 0 and a Y offset of +25.

                Let us also assume your probe can reach from -150 to +150 on the X axis and from -90 to +100 on the Y axis.

                You could have an M557 like this:

                M557 X-150:150 Y-90:150 P20:15
                

                Which means the mesh would have 20 points along the X axis and 15 points along the Y axis, for a total of 300 points. And the mesh would span from -150 to 150 on the X axis and from -90 to +100 on the Y axis.

                So to create the height map you would:

                • Move to Z=5
                • Move the probe to the center of the bed, taking into account the probe offset in Y
                • Execute a G30 to set the Z=0 Datum
                • Execute a G29 S0 to probe the bed and create the height map

                Feel free to ask any questions.

                Frederick

                Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                axiomundefined 2 Replies Last reply Reply Quote 0
                • axiomundefined
                  axiom @fcwilt
                  last edited by

                  @fcwilt Can I also place the Z-probe 10mm below the nozzle and then still move the bed closer to the head...if so, where and how can I enter this in the code?

                  1 Reply Last reply Reply Quote 0
                  • axiomundefined
                    axiom @fcwilt
                    last edited by

                    @fcwilt Sorry, I don't mean the probe but the endstops

                    fcwiltundefined 1 Reply Last reply Reply Quote 0
                    • fcwiltundefined
                      fcwilt @axiom
                      last edited by

                      @axiom

                      Yes - the "flag" that you fashion to slide into the slot and break the beam can travel beyond the slot if needed.

                      You want the position of the sensors to be easily adjustable so you can get them in the same position - or as near as possible.

                      When you execute a G1 move with the H1 parameter the movement stops when the associated endstop sensor is triggered and the logical position of the axis is set to the min/max value as specified in M208. The M574 command that configures the endstop specifies if it is at the "high" end or the low "end" of the axis, thus determining if the max value from M208 is used or the min value.

                      Your Z min value is likely to be 0. But if your endstops trigger at, say, 10mm away from 0, you have a disconnect between the physical Z position (-10) and the logical Z position (0).

                      That is easily dealt with. After the G1 H1 command that does the homing just add a G92 Z### where ### is the actual physical position on the Z axis (-10 in the example above). Now the logical and physical positions will be in sync at -10 and then you can move Z to physical 0.

                      Hope that clears things up.

                      Frederick

                      Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                      axiomundefined 1 Reply Last reply Reply Quote 0
                      • axiomundefined
                        axiom @fcwilt
                        last edited by

                        @fcwilt So I connected the probe to test it and tried it out successfully.
                        8f6e1091-b167-436c-9803-296256d3ec71-grafik.png
                        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

                        fcwiltundefined 1 Reply Last reply Reply Quote 0
                        • fcwiltundefined
                          fcwilt @axiom
                          last edited by

                          @axiom

                          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

                          Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                          axiomundefined 1 Reply Last reply Reply Quote 0
                          • axiomundefined
                            axiom @fcwilt
                            last edited by

                            @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

                            fcwiltundefined 1 Reply Last reply Reply Quote 0
                            • fcwiltundefined
                              fcwilt @axiom
                              last edited by

                              @axiom

                              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

                              Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                              axiomundefined 3 Replies Last reply Reply Quote 0
                              • axiomundefined
                                axiom @fcwilt
                                last edited by

                                @fcwilt I test the endstop with the homing function

                                1 Reply Last reply Reply Quote 0
                                • axiomundefined
                                  axiom @fcwilt
                                  last edited by

                                  @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

                                  1 Reply Last reply Reply Quote 0
                                  • axiomundefined
                                    axiom @fcwilt
                                    last edited by

                                    @fcwilt Ok...with G1 H1 Z0 it works...homing is probably reserved for the probe

                                    fcwiltundefined 1 Reply Last reply Reply Quote 0
                                    • fcwiltundefined
                                      fcwilt @axiom
                                      last edited by

                                      @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

                                      Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                                      axiomundefined 1 Reply Last reply Reply Quote 0
                                      • axiomundefined
                                        axiom @fcwilt
                                        last edited by

                                        @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

                                        fcwiltundefined 1 Reply Last reply Reply Quote 0
                                        • fcwiltundefined
                                          fcwilt @axiom
                                          last edited by

                                          @axiom

                                          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

                                          Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                                          axiomundefined 2 Replies Last reply Reply Quote 0
                                          • axiomundefined
                                            axiom @fcwilt
                                            last edited by

                                            @fcwilt What do I have to write into the Homing.g files instead of the G30 command?

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