Resetting the origin of a delta



  • So, I've successfully assembled my Anycubic Kossel Plus. Now for the calibration….!

    The problem (I think) I'm having is to do with specifying the machine within the config.

    Thus far, I've used the online configurator to input my machines properties, but since this is my first delta printer I'm not entirely sure what I should be measuring. That said, I think I have it correct. I've also set my Z probe to none.

    Once those settings are loaded, I go to home all axes. The arms rise and hit the endstops (as expected?) but then after their second pass, they drop down a bit and move "out", i.e. towards me, and significantly out of range of the bed. However, DWC states that the printer thinks it's at the origin. I've been puzzling over it for a while and haven't yet worked out how to reorient it.

    Nevertheless, I have then also tried to do a manual Z calibration using paper and G32, which ended up knocking the bed with the effector. Additionally, when it tried to probe the second point it attempted to move into one of it's own tower pillars, which indicates to me that I've told it it's a lot bigger than in reality, but again I can't see where.

    Could anyone give me some pointers?
    Many thanks!

    TNR



  • Hi, as for what you should measure, this pic might help you:

    I don't think you actually need to measure it, those values should be inside Marlin's config or whaterver firmware the Anycubic has.



  • Thanks for the image! I have seen similar, but happily this particular one matches the wording used in the configurator and the Anycubic's firmware better! I've just noticed that my understanding of the delta radius was wrong, and my value is waayyy higher than it should be. I will try changing that tomorrow and see where it gets me. Thanks again!



  • Don't confuse the printer radius with print radius. Print radius is half the diameter of the bed (usually) or what the manufacturer recommends.



  • I see, thanks! I'm not sure I have it right to be honest…

    I'm fiddling with it now, and sadly I don't think I've gotten anywhere. If I position the nozzle/effector to my best guess of origin on the bed, I measure the delta radius at around 130mm. My rods are 265mm, and I've checked that multiple times.

    At this point there seem to be so many things wrong that I don't know where to start. Is there something obvious that could be causing this behaviour? Despite setting the print radius to be 50mm (which I would have thought would limit movement), the effector often tries to move out of bounds. I've also discovered realised that the effector is moving in an arc in the X and Y planes, and not vaguely parallel to the bed!

    Trying to take another approach, I've attached an inductive Z probe, set of the offsets approximately, inverted it as I needed in config.g using M558, and connected it correctly (reading is displayed in DWC). However, when I try auto bed calibration, the movement is very erratic and ends up hitting the bed multiple times before failing.

    https://youtu.be/PUJLlxmKsq0

    Any more pointers?

    If it helps, this is my latest config.json

    {  
       "board":"duetethernet10",
       "firmware":1.2,
       "compatibility":2,
       "nvram":false,
       "auto_save":{  
          "enabled":false,
          "save_threshold":10,
          "resume_threshold":11,
          "gcodes_to_run":"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000"
       },
       "geometry":{  
          "type":"delta",
          "delta_radius":100,
          "rod_length":265,
          "print_radius":70,
          "homed_height":280,
          "z_min":0,
          "max_carriage_travel":240,
          "homed_height_warning":true
       },
       "drives":[  
          {  
             "direction":1,
             "microstepping":16,
             "microstepping_interpolation":false,
             "steps_per_mm":80,
             "instant_dv":20,
             "max_speed":300,
             "acceleration":1000,
             "current":500,
             "driver":0,
             "endstop_type":1,
             "endstop_location":2
          },
          {  
             "direction":1,
             "microstepping":16,
             "microstepping_interpolation":false,
             "steps_per_mm":80,
             "instant_dv":20,
             "max_speed":300,
             "acceleration":1000,
             "current":500,
             "driver":1,
             "endstop_type":1,
             "endstop_location":2
          },
          {  
             "direction":1,
             "microstepping":16,
             "microstepping_interpolation":false,
             "steps_per_mm":80,
             "instant_dv":20,
             "max_speed":300,
             "acceleration":1000,
             "current":500,
             "driver":2,
             "endstop_type":1,
             "endstop_location":2
          },
          {  
             "direction":1,
             "microstepping":16,
             "microstepping_interpolation":false,
             "steps_per_mm":96,
             "instant_dv":20,
             "max_speed":20,
             "acceleration":1000,
             "current":800,
             "driver":3
          }
       ],
       "idle":{  
          "used":true,
          "factor":30,
          "timeout":30
       },
       "homing_speed_fast":"30",
       "homing_speed_slow":"6",
       "travel_speed":100,
       "z_dive_height":5,
       "slow_homing":false,
       "probe":{  
          "type":"switch",
          "trigger_z_height":2.5,
          "trigger_height":0.1,
          "trigger_value":600,
          "x_offset":30,
          "y_offset":-20,
          "speed":2,
          "deploy":false,
          "points":[  
             {  
                "x":0,
                "y":50,
                "z":0
             },
             {  
                "x":29.43,
                "y":16.99,
                "z":0
             },
             {  
                "x":25.14,
                "y":-14.52,
                "z":0
             },
             {  
                "x":0,
                "y":-32.78,
                "z":0
             },
             {  
                "x":-43.3,
                "y":-25,
                "z":0
             },
             {  
                "x":-43.3,
                "y":25,
                "z":0
             },
             {  
                "x":0,
                "y":0,
                "z":0
             }
          ]
       },
       "num_nozzles":1,
       "bed_is_nozzle":false,
       "bed":{  
          "present":true,
          "heater":0,
          "use_pid":false
       },
       "chamber":{  
          "present":false
       },
       "heaters":[  
          {  
             "temp_limit":120,
             "scale_factor":100,
             "series":4700,
             "thermistor":100000,
             "beta":4267,
             "a":0.0006558852,
             "b":0.0002343567,
             "c":0,
             "channel":0
          },
          {  
             "temp_limit":275,
             "scale_factor":100,
             "series":4700,
             "thermistor":100000,
             "beta":4267,
             "a":0.0006558852,
             "b":0.0002343567,
             "c":0,
             "channel":1
          }
       ],
       "toolchange_wait_for_temperatures":true,
       "generate_t_code":false,
       "tools":[  
          {  
             "number":0,
             "extruders":[  
                0
             ],
             "heaters":[  
                1
             ],
             "x_offset":0,
             "y_offset":0,
             "z_offset":0
          }
       ],
       "peripheral_points":6,
       "halfway_points":0,
       "calibration_factors":6,
       "probe_radius":50,
       "mesh":{  
          "radius":50,
          "spacing":20
       },
       "home_first":false,
       "orthogonal":{  
          "compensation":false
       },
       "network":{  
          "enabled":true,
          "name":"UoY CS 3D Delta Printer",
          "password":"",
          "mac_address":"BE:EF:DE:AD:FE:ED",
          "dhcp":false,
          "ip":"192.168.0.10",
          "netmask":"255.255.255.0",
          "gateway":"192.168.0.1",
          "protocols":{  
             "http":true,
             "ftp":false,
             "telnet":false
          }
       },
       "fans":[  
          {  
             "value":"30",
             "inverted":false,
             "frequency":500,
             "thermostatic":false
          },
          {  
             "value":"100",
             "inverted":false,
             "frequency":500,
             "thermostatic":true,
             "heaters":[  
    
             ],
             "trigger_temperature":45
          },
          {  
             "value":"100",
             "inverted":false,
             "frequency":500,
             "thermostatic":true,
             "heaters":[  
    
             ],
             "trigger_temperature":45
          }
       ],
       "custom_settings":"M558 I1\nM501"
    }
    
    


  • instead of the JSON file can you post your Config.g and bed.g and while were at it your home delta.g as well



  • From your video, your belts look like they are under-tensioned. Is it possible your belts are loose enough to be slipping on the drive pulleys?


  • administrators

    The first problem that I think I see is that the maximum homing movement allowed in your homedelta.g file isn't sufficient to ensure that the carriages always move right up to the homing switches.

    Also check that you don't have any nonzero parameters in your M666 command in config.g, or in the one in config-override.g if you have one (you may have nonzero values if you ran M500 after running auto calibration). Similarly, in your M665 command(s) there should be no nonzero X, Y or Z parameters.



  • I see, thanks for the help guys! Sadly I won't have access to the printer now until business hours on Monday, so I will get the requested files and post them here as soon as I can.

    @JustDave:

    From your video, your belts look like they are under-tensioned. Is it possible your belts are loose enough to be slipping on the drive pulleys?

    I'm pretty sure I have the belts adequately tight enough - at least, it's a similar tightness that I've used with my cartesian printer in the past, and I've never had any slipping issues with the same kind of belts and gears.

    @dc42:

    The first problem that I think I see is that the maximum homing movement allowed in your homedelta.g file isn't sufficient to ensure that the carriages always move right up to the homing switches.

    Also check that you don't have any nonzero parameters in your M666 command in config.g, or in the one in config-override.g if you have one (you may have nonzero values if you ran M500 after running auto calibration). Similarly, in your M665 command(s) there should be no nonzero X, Y or Z parameters.

    I see, I assume that is the "maximum carriage travel" value in the configurator? I shall try increasing it and see if the problem goes away. The possibility of having zero values for some of those settings sounds quite plausible. At some point I noticed the movements become significantly more erratic after attempting on the of the auto calibrations.

    I shall try your suggestions on Monday on report back.



  • So, back to the printer today. Here are the files requested.

    config.g
    [c]; Configuration file for Duet Ethernet (firmware version 1.20 or newer)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Fri Jan 19 2018 14:23:09 GMT+0000 (GMT Standard Time)

    ; General preferences
    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates…
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    ; Automatic saving after power loss is not enabled

    ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration.
    M665 R100 L265 B70 H280 ; Set delta radius, diagonal rod length, printable radius and homed height
    M666 X0 Y0 Z0 ; Put your endstop adjustments here, or let auto calibration find them
    M208 Z0 S1 ; Set minimum Z

    ; Endstops
    M574 X2 Y2 Z2 S1 ; Set active high endstops
    M558 P4 H5 F120 T6000 ; Set Z probe type to switch and the dive height + speeds
    G31 P600 X30 Y-20 Z0.1 ; Set Z probe trigger value, offset and trigger height
    M557 R50 S20 ; Define mesh grid

    ; Drives
    M569 P0 S1 ; Drive 0 goes forwards
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S1 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 goes forwards
    M350 X16 Y16 Z16 E16 I0 ; Configure microstepping without interpolation
    M92 X80 Y80 Z80 E96 ; Set steps per mm
    M566 X1200 Y1200 Z1200 E1200 ; Set maximum instantaneous speed changes (mm/min)
    M203 X18000 Y18000 Z18000 E1200 ; Set maximum speeds (mm/min)
    M201 X1000 Y1000 Z1000 E1000 ; Set accelerations (mm/s^2)
    M906 X500 Y500 Z500 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Heaters
    M305 P0 T100000 B4267 C0 R4700 ; Set thermistor + ADC parameters for heater 0
    M143 H0 S120 ; Set temperature limit for heater 0 to 120C
    M305 P1 T100000 B4267 C0 R4700 ; Set thermistor + ADC parameters for heater 1
    M143 H1 S275 ; Set temperature limit for heater 1 to 275C

    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C

    ; Network
    M550 PUoY CS 3D Delta Printer ; Set machine name
    M540 PBE:EF:DE:AD:FE:ED ; Set MAC address
    M552 P192.168.0.10 S1 ; Enable network and set IP address
    M553 P255.255.255.0 ; Set netmask
    M554 P192.168.0.1 ; Set gateway
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; Fans
    M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on

    ; Custom settings
    M558 I1
    M501[/c]

    config-override.g
    [c]; This is a system-generated file - do not edit
    ; Delta parameters
    M665 L265.000 R221.376 H300.087 B70.0 X34.407 Y32.756 Z0.000
    M666 X-12.264 Y21.770 Z-9.506 A0.00 B0.00
    ; Heater model parameters
    M307 H0 A90.0 C700.0 D10.0 S1.00 V0.0 B1
    M307 H1 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H2 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H3 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H4 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H5 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H6 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    M307 H7 A340.0 C140.0 D5.5 S1.00 V0.0 B0
    [/c]

    bed.g
    [c]; bed.g
    ; called to perform automatic delta calibration via G32
    ;
    ; generated by RepRapFirmware Configuration Tool on Fri Jan 19 2018 14:23:09 GMT+0000 (GMT Standard Time)
    M561 ; clear any bed transform
    ; Probe the bed at 6 peripheral and 0 halfway points, and perform 6-factor auto compensation
    ; Before running this, you should have set up your Z-probe trigger height to suit your build, in the G31 command in config.g.
    G30 P0 X0 Y50 H0 Z-99999
    G30 P1 X29.43 Y16.99 H0 Z-99999
    G30 P2 X25.14 Y-14.52 H0 Z-99999
    G30 P3 X0 Y-32.78 H0 Z-99999
    G30 P4 X-43.3 Y-25 H0 Z-99999
    G30 P5 X-43.3 Y25 H0 Z-99999
    G30 P6 X0 Y0 H0 Z-99999 S6
    ; Use S-1 for measurements only, without calculations. Use S4 for endstop heights and Z-height only. Use S6 for full 6 factors
    ; If your Z probe has significantly different trigger heights depending on XY position, adjust the H parameters in the G30 commands accordingly. The value of each H parameter should be (trigger height at that XY position) - (trigger height at centre of bed)[/c]

    homedelta.g
    [c]; homedelta.g
    ; called to home all towers on a delta printer
    ;
    ; generated by RepRapFirmware Configuration Tool on Fri Jan 19 2018 14:23:09 GMT+0000 (GMT Standard Time)
    G91 ; relative positioning
    G1 S1 X245 Y245 Z245 F1800 ; move all towers to the high end stopping at the endstops (first pass)
    G1 X-5 Y-5 Z-5 F1800 S2 ; go down a few mm
    G1 S1 X10 Y10 Z10 F360 ; move all towers up once more (second pass)
    G1 Z-5 F6000 ; move down a few mm so that the nozzle can be centred
    G90 ; absolute positioning
    G1 X0 Y0 F6000 ; move X+Y to the centre[/c]

    As you can see, there are some 0 values where you say there shouldn't be, so that's a place for me to start working from. I will also increase the travel allowed for homing in the homedelta file and see what happens. Are there any other problems you can see?

    EDIT: Miraculously, just getting rid of the override and increasing the homing distance has fixed the homing behavior. It still seems to be moving in arcs though…

    EDIT 2: Nevermind, the homing behavior has gone back to what it was in the videos I posted.. It did this after I tried to do an auto calibrate, but I aborted it because I found some play in a couple of the screws. I restart and home and it is doing it again. Is there somewhere that it saves the intermediate results of a calibration attempt? I can't see a config override file?

    EDIT 3: My best "fix" thus far is to move the arms as close to the endstops as possible. It doing so, the offset it applies to the origin after homing seems to be minimal. Not really a fix, but I don't yet understand why the offset is applied. Anyway, in better news, it has been able to print successfully!



  • The R value in your config-override file is still out of whack. The X, Y and Z in your Homedelta.g G1 S1 X245 Y245 Z245 F1800 ; move all towers to the high end stopping at the endstops (first pass) can be raised up a lot.



  • What would an acceptable range for the R value be? I have raised the X, Y, and Z values to 280, and reaching the endstops hasn't been a problem since.

    As I said in my last post, I was actually able to get it to print a couple of things with pretty good results. This was done using manual Z calibration before each print started.

    The main problem now is the homing behaviour (I have a smart effector and parts on order, so hopefully that will arrive soon). I've worked with it enough to have come up with a rough workaround (which I detailed in edit 3 above), but I have still yet to work out why I need to do what I'm doing to get it to home to the origin…


  • administrators

    The R value is "delta radius" in the diagram in this post: https://www.duet3d.com/forum/thread.php?pid=36186#p36186. The value of 100mm that you have in the M665 command in config.g is probably a good starting point. The one in config.g is way too high, probably because you ran M500 after a failed calibration.

    Until you have calibration working, I suggest you delete or comment out the M501 command at the end of config.g, so that config-override.g will not be used.



  • I see! I measured that distance whilst I had the effector positioned as close to the centre of the bed as I could judge by eye, and I got a value of more like 160mm (can't remember the exact value right now). I'm using that value and it seems to be fine/nothing has changed for the worse beyond what is already happening.

    As I mentioned before, the homing behaviour is the only thing causing me problems. I have printed a couple of pieces now (using manual Z calibration) and I'm quite happy with the results… (it is ~0.05mm out in Y, 0.2mm out in X, and ~0.02mm out in Z)

    I've found my homing procedure to be highly repeatable. Would you be able to tell me what G28 does internally from a cold boot of the printer? It seems like successive homings "narrow in" on the true origin. It's a behaviour I'm having real trouble understanding and therefore solving. As far as I understand, homing doesn't make any change to any parameter that would be written to config-override.g by calling M500?


  • administrators

    On a delta printer, sending G28 flags all towers as not homed and then executes the homedelta.g file. So the behaviour is determined by the commands in that file.



  • Maybe this will help for reference. A copy of my M665 and M666 from my config-override.

    M665 L453.482 R216.578 H592.250 B390.0 X0.163 Y0.145 Z0.000
    M666 X0.019 Y-0.088 Z0.069 A-0.02 B-0.02

    Without a proper calibration, your numbers in the X, Y and Z for both lines are very skewed.



  • also the first G1 line in your home delta has 245 for the X Y & Z values increase it to 450 or so to make sure that home works on a single pass



  • Ok, home delta has been increased and is no longer a problem.
    By this point, I have a working printer, and its results are pretty good… I feel like I'm just going to live with this homing issue for now, since I know how to get around it. If I ever solve it I'll post what I did back here.

    Thanks all for your help!


  • administrators

    What homing issue are you still having?



  • Here's a video of it. Not sure how much better I can describe it!

    https://youtu.be/BbssbUlbcNU

    Not sure if it's related, but I was looking through the settings, and I found that my drive configuration reads so that the max values on the drive are significantly different. Couldn't find a way to change it, but maybe it's relevant?


Locked
 

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