Delta Fine Tuning



  • Hoping to tap into the vast knowledge around here. I need help fine tuning my delta printer. My dimensions are getting pretty close but I'm struggling to get all the way there.

    Setup

    Ultibots D300VS Plus (TrickLaser arms, Titan Aero)
    FSRs under the bed
    The frame is straight(ish) but not measured with high precision

    Firmware Name: RepRapFirmware for Duet WiFi
    Firmware Electronics: Duet WiFi 1.0
    Firmware Version: 1.19.2 (2017-09-01)
    WiFi Server Version: 1.19.2
    Web Interface Version: 1.19.3

    bed.g:

    [[language]]
    M561						; clear any bed transform, otherwise homing may be at the wrong height
    G31 X0 Y0					; don't want any probe offset for this
    G28						; home the printer
    
    ; Probe the bed and do 6- or 7-factor auto calibration
    G30 P0 X-86.60 Y-50.00 Z-99999	; X tower
    G30 P1 X0.00 Y-100.00 Z-99999	; between X-Y towers
    G30 P2 X86.60 Y-50.00 Z-99999	; Y tower
    G30 P3 X86.60 Y50.00 Z-99999	; between Y-Z towers
    G30 P4 X0.00 Y100.00 Z-99999	; Z tower
    G30 P5 X-86.60 Y50.00 Z-99999	; between Z-X towers
    G30 P6 X-43.30 Y-25.00 Z-99999	; X tower
    G30 P7 X0.00 Y-50.00 Z-99999	; between X-Y towers
    G30 P8 X43.30 Y-25.00 Z-99999	; Y tower
    G30 P9 X43.30 Y25.00 Z-99999	; between Y-Z towers
    G30 P10 X0.00 Y50.00 Z-99999	; Z tower
    G30 P11 X-43.30 Y25.00 Z-99999	; between Z-X towers
    G30 P12 X0 Y0 Z-99999 S6		; center and auto-calibrate 6 factors
    
    G1 X0 Y0 Z50 F12000			; get the head out of the way of the bed
    
    

    Relevant(ish) parts of config.g:

    [[language]]
    ; M665 R206.536 L379.00 B140 H456.635 X-0.028 Y0.111 Z0.000	; Set delta radius, diagonal rod length, printable radius and homed height
    ; M665 R205.118 L374.840 H455.533 B140.0 X-0.429 Y-0.004 Z0.000  ; Arm length on Tricklaser arms
    ; M665 R203.452 L367.958 H455.316 B140.0 X-0.421 Y-0.067 Z0.000   ; After 7 factor optimization
    ; M665 R205.496 L374.581 H455.290 B140.0 X-0.442 Y-0.074 Z0.000   ; Rod length changed to 374.581 for size compensation from 100mm hexagon
    ; M665 R206.008 L376.079 H455.086 B140.0 X-0.442 Y-0.085 Z0.000   ; Rod length changed to 376.079 for size compensation from 100mm hexagon
    M665 R206.235 L376.944 H455.101 B140.0 X-0.420 Y-0.053 Z0.000   ; Rod length changed to 376.944 for size compensation from 100mm hexagon
    
    M666 X-1.35 Y1.55 Z-0.21		; Endstop offset adjustments, these will be adjusted with delta auto-calibration
    
    M350 X64 Y64 Z64 E16 I1			; Set microstepping to 32 for X, Y and Z and 16 for extruder stepper with interpolation
    M92 X800 Y800 Z800			; Set axis steps/mm
    M906 X1000 Y1000 Z1000 E1100		; Set motor currents (mA)
    M201 X3000 Y3000 Z1000 E800		; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z8000 E1500		; Maximum speeds (mm/min)
    M566 X370 Y370 Z1200 E1000		; Maximum instant speed changes mm/minute
    
    ; Need to determine pressure advance at speed first...
    M572 D0 S0.07				; Set pressure advance
    
    

    config-override.g is empty.

    Tricklaser arms are (all) marked with 374.84.

    History

    I initially printed with the default setup from Brad. Loads of dialing in of various things. Wasn't too concerned about dimensional accuracy and was learning KISSlicer along the way. I got to the point where I was ready to use the printer for some prototypes. Final thing was to get the dimensions spot on. Things started out too small, so I thought I'd put the number on the arms in. Now things were too large. I ran a 7-factor optimization which yielded an even shorter diagonal. Tried it anyway but prints were too large (not surprising), so I started doing calibration prints.

    The current M665 setting calibrates to 0.016.

    Current Tests

    a) Hexagon with 100mm distance between outer edges

    I printed 4 of those, adjusting the diagonal rod length to get the actual distances close to 100mm. Final one measures
    X 99.90
    Y 100.30
    Z 99.66
    Convention: The Z distance is the one between the front and back of the print, normals of these sides intersect the Z tower. X and Y are "facing" their respective towers.

    b) Square with 100mm distance between outer edges

    I printed one of those, axes aligned along cartesian coords of the printer (X axis parallel to line through X and Y towers). The measurements vary at opposing sides of the square (near the corners but did not measure at the corners):

    X 100.47 (front) 100.27 (back)
    Y 99.67 (left) 99.87 (right)

    Where do I do from here?

    I can take care of the majority of the cartesian X and Y error via M579 but I wonder if I can do better? This is my first delta, so I don't have a feel for how accurate things should be…


  • administrators

    First make sure your slicer is set to print external perimeters first (outside-in). This gives more accurate dimensions than printing the outside perimeter at the end of printing the perimeters.

    The Z scaling depends only on the tower steps/mm. However, if your Z=0 height setting isn't exactly right, this will obviously give rise to a constant height error. So you should print a tall piece to measure it, to minimise that effect.

    If the product of steps/mm and diagonal rod length in config.g doesn't match your printer, then the scale won't be uniform across the build plate. So print a grid pattern on the bed, and check the grid lines for straightness and uniform spacing. Adjust the diagonal rod length until they are. Then use M579 to correct any scaling errors.



  • Thank you!
    Sure had forgotten to change to perimeter first…
    The Z height is not an issue (didn't show any numbers above, only horizontal distances).
    Printing larger test pieces now and will let you know.
    My main concern is that the measurements across the sides of the hexagon print vary by 0.54 mm. Is this "normal" or an indication that my printer isn't straight?



  • Belay that… There's something mechanical going on... I just ran a fine bed calibration since I was seeing Z height weirdness when printing the big grid:

    Here's the link since it doesn't seem to want to inline the pic (at least in the preview):
    https://www.dropbox.com/s/xsw1bujn390q49l/Screenshot%202018-01-02%2019.18.43.png?dl=0

    Looks like something mechanical. Very nice that one can get this info so easily in RRF!

    Will check whether there's any drag on the sides of the bed. If that's not it, I'll need to confer with Brad…



  • M201 X3000 Y3000 Z1000 E800 ; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z8000 E1500 ; Maximum speeds (mm/min)
    M566 X370 Y370 Z1200 E1000 ; Maximum instant speed changes mm/minute

    With a Delta printer, shouldn't the X, Y & Z values for the above be the same, since they are for the servos at the towers and not the cartesian coordinate system axes?


  • administrators

    @JustDave:

    M201 X3000 Y3000 Z1000 E800 ; Accelerations (mm/s^2)
    M203 X20000 Y20000 Z8000 E1500 ; Maximum speeds (mm/min)
    M566 X370 Y370 Z1200 E1000 ; Maximum instant speed changes mm/minute

    With a Delta printer, shouldn't the X, Y & Z values for the above be the same, since they are for the servos at the towers and not the cartesian coordinate system axes?

    No, they are for the Cartesian axes.



  • Glad I made that a question then! 😉



  • Oh, I had never even thought about that. Yes, good question and I‘m glad that I had (unwittingly) assumed the right thing 😉


  • administrators

    I think some other delta printer firmwares do apply acceleration, jerk and speed limits to the carriages, not the Cartesian coordinates. It's not clear which is best, it depends on what you are trying to avoid by setting the limits. With the segmentation-free algorithm used in RRF, it's easier to apply them to Cartesian coordinates.


Locked
 

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