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

    G10 Z offset ignored for second tool ?

    Scheduled Pinned Locked Moved
    Gcode meta commands
    3
    9
    392
    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.
    • brampieundefined
      brampie
      last edited by

      Hi,

      I have a delta printer with 2 print heads (latest firmware, 3.1.1 ).
      This is defined like this:
      ; Tools
      M563 P0 D0 H1 F0 ; define tool 0
      G10 P0 X5 Y-4.5 Z0 ; set tool 0 axis offsets
      G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
      M563 P1 D1 H2 F0 ; define tool 1
      G10 P1 X5 Y4.5 Z5 ; set tool 1 axis offsets 0.4 -> 0.48 -> -
      G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C

      with tool 1, it doesn't seem to matter if I enter Z5, Z50 of Z0,it will just print at the same height as with tool 0, the other offsets (x and y do seem to work)
      What is weird to me is that the display does say that the current z height is 5 or 50 while the print head is not.
      doing baby steps to get it up works, but then it's wrong for tool 0.

      What is the way this should be done ? The head swivels so one is in the air while the other one is active.

      thx for your time

      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by

        Can you post the rest of your config.g and any tool change files you have?

        Z-Bot CoreXY Build | Thingiverse Profile

        brampieundefined 1 Reply Last reply Reply Quote 0
        • botundefined
          bot
          last edited by bot

          I've noticed some odd behaviour in regards to G10 Z offset on a cartesian IDEX printer running 2.05.1.

          This is what I wrote about it in my notes:

          Tool Z offset acts funny when manually moving the tools around. Without the Z axis moving, the Z position can change a lot. The behaviour seems to almost correspond with the Z offset, but then sometimes the offset is suddenly reversed for the tools. This does not seem to affect actual operation, but the display in DWC at least. It's possible that Z offset for a tool is not applied until the Z axis is commanded to a new position. This could be problematic if the tool change happens to all take place at "the same Z" according to the slicer, and the tool offset may never be applied if a Z move is not commanded before resuming the print.

          It does seem to me that offsets are not applied until a G1 Z move is commanded to change the height. Is this happening in your prints or is the Z axis not commanded to a new height after tool changes?

          *not actually a robot

          brampieundefined 1 Reply Last reply Reply Quote 0
          • brampieundefined
            brampie @Phaedrux
            last edited by

            @Phaedrux

            The config.g file :
            ; General preferences
            G90 ; send absolute coordinates...
            M83 ; ...but relative extruder moves
            M550 P"dualKossel" ; set printer name
            M665 R170.5 L360.27 B145 H368 ; Set delta radius, diagonal rod length, printable radius and homed height
            M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them

            ; Network
            M552 P0.0.0.0 S1 ; enable network and acquire dynamic address via DHCP
            M586 P0 S1 ; enable HTTP
            M586 P1 S0 ; disable FTP
            M586 P2 S0 ; disable Telnet

            ; Drives
            M569 P0 S0 ; physical drive 0 goes forwards <- back
            M569 P1 S0 ; physical drive 1 goes forwards <- back
            M569 P2 S0 ; physical drive 2 goes forwards <- back
            M569 P3 S0 ; physical drive 3 goes forwards <- back
            M569 P4 S0 ; physical drive 4 goes forwards <- back, was 9 ?
            M584 X0 Y1 Z2 E3:4 ; set drive mapping
            M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation

            M92 X200.00 Y200.00 Z200.00 E418.00:418.00 ; set steps per mm

            M566 X1200.00 Y1200.00 Z1200.00 E1200.00:1200.00 ; set maximum instantaneous speed changes (mm/min)
            M203 X18000.00 Y18000.00 Z18000.00 E1200.00:1200.00 ; set maximum speeds (mm/min)
            M201 X1000.00 Y1000.00 Z1000.00 E1000.00:1000.00 ; set accelerations (mm/s^2)
            M906 X1680 Y1680 Z1680 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent
            M84 S30 ; Set idle timeout

            ; Axis Limits
            M208 Z0 S1 ; set minimum Z

            ; Endstops
            M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop
            M574 Y2 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop
            M574 Z2 S1 P"zstop" ; configure active-high endstop for high end on Z via pin zstop

            ; Z-Probe
            M558 P5 C"!zprobe.in" H5 F120 T6000 ; set Z probe type to switch and the dive height + speeds
            ;M558 H5 ;*** Remove this line after delta calibration has been done and new delta parameters have been saved
            G31 P500 X0 Y50 Z0.72 ; set Z probe trigger value, offset and trigger height, was Z2, 0.5-0.06=0.44 -> 0.74 -> 0.72
            M557 R85 S20 ; define mesh grid

            ; Heaters
            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
            M140 H0 ; map heated bed to heater 0
            M143 H0 S120 ; set temperature limit for heater 0 to 120C
            M308 S1 P"spi.cs1" Y"rtd-max31865" ; configure sensor 1 as thermocouple via CS pin spi.cs1
            M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
            M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
            M143 H1 S320 ; set temperature limit for heater 1 to 320C
            M308 S2 P"spi.cs2" Y"rtd-max31865" ; configure sensor 2 as thermocouple via CS pin spi.cs2
            M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2
            M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
            M143 H2 S320 ; set temperature limit for heater 2 to 320C

            ; Fans
            M950 F0 C"fan0" Q500

            M950 F1 C"fan1" Q500 ; create fan 0 on pin fan0 and set its frequency
            M106 P1 S1 H1 T60 ; set fan 0 value. Thermostatic control is turned on

            M950 F2 C"fan2" Q500 ; create fan 1 on pin fan1 and set its frequency
            M106 P2 S1 H2 T60 ; set fan 1 value. Thermostatic control is turned on

            ; Tools
            M563 P0 D0 H1 F0 ; define tool 0
            G10 P0 X5 Y-4.5 Z0 ; set tool 0 axis offsets
            G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
            M563 P1 D1 H2 F0 ; define tool 1
            G10 P1 X5 Y4.5 Z5 ; set tool 1 axis offsets 0.4 -> 0.48 -> -
            G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C

            ; define output for tool switch
            M950 P0 C"!exp.heater3"

            ; Custom settings are not defined
            M501
            ; Miscellaneous
            M575 P1 S1 B57600 ; enable support for PanelDue

            tpre0.g:
            M42 P0 S0

            tpre1.g:
            M42 P0 S1

            1 Reply Last reply Reply Quote 0
            • brampieundefined
              brampie @bot
              last edited by

              @bot
              the gcode is like this (kissslicer):
              ; *** Selecting and Warming Extruder 2 to 250 C ***
              ; Head to the start of the next path
              G1 X-1.400 Y0.000 F6000
              G4 P0
              ; Select the Tool (extruder)
              T1
              ; Correct position for multi-nozzle
              G1 X-1.400 Y0.000 F6000
              G4 P0
              ; Set temp and then wait
              M104 S250
              M109 S250
              ; PURGE OR PRIME HERE IF DESIRED
              ;
              ;
              ; PREHEAT time 93.750000
              ; PREHEAT subtracting full 93.750000
              ;
              ; 'Prime Pillar Path', 0.5 [feed mm/s], 20.0 [head mm/s]
              G1 X-1.4 Y0 Z0.15 E0 F9000
              G1 X-1.4 Y0 Z0.1 E0 F300

              My knowledge of gcode isn't great but from what I understand there are G1 Z commands after the toolchange, also, shouldn't babysteps then jump the offset at the first babystep (it just moves the amount it says an the button, not that amount + the offset).

              Is setting the offsets like I did correct, or is there a better way to work with dual nozzle setups ?

              1 Reply Last reply Reply Quote 0
              • botundefined
                bot
                last edited by

                Can you post an excerpt of the print G-code file that shows a tool change, including a little bit before and a little bit after?

                *not actually a robot

                brampieundefined 1 Reply Last reply Reply Quote 0
                • brampieundefined
                  brampie @bot
                  last edited by

                  @bot
                  The gcode file above is already that, it starts printing with tool 1 (the second one) and it starts wrong.
                  Switching back to tool 0 is:
                  ;
                  ; *** Cooling Extruder 2 to 230 C ***
                  ; Same extruder, about to deselect, maybe retract before cooling down
                  ; RETRACT HERE IF YOU WANT
                  G4 P0
                  M104 S230
                  ;
                  ;
                  ; *** Selecting and Warming Extruder 1 to 250 C ***
                  ; Head to the start of the next path
                  G1 X3.100 Y0.000 F6000
                  G4 P0
                  ; Select the Tool (extruder)
                  T0
                  ; Correct position for multi-nozzle
                  G1 X3.100 Y0.000 F6000
                  G4 P0
                  ; Set temp and then wait
                  M104 S250
                  M109 S250

                  1 Reply Last reply Reply Quote 0
                  • brampieundefined
                    brampie
                    last edited by

                    Is there a workaround ?
                    If I use relative positioning can't I just put the offset in the tool change script and move the head a bit up or down as needed ?
                    This would be a problem if a tool select is executed twice, no idea if the firmware detects that and doesn't run the script ?

                    1 Reply Last reply Reply Quote 0
                    • brampieundefined
                      brampie
                      last edited by

                      I think I got it working , I made a couple of wrong assumptions, most importantly offset Z needs to be -0.2 is the second head is 0.2mm higher.
                      thx for your help

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