Clarification of self-leveling bed



  • Hi guys, I modified my coreXY by creating automatic leveling with 3 motors and the system moves and seems to correct but I have some doubts about which I kindly ask your help (Duet 2wifi firmware 2.05 + duex2):

    1. G30 points to probe: do the measurements to be set starting from X0 Y0 mean up to the tip of the print nozzle or to the tip of the bltouch pin?

    2. How do I ensure that each point to be probed is probed 3 times in a row?

    Thanks in advance
    Luca



  • @luc the XY coordinates are for the nozzle. You should define the offset for the BLTouch, from the nozzle, in your config file in the definition of the probe. You will need to check however that for all the points you probe the BLTouch will actually be over the bed ๐Ÿ™‚

    You should define the points for automatic levelling (auto tramming) in the bed.g file. This is what is run when you run auto tramming (i.e. when you give the printer the command G32, it runs bed.g).

    If you want to set up repeated probing, you can either use the A and S parameters in your probe config (M558 in config.g), or you can just add extra points in bed.g (just make sure you set the P parameters correctly!).

    I assume you have found this page:
    https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors

    It should guide you through most of it but post back if you still have any questions



  • Hello and thanks for the reply. So, if I understand correctly, all the values โ€‹โ€‹in G30 refer from X0Y0 up to the nozzle tip and the system takes into account the bltouch offset set in G31 .... Correct?



  • @luc Yes that's correct ๐Ÿ™‚



  • G30 does not take the offset on the calculation. Only M557 does.

    So for example If you want to probe at X200 Y200 and your probe ist 20 mm to the left you have to have this code

    G1 X180 Y200
    G30
    

    But when you run a

    G29 S0
    

    then the offset will be taken into place.
    So If your M557 is

    M557 X5:200 Y5:200 P3
    

    and your G31 says X20 Y0 Z0

    Then the first probe point ist X20 but the head will move to X40 to compansate for that. Only keep in mind that the last Point is X200 so the firmware will try to go to X220. Sometime the carriage can not get that far because it goes into a mechanic end!

    Edit to clarify

    G30 X200 Y200 P1  
    

    will use the offset of the probe. Only a normal G30 ignores them! But the command can not be used to home Z



  • Thanks for the replies. I did some tests and I think I got better accuracy.

    I still have a doubt: In M558 I added "A3" to get the probe 3 times in the same point but I didn't get anything. I'm definitely wrong.
    This is mine: M558 P9 H5 F120 T6000, what should I do to probe 3 times for each point?


  • Moderator

    @luc See https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_M558_in_RepRapFirmware_2_x_and_earlier

    Annn Maximum number of times to probe each point, default 1. Maximum, as of 2.03, is 31. Setting M558 A parameter to anything >31 set it to 0 instead of to 31
    Snnn Tolerance when probing multiple times, default 0.03mm

    The A and S parameters control multiple probing. Probing is repeated until two consecutive probe attempts produce results that differ by no more than the S parameter; then the average of those two results is used.

    So adding A3 may result in only two probes, if they are within 0.03mm of each other:
    M558 P9 H5 F120 T6000 A3 S0.03
    Don't forget if you change config.g you need to reset the board, or run M98 P"config.g" to implement new M558 command, or enter the command into the Gcode console. Check settings by sending M558 with no parameters, eg (from RRF3):

    M558
    Z Probe 0: type 1, input pin zprobe.in, output pin nil, dive height 5.0mm, probe speed 120mm/min, travel speed 6000mm/min, recovery time 0.00 sec, heaters normal, max taps 1, max diff 0.03

    Ian



  • Yes, I've been reading that guide since yesterday but something escapes me.
    I had entered this M558 P9 H5 F120 T6000 A3 without "S0.003" and it didn't work. Now I don't know if it didn't work because I didn't write "S0.003" or because I didn't reset the card.

    Is it also sufficient to turn it off and on again to reset it? If yes I had.



  • Normal power reset is good enough. What is now you config.g?



  • luc
    Wed 23 Sep 2020, 17:47

    At this time the leveling system seems to be working correctly. I would like to try to probe the same point 3 times in a row:

    ; Drives
    M569 P0 S1 ; Physical drive 0 goes forwards
    M569 P1 S1 ; Physical drive 0 goes forwards
    M569 P3 S0 ; Physical drive 3 goes backwards
    M569 P2 S0 ; Drive 2 goes forwards Ant Sx
    M569 P5 S0 ; Drive 5 goes forwards Post Center
    M569 P6 S0 ; Drive 6 goes forwards Ant Dx
    M584 X0 Y1 E3 ; Driver 0 controls X motor, 1 control Y, 3 control E motor
    M584 Z2:5:6 ; Driver 2,5,6 for control the three z-axis
    M671 X-54:149:350 Y54:374:54 S10 ; Defines leveling screw locations-Snn Maximum correction in mm to apply to each leadscrew dal nozzle
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X160.00 Y160.00 Z800.00 E880.00 ; Set steps per mm

    ; Speeds
    M566 X900.00 Y900.00 Z60.00 E3000.00 ; Set maximum instantaneous speed changes (mm/min) Jerk (era E1600)
    M203 X15000.00 Y15000.00 Z600.00 E6000.00 ; Set maximum speeds (mm/min)(era Z400)
    M201 X1000.00 Y1000.00 Z100.00 E6000.00 ; Set accelerations (mm/s^2)(era Z60)
    M204 P3000 T2000 ; Set printing and travel accelerations

    ; Motor currents
    M906 X1700.00 Y1700.00 Z1700.00 E1100.00 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X293 Y290 Z270 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y1 S0 ; Set active low and disabled endstops
    ; M574 X1 Y1 S3 ; use sensorless homing for X and Y, endstops are at low end

    ; Z-Probe
    M574 Z1 S2 ; Set endstops controlled by probe
    M307 H3 A-1 C-1 D-1 ; Disable heater on PWM channel for BLTouch
    ; M307 H5 A-1 C-1 D-1 ; Disable heater on PWM channel for BLTouch
    M558 P9 H5 F120 T6000 ; Set Z probe type 9 to bltouch and the dive height + speeds
    G31 P25 X33.5 Y0 Z1.00 ; Set Z probe trigger value, offset and trigger height (0.9)
    M557 X40:260 Y30:270 P3 ; Define mesh grid

    ; bed.g
    M561 ; clear any bed transform
    G29 S2; Clear bed height map
    ; Probe 3โ€point
    G28 ; home
    G30 P0 X40 Y30 Z-99999 ; probe near front left corner
    G30 P1 X149 Y267 Z-99999 ; probe near center rear
    G30 P2 X280 Y30 Z-99999 S3 ; probe near front right corner



  • @luc said in Clarification of self-leveling bed:

    M558 P9 H5 F120 T6000

    to

    M558 P9 H5 F120 T6000 A3 S0.003


  • Moderator

    A3 is just saying probe up to 3 times or until you get 2 consistent results, whichever happens first. If you specify an S value it will use that for the consistency variance. The default is 0.03mm difference.

    Why do you want 3 times each?

    In my opinion if you want the highest accuracy you would want a high A value and a small S value and then let the probe go as many times as needed to get the accuracy you set with S.

    For example, I use A10 and S0.003. Sometimes it will probe twice and both will be within 0.003 of each other and it's done. Other times it may take 3 or 4 or more attempts.

    Also, if you're using a BLTouch you can increase accuracy simply by slowing down the dive speed from 120 to 60, and adding a brief pause before the probe to allow the pin and printer to settle with a R0.2 which pauses for 0.2 seconds.



  • @Phaedrux said in Clarification of self-leveling bed:

    Why do you want 3 times each?

    I try and try to understand the logic of the operation.
    I did 3 tests with three attempts and it was very interesting without the pause and without changing anything else: in two points he probed only 2 times and in one point he probed 3 times. This result makes me reflect and I try to understand why only at that point.

    In my opinion if you want the highest accuracy you would want a high A value and a small S value and then let the probe go as many times as needed to get the accuracy you set with S.

    For example, I use A10 and S0.003. Sometimes it will probe twice and both will be within 0.003 of each other and it's done. Other times it may take 3 or 4 or more attempts.

    Also, if you're using a BLTouch you can increase accuracy simply by slowing down the dive speed from 120 to 60, and adding a brief pause before the probe to allow the pin and printer to settle with a R0.2 which pauses for 0.2 seconds.

    very interesting and useful to know .... thank you very much


  • Moderator

    I suggest you do a probe repeatability test, it will show you the results of several probing moves in a row and you'll see how there is a bit of variability.

    https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Calibrate_the_Z_probe_trigger_height

    Do this procedure but run the G30 S-1 multiple times and check the results. Now you can modify some of the parameters in M558 and redo the test to see how they change the results.


Log in to reply