Browse Source

G33 eccentric probe fixes (#6850)

* excentric probe config fix

* undo last commit

* eccentric probe fix

* oops

* !stow after each probe

* deploy/stow fix

* E parameter + bit of cleanup

* comment

* LCD menu fix
Luc Van Daele 7 years ago
parent
commit
896dfa0577
2 changed files with 28 additions and 30 deletions
  1. 27
    29
      Marlin/Marlin_main.cpp
  2. 1
    1
      Marlin/ultralcd.cpp

+ 27
- 29
Marlin/Marlin_main.cpp View File

5080
      *      V0  Dry-run mode. Report settings and probe results. No calibration.
5080
      *      V0  Dry-run mode. Report settings and probe results. No calibration.
5081
      *      V1  Report settings
5081
      *      V1  Report settings
5082
      *      V2  Report settings and probe results
5082
      *      V2  Report settings and probe results
5083
+     *
5084
+     *   E   Engage the probe for each point
5083
      */
5085
      */
5084
     inline void gcode_G33() {
5086
     inline void gcode_G33() {
5085
 
5087
 
5102
       }
5104
       }
5103
 
5105
 
5104
       const bool towers_set = !parser.seen('T'),
5106
       const bool towers_set = !parser.seen('T'),
5107
+                 stow_after_each = parser.seen('E'),
5105
                  _1p_calibration      = probe_points == 1,
5108
                  _1p_calibration      = probe_points == 1,
5106
                  _4p_calibration      = probe_points == 2,
5109
                  _4p_calibration      = probe_points == 2,
5107
                  _4p_towers_points    = _4p_calibration && towers_set,
5110
                  _4p_towers_points    = _4p_calibration && towers_set,
5120
                                _7p_double_circle    ? 0.5 : 0),
5123
                                _7p_double_circle    ? 0.5 : 0),
5121
                     radius = (1 + circles * 0.1) * delta_calibration_radius;
5124
                     radius = (1 + circles * 0.1) * delta_calibration_radius;
5122
         for (uint8_t axis = 1; axis < 13; ++axis) {
5125
         for (uint8_t axis = 1; axis < 13; ++axis) {
5123
-          if (!position_is_reachable_by_probe_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
5126
+          if (!position_is_reachable_xy(cos(RADIANS(180 + 30 * axis)) * radius, sin(RADIANS(180 + 30 * axis)) * radius)) {
5124
             SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
5127
             SERIAL_PROTOCOLLNPGM("?(M665 B)ed radius is implausible.");
5125
             return;
5128
             return;
5126
           }
5129
           }
5127
         }
5130
         }
5128
       }
5131
       }
5129
 
5132
 
5133
+      const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
5134
+      const float dx = (X_PROBE_OFFSET_FROM_EXTRUDER),
5135
+                  dy = (Y_PROBE_OFFSET_FROM_EXTRUDER);
5136
+      int8_t iterations = 0;
5137
+      float test_precision,
5138
+            zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
5139
+            zero_std_dev_old = zero_std_dev,
5140
+            e_old[XYZ] = {
5141
+              endstop_adj[A_AXIS],
5142
+              endstop_adj[B_AXIS],
5143
+              endstop_adj[C_AXIS]
5144
+            },
5145
+            dr_old = delta_radius,
5146
+            zh_old = home_offset[Z_AXIS],
5147
+            alpha_old = delta_tower_angle_trim[A_AXIS],
5148
+            beta_old = delta_tower_angle_trim[B_AXIS];
5149
+
5130
       SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
5150
       SERIAL_PROTOCOLLNPGM("G33 Auto Calibrate");
5131
 
5151
 
5132
       stepper.synchronize();
5152
       stepper.synchronize();
5138
         tool_change(0, 0, true);
5158
         tool_change(0, 0, true);
5139
       #endif
5159
       #endif
5140
       setup_for_endstop_or_probe_move();
5160
       setup_for_endstop_or_probe_move();
5141
-
5161
+      DEPLOY_PROBE();
5142
       endstops.enable(true);
5162
       endstops.enable(true);
5143
       home_delta();
5163
       home_delta();
5144
       endstops.not_homing();
5164
       endstops.not_homing();
5145
 
5165
 
5146
-      const static char save_message[] PROGMEM = "Save with M500 and/or copy to Configuration.h";
5147
-      float test_precision,
5148
-            zero_std_dev = (verbose_level ? 999.0 : 0.0), // 0.0 in dry-run mode : forced end
5149
-            zero_std_dev_old = zero_std_dev,
5150
-            e_old[XYZ] = {
5151
-              endstop_adj[A_AXIS],
5152
-              endstop_adj[B_AXIS],
5153
-              endstop_adj[C_AXIS]
5154
-            },
5155
-            dr_old = delta_radius,
5156
-            zh_old = home_offset[Z_AXIS],
5157
-            alpha_old = delta_tower_angle_trim[A_AXIS],
5158
-            beta_old = delta_tower_angle_trim[B_AXIS];
5159
-
5160
       // print settings
5166
       // print settings
5161
 
5167
 
5162
       SERIAL_PROTOCOLPGM("Checking... AC");
5168
       SERIAL_PROTOCOLPGM("Checking... AC");
5189
         SERIAL_EOL();
5195
         SERIAL_EOL();
5190
       }
5196
       }
5191
 
5197
 
5192
-      #if ENABLED(Z_PROBE_SLED)
5193
-        DEPLOY_PROBE();
5194
-      #endif
5195
-
5196
-      int8_t iterations = 0;
5197
-
5198
-      home_offset[Z_AXIS] -= probe_pt(0.0, 0.0 , true, 1); // 1st probe to set height
5198
+      home_offset[Z_AXIS] -= probe_pt(dx, dy, stow_after_each, 1); // 1st probe to set height
5199
       do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
5199
       do_probe_raise(Z_CLEARANCE_BETWEEN_PROBES);
5200
 
5200
 
5201
       do {
5201
       do {
5210
         // Probe the points
5210
         // Probe the points
5211
 
5211
 
5212
         if (!_7p_half_circle && !_7p_triple_circle) { // probe the center
5212
         if (!_7p_half_circle && !_7p_triple_circle) { // probe the center
5213
-          z_at_pt[0] += probe_pt(0.0, 0.0 , true, 1);
5213
+          z_at_pt[0] += probe_pt(dx, dy, stow_after_each, 1);
5214
         }
5214
         }
5215
         if (_7p_calibration) { // probe extra center points
5215
         if (_7p_calibration) { // probe extra center points
5216
           for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) {
5216
           for (int8_t axis = _7p_multi_circle ? 11 : 9; axis > 0; axis -= _7p_multi_circle ? 2 : 4) {
5217
             const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1;
5217
             const float a = RADIANS(180 + 30 * axis), r = delta_calibration_radius * 0.1;
5218
-            z_at_pt[0] += probe_pt(cos(a) * r, sin(a) * r, true, 1); // TODO: Needs error handling
5218
+            z_at_pt[0] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
5219
           }
5219
           }
5220
           z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
5220
           z_at_pt[0] /= float(_7p_double_circle ? 7 : probe_points);
5221
         }
5221
         }
5230
             for (float circles = -offset_circles ; circles <= offset_circles; circles++) {
5230
             for (float circles = -offset_circles ; circles <= offset_circles; circles++) {
5231
               const float a = RADIANS(180 + 30 * axis),
5231
               const float a = RADIANS(180 + 30 * axis),
5232
                           r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1));
5232
                           r = delta_calibration_radius * (1 + circles * (zig_zag ? 0.1 : -0.1));
5233
-              z_at_pt[axis] += probe_pt(cos(a) * r, sin(a) * r, true, 1); // TODO: Needs error handling
5233
+              z_at_pt[axis] += probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1);
5234
             }
5234
             }
5235
             zig_zag = !zig_zag;
5235
             zig_zag = !zig_zag;
5236
             z_at_pt[axis] /= (2 * offset_circles + 1);
5236
             z_at_pt[axis] /= (2 * offset_circles + 1);
5452
       #if ENABLED(DELTA_HOME_TO_SAFE_ZONE)
5452
       #if ENABLED(DELTA_HOME_TO_SAFE_ZONE)
5453
         do_blocking_move_to_z(delta_clip_start_height);
5453
         do_blocking_move_to_z(delta_clip_start_height);
5454
       #endif
5454
       #endif
5455
+      STOW_PROBE();
5455
       clean_up_after_endstop_or_probe_move();
5456
       clean_up_after_endstop_or_probe_move();
5456
       #if HOTENDS > 1
5457
       #if HOTENDS > 1
5457
         tool_change(old_tool_index, 0, true);
5458
         tool_change(old_tool_index, 0, true);
5458
       #endif
5459
       #endif
5459
-      #if ENABLED(Z_PROBE_SLED)
5460
-        RETRACT_PROBE();
5461
-      #endif
5462
     }
5460
     }
5463
 
5461
 
5464
   #endif // DELTA_AUTO_CALIBRATION
5462
   #endif // DELTA_AUTO_CALIBRATION

+ 1
- 1
Marlin/ultralcd.cpp View File

2323
       MENU_BACK(MSG_MAIN);
2323
       MENU_BACK(MSG_MAIN);
2324
       #if ENABLED(DELTA_AUTO_CALIBRATION)
2324
       #if ENABLED(DELTA_AUTO_CALIBRATION)
2325
         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
2325
         MENU_ITEM(gcode, MSG_DELTA_AUTO_CALIBRATE, PSTR("G33"));
2326
-        MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1 A"));
2326
+        MENU_ITEM(gcode, MSG_DELTA_HEIGHT_CALIBRATE, PSTR("G33 P1"));
2327
       #endif
2327
       #endif
2328
       MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
2328
       MENU_ITEM(submenu, MSG_AUTO_HOME, _lcd_delta_calibrate_home);
2329
       if (axis_homed[Z_AXIS]) {
2329
       if (axis_homed[Z_AXIS]) {

Loading…
Cancel
Save