G30

I'm using the 0.92.9 firmware

I would like to calibrate a custom Delta Kossel with this tool:

I do not want to use the manual procedure but the z-probe.
I created a gcode file with the six recommended points and for each point I added the G30 command.

I noticed an abnormal behavior.
I move the hot-end to G1 X0 Y135 Z 35 (Tower C).
I run the G30 command.
Hot-End does not reposition at z-level before the G30 command.
Hot-end stays lower, closer to the bed.

Output of the G30 command is not the distance of the hot-end distance from the bed?

Thank you
«1

Comments

  • Is there a procedure to calculate the end-stop offset using the z-probe?

    Thank you
  • Better to upgrade to 1.0 where many bugs around leveling are fixed.

    One thing is if z probe bed distance is lower then start height it might not go up all the way. G32 enforces this even.

    And no, you can not calculate endstop offsets with z-probe. Here we assume we do not know if bed is tilted, which is why we position them with same offsets using a bar at same distance and then check the height differences. Doing this just with z-probe would assume bed is leveled and geometry is perfect. So just that what try to fix with the calibration of delta updating the software parameter.
  • Thank you for answering so fast.

    Now I'm using the 1.0 firmware

    I set the firmware to probe three points below the columns to auto-level with the G29 command.

    # define BED_LEVELING_METHOD 0
    # define FEATURE_AUTOLVEL 1
    // Tower A
    #define Z_PROBE_X1 -116.91
    #define Z_PROBE_Y1 -67.5
    // Tower B
    #define Z_PROBE_X2 116.91
    #define Z_PROBE_Y2 -67.5
    // Tower C
    # define Z_PROBE_X3 0
    #define Z_PROBE_Y3 135

    Now I would like to calculate the distortion of the plan with the G28 command.
    As the coordinates of the three columns are always used.
    How do I probe all the plan used for printing?
    For the calculation of the level I have to use a dot matrix system?

    Thank you.
  • Sorry...
    Now I would like to calculate the distortion of the plan with the G32 command.
  • G29 measures only an average.
    G32 measures rotation and you can define in config tool to do it using a grid. But that will not give you a bump map.

    For a bump map you need to enable distortion correction and measure it with G33, see also repetier.ino in firmware sources for command definition.

    For deltas you should stay with your 3 points for G32 and only use a grid for distortion correction with extrapolation of corners. It measures a rectangle and that is always smaller the bed anyway, but the extrapolate allow it to get a bit bigger.
  • I can only find 0.92.9 firmware, Where is the New 1.0 ?

    Why should we use only 3 points for Deltas ? 
    Thank you
  • If you later use G33 for the bumps 3 point for G32 is enough. If you do not want G33 then a grid might give a better average plane. You can set it in config tool as option. Please also see then how to set the 3 point to define the testing rectangle and be aware you can only test a small inner part that includes z probe offset and is inside the circle bed.
  • are there any reasons not to use G33 Distortion Correction?
  • Only wrong expectations. Some users might think it can fix all geometric errors and do not try to calibrate at all. You should always first calibrate geometry so you have least bumps as possible. Only when you can not get it better start adding G33 to correct remaining errors. It is meant to be reduced over height , but if you have big geometry errors you might want 100% correction over complete height.
  • sandro730 said:
    Thank you for answering so fast.

    Now I'm using the 1.0 firmware

    I set the firmware to probe three points below the columns to auto-level with the G29 command.

    # define BED_LEVELING_METHOD 0
    # define FEATURE_AUTOLVEL 1
    // Tower A
    #define Z_PROBE_X1 -116.91
    #define Z_PROBE_Y1 -67.5
    // Tower B
    #define Z_PROBE_X2 116.91
    #define Z_PROBE_Y2 -67.5
    // Tower C
    # define Z_PROBE_X3 0
    #define Z_PROBE_Y3 135

    Now I would like to calculate the distortion of the plan with the G28 command.
    As the coordinates of the three columns are always used.
    How do I probe all the plan used for printing?
    For the calculation of the level I have to use a dot matrix system?

    Thank you.

    G29 and G32 use this parameters :

    # define BED_LEVELING_METHOD 0
    # define FEATURE_AUTOLVEL 1
    // Tower A
    #define Z_PROBE_X1 -116.91
    #define Z_PROBE_Y1 -67.5
    // Tower B
    #define Z_PROBE_X2 116.91
    #define Z_PROBE_Y2 -67.5
    // Tower C
    # define Z_PROBE_X3 0
    #define Z_PROBE_Y3 135

    It is correct ?

    G33 use this parameters :

    #define DISTORTION_CORRECTION         1
    #define DISTORTION_CORRECTION_POINTS  5
    /** Max. distortion value to enter. Used to prevent dangerous errors with big values. */
    #define DISTORTION_LIMIT_TO 2
    /* For delta printers you simply define the measured radius around origin */
    #define DISTORTION_CORRECTION_R       135
    /* For all others you define the correction rectangle by setting the min/max coordinates. Make sure the the probe can reach all points! */
    #define DISTORTION_XMIN -135
    #define DISTORTION_YMIN -135
    #define DISTORTION_XMAX 135
    #define DISTORTION_YMAX 135

    It is correct ?


    But to repetier.ino is write :

    /* DISTORTION_CORRECTION compensates the distortion caused by mechanical imprecisions of nonlinear (i.e. DELTA) printers
     * assumes that the floor is plain (i.e. glass plate)
     *     and that it is perpendicular to the towers
     *     and that the (0,0) is in center
     * requires z-probe
     * G29 measures the Z offset in matrix NxN points (due to nature of the delta printer, the corners are extrapolated instead of measured)
     * and compensate the distortion
     * more points means better compensation, but consumes more memory and takes more time
     * DISTORTION_CORRECTION_R is the distance of last row or column from center
     */

    G29 it is correct ?

    Thank you.
  • First 2 are correct, last is expired and should be G33.
  • edited January 10
    I have configured the distortion correction with the following define.

    #define DISTORTION_CORRECTION 1
    #define DISTORTION_CORRECTION_POINTS 9
    / * For delta printers you simply define the measured radius around origin * /
    #define DISTORTION_CORRECTION_R 135
    / ** If your corners are not measurable with given radius, you can
    set this to 1. It then omits the outer measurement points
    #define DISTORTION_EXTRAPOLATE_CORNERS 1

    Z-probe also controls the points outside the established radius.
    Only the 4 most external points are excluded and not all those outside the indicated radius.

    It only excludes:
    P1 X + 135 Y-135  * --------- * P2 X + 135 Y + 135
                                     |                 |
                                     |        +       |
                                     |                 |
    P3 X-135 Y-135     * --------- * P4 X + 135 Y-135

    Am I making a mistake?
    Is it possible to exclude all points outside the indicated radius?

    If it is too expensive a calculation could be done only once and the coordinates of all the points saved in eeprom.
    If the saving on the eeprom is not set, only the 4 outermost points are excluded.

    Thank you
  • This is correct, only the 4 outer points are extrapolated. Extrapolating from extrapolated points makes not much sense. Firmware use use the outer corrections anyway if you leave measured area.

    You can also correct oute rpoints manually later with G33 Xpos Ypos Zcorrection. G33 L0 will list all set corrections.

    In V2 we will have per shape classes so maybe I can then add a better solution there.
  • Hi Repetier.

    Do you intend to deploy probe functionality also for X and Y axes?
  • Not really. Why should that be needed?
  • To get the precise location of the beginning of the cut. In the same way that Z works
  • See how the ESTLCam does. This is super important for replacing the milling cutter at the same location after an exchange or even after breaking the milling cutter.


  • edited January 17
    Or this to locate a center of a circle, at 03:20.


  • Ok, for cnc usage it is useful. 3d printers in contrast use homing for this.

    Will not add this in V1 as I want no new features here, but it is a potential feature for V2 where it should also be easier to integrate. But at the moment we are mit of refactoring to make V2 usable at all.

    It is a bit like homing from the "wrong" side meaning homing towards xmax to find xmin. I understand the concept.
  • If you do this for x and y direction you have to add or subtract radius of Flute depending on probe direction.
    usually you have a 3D probe or edge finder instead of probing with the flute for this procedure.




  • So we need at least the radius as additional parameter. 
    If we then have a real probe or this simple solution should have no influence on the result I think. Here the z probe offset is just 0,0 while a probe might have a distance.

    Remaining question is, if this can always be covered by a single probe or if we need a z probe and a xy probe which could have same pin. What I mean is if you change tool with having a separate tool you need to relevel the end as it could stick out more or less.
  • In my opinion, a single probe connection could serve all axes, thus avoiding having to change the connection of the other for each alignment to be made.

    The Universal GCode Center has just released a new version (V2) that also performs probe on all axes.

    My request comes from the ease I had to program the Repetier to use my laser and so, having more of that function, my work would be facilitated.


  • In your case it surely is enough, but if flute is not sensor it might be different.
  • I'm trying to change extra corners to exclude points outside the measuring beam.

    I was not able to understand what server the function:
    extrapolateCorners

    #if (DRIVE_SYSTEM == DELTA) && DISTORTION_EXTRAPOLATE_CORNERS
         extrapolateCorners ();

    What is the purpose of this function?

    Thank you
  • That function computes the outer most 4 points by extrapolating the neighbour values. Reason is for deltas with round bed, so they can measure a bigger area with distortion correction.
  • edited February 6
    I created a google sheet to understand the distribution of the dot matrix for the G33 command.

    For DISTORTION_CORRECTION_R = 120 and DISTORTION_CORRECTION_POINTS = 9 is correct?
    See link : GoogleSheet



    I want to exclude all the points outside the circle.

  • You want to rewrite the code?
    Order in memory is like this yes, but if you omit other points you also need to extrapolate these points or it would correct against 0 if you go over the measurement point. But then you have a bigger correction area.
  • Yes. I want to to rewrite the code.
    I can set to zero all points outside to the circle ?
    Or I do calculate the medium value of the points neighboring ?
    Thank You


  • Well, zero is bad. I would set all unmeasured to a big value and afterwards interpolate all these values until all are good. 0 is the solution if you have no solution. Not the worst but also not good.

    Let me know if you have a good solution that we can copy. Guess many others would also like such an improvement.
Sign In or Register to comment.