I understand that you may not need to spend much on a clone BLTouch, but the primary purpose of this project is for learning. Throughout the entire process, you'll gain a deeper understanding of how to set up a BLTouch in the Marlin firmware. Plus, this little DIY equipment is surprisingly accurate! I have several electrical components lying around, and I just wanted to put them to good use. You can watch my YouTube video to see the entire journey. Thank you, everyone!
https://youtu.be/3aU_8-kGBhA
A complete guide to confugirate a BFPtouch
If you use Platformio to customize marlin firmware
Platformio.ini
//replace mega2560 with STM32F103RET6_creality
default_envs = STM32F103RET6_creality
BFPTouch Marlin 2.0.9.7 settings
In Configuration.h
search for below values and uncomment/update where required. Make sure to read through my comments in case you need some specific configuration for your setup.
// Use probe as replacement for Z end stop
#define
USE_PROBE_FOR_Z_HOMING
// Define servo angles for deploying and stowing the probe. These will need to
// be adjusted later with M281 command BEFORE you attempt to home your printer.
#define
Z_PROBE_SERVO_NR 0
#define
Z_SERVO_ANGLES { 35, 0 }
// Make sure inverts are set correctly
#define
X_MIN_ENDSTOP_INVERTING false
#define
Y_MIN_ENDSTOP_INVERTING false
#define
Z_MIN_ENDSTOP_INVERTING false
#define
X_MAX_ENDSTOP_INVERTING false
#define
Y_MAX_ENDSTOP_INVERTING false
#define
Z_MAX_ENDSTOP_INVERTING false
#define
Z_MIN_PROBE_ENDSTOP_INVERTING false
// Define distance from the nozzle to the probe.
// the mount that you are using or manually measure with a ruler.
This is my measurements. I use Petsfang upgrades on my ender 3 Pro
#define
NOZZLE_TO_PROBE_OFFSET { -53, -10, 0 }
// This is up to you how many times you want to probe and
// how accurate your results are
#define
MULTIPLE_PROBING 2
// Enable the M48 repeatability test to test probe accuracy
#define
Z_MIN_PROBE_REPEATABILITY_TEST
/**
* Enable this option for a probe connected to the Z-MIN pin.
* The probe replaces the Z-MIN endstop and is used for Z homing.
* (Automatically enables USE_PROBE_FOR_Z_HOMING.)
*/
//#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
// Force the use of the probe for Z-axis homing
#define
USE_PROBE_FOR_Z_HOMING
// Set min height for homing
#define
Z_HOMING_HEIGHT 15
// BILINEAR bed leveling
#define
AUTO_BED_LEVELING_BILINEAR
// Turn Levelling on after homing
#define
RESTORE_LEVELING_AFTER_G28
// Preheat before probing. Nozzle temp should be hot but not hot enough for
// filament to ooze. Bed temp should be your usually value.
#define
PREHEAT_BEFORE_LEVELING
#if
ENABLED(PREHEAT_BEFORE_LEVELING)
#define
LEVELING_NOZZLE_TEMP 100
#define
LEVELING_BED_TEMP 50
#endif
// Defined grid size. 10 = 10x10, 5 = 5x5, etc
#define
GRID_MAX_POINTS_X 5
#define
GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
// Use safe homing to only home when stepper drivers are enabled
#define
Z_SAFE_HOMING
// Define number of servos
#define
NUM_SERVOS 1
// Define servo delay
#define
SERVO_DELAY { 300 }
// Delay before probing
#define
DELAY_BEFORE_PROBING 200
// Only power servos during movement, otherwise leave off to prevent jitter
#define
DEACTIVATE_SERVOS_AFTER_MOVE
// Enable editing servo angles with M281 and save to EEPROM with M500
#define
EDITABLE_SERVO_ANGLES
#define
PROBING_MARGIN 18
In Configuration_adv.h
#define
PROBE_OFFSET_WIZARD
#define
PROBE_OFFSET_WIZARD_START_Z -4.0
#define
BABYSTEPPING
#define
BABYSTEP_DISPLAY_TOTAL
#define
BABYSTEP_ZPROBE_OFFSET
Please remove the Z min switch from your ender3 motherboard!! once we put hte bltouch the z min stwitch is no longer needed!