Twittering Bathroom Scale
Posted on April 8th, 2009 in Arduino, Useless Junk | No Comments »
What do you do when you can’t sleep at night? You connect your bathroom scale to Twitter. Talk about the ultimate in accountability. You’ll think twice about eating those brownies before bed knowing you’ll be broadcasting your weight in the morning.
Actually, I had never opened a digital bathroom scale before, so that was the real motivation in doing this. It’s quite clever.

Scale Innards
A system of levers is used to fractionalize the force before it is applied to the strain gauge bar. The strain gauge itself is a standard 4-gauge / wheatstone bridge bonded to a bar setup. The four wires coming from the gauge are the two excitation and two sensor wires.

Strain Gauge Close-up
To interface it with my laptop, I used an Arduino. The strain gauge sensor only outputs a few mV in difference max under load, and because the Arduino can only pickup changes of about 5 mV (5 V / 1024 ~ 5 mV), I had to amplify the sensor first. I started to use the classic 3 op-amp instrumentation amplifier until I remembered what a pain it is to find matching resistors. So, I ended up scrounging up an AD620 from the dead-projects box. That made the interfacing much easier.

Arduino + Amplifier
Once connected, I calibrated the sensitivity with dumbbells. (Mental Note: Next time carry the scale to the weights, not the weights to the scale.) I programmed the Arduino to continuously output the raw pin value and then used a 30 lb, 50 lb, 70 lb, and 90 lb dumbbell to calculate the sensitivity. In my setup (Gain = 150, basically chosen at random. Higher gain would give me more accuracy), the Arduino is sensitive to about 0.5 lb–acceptable for a bathroom scale reading. With the sensitivity value, I then programmed the Arduino to return the weight in lbs when queried.

Scale ready to go
To send the weights to Twitter, I used python-twitter. The python script simply queries the arduino for the weight and twitters it. Noise is averaged out. If I really wanted to do this right, I’d daemonize the python script and have it twitter non-zero substantial values, connect wirelessly to the arduino, and power it from the 9V battery in the scale. But I’m not that serious about it
You can see the Twitter Scale output by following me with the link at the top of page.

