This is an old revision of the document!
Several types of probes are available:
Most people who have chosen to add a bed levelling probe to their printer have used an IR probe. This probe typically replaces the connection to the Z-min endstop.
Please Note: The ceramic coating on the original bed has a pattern that can cause inaccurate measurements when using an IR / optical probe due to the inherrant uneven nature of the surface coating. If you are using the original coated glass with an IR/Optical probe, it is suggested that you turn the glass plate upside down, and then add some black mat material underneath the glass or paint it to solve the issue. Standard deviation with this sensor on a plain glass sheet shows a 0.2mm deviation, which is 1 layer height!
For best results, the sensor needs to sense the reflection of the IR beam from the top surface of the bed. There is a potential problem when the sensor is used with a transparent bed material that reflects infrared light weakly and there is a surface below the transparent material that reflects IR much more strongly.
Glass (with or without coatings such as hairspray, PVA or Kapton tape): Works as-is if placed directly on a PCB bed heater or other surface that does not reflect strongly. If there is an aluminium heat spreader or bed plate underneath the glass, then either paint the aluminium surface matt black as suggested above, or put a sheet of matt black paper between the glass and the aluminium. Coatings on the glass such as the Black Diamond coating affect the trigger height slightly so its advised to flip the glass upside down.
PEI: this is highly transparent to IR so will not work. Paint the underside matt black before using adhesive sheet to attach it to the bed plate. Changes to the surface finish such as scoring from a low nozzle affect the trigger height slightly.
BuildTak: the dark grey variant works well with the sensor. The white variant is untested, but it should work too.
PrintBite: Early samples were found to be opaque to IR (so these work OK), but more recent samples are transparent to IR. This means that it needs to be painted black on the underside in order to work well with the IR sensor. However, this is not practical if the PrintBite sheet has the adhesive already attached.On the A5, its suggested to follow the advice as per glass. Install/paint the surface between the PrintBite and the glass bed.
Anodised aluminium, with or without PEI coating: suitable if the finish is matt or semi-matt.
Bright Aluminium: not suitable.
Mirror: Not suitable.
Other/Not Listed: You will have to check yourself if your surface is transparent to IR light, an easy way to do this is with a standard TV remote control.Place your hand in front of the remote control to block the infrared signal and verify that the remote control no longer controls the TV. (Don’t wrap your hand over the front of the remote control). If the remote control still works, you may be too near the TV, you may need to back away and try blocking again. In that case, you'll need to repeat step 1 to verify the remote control works at the farther distance when it isn’t blocked.
Place the build platform you want to test directly in front of the remote control and test to see if the remote control can still control the TV. If the remote control no longer works, then the object either absorbs, redirects, or otherwise blocks infrared and your IR sensor will be able to “see” the build surface. If the remote control still works, then at least some infrared is passing through and you may have trigger issues without applying some remedial method such as painting the underside as detailed above..
Steve Wagg has put together an EXCELLENT guide on performing this mod on thingiverse. Steve has a modified version of the community firmware that is ready to go, configured for use with the IR sensor plugged into the Z-min socket.
If, like me you have the TMC2130 steppers drivers, or other hardware mods that require firmware edits, or youre just the type that likes to do these things manually, then stay here and follow all the info below.
Infrared sensor - IR Sensor Link
Mounting Bracket (Print this before you do the mods!) - Sensor Bracket Link
3 wire servo extension lead (2 x 1m in length) - Servo Extension Link Link
Or, you'll need you own wire and either DuPont connectors or a 3pin JST Plug and tools to wire this up.
Since this is what frightens most people, lets start here.
#define Z_MIN_ENDSTOP_INVERTING true
#define Z_MIN_ENDSTOP_INVERTING false
#define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
#define X_PROBE_OFFSET_FROM_EXTRUDER 6 // X offset: -left +right [of the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER -30 // Y offset: -front +behind [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER -1.1 // Z offset: -below +above [the nozzle]
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 2)
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 8)
//#define MULTIPLE_PROBING 2
#define MULTIPLE_PROBING 3
#define X_BED_SIZE 305 #define Y_BED_SIZE 305
#define X_BED_SIZE 310 #define Y_BED_SIZE 310
#define LEFT_PROBE_BED_POSITION 15 #define RIGHT_PROBE_BED_POSITION 170 #define FRONT_PROBE_BED_POSITION 20 #define BACK_PROBE_BED_POSITION 170
#define LEFT_PROBE_BED_POSITION 10 #define RIGHT_PROBE_BED_POSITION 295 #define FRONT_PROBE_BED_POSITION 25 #define BACK_PROBE_BED_POSITION 280
OK, still with me? Next, just follows Sams guide for flashing this firmware to your A5, but don't try any test prints yet, just do the flash, then shut it down again! https://jgaurorawiki.com/a5/firmware
The original developer of these mini IR boards has specifically said he designed it to work on glass, which it does but I guess since the original design with ever smaller layer heights on todays 3D printers, the deviation is just unacceptable. Youtuber Thomas Sanladerer ran tests on this sensor and found a deviation of 20 micros, or 0.02mm which is one layer height Link to His Video on plain glass, community testing has resulted in WILDLY inaccurate heights, basically, do NOT do this if you plan to use the standard Black Diamond glass as your print surface, it just wont work.
The best way to fix this is to paint the glass to give the IR beam a better material to bounce back from. The exact colour of the paint doesn't really matter, but the even-ness of the coats do. Even a small hair will affect your trigger distances!
As mentioned above, this doesn't really work on the glass bed so I'm also going to be adding a PrintBite build surface rather than use the Black Diamond. I've had really good experience with this over the years, works really well for PLA, ABS, PETG and loads of others. The final sandwich of layers in my case would be;
Heated Plate > Glass Bed (With Black Diamond coating facing down and painted surface facing up) > Print Bite build surface (stuck to the new painted glass).
Now the hard parts are done, you need to complete the setup of the IR sensor and do some testing, so lets continue.
Now that you have an IR probe and a nice level bed, you need to be sure that before every print, you re-level the bed, but this time we can use the new probe to do that!
G29 is the GCODE to issue a level bed routine. You can run this now I guess to see it working, but in reality, all you need to do is add the following lines AFTER your initial G28 home command in your slicing software.
NOTE: make sure you replace the value in the second line with whatever value you identified in step 3 above that gave you an accurate 0.2mm nozzle height. Remember, any G28 Home command after this script will disable UBL again, so avoid placing G28's after this script.
G28 ; Home All Axis M851 Z-1.7 ; Z Offset M500 ; Save to Eeprom G28 ; Home All Axis G29 ; Do automated probing of the bed M500 ;Save UBL mesh points to EEPROM. M420 S1 ; Activate the UBL System
And your done! From now on, the printhead will perform an automatic mesh bed level using the IR probe before every single print.
In standard probing mode,This adds about 30 seconds to your print time and ensures that crucial first layer goes down perfect every time!
With my ultra slow mods to get a better probe height, this takes a few minutes per probe cycle. Since we've saved the mesh to the EEPROM, you may wish to do this mesh periodically and just use the below as your start-up commands since we can call the mesh data back from EEPROM.
G28 ; Home All Axis M851 Z-1.7 ; Z Offset M500 ; Save to Eeprom G28 ; Home All Axis M420 S1 ; Activate the UBL System from EEPROM saved data
Motherboard Sensor Wiring
NOTE: This is Sams photo, he left his end stop microswitch connected. If your following this guide properly, you should remove it and plug your IR sensor into its port, NOT the one sam has shown here, its still helpful photo as its the green connector just next to it.
You can test your ends top function using Pronterface, and entering gcode M119. This will report the status of all the endstops. You can put your finger under the sensor to trigger it, and then run M119 to see if the change in status is reported.
Photo credit: Marcus Harrysson on Facebook
Photo credit: Steve Wagg on Facebook