Sunday, May 4, 2014

FSR Bed Leveling Trials and Tribulations

I read Johann’s post about using force-sensitive resisters (FSR) for automatic bed leveling, and it seemed like just what I was looking for. Very simple, and not that expensive. So I ordered a set of three FSR sensors. Here are some places where you can order them:

https://www.sparkfun.com/products/9375
http://www.phidgets.com/products.php?product_id=3104

And this is what one looks like out of the bag:

I connected three of these in parallel into a single end stop input on the Printrboard and gave it a try. Well, it wasn’t as easy as I thought. It turns out the setup was very fussy. Sometimes it took too much pressure to trigger. And at other times it stayed triggered. After a number of attempts, I read the data sheet and discovered that the resistance changes greatly. In the “useful” range of the sensor, the resistance goes from 30 k Ohms at 20 grams to just above 1 k Ohm at 1 Kg. That’s a pretty wide range, and it turns out the weight of the glass bed is enough to change the resistance noticeably. After a lot of experimentation, here is what I ended up with:

WP_20140327_20_17_17_Pro_600

The small squares on each FSR are thin pieces of paper. Without these squares, it took too much force to trigger the endstop. The FSR have a border around the outside that is ever so slightly thicker than the sensor itself, so you need either some spongy tape that can deform, or something like these pads. With the pads, however, I still had issues with it being hard to get just right. My solution was to add a 10K potentiometer into the circuit, as shown here:

WP_20140327_20_18_26_Pro_Cropped

In this photo, the end stop connector is in the center top (it’s the black connector next to the row of white connectors). With this change I was able to get things to work reasonably well, but it still felt too fussy to me.

As it turns out, I was also becoming interested in learning how to make circuit boards and decided to see if I could make a custom circuit board that would make this a whole lot easier. I’ll cover this journey in a future blog post.

3 comments:

  1. Hi John, i bought a FSR card from you. It works well and greatly help me to level manually my delta's bed. But I don't understand how I can parameter the Marlin software and use it for automatic leveling. Please let me know which one you use and those parameters.
    Thank for answer.

    ReplyDelete
  2. Hey John, Why did you choose to not go with 3 FSRs in parallel and connect them individually to 3 analog input pins of Attiny461/861? Does it hit sensitivity?

    ReplyDelete
    Replies
    1. I connected them to a single input so I wouldn't have to modify the firmware. This was just a quick test. After this experience, I ended up designing a circuit board that would handle all the logic separately from the printer board: http://trains.socha.com/2014/05/auto-adjust-fsr-end-stop-detector.html. One reason I went with a separate board is that Marlin is already taxed to the limit doing all of the delta calculations, and offloading the FSR calculations to a separate board was fun and easy.

      Delete