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

    Non standard use of Mesh Bed Compensation and three Z axis.

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    3
    9
    412
    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.
    • Marcossfundefined
      Marcossf
      last edited by

      Hello everybody,

      We continue with the construction of the printer with 3 independent Z axes in which each one has a replaceable head.
      We have been working on the closed loop axes (OM motors, drivers and SMC guides) and the configuration of all the 1XD (6) and 1LC (3 at the moment) while other parts of the HW continue to arrive. X and Y axes works as expected.

      These three Z axes must all be treated as Z (0, 1, 2) or each as an independent axis (Z, U, V)? Only one will be used at the same time.

      We have a deployable probe system integrated in the Z1 axis, but what we would like would be for the axes to make their home to Z max (we have already done this), but at the same time the probe would only used to establish the Mesh bed compensation and not the Z offset/travel.
      To establish the z-min of each tool, we will install an endstop flushed with the printing surface, where each head will establish its offset Z = 0 by clicking on it (it has a known travel of 0.3mm).

      The idea is to simply be able to obtain a map of the printing surface independent of the heads, the bed being fixed, and for each tool to set its z offset with the button. We would set the XY offset of each tool manually because it does not vary.
      Noozles are single-use disposables, so we need to set their Z offset precisely on each tool use.

      From a configuration point of view, how should it be done?

      Thanks!

      o_lampeundefined dc42undefined 2 Replies Last reply Reply Quote 0
      • o_lampeundefined
        o_lampe @Marcossf
        last edited by

        @marcossf
        I'm sure there is more than one way to do that.
        I'd define Z,U,V axes and home them to max with G1 H1... in the startup phase. (makes it easier to change nozzles)
        Then in the tool change macros you set Z=0 datum with G30. You can use G30 on U and V in the tpost#.g macro, after the Z driver is switched over to U or V respectively. Parking the tool would be at the max. position. (G1 H1 again)

        It's untested, so try it with a grain of salt.

        Marcossfundefined 1 Reply Last reply Reply Quote 1
        • Marcossfundefined
          Marcossf @o_lampe
          last edited by

          @o_lampe This part its the most clear for us, this is at the moment the solution that we have as most feasible.
          The problem arise when Z probe for Mesh bed compensation enters the equation.

          o_lampeundefined 1 Reply Last reply Reply Quote 0
          • o_lampeundefined
            o_lampe @Marcossf
            last edited by

            @marcossf
            That should work without extra action. As soon as you select tool # with Z-axis rerouted to U or V, you are able to use mesh leveling.
            Here's an example of how I reroute Y-axis to V (driver 5):

            M584 X0 Y1 Z2 E3:4 V5 
            M563 P1 D1 H2 S"nozzle08" F2 Y5  
            
            Marcossfundefined 1 Reply Last reply Reply Quote 1
            • Marcossfundefined
              Marcossf @o_lampe
              last edited by

              @o_lampe Thank you!
              We'll explore it from your example.

              This is our configuration file from which we would start:

              M569 P40.0 S1                          ; physical drive 40 goes forwards X
              M569 P41.0 S1                          ; physical drive 41 goes forwards Y1
              M569 P42.0 S1 			     ; physical drive 42 goes forwards Y2
              M569 P43.0 S0                            ; physical drive 43 goes backwards Z1 (Z)
              M569 P44.0 S0                            ; physical drive 44 goes backwards Z2 (U)
              M569 P45.0 S0                            ; physical drive 44 goes backwards Z3 (V)
              M569 P20.0 S1                          ; physical drive 20 goes forwards E0
              M569 P21.0 S1                          ; physical drive 20 goes forwards E1
              M569 P22.0 S1                          ; physical drive 20 goes forwards E2
              M584 X40.0 Y41.0:42.0 Z43.0 U44.0 V45.0 E20.1:21.1:22.1       ; set drive mapping
              M350 X1 Y1 V1 Z1 U1 V1 E16:16:16 I1          ; configure microstepping with interpolation
              M92 X150.53 Y150.53 Z100.12 U100.12 V100.12 E420.00:420.00:420.00       ; set steps per mm
              M566 X900.00 Y900.00 Z500.00 U500.0 V500.0 E120.00:120.00:120.00     ; set maximum instantaneous speed changes (mm/min)
              M203 X18000.00 Y18000.00 Z12000.00 U12000.00 V12000.00 E1200.00:1200.00:1200.00 ; set maximum speeds (mm/min)
              M201 X1500.00 Y1500.00 Z500.00 U500.00 V500.00 E250.00:250.00:250.00     ; set accelerations (mm/s^2)
              M906 E1000:1000:1000	                ; set motor currents (mA)
              M84 S0                                  ; Disable motor idle current reduction
              
              ; Axis Limits
              M208 X0 Y0 Z0 U0 V0 S1                        ; set axis minima
              M208 X400 Y250 Z100 U100 V100 S0                  ; set axis maxima
              
              ; Endstops
              M574 X1 S1 P"!40.io0.in"               ; configure active-high endstop for low end on X via pin !40.io0.in
              M574 Y1 S1 P"!41.io0.in"               ; configure active-high endstop for low end on Y via pin !41.io0.in o !42.io0.in
              ;M574 Z2 S1 P"!43.io0.in"				; configure active-high endstop for high end on Z via pin !43.io0.in
              M574 U2 S1 P"!44.io0.in"				; configure active-high endstop for high end on U via pin !44.io0.in
              M574 V2 S1 P"!45.io0.in"				; configure active-high endstop for high end on V via pin !45.io0.in
              M574 E1 S1 P"!20.io0.in"				; configure active-high endstop for low end on E (g-syringe) via pin !20.io0.in
              M574 Z1 S2                			 ; configure Z-probe endstop for low end on Z
              
              ; Z-Probe
              M950 S0 C"out4"                      ; create servo pin 0 for solenoid io3.out
              M558 P8 C"io3.in" H0 R1 F120 T5000 	; set Z probe type to bltouch and the dive height + speeds
              G31 P500 X0 Y0 Z1                    ; set Z probe trigger value, offset and trigger height
              M557 X15:200 Y15:195 S20                ; define mesh grid
              

              Still a lot of work ahead. If uncomment Z endstop config then Z-probe give us an error. Time to troubleshoot.

              o_lampeundefined 1 Reply Last reply Reply Quote 0
              • o_lampeundefined
                o_lampe @Marcossf
                last edited by

                @marcossf said in Non standard use of Mesh Bed Compensation and three Z axis.:

                ; Z-Probe
                M950 S0 C"out4"

                I'm sure out4 is not a valid name for an output.

                M950 S0 C"io4.out" ; looks better
                
                Marcossfundefined 1 Reply Last reply Reply Quote 1
                • Marcossfundefined
                  Marcossf @o_lampe
                  last edited by

                  @o_lampe

                  It works as shown. The solenoid trigger signal is into the 6HC board OUT4 connector. It is possible that it also works with the nomenclature that you suggest, we will test it.

                  Ignore comments, they get overwritten in tests constantly. 😉

                  o_lampeundefined 1 Reply Last reply Reply Quote 0
                  • o_lampeundefined
                    o_lampe @Marcossf
                    last edited by

                    @marcossf
                    Then it's one of the 2-pin high current connectors. Makes sense.

                    1 Reply Last reply Reply Quote 1
                    • dc42undefined
                      dc42 administrators @Marcossf
                      last edited by

                      @marcossf if you need separate meshes for the three heads, then I suggest you probe the bed three times, storing the height map under different filenames. Then you can load the appropriate height map in the tool change file.

                      BTW in RRF 3.4 I expect to support remapping of the Z axis per tool (same as we already do for X and Y), so it will be easier to support multiple Z axes.

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

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