View on GitHub


Jay Slater

Update and further testing results

I’ve been hard at work the last few days. Let’s take a look at what I’ve been doing.

Development update: front end

Libra Cervisiae requires a more complicated user-facing interface than Pendulum did. In particular, calibration is more complicated, and the use of two temperature sensors (one for the wort, one for the ambient temperature) means there has to be some mechanism to select between them.

load cell calibration

To calibrate the scale, you start by hitting the tare button with nothing on the platform. That sets the zero point, as you’d expect it to. After that, you place a known mass on the platform, enter its weight in grams, and hit the calibrate button. That sets the scale factor, by which the raw reading is divided to obtain the output in grams.

Both tare and calibration have a seconds box; that determines over how long the value is averaged. 10 seconds seems like a good middle ground between speed and accuracy. Up to 30 seconds is supported.

temperature selection

The DS18xxx series of sensors have factory-set 64-bit device addresses, and can be connected in parallel on the same bus. Setting a wort sensor and board sensor allows me to provide accurate wort temperatures and also accurate ambient temperatures to correct the load cell output (if needed; see later on for that).

Development update: back end

On the non-user-facing front, I’ve completed and committed a first pass at using Karl Balling’s findings to interpret the scale’s output. In 1843, that august German scientist determined that fermenting one gram of sugar yields 48.39% alcohol, 46.27% carbon dioxide, and 5.32% yeast biomass.

So, what we do is save the starting mass and the starting gravity when starting a batch. With the starting mass, we can determine the weight loss, and with the weight loss, we can determine the amount of alcohol produced. Since we’re measuring the current mass of beer to get that weight delta, we can calculate the percentage alcohol by weight super-easily.

From there, it’s fairly simple math to estimate an ABV figure and a specific gravity figure. Unfortunately, the gravity calculation depends on the ABV calculation at present. It seems to me like it should be possible to relate ABW to gravity directly, but I don’t have a formula for that, so for now gravity will have to suffer compounded errors.

Ongoing testing

At present, I’m testing load cell temperature sensitivity. You can follow my progress here. The spreadsheet isn’t updating automatically; instead, I’m plugging in updated values every few hours.

The results so far seem to suggest that if there is a temperature effect, it’s quite minor. At the same time, the temperatures in my basement have not fluctuated sufficiently to get a good feeling for whether temperature actually makes a difference.

At the time I’m writing this, the maximum value is 2737.706g, and the minimum is 2736.207g, for an accuracy of almost exactly ±0.75g. That corresponds to about ±0.0004 SG, and the signal-to-noise conditions only get more favorable when moving up to full-size batches. It’s looking good.

Written on August 1, 2018