← Back to context

Comment by arnejenssen

8 days ago

A silly question (from a non-HW guy). Why are digital bathroom scales so coarse? Some have a weight resolution of +/- 500 grams. Would a better microcontroller make a weight faster or more presise? I guess this TI micro controller is overkill for a bathroom scale.

Computing power is crazy cheap and does not help. The perceived slowness is because the taken measurements are averaged over second or so. When you step on the scale your weight shifts around and that affects the measurement by far more than half a kg. Averaging gives you better accuracy and more confidence in the result but it doesn't improve the measurement precision.

The scale precision comes from calibration of the measuring mechanism done on factory line at certain weights. If your specific body weight is far from the weights used in calibration, or too much time passed, then the calibration doesn't help much.

A better microcontroller doesn't help at all. Even a cheapest uC from decades ago is good enough. Better ADC and gauge sensor would help, but even more important is good analog engineering to produce self-correcting circuits with decent noise rejection.

In general this category of products is more for tracking changes in your body weight than getting the precise absolute value. And the body weight changes a lot just from hydration level, so the ±.5kg tolerance is considered good enough.

  • My fine spice recipe writing scale (20g max, 20k count) consistently over years of me having it keeps it's magnitude calibration of the 10g reference to a single digit count, i.e., comfortably within +-0.1%.

    Ofc there's auto-zero on start involved, but translated to a people bathroom scale that'd be "comfortably better than +-100g".

    A precise bathroom scale just would want a bit more effort on drift prevention as a sample mass at this scale is rather unwieldy, and critically it'd need a toe-operated button to select that you've finished climbing onto the scale, upon which it starts averaging the load to progressively improve the weight measurement accuracy. I'd expect using a bounce-height-freefall-duration based length of timing uncertainty at the start and end of the averaging period to allow proper Bayesian uncertainty quantification of the shown result, say by displaying both the 10th and the 90th percentile on the display which grow closer as you wait while standing on it.

    With some cleverness a compact calibration mass might be usable to calibrate absolute scale, transferring up to the "people" range using just a random assortment of stuff that fits on the platform, totalling around 10kg.

    Because building the scale to be linear in response good enough for 20k count of resolution is pretty straight-forward.

Digital scales generally work by warping metal pieces and forcing a flex film resistor glued on the piece to be stretched along, causing its resistance to change, thereby breaking the balance of a Wheatstone bridge, creating force-proportional current to occur, which is finally read out with an ADC.

I guess the overall finickiness of that can't be instantly improved by a better microcontroller alone? They drift and have linearlity issues and show temperature dependancy and all that.

Precise body weight measurement at bathrooms is also probably not that important, 500 grams is one full bottle of soda/water; body weights can easily change that much within a single day.

I would suspect that the "real" reason is combination of both. 100-500g can be a "good" compromise for cheap bathroom scales.

  • You've described a load cell, which is commonly used in laboratory and industrial environments to resolutions exceeding 0.05% of full scale. I've used these in the past with great success:

    https://www.interfaceforce.com/products/load-cells/low-profi...

    Click the "Specifications" tab to see the various error sources. Interface's technical library (linked at the top right of their shop) is a great training tool too, if you want to learn more. To keep your NIST certification - and to maintain accuracy after a high-stress...incident... you need to do occasional recalibration. That would be a problem for a consumer product, but with good mounting and overload protection they really don't change that much over time.

    Then you've got the electronics, and the amplifier required to get the rated precision out of that load cell costs more than the load cell itself.

    Achieving those performance targets costs money, and people buy the cheapest scale that says "Accurate High Precision Digital Bathroom Scale Glass" on the Amazon listing.

Higher resolution would let the user see that your scale is zeroed badly, that repeatability sucks and that the measured weight is not even constant under a constant load.

Decreasing resolution hides all of those.

I remember that a friend told that the Nintendo Wii Balance board gave her the weight on gram resolution. Which is 10-100x better than most commercial bathroom scales. But keep in mind that precision is not the same as accuracy.

As others have said, the crap resolution is to mask the crap repeatability. Better processing can help, but good enough processing fits in the cheapest of microcontrollers. ADC quality is more important, signal conditioning and sensor quality more important still. The biggest factor for accuracy is likely calibration though. A sensor that's 2% accurate with a 2 point calibration can easily become a 0.25% sensor with a 5 point, 3 temperature calibration. But that all takes time, and unless you're running huge batches it adds too much to the bottom line of a low cost product. Source: Designed strain gauge sensors and manufacturing processes for a living

> this TI micro controller is overkill for a bathroom scale

For majority of use cases nowadays it's much easier to use a programmable chip than invent a complex device using discrete analog electronic parts.

It's down to the quality of the sensor, the quality of the ADC translating the signals from the sensor, and the implementation of the software that deals with the ADC translation.

I've spent the last several years of building a very, very fancy scale (well, more of an industrial and R&D lab tool that can be used as a scale).

The reason is that most people use a dirt cheap HX711 or cheaper. A fancier microcontroller doesn't help all that much.

I got to 100dB of dynamic range at 1ksps (1 gram of noise at 100kg max load), so it's very much doable.

I used to have a bathroom scale with a single strain gauge that was accurate. Accurate, as in weigh yourself, pick up a 1lb object, weigh yourself again and see an extra pound. That scale had a "lifetime" nonreplaceable battery in it and after 20 years or so, gave up the ghost.

Every scale I've tried since is wildly inaccurate, and they do have brains and they fake it. Step on, get a random weight within a 5lb range of the true weight. Step on repeatedly, even after the scale has timed out and had to be rezeroed, and get that exact weight again. Fake. Every single 4-sensor scale (one in each corner post) that I've tried does this.

I've since found another relatively vintage single strain gauge scale whose battery still works. And I have a mechanical scale in reserve for when it no longer does.

  • > Accurate, as in weigh yourself, pick up a 1lb object, weigh yourself again and see an extra pound.

    That's resolution (or dynamic range), not accuracy. The scales could be 10lbs off of your weight and still do this.

  • > Fake. Every single 4-sensor scale (one in each corner post) that I've tried does this.

    Huh. I have never experienced this and didn't even know this was a thing. My cheapo Chinesium scale that I bought from Amazon years ago occasionally jumps by a pound or so. I measure myself a couple of times to be sure. But it definitely doesn't "freeze" measurements, as I see a different measurements shoes on in back-to-back measurements.

Analog to digital converters (components generally built-in to uCs and SoCs but you can make them using simple resistor ladders) have common resolution ranging usually from 8bit to 24bit in most consumer hardware.

Resolution of +/- 500g just means there's not enough "steps" values in your ADCs provided bit depth: for example the 10bits on an attiny85 gives you 1024 discreet values you can map to weight values etc.

Mostly quality of the sensor, processing power is not a constraint. Also bear in mind that high range and high accuracy generally aren't very compatible, so to measure 100kg at a 1% accuracy is accuracy to the kg. to get +/-100g accuracy you need a +/-0.1% accuracy.

This is why highly accurate scales usually have very low max weights.

Not an expert here, but I doubt it is related to processing power, but quality of the sensor.