Any Arduino wizards out there? / FSR bed leveling


I’m working on something pretty awesome that I think you guys will get a kick out of. As you may know, we’re hard at work on a new printer codenamed Azalea (; the goal is to produce TAZ quality parts with as little calibration and fiddling as possible.

We’re currently going down a couple of routs for the bed leveling, but my favorite by far is a force sensitive resistor (FSR) based system. It’s clean, adds no additional moving parts and will completely get rid of the probe to nozzle offset calibration that plagues other bed leveling systems. Here’s a setup pretty similar to what we’re working on:

We’ve got the mechanical components pretty well nailed down, and as always the development source is openly available: In order to avoid mechanical calibration of the FSR sensitivity we’re looking at using one of the extra thermistor ports to read the resistance of the FSR’s, rather than the Z endstop pin.

On the firmware side, I’m getting tripped up trying to get the firmware to recognize a drop in the readings from thermistor port 3 as a Z-home indication (nozzle touching glass=homed in z). Anyone interested in helping out with the firmware tweaks? You’ll definitely earn my eternal gratitude (and possibly some Lulzbot schwag :slight_smile:)

More updates to come

Very interesting looking! Unfortunatly, the arduino side is where I’m weakest so I won’t be of much help. Hopefully someone can help you get it working though!

Super easy way of accomplishing this is with a little hardware. A simple comparator would just require an opamp, some resistors, and a potentiometer, possibly a couple caps to filter out some noise. With the comparator, the z endstop pin could be used.

How bad will heat affect the resistance? Will the readings tend to drift over time?

Thanks man! It’s going to be pretty sweet, hopefully something we can retrofit to a full size TAZ :sunglasses:

We’re looking into this, but want to see if we can accomplish it in the firmware without adding any more hardware. Also, from what I’ve seen, the actual readings form most FSR’s aren’t terribly consistent and do change with heat and age. I’m thinking that a firmware fix could be adaptive so that if the FSR’s change over time (thermal changes, get lulzjuice spilled on them, etc) they’ll still work without you needing to fiddle with the bed sensitivity knob.

I think it’d be more reliable in the long temp to have a system that will take the average of 15 or so readings as a baseline as it starts to home or probe the bed, then register a set drop (30% seems attainable) as a Z-min limit. We’d need to chose a drop that’s outside of the normal fluctuations of the fsr’s as the bed moves, but small enough that we can reliably register a nozzle touch before the nozzle pushes the bed down too far. This shouldn’t be too bad once we’ve got a starting point in the firmware :slight_smile:


After a chat with the awesome people of sparkfun, we had our doubts about the longevity of the force sensitive resistors.

Luckily, we’ve begun work on a super elegant solution. We’re replacing the bed fingers (little tabs that hold down the corners of the bed) with metal bits of a known thickness - shim washers in this case. We then wired the 5v side of the Z endstop to the nozzle and the ground to the bed.

Check out the images and videos of the probing sequence at

There’s development firmware up as well if you’re inclined to give it a try :slight_smile:

More to come

I’ve seen this form of homing / leveling before. The issues come into play when your nozzle is covered in plastic mostly :slight_smile:

Ya, we’re likely gonna add a wire brush or similar to clean the nozzle too. This will be nice in general, but needed here.