Browse Source

double bump probing as a feature

Why double touch probing is not a good thing.

It's widely believed we can get better __probing__ results when using a double touch when probing.

Let's compare to double touch __homing__.
Or better let's begin with single touch __homing__.
We home to find out out position, so our position is unknown.
To find the endstop we have to move into the direction of the endstop.
The maximum way we have to move is a bit longer than the axis length.
When we arrive at the endstop - when it triggers, the stepper pulses are stopped immediately.
It's a sudden stop. No smooth deacceleration is possible.
Depending on the speed and the moving mass we lose steps here.
Only if we approached slow enough (below jerk speed?) we will not lose steps.

Moving a complete axis length, that slow, takes for ever.
To speed up homing, we now make the first approach faster, get a guess about our position,
back up a bit and make a second slower approach to get a exact result without losing steps.

What we do in double touch probing is the same. But the difference here is:
a. we already know where we are
b. if the first approach is to fast we will lose steps here to.
But this time there is no second approach to set the position to 0. We are measuring only.
The lost steps are permanent until we home the next time.

So if you experienced permanently rising values in M48 you now know why. (Too fast, suddenly stopped, first approach)

What can we do to improve probing?
We can use the information about our current position.
We can make a really fast, but deaccelerated, move to a place we know it is a bit before the trigger point.
And then move the rest of the way really slow.
AnHardt 9 years ago
parent
commit
7188ce0ad6

+ 4
- 2
Marlin/Configuration.h View File

@@ -486,10 +486,12 @@
486 486
 
487 487
 // X and Y axis travel speed (mm/m) between probes
488 488
 #define XY_PROBE_SPEED 8000
489
-// Speed for the first approach when probing
489
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
490 490
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
491
-// Speed for the second approach when probing
491
+// Speed for the "accurate" probe of each point
492 492
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
493
+// Use double touch for probing
494
+//#define PROBE_DOUBLE_TOUCH
493 495
 
494 496
 //
495 497
 // Allen Key Probe is defined in the Delta example configurations.

+ 13
- 8
Marlin/Marlin_main.cpp View File

@@ -2110,16 +2110,21 @@ static void clean_up_after_endstop_or_probe_move() {
2110 2110
       planner.bed_level_matrix.set_to_identity();
2111 2111
     #endif
2112 2112
 
2113
-    do_blocking_move_to_z(-(Z_MAX_LENGTH + 10), Z_PROBE_SPEED_FAST);
2114
-    endstops.hit_on_purpose();
2115
-    set_current_from_steppers_for_axis(Z_AXIS);
2116
-    SYNC_PLAN_POSITION_KINEMATIC();
2113
+    #if ENABLED(PROBE_DOUBLE_TOUCH)
2114
+      do_blocking_move_to_z(-(Z_MAX_LENGTH + 10), Z_PROBE_SPEED_FAST);
2115
+      endstops.hit_on_purpose();
2116
+      set_current_from_steppers_for_axis(Z_AXIS);
2117
+      SYNC_PLAN_POSITION_KINEMATIC();
2117 2118
 
2118
-    // move up the retract distance
2119
-    do_blocking_move_to_z(current_position[Z_AXIS] + home_bump_mm(Z_AXIS), Z_PROBE_SPEED_FAST);
2119
+      // move up the retract distance
2120
+      do_blocking_move_to_z(current_position[Z_AXIS] + home_bump_mm(Z_AXIS), Z_PROBE_SPEED_FAST);
2121
+    #else
2122
+      // move fast, close to the bed
2123
+      do_blocking_move_to_z(home_bump_mm(Z_AXIS), Z_PROBE_SPEED_FAST);
2124
+    #endif
2120 2125
 
2121
-    // move back down slowly to find bed
2122
-    do_blocking_move_to_z(current_position[Z_AXIS] - home_bump_mm(Z_AXIS) * 2, Z_PROBE_SPEED_SLOW);
2126
+    // move down slowly to find bed
2127
+    do_blocking_move_to_z(current_position[Z_AXIS] -2.0*home_bump_mm(Z_AXIS), Z_PROBE_SPEED_SLOW);
2123 2128
     endstops.hit_on_purpose();
2124 2129
     set_current_from_steppers_for_axis(Z_AXIS);
2125 2130
     SYNC_PLAN_POSITION_KINEMATIC();

+ 4
- 2
Marlin/example_configurations/Cartesio/Configuration.h View File

@@ -487,10 +487,12 @@
487 487
 
488 488
 // X and Y axis travel speed (mm/m) between probes
489 489
 #define XY_PROBE_SPEED 8000
490
-// Speed for the first approach when probing
490
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
491 491
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
492
-// Speed for the second approach when probing
492
+// Speed for the "accurate" probe of each point
493 493
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
494
+// Use double touch for probing
495
+//#define PROBE_DOUBLE_TOUCH
494 496
 
495 497
 //
496 498
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/Felix/Configuration.h View File

@@ -469,10 +469,12 @@
469 469
 
470 470
 // X and Y axis travel speed (mm/m) between probes
471 471
 #define XY_PROBE_SPEED 8000
472
-// Speed for the first approach when probing
472
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
473 473
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
474
-// Speed for the second approach when probing
474
+// Speed for the "accurate" probe of each point
475 475
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
476
+// Use double touch for probing
477
+//#define PROBE_DOUBLE_TOUCH
476 478
 
477 479
 //
478 480
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/Felix/DUAL/Configuration.h View File

@@ -467,10 +467,12 @@
467 467
 
468 468
 // X and Y axis travel speed (mm/m) between probes
469 469
 #define XY_PROBE_SPEED 8000
470
-// Speed for the first approach when probing
470
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
471 471
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
472
-// Speed for the second approach when probing
472
+// Speed for the "accurate" probe of each point
473 473
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
474
+// Use double touch for probing
475
+//#define PROBE_DOUBLE_TOUCH
474 476
 
475 477
 //
476 478
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/Hephestos/Configuration.h View File

@@ -479,10 +479,12 @@
479 479
 
480 480
 // X and Y axis travel speed (mm/m) between probes
481 481
 #define XY_PROBE_SPEED 8000
482
-// Speed for the first approach when probing
482
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
483 483
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
484
-// Speed for the second approach when probing
484
+// Speed for the "accurate" probe of each point
485 485
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
486
+// Use double touch for probing
487
+//#define PROBE_DOUBLE_TOUCH
486 488
 
487 489
 //
488 490
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/Hephestos_2/Configuration.h View File

@@ -480,10 +480,12 @@
480 480
 
481 481
 // X and Y axis travel speed (mm/m) between probes
482 482
 #define XY_PROBE_SPEED 8000
483
-// Speed for the first approach when probing
483
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
484 484
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
485
-// Speed for the second approach when probing
485
+// Speed for the "accurate" probe of each point
486 486
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
487
+// Use double touch for probing
488
+//#define PROBE_DOUBLE_TOUCH
487 489
 
488 490
 //
489 491
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/K8200/Configuration.h View File

@@ -504,10 +504,12 @@
504 504
 
505 505
 // X and Y axis travel speed (mm/m) between probes
506 506
 #define XY_PROBE_SPEED 8000
507
-// Speed for the first approach when probing
507
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
508 508
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
509
-// Speed for the second approach when probing
509
+// Speed for the "accurate" probe of each point
510 510
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
511
+// Use double touch for probing
512
+//#define PROBE_DOUBLE_TOUCH
511 513
 
512 514
 //
513 515
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/K8400/Configuration.h View File

@@ -487,10 +487,12 @@
487 487
 
488 488
 // X and Y axis travel speed (mm/m) between probes
489 489
 #define XY_PROBE_SPEED 8000
490
-// Speed for the first approach when probing
490
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
491 491
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
492
-// Speed for the second approach when probing
492
+// Speed for the "accurate" probe of each point
493 493
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
494
+// Use double touch for probing
495
+//#define PROBE_DOUBLE_TOUCH
494 496
 
495 497
 //
496 498
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/K8400/Dual-head/Configuration.h View File

@@ -487,10 +487,12 @@
487 487
 
488 488
 // X and Y axis travel speed (mm/m) between probes
489 489
 #define XY_PROBE_SPEED 8000
490
-// Speed for the first approach when probing
490
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
491 491
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
492
-// Speed for the second approach when probing
492
+// Speed for the "accurate" probe of each point
493 493
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
494
+// Use double touch for probing
495
+//#define PROBE_DOUBLE_TOUCH
494 496
 
495 497
 //
496 498
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

@@ -487,10 +487,12 @@
487 487
 
488 488
 // X and Y axis travel speed (mm/m) between probes
489 489
 #define XY_PROBE_SPEED 8000
490
-// Speed for the first approach when probing
490
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
491 491
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
492
-// Speed for the second approach when probing
492
+// Speed for the "accurate" probe of each point
493 493
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
494
+// Use double touch for probing
495
+//#define PROBE_DOUBLE_TOUCH
494 496
 
495 497
 //
496 498
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/RigidBot/Configuration.h View File

@@ -484,10 +484,12 @@
484 484
 
485 485
 // X and Y axis travel speed (mm/m) between probes
486 486
 #define XY_PROBE_SPEED 8000
487
-// Speed for the first approach when probing
487
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
488 488
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
489
-// Speed for the second approach when probing
489
+// Speed for the "accurate" probe of each point
490 490
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
491
+// Use double touch for probing
492
+//#define PROBE_DOUBLE_TOUCH
491 493
 
492 494
 //
493 495
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/SCARA/Configuration.h View File

@@ -495,10 +495,12 @@
495 495
 
496 496
 // X and Y axis travel speed (mm/m) between probes
497 497
 #define XY_PROBE_SPEED 8000
498
-// Speed for the first approach when probing
498
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
499 499
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
500
-// Speed for the second approach when probing
500
+// Speed for the "accurate" probe of each point
501 501
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
502
+// Use double touch for probing
503
+//#define PROBE_DOUBLE_TOUCH
502 504
 
503 505
 //
504 506
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/TAZ4/Configuration.h View File

@@ -508,10 +508,12 @@
508 508
 
509 509
 // X and Y axis travel speed (mm/m) between probes
510 510
 #define XY_PROBE_SPEED 8000
511
-// Speed for the first approach when probing
511
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
512 512
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
513
-// Speed for the second approach when probing
513
+// Speed for the "accurate" probe of each point
514 514
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
515
+// Use double touch for probing
516
+//#define PROBE_DOUBLE_TOUCH
515 517
 
516 518
 //
517 519
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/WITBOX/Configuration.h View File

@@ -478,10 +478,12 @@
478 478
 
479 479
 // X and Y axis travel speed (mm/m) between probes
480 480
 #define XY_PROBE_SPEED 8000
481
-// Speed for the first approach when probing
481
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
482 482
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
483
-// Speed for the second approach when probing
483
+// Speed for the "accurate" probe of each point
484 484
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
485
+// Use double touch for probing
486
+//#define PROBE_DOUBLE_TOUCH
485 487
 
486 488
 //
487 489
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

@@ -487,10 +487,12 @@
487 487
 
488 488
 // X and Y axis travel speed (mm/m) between probes
489 489
 #define XY_PROBE_SPEED 8000
490
-// Speed for the first approach when probing
490
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
491 491
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
492
-// Speed for the second approach when probing
492
+// Speed for the "accurate" probe of each point
493 493
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
494
+// Use double touch for probing
495
+//#define PROBE_DOUBLE_TOUCH
494 496
 
495 497
 //
496 498
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/delta/biv2.5/Configuration.h View File

@@ -529,10 +529,12 @@
529 529
 
530 530
 // X and Y axis travel speed (mm/m) between probes
531 531
 #define XY_PROBE_SPEED 4000
532
-// Speed for the first approach when probing
532
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
533 533
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
534
-// Speed for the second approach when probing
534
+// Speed for the "accurate" probe of each point
535 535
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
536
+// Use double touch for probing
537
+//#define PROBE_DOUBLE_TOUCH
536 538
 
537 539
 // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
538 540
 // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.

+ 4
- 2
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -529,10 +529,12 @@
529 529
 
530 530
 // X and Y axis travel speed (mm/m) between probes
531 531
 #define XY_PROBE_SPEED 4000
532
-// Speed for the first approach when probing
532
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
533 533
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
534
-// Speed for the second approach when probing
534
+// Speed for the "accurate" probe of each point
535 535
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
536
+// Use double touch for probing
537
+//#define PROBE_DOUBLE_TOUCH
536 538
 
537 539
 // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
538 540
 // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.

+ 4
- 2
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -529,10 +529,12 @@
529 529
 
530 530
 // X and Y axis travel speed (mm/m) between probes
531 531
 #define XY_PROBE_SPEED 4000
532
-// Speed for the first approach when probing
532
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
533 533
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
534
-// Speed for the second approach when probing
534
+// Speed for the "accurate" probe of each point
535 535
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
536
+// Use double touch for probing
537
+//#define PROBE_DOUBLE_TOUCH
536 538
 
537 539
 // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
538 540
 // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.

+ 4
- 2
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -520,10 +520,12 @@
520 520
 
521 521
 // X and Y axis travel speed (mm/m) between probes
522 522
 #define XY_PROBE_SPEED 8000
523
-// Speed for the first approach when probing
523
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
524 524
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
525
-// Speed for the second approach when probing
525
+// Speed for the "accurate" probe of each point
526 526
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
527
+// Use double touch for probing
528
+//#define PROBE_DOUBLE_TOUCH
527 529
 
528 530
 // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
529 531
 // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.

+ 4
- 2
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

@@ -527,10 +527,12 @@
527 527
 
528 528
 // X and Y axis travel speed (mm/m) between probes
529 529
 #define XY_PROBE_SPEED 8000
530
-// Speed for the first approach when probing
530
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
531 531
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
532
-// Speed for the second approach when probing
532
+// Speed for the "accurate" probe of each point
533 533
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
534
+// Use double touch for probing
535
+//#define PROBE_DOUBLE_TOUCH
534 536
 
535 537
 // Allen key retractable z-probe as seen on many Kossel delta printers - http://reprap.org/wiki/Kossel#Automatic_bed_leveling_probe
536 538
 // Deploys by touching z-axis belt. Retracts by pushing the probe down. Uses Z_MIN_PIN.

+ 4
- 2
Marlin/example_configurations/makibox/Configuration.h View File

@@ -490,10 +490,12 @@
490 490
 
491 491
 // X and Y axis travel speed (mm/m) between probes
492 492
 #define XY_PROBE_SPEED 8000
493
-// Speed for the first approach when probing
493
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
494 494
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
495
-// Speed for the second approach when probing
495
+// Speed for the "accurate" probe of each point
496 496
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
497
+// Use double touch for probing
498
+//#define PROBE_DOUBLE_TOUCH
497 499
 
498 500
 //
499 501
 // Allen Key Probe is defined in the Delta example configurations.

+ 4
- 2
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

@@ -476,10 +476,12 @@
476 476
 
477 477
 // X and Y axis travel speed (mm/m) between probes
478 478
 #define XY_PROBE_SPEED 8000
479
-// Speed for the first approach when probing
479
+// Speed for the first approach when double-probing (with PROBE_DOUBLE_TOUCH)
480 480
 #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
481
-// Speed for the second approach when probing
481
+// Speed for the "accurate" probe of each point
482 482
 #define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
483
+// Use double touch for probing
484
+//#define PROBE_DOUBLE_TOUCH
483 485
 
484 486
 //
485 487
 // Allen Key Probe is defined in the Delta example configurations.

Loading…
Cancel
Save