Quartet Of SMD Resistors Used To Sense Z-Axis Height

Here’s a neat trick for your next 3D-printer build or retrofit: a Z-axis sensor using a DIY strain gauge made from SMD resistors. We’re betting it could have plenty of other applications, too.

Conventional load cells, at least the ones you can pick up cheaply from the usual sources or harvest from old kitchen or bathroom scales, are usually way too big to be used on the extruder of a 3D-printer. [IvDm] wanted to build a touch sensor for his Hybercube printer, so he built his own load cell to do it. It consists of four 1000 ohm SMD resistors in the big 2512 device size. He mounted them to an X-shaped PCB and wired them in the classic Wheatstone bridge configuration, with two resistors on one side of the board and two on the other.

The extruder mounts into a hole in the center of the board and floats on it. Through an HX711 load cell driver chip, the bridge senses the slight flex of the board when the extruder bottoms out on the bed, and an ATtiny85 pulls a limit switch input to ground. [IvDm] even did some repeatability testing with this sensor and it turned out to be surprisingly consistent. The first minute or so of the video below shows it in action on the Hypercube.

We found the use of SMD resistors as strain gauges pretty clever here, but there’s plenty to do with off-the-shelf load cells: measuring how much filament is left on a roll, checking the thrust of a model rocket engine, or even figuring out if you’re peeing correctly.

Thanks to [jschoch] for the tip.

34 thoughts on “Quartet Of SMD Resistors Used To Sense Z-Axis Height

        1. It’s like the ether wind experiment, or the intricately chipped and hardened stone blades made by early humans. You know that it’s possible, but how well it works with so little is impressive.

        2. Because although it coukd work, the desired effect is one of the criteria specifically designed out of resistors. They are supposed to be stable over temperature, age and mechanical stress. Changing their value with mechanical input is often called microphonics. I would bet, the cheaper the resistor, the greater the effect.

    1. durfus mount (yes intentional) resistors are usually film based, so if you have a film (thin or thick) with a zig zag conductive pattern etched on it, compression or tension will change the length of said pattern and change the resistance

      but only slightly .. it is measurable though

      1. Osgeld,
        The zig-zag pattern is not really relevant: it’s a method for impedance matching, with a side effect of introducing anisotropy. Good thing too. Most SMT resistors aren’t made that way anyway (except for some super-high-resistance ones).

    2. Almost all SMD resistors – especially in the 1 kohm range, are metal film. But regardless, the way it works is that bending the resistor stretches the metal film, raising its resistance. Not by much, but enough to measure.

  1. One way to possibly get additional sensitivity from this design would be to rout a thin slot in the PCB directly underneath each resistor. The slots would slightly weaken that area of the PCB, concentrating the flexing there instead of distributing it across the entire arm. Worth a try at least.

      1. Sure, but these resistors cost less than 10 cents each. Even cheap strain gauges are around $1.

        If something like this can be shown to be repeatable and robust enough for the given application, it’s pretty awesome.

  2. Agreed. Clever “why didn’t I think of that” thing.
    A quick review of the linked files didn’t reveal whether they used thin film or thick film resistors, but I’d guess thin film would work much better here (lower noise, better precision, lower tempco, metallic vs oxide resistive component).

    But now that I think about it, why not just use a meandering copper trace on the PCB as the element? You can easily get 2 inches of trace in the space of a 2512 component, using 6 mil rules. Still pretty low resistance, but very low noise, and the mechanics aren’t confounded by the solder bond and the very stiff ceramic of the resistor.

    With an appropriate (low-Z) amplifier I’ll bet the PCB trace would outperform the resistors for sensitivity vs. noise.

  3. The really amazing thing is they make parts that are actually designed for this service called strain gauges. I suspect they are not as inexpensive as SMD resistors but for the most part, I like using parts that are designed to be used the way I am using them.

    1. The first issue that comes along is mechanical creep in the solder joint, which is put under stress in this design. With a strain gauge, the gauge slip itself is flexible, it doesn’t carry mechanical forces – it merely deforms with the underlying material and it’s designed to do so in order to not interfere with the mechanism.

      So the most likely failure after a number of load cycles is a) the solder joints start to conform to the load and the zero point of the bridge creeps out of alignment, b) the solder joints develop tin whiskers due to RoHS solder and mechanical strain, leading to short circuits eventually, c) the solder joints crack.

      1. The points b and c are easily solved as long as you do not want to sell the device: Avoid the use of crappy (RoHS) solder. But I also prefer the use of proper components for a job, strain gauges in this case.

  4. You certainly can do it using meandered traces on the PCB itself.
    (But don’t you want to measure the extruder height without driving it into the bed?
    I think capacitive or inductive sensing is better.)

    1. I’ve often wondered why people don’t just make their beds conductive and use a pogo pin style probe. Effectively replace the sensor with a switch and do the measurement directly.

  5. It’s not like load cells and UV resin cost anything on Ali these days…
    But yeah, this will work too I guess :-)
    You could also just make a PCB with tiny wiggly lines and measure those.

Leave a Reply to Harvie.CZCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.