FSRs (Force Sensing Resistors) can be used as bed leveling sensors with Smoothieboard to provide automatic bed leveling for 3D printers.
To use FSRs with the Smoothieboard, an auxiliary board is needed to interface the FSRs to the Smoothieboard’s endstop input.
Smoothieware will accept this input as if it were a simple mechanical switch.
JohnSL on GitHub has created an FSR controller board specifically for this purpose.
Where to buy:
Resources:
For Cartesian machines with square heat beds, there is a 4-point FSR controller called “Toucher”.
Resources:
The Deltabot group is where most discussion on using FSRs is located.
Topics to look for:
Once you have your FSR controller board connected to an endstop input, you need to configure Smoothieware to use it as a Z probe.
# Z probe configuration for FSR
zprobe.enable true
zprobe.probe_pin 1.28!^ # Pin connected to FSR controller output
zprobe.slow_feedrate 5 # Slow probe speed in mm/sec
zprobe.fast_feedrate 100 # Fast probe speed in mm/sec
zprobe.return_feedrate 50 # Speed to return after probe
zprobe.probe_height 5 # Height above bed to start probe
zprobe.debounce_count 10 # Number of samples for debouncing
# Leveling strategy
leveling-strategy.three-point-leveling.enable true
leveling-strategy.three-point-leveling.point1 10.0,10.0 # First probe point
leveling-strategy.three-point-leveling.point2 190.0,10.0 # Second probe point
leveling-strategy.three-point-leveling.point3 100.0,190.0 # Third probe point
Pin syntax:
1.28!^ means pin 1.28, inverted (!), with pull-up enabled (^)[zprobe]
enable = true
probe_pin = P1_28!^ # Pin connected to FSR controller output
slow_feedrate = 5 # Slow probe speed in mm/sec
fast_feedrate = 100 # Fast probe speed in mm/sec
return_feedrate = 50 # Speed to return after probe
probe_height = 5 # Height above bed to start probe
debounce_count = 10 # Number of samples for debouncing
[leveling_strategy.three_point]
enable = true
point1 = 10.0, 10.0 # First probe point
point2 = 190.0, 10.0 # Second probe point
point3 = 100.0, 190.0 # Third probe point
Pin syntax:
P1_28!^ means pin P1.28, inverted (!), with pull-up enabled (^)FSR Not Triggering:
! (inversion) flag in the pin configurationFalse Triggers:
zprobe.debounce_count to filter electrical noiseIntermittent Detection:
zprobe.debounce_count values (typically 5-20)To test if your FSR setup is working:
M119 to check endstop statusM119 again - the Z min endstop should show as triggeredBoth FSRs and BLTouch can provide automatic bed leveling, but with different characteristics:
FSRs:
BLTouch:
For more information about BLTouch, see the BLTouch documentation.
For more information about bed leveling and probing, see: