Add BLtouch upgrade guide

This commit is contained in:
lawgicau
2021-03-26 16:27:21 +11:00
parent 48d3647003
commit a0c477433f
19 changed files with 151 additions and 2 deletions

BIN
img/bltouch-firmware-1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

BIN
img/bltouch-firmware-10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
img/bltouch-firmware-11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 KiB

BIN
img/bltouch-firmware-12.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

BIN
img/bltouch-firmware-13.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 KiB

BIN
img/bltouch-firmware-2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 KiB

BIN
img/bltouch-firmware-3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 KiB

BIN
img/bltouch-firmware-4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

BIN
img/bltouch-firmware-5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 KiB

BIN
img/bltouch-firmware-6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 KiB

BIN
img/bltouch-firmware-7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

BIN
img/bltouch-firmware-8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

BIN
img/bltouch-firmware-9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 KiB

BIN
img/bltouchspacing.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

BIN
img/g29-start-gcode.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

BIN
img/loomwraps.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

BIN
img/m420-S1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

View File

@ -1,5 +1,5 @@
var pages = ["Home", "Calibration", "Troubleshooting", "Review Policy", "Sponsors", "Contact"]
var urls = ["index.html", "calibration.html", "troubleshooting.html", "reviewpolicy.html", "sponsors.html", "contact.html"]
var pages = ["Home", "Calibration", "Troubleshooting", "Upgrade Guides", "Review Policy", "Sponsors", "Contact"]
var urls = ["index.html", "calibration.html", "troubleshooting.html", "upgrades.html", "reviewpolicy.html", "sponsors.html", "contact.html"]
var menu = '<img src="img/ttwhite.png" />';
for(var i = 0; i < pages.length; i++){
menu += '<a href="'+urls[i]+'" target="_self"';

149
upgrades.html Normal file
View File

@ -0,0 +1,149 @@
<!DOCTYPE html>
<html>
<head>
<script src="js/loadscripts.js"></script>
</head>
<body>
<div id="menu"></div>
<div id="header"></div>
<div id="tabs">
<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#bltouch">BLtouch</a></li>
</ul>
<div id="overview">
<h4>Overview</h4>
<p>In these tabs you will find guides to popular 3D printer upgrades.</p>
<p>Sometimes it is easier to reference a static page rather than a video, especially for wiring diagrams and firmware changes. A webpage also provides the opportunity to be updated as things change whereas a video potentionally becomes inaccurate.</p>
</div>
<div id="bltouch">
<div class="exp">
<h2>BLtouch</h2>
<p>Manufacturer's website: <a href="https://www.antclabs.com/bltouch-v3" target="_blank">Antclabs BLtouch</a></p>
<h5>Purchase links:</h5>
<p>As well as the actual BLtouch, an extension cable is required to go back to the mainboard. For most printers, this should be at least 1.5m. For larger prints, 2m is recommended.</p>
<p>These links are for genuine BLtouch from Antclabs. Various clones exist (usually called '3D Touch') but from what I have seen their quality is mixed. For some people they work perfectly and for others they experience nothing but trouble. Please note that BigTreeTech and Creality are both endorsed redistributers for Antclabs.</p>
<ul>
<li><a href="https://amzn.to/2Ozfby2" target="_blank">Amazon</a></li>
<li><a href="https://s.click.aliexpress.com/e/_A4eE8G" target="_blank">Aliexpress</a></li>
<li><a href="https://www.banggood.com/custlink/vKGElYm2F7" target="_blank">Banggood</a></li>
<li><a href="https://ebay.us/xfwSXM" target="_blank">eBay</a></li>
<li><a href="https://www.creality3dofficial.com/products/cr-10-v2-bl-touch-auto-bed-leveling-sensor?sca_ref=16987.xbmLCEL46n" target="_blank">Creality official webstore</a></li>
</ul>
<h5>What is does:</h5>
<p>A BLtouch is an auto bed levelling probe. When attached to the print head, it can be moved in a grid pattern around the bed, measuring the height at each probing point and then creating a contour map of the bed. When a new print begins, this contour map can be applied to the first layer, moving the nozzle up and down as necessary to compensate for a warped or uneven bed.</p>
<h5>Advantages:</h5>
<p>A BLtouch is very convenient in that it removes the need to manually level your 3D printer bed. In situations where the bed is warped, manual levelling will never give a perfect first layer and an ABL probe is the only means to achieve this. Compared to other contactless ABL probes, a BLtouch physically touches the bed with its pin when probing. Therefore it doesn't care what the bed surface is or it's current temperature. A BLtouch allows the print surface to be swapped or changed without recalibration.</p>
<h5>Disadvantages:</h5>
<p>There is an idea that a novice using ABL with their first printer prevents them learning the basic skill of manually levelling the bed, and therefore will not have the same understanding and problem solving capabilities as other users.</p>
<p>Compared to other ABL probes, a BLtouch requires a slight amount of extra wiring. If the mainboard does not have a dedicated 'probe' port or spare PWM output (Creality V1.X boards), a 'pin27 adaptor' is required.</p>
</div>
<p>I have made many BLtouch guide videos in the past, but this one aims to be generic enough to apply to almost any 3D printer. This guide has a companion video with many of the concepts illustrated: <a href="https://youtu.be/eF060dBEnfs" target="_blank">BLtouch for any 3D printer - Comprehensive step by step guide</a></p>
<iframe width="480" height="360" src="https://www.youtube.com/embed/eF060dBEnfs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>For this guide, we will start with the physical mounting of the BLtouch, then cover wiring, firmware changes, calibration, slicer changes, customisation and troubleshooting.</p>
<h4>Physical mounting</h4>
<p>A BLtouch needs to be mounted to the print head of the machine. Like any ABL probe, the closer you can position it to the nozzle when looking directly from above, the better. The BLtouch should be secured tightly. Any play or wobble will destroy accuracy and repeataility. Other considerations when mounting are making sure the BLtouch is not so close to the hot end that it suffers damage from heat, and that its placement does not interfere with homing.</p>
<p>As the BLtouch is very popular, there is a wide range of printed mounts available on Thingiverse and other 3D file sharing sites. Below are some examples:</p>
<ul>
<li><a href="https://www.thingiverse.com/thing:3003725/" target="_blank">Ender 3 (Pro) / CR-10</a></li>
<li><a href="https://www.thingiverse.com/thing:4462870" target="_blank">Ender 3 V2</a></li>
<li><a href="https://www.thingiverse.com/thing:3388571/" target="_blank">Ender 5 (Pro)</a></li>
<li><a href="https://www.thingiverse.com/thing:3716043" target="_blank">Artillery3D X1</a></li>
</ul>
<p>The vertical mounting height of the BLtouch tip relative to the tip of nozzle is very important for accuracy. Antclabs have a diagram on their site and advise a target height of 2.3 to 4.3mm.</p>
<a href="#" data-featherlight="img/bltouchdimensions.jpg"><img class="thumb" src="img/bltouchdimensions.jpg" /></a>
<p>With the power off, lower the print head down until the nozzle is resting on the bed. If your BLtouch mount is adjustable, you can put an appropriately sized (3mm is ideal) allen key flat on the bed and slide the BLtouch down until the tip touches. For a non adjustable mount, washers can be use to shim the position downwards to spec. If the tip is sitting too low, you need a new mount to prevent the tip hitting the bed/printed part and being damaged.</p>
<a href="#" data-featherlight="img/bltouchspacing.jpg"><img class="thumb" src="img/bltouchspacing.jpg" /></a>
<h4>Wiring loom</h4>
<p>Hopefully you saw the note at the top of the page and purchased a wiring extension loom long enough to go from the BLtouch back to the mainboard. Alternately, you can make your own if you have the appropraite connectors and crimping tools. You want to ensure the loom is protected and can't snag on the moving printer parts. At a minimum, it should be tied to the existing loom to prevent it being caught. Ideally, it should be enclosed in some sort of sleeve or wrap.</p>
<a href="#" data-featherlight="img/loomwraps.jpg"><img class="thumb" src="img/loomwraps.jpg" /></a>
<h4>Wiring to mainboard</h4>
<p>A BLtouch requires 5 wires. Three are used to control it (red, yellow and brown), and the remaing two are used to read the trigger signal from it (black and white). Sometimes extension looms use different colours, such as the Creality loom which substitutes blue for brown.</p>
<p class="warning">Pay attention to wiring diagrams! The following diagram was created for a <a href="https://youtu.be/neS7lB7fCww" target="_blank">video guide for the Creality V4 32 bit mainoards</a>. The comments are littered with people who assumed the Creality extension loom would match the Creality board, connected the BLtouch incorrectly and blew up their mainboard. Never assume the extension loom you are using matches the input to the mainboard (even if they are both Creality).</p>
<a href="#" data-featherlight="img/crealityv4bltouchwiring.jpg"><img class="thumb" src="img/crealityv4bltouchwiring.jpg" /></a>
<p>Here is a break down of the pins:</p>
<ul>
<li><span style="color:red; font-weight:900;"> Red: </span> 5V power to BLtouch. (Some mainboards supply 3.3V and the BLtouch can be configured to operate with this logic level).</li>
<li><span style="color:brown; font-weight:900;"> Brown: </span> Ground to BLtouch. In conjuction with the red wire provides power.</li>
<li><span style="color:yellow; font-weight:900; background-color:black;"> Yellow: </span> Control signal from firmware to BLtouch. Uses pulse width modulation (PWM) to control the BLtouch, the same way as a servo is controlled with PWM.</li>
<li><span style="color:white; font-weight:900; background-color:black;"> White: </span> Trigger signal from BLtouch to mainboard.</li>
<li><span style="color:black; font-weight:900;"> Black: </span> Ground for trigger signal from BLtouch to the mainboard.</li>
</ul>
<p>Most modern 32 bit mainboards have dedicated ports for a BLtouch, typically labelled 'BLtouch', 'probe' or 'servo'. This may be a three pin port, intended for the the red, brown and yellow wires only, or a five pin port, intended for all five wires.</p>
<p>If your mainboard does not have a dedicated BLtouch port, you can most likely still use it, but you will likely need to consult the manual or data sheet for your board or processor. 5V and GND can be be taken from any identified spare pins. All that you need is a spare PWM pin. PWM stands for <a href="https://en.wikipedia.org/wiki/Pulse-width_modulation" target="_blank">pulse width modulation</a>, and involves a logic signal being cycled on and off at various duty cycles. This method is used to set the angle on a servo, and is also used to control the BLtouch through the yellow wire.</p>
<p>With some basic knowledge, you can examine the datasheet for your mainboard processor to see which spare pins support PWM. This is demonstrated in the video at the top of the page.</p>
<h4>Do I need a pin27 board?</h4>
<p>Mainboards like the earlier 8 bit Creality V1.X models had very little spare input/output pins. In fact, there was no spare PWM pins at all, so pin27 (usually used for the LCD buzzer) was hijacked with a pin27 board to provide a means of controlling the BLtouch (which meant losing the buzzer). Any modern 32 bit board has enough spare pins that it does not need a pin27 board. Despite this, I have seen BLtouch packages sold to suit the Creality V4 32 bit board that still include a pin27 board when this mainboard does not require it. I can only assume this is a cash grab and way to offload old pin27 board stock. While you can probably still wire a BLtouch to this board using a pin27 board, why would you? You are ignoring the dedicated port and are adding needless complexity.</p>
<h4>Should I plug the black and white BLtouch wires into the Z endstop plug or the dedicated plug?</h4>
<p>The honest answer is that either of these options work. The firmware just needs an input pin to receive the trigger signal from the BLtouch and it does't care which pin it is.</p>
<p>Personally, I prefer to use the normal Z axis endstop port. This is because it simplifies the changes needed in the firmware (both versions covered below). It also prevents any chance of leaving the old Z endstop switch connected and potentially interfering.</p>
<h4>Marlin firmware changes</h4>
<p>Firstly, if you are new to firmware, I have a few beginner guides, but <a href="https://youtu.be/eq_ygvHF29I" target="_blank">Updated Marlin firmware setup guide - VS Code and Auto Build Marlin</a> is probably the best place to start as it goes over installing the software and how to use the example configurations to get a good starting point for your printer.</p>
<iframe width="480" height="360" src="https://www.youtube.com/embed/eq_ygvHF29I" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<h5>Mandatory changes</h5>
<p>Once you have this baseline, the following changes are mandatory for a BLtouch:</p>
<a href="#" data-featherlight="img/bltouch-firmware-1.jpg"><img class="thumb" src="img/bltouch-firmware-1.jpg" /></a>
<a href="#" data-featherlight="img/bltouch-firmware-2.jpg"><img class="thumb" src="img/bltouch-firmware-2.jpg" /></a>
<a href="#" data-featherlight="img/bltouch-firmware-3.jpg"><img class="thumb" src="img/bltouch-firmware-3.jpg" /></a>
<p>Previously, when using a pin27 board with a Creality V1.x mainboard, it was required to add a custom line to the firmware to account for this. Thanks to the Marlin developers and contributers, this is now automatically in place in the pins file.</p>
<h5>If you are connecting the black and white BLtouch wires to the Z axis endstop port</h5>
<p>The following should already be in place by default:</p>
<a href="#" data-featherlight="img/bltouch-firmware-8.jpg"><img class="thumb" src="img/bltouch-firmware-8.jpg" /></a>
<h5>If you are connecting the black and white BLtouch wires to a dedicated port</h5>
<p>You will need to look up the name of the pin that the port uses, and then make the following changes:</p>
<a href="#" data-featherlight="img/bltouch-firmware-9.jpg"><img class="thumb" src="img/bltouch-firmware-9.jpg" /></a>
<h5>If you are using a custom PWM pin for the BLtouch yellow wire</h5>
<p>You will need to look up the name of your pin and then enter it in the pins file for your board. Make sure this is the only reference to this pin. Uncomment other references to avoid conflicts.</p>
<a href="#" data-featherlight="img/bltouch-firmware-10.jpg"><img class="thumb" src="img/bltouch-firmware-10.jpg" /></a>
<h5>Optional changes</h5>
<p>If you are using a traditional LCD, you can enable an ABL specific sub menu:</p>
<a href="#" data-featherlight="img/bltouch-firmware-4.jpg"><img class="thumb" src="img/bltouch-firmware-4.jpg" /></a>
<p>For a much easier way to calibrate the Z offset of your probe (covered in the video below), enable the following:</p>
<a href="#" data-featherlight="img/bltouch-firmware-5.jpg"><img class="thumb" src="img/bltouch-firmware-5.jpg" /></a>
<a href="#" data-featherlight="img/bltouch-firmware-6.jpg"><img class="thumb" src="img/bltouch-firmware-6.jpg" /></a>
<p>If you have already measured your X and Y probe offsets, you can enter them now. This is not mandatory, however, as it can be done after the firmware is updated. More on probe offsets later.</p>
<a href="#" data-featherlight="img/bltouch-firmware-7.jpg"><img class="thumb" src="img/bltouch-firmware-7.jpg" /></a>
<h4>Calibration</h4>
<p>Once you have connected everything and flashed your updated firmware, there is still some calibration regarding the offset of the probe. Fortynuately I have dedicated video on this topic:</p>
<iframe width="480" height="360" src="https://www.youtube.com/embed/fN_ndWvXGBQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>In summary, we need to do the following:</p>
<ul>
<li>Measure and input our X/Y probe offsets. This can be done using the <a href="https://marlinfw.org/docs/gcode/M851.html" target="_bank"><b>M851</b></a> gcode command over terminal or via the LCD screen. Even if you previously entered this when compiling firmware, double check the values are correct. When changing offsets, don't forget to save to EEPROM.</li>
<li>Adjust the Z offset of the probe to achieve the perfect amount of squish on the first layer. You can use the Marlin Z offset wizard for this and/or do a live adjustment as the first layer goes down. In either case don't forget to save this value to EEPROM so it stays persistent.</li>
</ul>
<h4>Modes of operation and slicer changes</h4>
<p>Before using ABL, the printer must be homed. Please note that in most cases, the BLtouch has replaced the Z axis endstop as the means of the printer knowing when Z is approaching zero.</p>
<p class="warning">The first time you home the printer, it is safest to start with the nozzle a long way above the bed. Then use your hand to trigger the probe in mid air. If there is a problem and the trigger doesn't work, this will give ou a chance to kill the power before a collision. Then consult the troublshooting section lower on the page.</p>
<p>After this, a <a href="https://marlinfw.org/docs/gcode/G029.html" target="_bank"><b>G29</b></a> command will initiate the probing of the bed. Optionally saving to EEPROM will then store the probed mesh.</p>
<p>It is best to heat up the bed to printing temperatures before probing it. This is due to the bed surface expanding and/or warping when hot. We want to match the printing conditions as closely as possible.</p>
<p>We have two options on how we utilise the BLtouch:</p>
<h5>Probe before every print</h5>
<p>This option has the advantage of providing the most accurate result and suits printers that have a less than steady bed that may shift between prints. The disadvantage is the added time to the start of the print.</p>
<p>To do this, <b>G29</b> (ABL) must be placed on the line after <b>G28</b> (homing) in the start gcode section of your slicer. <b>G28</b> cancels any probed meshes so it must be in this order.</p>
<a href="#" data-featherlight="img/g29-start-gcode.jpg"><img class="thumb" src="img/g29-start-gcode.jpg" /></a>
<h5>Probe once and restore the saved mesh at the start of the print</h5>
<p>Alternatively, if your bed is stable, you can home with <b>G28</b>, then probe the bed to create a mesh with <b>G29</b>, followed by saving the mesh to EEPROM with <b>M500</b>. All of this can also be done with LCD controls instead of gcodes. In your slicer start gcode, you can add <a href="https://marlinfw.org/docs/gcode/M420.html" target="_blank"><b>M420 S1</b></a> on the line AFTER <b>G28</b>, which will load the previously saved mesh to use for compensation in the current print.</p>
<p>As neccessary, from time to time you can re-probe the bed and store the mesh to maintain accuracy.</p>
<a href="#" data-featherlight="img/m420-S1.jpg"><img class="thumb" src="img/m420-S1.jpg" /></a>
<h4>Customisation</h4>
<p>By default, the probing grid is 3 x 3. For small printers this is fine but you may want to increase the resolution at the expense of a longer probing sequence. This can be changed in the firmware:</p>
<a href="#" data-featherlight="img/bltouch-firmware-11.jpg"><img class="thumb" src="img/bltouch-firmware-11.jpg" /></a>
<p>By default, the probing sequence is fairly slow. Again, we can customise this in the firmware. Your choices here will be a trade off between speed and accuracy:</p>
<a href="#" data-featherlight="img/bltouch-firmware-12.jpg"><img class="thumb" src="img/bltouch-firmware-12.jpg" /></a>
<p>By default, the boundaries of the probing grid will be offset towards the position of the probe relative to the nozzle. I personally prefer a symmetrical probing grid. In the firmware, you can set manual boundaries for the grid. Just keep your probe X/Y offset in mind. You don't want to request probing 20mm from the edge when the probe is 40mm to the side of the nozzle. Best case, you receive an error. Worst case, the probe misses the bed and the nozzle collides with the bed.</p>
<a href="#" data-featherlight="img/bltouch-firmware-13.jpg"><img class="thumb" src="img/bltouch-firmware-13.jpg" /></a>
<p>There is also a parameter called fade height, that can be set from the LCD or with the <a href="https://marlinfw.org/docs/gcode/M420.html" target="_blank"><b>M420 Z</b></a> gcode command. The first layer will not actually be perfectly flat, due to the compensation applied to match the measured bed contours. We don't necessarily want each layer to match this contour for the rest of the print, however. Fade height is the vertical distance in which the printer will transition between following the contours of the bed to printing in a perfectly flat plane. Remember to save to EEPROM after changing the fade height.</p>
<h4>Troubleshooting</h4>
<p>There's a lot to get right, which means there is also a lot that can go wrong. Fortunately, I have a full page dedicated to <a href="troubleshooting.html#bltouch">BLtouch troubleshooting</a> elsewhere on this site.</p>
</div>
<div id="footer"></div>
</body>
<script>
var pageName = "Upgrade Guides";
var pageTitle="Teaching Tech 3D Printer Site";
</script>
<script src="js/dynamic.js"></script>
<html>