<p>My recently installed BLTouch probe regularly fails to perform ABL properly.  There seem to be 3-4 failure modes:</p>

<ol>
<li>Probe manages some points but fails partway through, with a "probing failed" message on the LCD screen, rendering it necessary to power-cycle the printer</li>
<li>Probe deploys on some point, then stows itself immediately, and treats that point as being a centimeter or two about where it actually is. </li>
<li>Probe completes all 9 points, then heats the nozzle in the back corner and never moves. The progress bar on the LCD counts up and eventually it claims to have finished the print, but the steppers (including the extruder) never move.</li>
<li><p>Probe flashes red throughout the cycle, which I believe means it failed a self-test probably because the mainboard started trying to speak to it before it was initialized, but occasionally when this occurs, it still works as expected.</p>

<p>For avoidance of doubt - sometimes it actually does work, and I get beautiful prints that adhere well during printing but are easily removed afterwards.  And I have never had any issues with the Z homing using the probe, only the auto mesh levelling.</p></li>
</ol>

<p>My setup:</p>

<ul>
<li>Creality Ender 3</li>
<li>v1.1.4 mainboard with non-silent steppers</li>
<li>genuine BLTouch v3, with official Creality pin27 kit</li>
<li>Marlin 1.1.9 bugfix firmware, downloaded as hex file </li>
<li>single iteration of probing</li>
<li>9 point levelling mesh</li>
<li>Ultimaker Cura slicer 4.2.0</li>
<li>Start G-code heats bed, homes <code>G28</code>, performs ABL <code>G29</code>, then heats nozzle (I don't have the actual G-code on my now as I'm away from my slicing computer)</li>
</ul>

<p>[Related question: <a href="https://3dprinting.stackexchange.com/questions/10345/bl-touch-probing-fails-intermittently">BL Touch Probing Fails Intermittently</a> but answers do not apply as I am already using bugfix firmware and have checked all the cabling and connections]</p>

[{'answer_id': 11229, 'author': 'Mick', 'author_id': 3953, 'author_profile': 'https://3dprinting.stackexchange.com/users/3953', 'pm_score': 2, 'selected': False, 'text': '<p>It sounds like you have "Origin at center" checked in your slicer\'s printer definition. That is generally only used with delta printers. Most Cartesian printers have the origin at the front-left corner of the build plate. Uncheck "Origin at center" and re-slice.</p>\n\n<p>Providing that you have set up your slicer with the build plate dimensions and origin correctly defined, your models will be printed where the slicer shows them in the preview. You can rearrange the models before you slice, of course.</p>\n'}, {'answer_id': 11233, 'author': 'Trish', 'author_id': 8884, 'author_profile': 'https://3dprinting.stackexchange.com/users/8884', 'pm_score': 2, 'selected': False, 'text': '<p>STL files contain an origin. However, this is totally ignored when generating G-code, the slicer chooses the origin based on settings. </p>\n\n<p>G-code itself is a string of commands. One of these <code>G28</code> calls for the origin of the machine to be found by moving mechanically to this position. Usually, it is all formatted to take this or the power-up position as 0 and then moves relative to that. It always moves in reference to the last position, or this 0 (absolute mode).</p>\n\n<p>.x3d is an XML type of file that describes a 3D model. It reformats G-code to be read by different types of machines. It too only moves with reference to the last position, taking the position on powerup as 0 to move against unless homed.</p>\n\n<h2>Convention</h2>\n\n<p>The convention for CNC is, that the front-top-left corner of the workpiece is to be <span class="math-container">$\\{0;0;0\\}$</span> as the origin for the <a href="https://en.wikipedia.org/wiki/Right-hand_rule" rel="nofollow noreferrer">right-hand-rule</a>. CNC then usually operates in a purely positive XY area and only works in negative Z, which is fitting for cutting. It doesn\'t preclude negative areas as to achieve cuts, going into the negative room is sometimes mandatory.</p>\n\n<p>Taking this convention to 3D printing puts the front-left(-bottom) corner of the build plate (volume) to be the origin, because of the right-hand rule: The coordinate room is then strictly positive in XYZ (right as X, back for Y, up for Z), all absolute, strictly positive coordinates within the positive build volume can be moved to. However, instead of allowing negative coordinates, 3D printing does not allow any coordinates outside of the build volume that is ranged from 0 to the maxima set in the firmware.</p>\n\n<p>This convention fails for Delta printers, which pretty much extrapolate the heights of the individual steppers via trigonometric calculations from cylinder coordinates <span class="math-container">$\\{ r ; \\phi ; z\\}$</span> - radius, an angle of 0° to 360° and the Z-coordinate. In this coordinate room, math gets much easier putting 0 into the center of the build plate, which is circular; The transformation to cartesian coordinates is <span class="math-container">$\\{ r \\cos(\\phi) ; r\\sin(\\phi) ; z\\}$</span>; the inverse transformation from cartesian to cylinder coordinates is somewhat more complex and <a href="https://en.wikipedia.org/wiki/Polar_coordinate_system#Converting_between_polar_and_Cartesian_coordinates" rel="nofollow noreferrer">uses case differentiation.</a>.</p>\n\n<h2>Error</h2>\n\n<p>Let\'s say the build plate has dimensions <span class="math-container">$a$</span> and <span class="math-container">$b$</span> and the corner with the green clip is <span class="math-container">$\\{0;0;0\\}$</span>. The item is sliced to the position <span class="math-container">$\\{a/2 ; b/2\\}$</span> of the bed. It appears at <span class="math-container">$\\{a ; b/2\\}$</span> and <span class="math-container">$\\{a/2 ; b\\}$</span> respectively. This hints that the center of the bed is somehow taken as one of the coordinates.</p>\n\n<p>If the corner without the clip is assumed as <span class="math-container">$\\{0;0;0\\}$</span>, then X should be to the right, Y to the front following the right-hand-rule. To see if the coordinates might be skewed, the following command snippet would be useful. Please execute them one by one.</p>\n\n<pre><code>G28 ; home\nG1 Z5 ; lift off the bed 5 mm to prevent accidental collisions\nG1 X50 F500 ; move 50 mm to positive X - in case of back-right corner home this is to the LEFT\nG1 Y50 F500 ; move to what ends up 50 50 5 - in case of back-right corner home this is to the FRONT\n</code></pre>\n\n<h3>Fixing</h3>\n\n<p>The problem is <em>probably not</em> the slicer but most likely the firmware defining either the movement axis or the home wrong (either the wrong corner is chosen or the movement axis are defined incorrectly) on the printer. It seems to be totally messed up and should be reflashed with a fresh copy.</p>\n\n<p>It would be a good chance to learn by taking a Blanco variant of marlin and adjusting it to the own printer by chucking in the dimensions into <code>configuration.h</code> and starting from there.</p>\n'}, {'answer_id': 11243, 'author': '0scar', 'author_id': 5740, 'author_profile': 'https://3dprinting.stackexchange.com/users/5740', 'pm_score': 2, 'selected': False, 'text': '<p>First of all, the firmware determines where your origin of the printer is. This implies that you need to properly set bed dimensions and offset values from the end stop switches in the firmware (usually not necessary out-of-the-box, but important when a newer or different firmware version is uploaded). These offsets determine where the origin of the bed plate is located. For Marlin firmware it is very common to have the origin specified at the front left corner (when facing the printer). From the <a href="https://github.com/MarlinFirmware/Marlin/blob/1.1.x/Marlin/Configuration.h#L765" rel="nofollow noreferrer">configuration of Marlin</a> we find that by definition the origin is in the front-left corner (note that this can be rotated 180 degrees in certain printers, so the aft-right):</p>\n\n<pre>\n *      +-- BACK ---+\n *      |           |\n *    L |    (+) P  | R\n *    E |           | I\n *    F | (-) N (+) | G\n *    T |           | H\n *      |    (-)    | T\n *      |           |\n *      O-- FRONT --+\n *    (0,0)\n</pre>\n\n<p><strong>How do I find the physical origin of the printer?</strong><br>\nThis can be tested by instructing the head/nozzle to go to e.g. (0, 0, 15) using a <a href="/q/10573">terminal/console</a> or a simple G-code file with a move to that coordinate that you print from SD card (e.g. <code>G1 X0 Y0 Z15 F500</code>); <em>note a Z of 15 is chosen for safety!</em>. When this is performed, the nozzle should be at the (elevated, so X, Y) origin as defined by your firmware. Usually this is at the left front corner of your build plate (there may be clips there, so therefore the elevated value), but this may be different depending on the firmware settings or firmware brand.</p>\n\n<p>Next step is to configure the slicer as such that this coincides with the actual origin. Incorrect slicer settings can cause the slicer to assume the origin is at a different position than your actual position. In Ultimaker Cura, the "Origin at center" is notoriously known for this when the physical origin is not in the center, but in a corner.</p>\n'}, {'answer_id': 11259, 'author': 'zipzit', 'author_id': 5014, 'author_profile': 'https://3dprinting.stackexchange.com/users/5014', 'pm_score': 4, 'selected': True, 'text': '<p>So it turns out there are elements from each of the previous answers that make sense here, but its not a clear picture.  I\'ve spent a whole lot of time trying to make sense of this. I also upgraded my firmware to <a href="https://www.thingiverse.com/thing:32084" rel="nofollow noreferrer">Sailfish.</a>  </p>\n\n<p>For the MakerBot Replicator (or FastForge Creator) family of 3d printers, the origin of the build plate is NOT at any of the corners, its right in the center of the build plate. Reference <a href="https://www.sailfishfirmware.com/doc/parameters-home-offsets.html#x20-630004.1" rel="nofollow noreferrer">here.</a> </p>\n\n<blockquote>\n  <p>4.1 Home Offsets:<br>\n  By convention, <strong>the center of the build platform</strong> is assumed to be the point (0,0,0) in XYZ space. The X, Y, and Z <strong>home offsets</strong> tell the printer the location of the X, Y, and Z <strong>endstops</strong> in relation to the build platform’s center.</p>\n</blockquote>\n\n<p>Looks like this:</p>\n\n<p><a href="https://i.stack.imgur.com/c2YlJ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/c2YlJ.png" alt="Center of build plate is origin"></a></p>\n\n<p>And it would appear that most other 3D printers are not using this convention. Sigh.   From my testing, the main control of print location is within the G-Code generated by the slicer.  The tool I was using, Slic3r does give one a chance to correct that\nadjustment.  You have to go to top menu <code>Settings --&gt; Printer Settings --&gt; Size and Coordinates (Bed Shape) --&gt; Set</code> to get a nice popup visual tool.  See below.</p>\n\n<p>Unfortunately the default setting is accurate for the overall bed size, but is a fail for the origin location on the bed.  The default origin is set at 0,0, in the corner.  Ouch. Big ouch.  The origin needs to be located right in the center of the build plate (to be consistent with the firmware controlling the print for this family of printers).  It <strong>should</strong> look like this:</p>\n\n<p><a href="https://i.stack.imgur.com/iXV61.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/iXV61.png" alt="print bed origin setup"></a></p>\n\n<p>Note, when you tell the printer to go to \'home\' it doesn\'t go to origin (0,0,0) it goes to the endstops.  </p>\n\n<pre><code> G68 X0 Y0 F500 ; Perform Homing Routine\n</code></pre>\n\n<p>So as long as you understand the quirks of these printers things will work out.  You have to ensure offsets are set accurately in firmware config files. (Replicator / Sailfish) And you have to indicate the correct center location to the slicer program.  I will say the advice given here was of some help in understanding this. Many thanks.  I\'m posting here in case others using the Replicator or FastForge Creator series of printers is having troubles centering their prints on the build plate.   </p>\n\n<p>Additional info for anybody using a MakerBot Replicator or Flashforge Creator series printer with Slic3r. I wanted to add my custom G-code stuff. The default Slic3r stuff definitely did not work.  </p>\n\n<p>Printer Settings --> Custom G-Code --> Start G-Code</p>\n\n<pre><code>M103 ; Turn all extruders off, Extruder Retraction\nG21 ; set units to mm\nG90 ; Use absolute coordinates\n(**** begin homing ****)\nG162 X Y F2500 ; home XY axes to maximum stops\nG161 Z F1100 ; home Z axis to minimum stop\nG92 Z-5 ; Set Position Z =-5mm\nG1 Z0.0 ; move Z to "0"\nG161 Z F100 ; home Z axis to minimum stop slowly\nM132 X Y Z A B ; Recall stored home offsets for XYZAB axis\n               ; Loads the axis offset of the current home position from the EEPROM and waits for the buffer to empty.\nG90 ; Use absolute coordinates\nG1 X0 Y0 Z50 F3300.0 ; move to waiting position near center of build plate\n</code></pre>\n\n<p>Printer Settings --> Custom G-Code --> End G-Code</p>\n\n<pre><code>M109 S0 T0 ; Cool down the build platform\nM104 S0 T0 ; Cool down the Right Extruder\nM104 S0 T1 ; Cool down the Left Extruder\nM73 P100 ; End  build progress\nG0 Z150 ; Send Z axis to bottom of machine\nM18 ; Disable steppers\nG162 X Y F2500 ; Home XY endstops\nM18 ; Disable stepper motors\nM70 P30 ; We &lt;3 Making Things! Yipee, you made it...\n; display message above for 30 seconds\nM72 P1 ; Play Ta-Da song\n</code></pre>\n\n<p>One other thing I do with Slic3r.  I print a single loop of print on the periphery of a phantom skirt.  I do this as a printer head clean extrude exercise.  </p>\n\n<p>Print Settings --> Skirt and Brim --> Skirt --> Loops (minimum): 1, Distance from object: 6mm, Skirt height: 1   This works well.  I do this in lieu of the G-code startup used in ReplicatorG software (which went to the lower left hand corner, and did this odd 4mm extrude exercise, with odd timing...)  The skirt thing works just fine.    </p>\n'}]
['https://3dprinting.stackexchange.com/questions/11239', 'https://3dprinting.stackexchange.com', 'https://3dprinting.stackexchange.com/users/12718/']