Question about 'Delta Radius' in M665

  • Hi,

    Is the 'delta radius' set by the R parameter in M665 the same as the 'delta radius' shown in the following diagram?


    And in the same context, does anyone know if there's an easy trick for calculating this length given that the rod angle isn't known (but the rod length is)?


  • Yes. In that diagram DELTA_DIAGONAL_ROD is M665 L and DELTA_RADIUS is M665 R.

    And note that Duet/RepRap does not use DELTA_SMOOTH_ROD_OFFSET, DELTA_CARRIAGE_OFFSET, and DELTA_EFFECTOR_OFFSET. For that matter, neither do recent releases of Marlin, etc.

    No easy tricks... other than to get close-ish and then let auto-calibrate set it for you.

  • @danal said in Question about 'Delta Radius' in M665:

    Yes. In that diagram DELTA_DIAGONAL_ROD is M665 L and DELTA_RADIUS is M665 R.

    And note that Duet/RepRap does not use DELTA_SMOOTH_ROD_OFFSET, DELTA_CARRIAGE_OFFSET, and DELTA_EFFECTOR_OFFSET. For that matter, neither do recent releases of Marlin, etc.

    No easy tricks... other than to get close-ish and then let auto-calibrate set it for you.

    Thank you very much for the detailed response, @Danal! Much appreciated 🙂

  • The critical part is setting the L param to your rod lengths and then only do either a 6 or 8 factor calibration (Do not use 7 or 9 factors as they will adjust the rod length to try and get a good fit but it can skew things)

  • Thanks, @dougal1957!

    Do you know how I can save the results of the 6-factor calibration so they're permanently kept (i.e. after power-off)? I had a the reference for the instructions on how to do this but can't find it now... I vaguely remember an M command for displaying all the calibration (M665 with no parameters?) and then editing the M665 in config.g accordingly or something similar?

  • Yes just send M500 after your successful calibration. This writes a file call config_override.g which stores the M665 and M666 calibration and will be read in preference to that data in config.g on startup.

    You do have to be wary though if you set M500 in a macro or bed.g for example as it will autosave even a terrible calibration for example if a sensor malfunctions etc... With multitouch probing this is less of a problem as it will throw an error if multitouch doesn't achieve fairly repeatable groups for each probing

  • @djdemond, I just run auto-calibration and got this result:

    Calibrated 6 factors using 16 points, deviation before 4.172 after 0.073

    On sending M665, I got this:

    Diagonal 350.000, delta radius 167.495, homed height 300.431, bed radius 140.0, X -0.492°, Y -1.141°, Z 0.000°

    Then sent M500 and it automatically created the config-override.g file you describe.

    (also added M501 at the end of config.g as advised here

    My big concern about trying to run a print with these settings, however, is that 2 of the main parameters in the reported results don't match reality, namely:

    • When I move the effector all the way up (not running 'home' command, but using the manual buttons), then there's an odd discrepancy between the z-height reported in the calibration results (300.431) and the z-height reading in DWC (298.87) - that's a 1.561mm difference which I don't understand where it comes from.

    • The reported 'delta radius' in the calibration results is 167.495, but my actual delta radius (which I set in M665 in config.g) is 160.8mm - that's quite a big difference.

    What do I do now?

    Thanks again for the help 🙂

    Edit: I just reset the Duet and now I have a new z-height showing in DWC when homing (295.45) - this is after the head goes down by 5mm after homing.

    Biggest problem is that 295.45 for the preset hotend position is that it's 0.75mm too low - meaning that if I run a print now, the head will definitely crash into the bed...

  • Okay, so delta radius - let the firmware work that out for you, it's not necessary for it to match real-world physical dimensions. Rod length should match the real rod length (make sure you measure centre of rotation to centre of rotation though), but you can tweak the rod length to scale objects in XY (look this up I've written plenty on it as have DC and Doug etc..)

    Height - your calibration looks good. So Home and then lower the nozzle to X=5mm and then jog down and see where it stops in the bed centre. It should be at physically x=0 when it indicates x=0. Now move to a peripheral XY coordinate and repeat. I can't explain the difference, but it might be one of those things that looks wrong but practically doesn't make any difference.

    What probe are you using, you can enter a probe Z offset in G31 Z-0.75 and then recalibrate and it should take care of the 0.75mm. But test it by manually jogging to verify to avoid unnecessary damage. Temporarily set motor current to 50% so the motor skips when/if it crashes.

  • @DjDemonD,

    Re the delta radius: got it. I'd very much like to read up on it. Searched the website in your signature, but didn't see anything relevant. Could you please point me in the right direction?

    Re Z-Height: I followed the procedure your describe (see the 'edit' in my previous post). My understanding is that after calibration the physical 0 height and the indicated Z-height in DWC should match (am I correct in this?), but that's precisely my problem - they don't. When the head is physically touching the bed, the indicated height is 0.75mm.

    Re the z-probe - I have a contact probe that temporarily attaches to the hotend from underneath (although I also got your piezo sensor which I intend to implement later on 🙂 )

    Because I have this type of z-probe, I had G31 in config.g set to Z0.55 because that's the thickness of the probe (but I guess I should have entered it as a negative value rather than positive).

    Following your advice, I changed G31 in config.g to G31 -Z0.2 (=0.55-0.75), and run auto-calibration again.

    The results looked good initially:

    Calibrated 6 factors using 16 points, deviation before 1.095 after 0.064


    Diagonal 350.000, delta radius 168.146, homed height 299.480, bed radius 140.0, X -0.413°, Y -0.955°, Z 0.000°

    I then run M500, but got no feedback on that operation.

    The persisting problem is that the physical height and indicated height (in DWC) are still severely incongruent - DWC tells me that the hotend is at z0 when in fact it's about 3mm above the bed. (and, needless to say, this is right after auto-calibration that seems good and no other operation preformed).

    (this is both before and after running a 'homing' command - right now DWC indicates that the homed height is 294.5 whereas in fact it's more like 298).

    I just can't get my head around this one... help please?

  • I meant I've written a few posts here on adjusting rod length, not delta radius.

    M500 doesn't give an acknowledgement it should return "Settings Saved to config_override.g", maybe a quick fix for DC in next release?

    I suspect your probe may have a 0.75mm offset, Piezo works at around 0.1mm but still a slight offset. Determine the probe offset by experimentation, by doing G30 at bed centre, then raise the nozzle 5mm. Jog down manually in small increments until you actually have nozzle to bed contact. Now read the indicated Z height.

    The real offset is the difference between 5 and the amount you jogged.

    So if you got down to 4.25mm then the nozzle touches the bed then the offset is -0.75mm.

    Use this measured z offset for your probe offset in G31. Its positive if the probe triggers above the bed (IR/inductive), and negative if the probe triggers below the bed (nozzle contact).

    Then calibrate and manually check height, If you are still getting the height discrepancy (you shouldn't be), then put
    G1 Z10
    in your start gcode so that you "zero" Z height before each print. However, this still relies on the z offset for your probe being correct, and consistent. This is why Piezo and Smart Effector are so well received they are very accurate 10 microns or so, and very consistent varying no more than 5 microns (in a stiff, well built machine).

    Edit, also see Adding trigger height corrections to the bed.g file on this page


Looks like your connection to Duet3D was lost, please wait while we try to reconnect.