Delta X/Y scaling issue



  • I recently replaced my Duet2 Wifi that went bad with another. Luckily, I had saved off my old config.g so the setup time was much easier than trying to remember my old settings. However, I'm now running into an interesting problem.

    When printing a 20mm calibration cube, my Z is dead on 20mm but my X and Y axes are coming in at 24mm. Previously, that would have meant adjusting my diagonal rod length measurement in config.g and/or config-override.g and test again. But, no matter how I adjust, the measurements are coming out the same.

    I'm currently on RRF 3.0 on a HE3D K280 frame. I'm using a Duet2 Wifi with smart effector and the E3DV6 hot end.

    config.g, bed.g, and config-override.g are all attached. I'm assuming that I'm overlooking something but just can't figure it out.

    EDIT: To make sure that it wasn't over extrusion around the corners, I scaled the cube up to 40mm. The cube came out to be 40mm in height but roughly 46-48mm in X/Y. So I think it's a movement issue instead of extrusion.

    config-override.g bed.g config.g



  • @camfarris sounds more like your steps/mm for X,Y and Z are wrong I would suggest you have 16 tooth pulleys but have your steps set for 20 tooth ones (or vice versa) worth checking your pulleys and steps in your config.g

    also what length are you arms your config.g has them at 360 but you override has them at 273.6



  • @Dougal1957 I would agree, except that the steps worked just fine before replacing the board. Also, if the motor steps were off, the Z height would be wrong since it's a delta and not a cartesian printer. So it's not that.

    The 360 is the actual length of the rods. 273.6 is the diagonal length. I just cranked the length up to 360 as a test to prove that the measurements weren't changing anything.


  • administrators

    @camfarris said in Delta X/Y scaling issue:

    The 360 is the actual length of the rods. 273.6 is the diagonal length. I just cranked the length up to 360 as a test to prove that the measurements weren't changing anything.

    If the scaling didn't change, it means that you failed to change the diagonal rod length. There is no way that you should be using 273.6mm diagonal length when your rods are 360mm, unless your steps/mm value is wildly wrong - which it isn't, because your Z height is correct.

    I suggest you delete your config-override.g file and make changes to config.g only, until you have a working configuration again.



  • @dc42 thanks. I'll try again and take the M501 out.

    My normal calculation used to be 288 (360*.8) but it just seems odd that what worked before isn't working now.



  • @camfarris said in Delta X/Y scaling issue:

    would agree, except that the steps worked just fine before replacing the board.

    just verify it. measure the distance traveled by one of the carriages when you issue a command like move z +/- 100



  • @Veti issuing Z+-100 moves all 3 up and down. But that's not it. The Z is fine and produces exactly the correct height and the other 2 towers move at the same rate.


  • administrators

    @camfarris said in Delta X/Y scaling issue:

    @dc42 thanks. I'll try again and take the M501 out.

    My normal calculation used to be 288 (360*.8) but it just seems odd that what worked before isn't working now.

    I find it odd that you needed the 0.8 scaling factor before.



  • @dc42 I found that on some blog post on my last go through with this. It solved the issues with ultra skinny cubes so I assumed it was "normal".

    It also lined up with my old Marlin firmware settings from the stock board before swapping out the board, effector, rods, etc



  • Update:

    I went back and reset everything. Looked at more documentation. Based on this page: https://seemecnc.dozuki.com/Guide/DUET+Change+Stepper+Motor+Steps-mm/101

    I set M92 X/Y/Z to 100 and got a 25mm tall cube. Went back to 80.

    I then looked at my actual stepper motors to verify that they were, indeed, 1.8 degree steppers (they are). But then I looked at the power. It's slated for 1.7A instead of the 1A I had in the settings.

    But, with 360mm rods in the config.g (instead of the scaled down), the cube is looking to be coming in closer. I'll know more in about 10 minutes.

    Now I'm just wondering why my old settings were working in the first place.


  • administrators

    I presume you are running auto calibration? The scale depends on all of the steps/mm set in M92, the rod length set in M665, and the delta radius also set in M665. Normally you set the steps/mm and rod length to the known values, and let delta calibration find the delta radius.



  • @dc42 Yes. Every time I power on, I run:

    G28
    G30
    G32 x3

    Mostly because I'm a little superstitious.



  • Update:

    Latest calibration cube came out. Looks like it worked. Still no idea why the old settings used to work.


  • administrators

    @camfarris said in Delta X/Y scaling issue:

    @dc42 Yes. Every time I power on, I run:

    G28
    G30
    G32 x3

    Mostly because I'm a little superstitious.

    G28 followed by one G32 should be sufficient, if the initial M665 and M666 parameters are close to correct.

    FWIW this is what I use in bed.g, using RRF 3.01beta:

    ; Auto calibration routine for large delta printer
    M561                    ; clear any bed transform
    
    ; If the printer hasn't been homed, home it
    if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
      G28
    
    ; Probe the bed and do auto calibration
    G1 X0 Y140 Z10 F10000        ; go to just above the first probe point
    while true
      if iterations = 5
        abort "too many auto calibration attempts"
      G30 P0 X0.00 Y140.00 Z-99999
      if result != 0
        continue
      G30 P1 X70.00 Y121.24 Z-99999
      if result != 0
        continue
      G30 P2 X121.24 Y70.00 Z-99999
      if result != 0
        continue
      G30 P3 X140.00 Y0.00 Z-99999
      if result != 0
        continue
      G30 P4 X121.24 Y-70.00 Z-99999
      if result != 0
        continue
      G30 P5 X70.00 Y-121.24 Z-99999
      if result != 0
        continue
      G30 P6 X0.00 Y-134.85 Z-99999
      if result != 0
        continue
      G30 P7 X-65.57 Y-113.57 Z-99999
      if result != 0
        continue
      G30 P8 X-112.29 Y-64.83 Z-99999
      if result != 0
        continue
      G30 P9 X-130.59 Y-0.00 Z-99999
      if result != 0
        continue
      G30 P10 X-115.90 Y66.91 Z-99999
      if result != 0
        continue
      G30 P11 X-69.45 Y120.29 Z-99999
      if result != 0
        continue
      G30 P12 X0.00 Y70.00 Z-99999
      if result != 0
        continue
      G30 P13 X60.62 Y-35.00 Z-99999
      if result != 0
        continue
      G30 P14 X-52.28 Y-30.19 Z-99999
      if result != 0
        continue
      G30 P15 X0 Y0 Z-99999 S8
      if result != 0
        continue
    
      if move.calibrationDeviation.deviation <= 0.03
        break
      echo "Repeating calibration because deviation is too high (" ^ move.calibrationDeviation.deviation ^ "mm)"
    ; end loop
    echo "Auto calibration successful, deviation", move.calibrationDeviation.deviation ^ "mm"
    G1 X0 Y0 Z150 F10000                ; get the head out of the way
    

    It homes the printer if it hasn't already been homed, then runs auto calibration until the deviation is low enough (which normally happens after the first time).


Log in to reply