Saturday, October 10, 2015

Natural Roasts

People typically talk about the art of coffee roasting. We're interested in the science. Therefore, we keep adding features to Artisan that allow to analyze and compare roasts. Here we want to introduce our latest observation and the tools now available in Artisan v0.9.8 to play with the underlying idea.

On September 2015 Rafael Cobo added a post on HomeBarista titled Natural logarithm curve for roasting triggered by a discussion about Scott Rao on The FlickRafael wrote
"A decreasing deltaBT would theoretically approximate a natural logarithmic curve since the ln() function has a positive slope that decreases steadily as time increases."

This is an interesting obvervation, because the natural logarithm ln() is based on Euler's number e, which is understood as one of the fundamental mathematical constants, similar to π. Further, there is an interesting work on chemical kinetics that explains the relation of logarithms to the development of chemical reaction.

Natural Roast Model

Rafael proposed the following general formula to compute the temperature T in degrees (in C or F) to describe any profile that is steadily decreasing.

T = A*log(B*t-C,e)
T: the temperature in degrees (in C or F)
t: the time in seconds since CHARGE
e: Euler's constant as base of the natural logarithm (e=2.71828)
A: a multiplication factor
B: rate of change in combination with A
C: time shift to the right

The example Rafael gave for such a "natural" ln()-roast approximation
T = 65*log(1.618*t-350,e)
is plotted as thin black curve in the following profile using the Artisan plotter. Note that the above formula (without the "T=" can be directly pasted into one of the plotter fields in Artisan).

Note that this ln() curve fits nicely the bean temperature (BT) from about 300F (DRY) on. Note also that this roast mostly fullfils Rao's criteria of an always declining BT rate-of-rise (RoR) curve drawn in light blue as computed by Artisan from the BT curve displayed in dark blue. Only towards the end of the roast, at the point the BT deviates from the ln()-curve, its RoR rises slightly.

The following shows the shape the RoR (in light blue) corresponding to this logarithmic curve (here in dark blue) as computed by Artisan.

To summarize, the observations that drove Rafael to its natural roasts model were:

  1. The ln() curve has an always positive slope that decreases steadily (the RoR incrementally decreases over time). This models the current trend in roasting in terms of RoR for best results based on empirical results.
  2. The concentration of chemical products in a first order reaction follows a logarithmic curve. Most reactions speed up as temperature increases and the concentration of reactants decreases. There could be some parallels between RoR and speed of the chemical reaction.

Natural Roasts in Artisan

Looking at my recent roast profiles I could see that most of my successful ones seem to follow that natural roast model. However, I had a hard time to find the right constants A, B and C to draw the corresponding natural logarithm curve on my profiles using the plotter.

Therefore, I added a function in v0.9.8 that calculates the best approximation of the current profile and thus automatically determining those three constants. The function takes the following three time/temperature points as input from the current profile:

  1. CHARGE (the moment the beans are filled into the machine): assuming the BT of the green beens to be at room temperature standardized to 22C/70F (ignoring the BT reading of the profile here)
  2. DRY (the moment the beans turn yellow)): an early point at which the measured BT can be assumed to be close enough to the real temperature of the beans
  3. FCs (the moment the beans start to make a cracking noise for the first time): a second point that can be determined relatively accurate

All one has to do now, is to load a profile and open the math menu (menu Tools >> Extras; Math tab) and click the Show flag in the ln() part.

Note that if the points DRY and FCs are not defined in the current profile (or erased by putting 0:00 in the corresponding time edit element of the Roast Properties dialog), those points are taken from the BT at the intersection with the corresponding phases limits. As those limits can be freely defined in the Phases Dialog (menu Config >> Phases) this allows to define those points as needed.

The resulting ln() approximation is shown as formula in the math tab (see the screenshot above), including the computed values for the constants A, B and C. The curve itself is drawn on top of the current profile as black dotted line with the three anchor points marked by red dots.

The calculated ln() formula displayed in the math tab can be copied directly into one of the plotter fields. If we choose the field P1 or P2, we can finally establish the curve as background profile by pressing the "Background" button, visualize the corresponding ln() RoR curve, and use it as template for further roasts.

The only thing that still remains to be decide upon is the temperature at which to DROP the roast best. Here, Rao's 20-25% commandment could be applied as supported in Artisan by the live display of the phases ratios in the Phases LCDs displayed on the top of the main window on them. Remember that one needs to right-click on those Phases LCDs to get the ratios displayed.

Looking at the last profile above one can see how close this ln() approximation fits to my roast P164. That observation holds for a lot of roasts done on my 80 years old cast-iron Probat drum roasts, but also on those I did on the latest Probatone.

It has been observed that this natural roast style better fits the slow-start and fast-finish roasts (SSFF) than to the fast-start slow-finish roasts (FSSF) as advocated by Rao and some others. While faster and slower roasts are possible along those ln() approximations as shown below, a real FSSF roast would suggest a lower RoR then given by the ln() formula at least from FCs on. But lowering the RoR during the FCs too much has also been found to result in weaker roasting results (cf. Rob Hoos'  book on Modulating the Flavor Profile of Coffee).

Here is a profile roasted on a small dynamic air roaster. A typical FSSF profile. It remains to been seen if a roast along this ln() approximation leads to better results than the original profile or if a compromise, roasting along the ln() approximation until FCs and then following a slightly lower RoR towards the end of the roast, would win.

An approximation using a quadratic function of the form

T = A*t^2 + B*t + C

was also discussed on HomeBarista and has been added to Artisan. While closer to the FSSF roasting style, this one seems to have the problem that it drops at the end of the roast even if the DROP point is considered in the regression as shown in the following.

The quadratic approximation seems to work better for that air roaster profile from above. Just the first phase seem to deviate significantly as can see below.