Z diving problem?

could it be this:

Also: From Supported Gcodes | Wiki.js

G28 Predefined Position

G28 is a machine coordinate location stored in non volatile memory. It will go to the same location regardless of the coordinate system or G92 offsets. You can view the current setting via the $# command.

  • G28 This does a rapid move to the location.
  • G28 axes If you specify axis values it will first do a rapid move to that location in your current work coordinate system. Then it will do a rapid to the stored G28 location. It will only move on axes specified.
    • G28 Z10 will move to work Z10 then move to the Z location stored in G28. No motion on X or Y.
    • G28 X10 Y20 will move to work X10 Y20 then to the G28 location for X and Y. There will be no motion on Z or any other axes you have defined.
    • G28 G91 X0 This is a way to move only to the X stored in G28. G91 X0 is a relative move of 0 so there will be no move before the G28 move. Again, only the X axis will move. Note: You will remain in G91 after the move. If you were in G90 before the move, you may want to send a G90 to return to that mode.
  • G28.1 Use this to set the G28 offset to the current location in machine coordinates.