• Please visit and share your knowledge at our sister communities:
  • If you have not, please join our official Homebrewing Facebook Group!

    Homebrewing Facebook Group

A thought experiment to test the general validity of available mash pH software

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
It just dawned upon me that to keep this more on the level of "apples to apples" for MME, it must be said that to get precisely 5.00 mL of Lactic Acid transitioning to 9.89 mL (from scenario 1 to 2), I used the manual DI pH override feature and selected ~5.72 as the DI pH, whereas for scenario #3, in order to keep things more equal with respect to a few of the other available programs, I bumped the DIpH of the Pilsner up to 5.75 when I ran MME with scenario #3. If I had kept it at 5.72 for scenario #3 instead, the output would have been a smidge less than the 8.35 mL of lactic Acid which I reported above as the solution for MME in conjunction with scenario #3.
 
Last edited:
RPIScotty: Sparging is irrelevant to what is going on during the mash. No need to consider it as a factor here.

And as an aside (which does not add or alter any relevance) for DI or RO no acid would likely be added to the sparge water to begin with.

Set your software up again as for scenario #1 and then simply alter 12.5 Lbs. of Pilsner to 25 Lbs. of Pilsner and call it scenario #2.

For Scenario #1 - 6.75 ml 88% Lactic Acid

For Scenario #2 - 7.10 ml 88% Lactic Acid

For Scenario #3 - 7.10 ml 88% Lactic Acid

*Note: I have the DI pH for the Pils malt set at 5.75
 
Thanks much RPIScotty!!!

No sweat. Just to be clear, my sheet is as follows:

1.) Based primarily on the Riffe MpH sheet;
2.) Removes his pH/RA slope term and replaces it with the BW constant 0.17;
3.) Uses weighted average of DI pH for each base malt used (all base malts have separate inputs in the fermentables database);
4.) Models Sauergut as low acid % Lactic;
5.) Uses the Sauermalz calculations from Kai's sheet;
6.) Accounts for pH and mineral changes from antioxidants;
7.) Calculates Kettle acid additions as well as knockout additions for Sauergut and mineral acids;
8.) Has pH override cells for adjusting on the fly (not recommended unless way off but there anyway)

So basically a mutt but really a marriage between BW and MpH with our own little flair added in.
 
For Scenario #3 I used ezRecipe v1.21 instead of ezBrewingWater-RO v2.0.

lactic acid = 5.90 mL for mash pH = 5.40 [Bru'n Water v118]
lactic acid = 7.10 mL for mash pH = 5.40 [RPIScotty]
lactic acid = 7.60 mL for mash pH = 5.40 [ezRecipe v1.21] shown below.
lactic acid = 8.20 mL for mash pH = 5.40 [EZ Water Calculator v3.0.2]
lactic acid = 8.35 mL for mash pH = 5.40 [Mash Made Easy v1.50]
lactic acid = 9.10 mL for mash pH = 5.40 [ezBrewingWater-RO v2.0]
lactic acid = 10.30mL for mash pH = 5.40 [MpH Water Calculator v3.0]

ezrecipe-test.jpg
 
Last edited:
I re-ran scenario #3 with 'MME' for the specific case of the 20 Lbs. of Pilsner malt set to a manual override DIpH of 5.72.

I then got the following output for scenario #3:
------------------------------------------------------------
1) With buffering set at 32, the requirement to hit 5.4 pH for the mash was 7.58 mL of 88% Lactic Acid (the buffering default)
2) With buffering set at 40, the requirement to hit 5.4 pH for the mash was 7.70 mL of 88% Lactic Acid
3) With buffering set at 45, the requirement to hit 5.4 pH for the mash was 7.76 mL of 88% Lactic Acid
4) With buffering set at 50, the requirement to hit 5.4 pH for the mash was 7.80 mL of 88% Lactic Acid

As can be seen, the scenario #3 output difference between ezRecipe, Scotty's personally modified MpH spreadsheet, and Mash Made Easy has narrowed a bunch if I use 5.72 as the DIpH for the Pilsner instead of 5.75. There is little difference at all between ezRecipe and MME for this highly specific case.

Can ezRecipe handle strike waters with beginning analyticals that are other than RO (distilled, DI)?
 
Last edited:
Now we just need someone to brew these beers and measure with a calibrated meter at 20-25 minutes into the mash and report the results with no bias and well be good.

;)
 
I think of may have found (by careful reading of his last post - which, be honest guys, we don't always do) the problem in Martin's reasoning which could be responsible the problem you guys are seeing with Bru'n water. They key paragraph is

The scenario above is simplified when zero alkalinity DI water is employed. The acid demand becomes AB mEq. When the mashing water volume is altered, the acid quantity AB remains unchanged in the scenario.
So far, so good.

Since pH is the concentration of protons in solution, it should be apparent that altering the mash's water/grist ratio will proportionally alter the pH.
Now here's where we run into trouble. It would seem that he is assuming that the added protons (AB mEq of them) are distributed between the malt and the water in a way other than the way they actually are. The bases in the malt (lets throw out doubly dissociated succinate with its second pK of 5.6 as an example: H+ + Suc-- --> HSuc-) are much stronger bases than water is and so they grab the lion's share of the protons with only a small fraction going to protonate water. The quantity taken by the water is approximately 1000*(10^(-pHz) - 10^(-pHs)) in which pHz and pHs are, respectively, the pH at which the water ultimately arrives. It is computed by choosing a trial pH, determining the charge on the water and the charge on the malt bases. The sum must be 0. If it is greater than 0 the pH is too low and another, higher pH is tried. If it is negative then the trial pH is too high and a lower pH is tried until the value which zeroes the charges is found. This is the pH at which the mash will settle.

As indicated in my first response to the OP about 57.2 mEq of protons would be needed for the first scenario of which only 1.2 mEq go to protonate water (H+ + H2O --> H3O+; pH is approximately the concentration of H3O+). The remaining 56 go to protonate molecules of malt bases (H+ + malt_ate- --> Hmalt_ate).

If the amount of malt is doubled but the amount of water left the same the requirement for the malt doubles to 112 but the requirement, for the same pH, for the water remains the same: 1.2 mEq. If the amount of water is also doubled then another 1.2 mEq of protons will be needed to acidify that second 10 gal water to pHz, the target pH. This makes the total requirement 114.4. So, in fact, increasing the amount of DI water used in a mash does make a wee difference (because even DI water has alkalinity) but as the fraction that goes to the water is so small it can be ignored in back-of-the-envelope calculations.

When alkalinity is present in the mashing water, it should again be apparent that additional acid protons are required when the quantity of water is increased. Software that doesn't reflect that water/grist ratio pH variation would not be very accurate.
In the case of DI water the variation in water to grist ratio can be ignored to quite good accuracy. Ignoring the water's requirement causes an error of 1.2/57.2 = 2.1% in Scenario 1. I chase errors of that magnitude and so include the water component in all my alkalinity calculations. Others don't.

Thus when Martin says that even with DI water a program than ignores mash thickness "would not be very accurate" it hints that he doesn't understand what it written above (which he really, really, needs to understand) but it does not explain how his program comes up with no increased acid requirement when malt doubles. Is he somehow conflating malt alkalinity and water alkalinity? I really don't know but think that his problem must be rooted in that part of the forest.
 
Scenario #3: 20 pounds of Pilsner(2L), 1 pound of Vienna(4L) malt mashed in 12 gallons of RO water treated with 2g CaCl2 and 3g(MgSO4).

The pH prediction results of the calculators tested are as follows:

lactic acid = 6.65ml Mash pH = 5.38 [Mash Made Easy v1.50]
lactic acid = 6.65ml Mash pH = 5.38 [Bru'n Water v118]
lactic acid = 6.65ml Mash pH = 5.43 [ezRecipe v1.21]
lactic acid = 6.65ml Mash pH = 5.47 [EZ Watercalculator v3.0.2]
lactic acid = 6.65ml Mash pH = 5.50 [MpH Water Calculator v3.0]

lactic acid = 6.65ml Mash pH = 5.35 Weyermann's pneumatic Pils
lactic acid = 6.65ml Mash pH = 5.46 Weyermann's floor Pils
lactic acid = 6.65ml Mash pH = 5.51 Rahr Pils

From which we might conclude that Bru'n water and Mash Made Easy model "Pilsner (2L)" close to Weyermanns pneumatic pils; that the later version of MME models it closer to Rahr puls and that ezRecipe and EZ Watercalculator model it close to Weyermanns floor pils. But the program that came up with these latter pH measures also
1)Recognizes that water itself has alkalinity which must be separately accounted for
2)The proton donating capacity of lactic acid depends on the pH
3)That the calcium/phytin reaction does not complete in the mash tun. The calculations assume that it is half completed in the mash tun.


I'm not ready to draw any conclusions yet as to why these results are this way. I find it interesting that the wide discrepencies found when using the original scenarios are not present in Scenario #3. I will look a bit deeper once I find the time though.
The only possible conclusion is the one we return to over and over:the different programs model the malts (and other mash components) in different ways and thus come up with different answers for the same set of inputs.
 
The only possible conclusion is the one we return to over and over:the different programs model the malts (and other mash components) in different ways and thus come up with different answers for the same set of inputs.

Bingo Bango.
 
...As can be seen, the scenario #3 output difference between ezRecipe, Scotty's personally modified MpH spreadsheet, and Mash Made Easy has narrowed a bunch if I use 5.72 as the DIpH for the Pilsner instead of 5.75. There is little difference at all between ezRecipe and MME for this highly specific case.

Can ezRecipe handle strike waters with beginning analyticals that are other than RO (distilled, DI)?
The short answer is no, not at this time. I use 100% treated RO water for my recipes. Using ezRecipe to build my recipes and water profiles I then measure and compare the actual mash pH to the predicted mash pH.
 
The only possible conclusion is the one we return to over and over:the different programs model the malts (and other mash components) in different ways and thus come up with different answers for the same set of inputs.

Mash Made Easy actually offers 4 alternate and selectable model profiles for base malts of 3L or lower color. And on top of that, the 5th modifier is to enter your own DIpH (for any malt or grain) manually. And then it offers a range of buffering modification options on top of this, so you can model MME to fit your mineralization as to its measured impact upon mash pH depression. So with testing, one can easily model Mash Made Easy to fit the real world mash pH profiles for just about anyones real world malts or recipes.

The 4 selectable base malt modifiers of your choice within MME are presently labeled as follows:
----------------------------------------------------------------------------------------------------------------------------------------
1) North American 2-Row, which yields a DIpH of 5.67 for 1.8L base malt
2) Pale or Pale Ale, which yields a DIpH of 5.71 for 1.8L base malt
3) North American Pilsner, which yields a DIpH of 5.76 for 1.8L base malt
4) European Pilsner, which yields a DIpH of 5.81 for 1.8L base malt

But for a future upgrade I'm considering simply numbering the base malt modification selectors (slope changers for DIpH math modeling with respect to Lovibond color) with numerals 1 through 4 rather than attempt to stick potentially confining or confusing names to them. This to make Mash Made Easy even easier to use.
 
Last edited:
Mash Made Easy actually offers 4 alternate and selectable model profiles for base malts of 3L or lower color. And on top of that, the 5th modifier is to enter your own DIpH (for any malt or grain) manually. And then it offers a range of buffering modification options on top of this, so you can model MME to fit your mineralization as to its measured impact upon mash pH depression. So with testing, one can easily model Mash Made Easy to fit the real world mash pH profiles for just about anyones real world malts or recipes.

The 4 selectable base malt modifiers of your choice within MME are presently labeled as follows:
----------------------------------------------------------------------------------------------------------------------------------------
1) North American 2-Row, which yields a DIpH of 5.67 for 1.8L base malt
2) Pale or Pale Ale, which yields a DIpH of 5.71 for 1.8L base malt
3) North American Pilsner, which yields a DIpH of 5.76 for 1.8L base malt
4) European Pilsner, which yields a DIpH of 5.81 for 1.8L base malt

But for a future upgrade I'm considering simply numbering the base malt modification selectors (slope changers for DIpH math modeling with respect to Lovibond color) with numerals 1 through 4 rather than attempt to stick potentially confining or confusing names to them. This to make Mash Made Easy even easier to use.

Why don’t you just make the User Input for DI pH the only input?

I can’t see your selectable values covering that much ground. North American Pilsner? Which one? Euro Pilsner? Which one? Etc, etc.

DI pH isn’t something that needs to be estimated. It’s either listed by the maltster or you can test it.
 
Last edited:
..... North American Pilsner? Which one? Euro Pilsner? Which one? Etc, etc.

Precisely why the present rather generic base malt selectable DIpH 'profile' nomenclature is destined to be changed to selections titled only as numerals 1, 2, 3, and 4 in a future release. To avoid such confusion as this, just as I mentioned above.

If I changed it to accept DI_pH values only, this would take it out of the grasp of perhaps 99%+ of potential end users who would otherwise benefit from it, and render it to those in this camp as anything but "Made Easy". It was "Made Easy" in an effort to accommodate everyone. As it exists at present, it can be made hard (with the benefit of greater mash pH predicting precision) for those willing to travel that route, without removing any of the essential "Made Easy" parts.

That said: After using an earlier edition of your spreadsheet, back when you briefly made it public and open software, and shortly before you decided to remove it from the public, I'm totally in awe of your accomplishment. If it has an Achilles heel, and with this being only my personal opinion, I feel that its beneficial use is going to be found to be out of the grasp of most potential end users due to its combined power and complexity. I can only imagine that in its current 'private' form it is beyond awesome!!!
 
Last edited:
Precisely why the present rather generic base malt selectable DIpH 'profile' nomenclature is destined to be changed to selections titled only as numerals 1, 2, 3, and 4 in a future release. To avoid such confusion as this, just as I mentioned above.

If I changed it to accept DI_pH values only, this would take it out of the grasp of perhaps 99%+ of potential end users who would otherwise benefit from it, and render it to those in this camp as anything but "Made Easy". It was "Made Easy" in an effort to accommodate everyone. As it exists at present, it can be made hard for those willing to travel that route, without removing the essential "Made Easy" parts.

Fair enough. The concern with using generic selectable DI pH values though would be that in trying to make it easy, you are giving people unrepresentative numbers for the malts they are using.

I hear what you are saying though.
 
Fair enough. The concern with using generic selectable DI pH values though would be that in trying to make it easy, you are giving people unrepresentative numbers for the malts they are using.

I hear what you are saying though.

Thank you again! I believe we were potentially typing over each other as I was appending my complement section (a complement to you and your abilities) to my post above. Please go back and read it, as I wouldn't want you to miss it.
 
Thank you again! I believe we were potentially typing over each other as I was appending my complement section (a complement to you and your abilities) to my post above. Please go back and read it, as I wouldn't want you to miss it.

I appreciate the compliment and I’m not looking to trash anything you are doing. I just worry that making things easier for people often involves simplifying certain aspects to the detriment of the user.

For the record, I’d put my own sheet out of a.) there wasn’t already a flood of brewing software on the market, and b.) if it wasn’t totally derivative.
 
For the record, I’d put my own sheet out of a.) there wasn’t already a flood of brewing software on the market, and b.) if it wasn’t totally derivative.

As to the derivative part, I can only state that Issac Newton proclaimed (quoting him from memory) "If I have seen farther, it was only because I was standing upon the shoulders of giants.".

If you have seen farther, then credit/complement the giants within your software and release it. Have you noticed that you are to be found among the giants listed within 'Mash Made Easy'?
 
Last edited:
As to the derivative part, I can only state that Issac Newton proclaimed (quoting him from memory) "If I have seen farther, it was only because I was standing upon the shoulders of giants.".

If you have seen farther, then credit/complement the giants within your software and release it. Have you noticed that you are to be found among the giants listed within 'Mash Made Easy'?

Yup. And it’s much appreciated.

I may put something together this week for people to play with.
 
No sweat. Just to be clear, my sheet is as follows:

1.) Based primarily on the Riffe MpH sheet;
2.) Removes his pH/RA slope term and replaces it with the BW constant 0.17;
RPIScotty in MpH v3 after changing 'pH / RA slope S_RA (L/mEq)' from a formula to 0.17 as you suggest. When using Scenario #3 only 6.0ml of lactic acid was needed to reach pH 5.40. Was that the only change you made?

'For Scenario #3 - 7.10 ml 88% Lactic Acid'

I recorded mineral ppm concentrations of Ca2=12, Mg2=7, Cl=21 and S04=26.
 
RPIScotty in MpH v3 after changing 'pH / RA slope S_RA (L/mEq)' from a formula to 0.17 as you suggest. When using Scenario #3 only 6.0ml of lactic acid was needed to reach pH 5.40. Was that the only change you made?

'For Scenario #3 - 7.10 ml 88% Lactic Acid'

I recorded mineral ppm concentrations of Ca2=12, Mg2=7, Cl=21 and S04=26.

The other important change is to remove the DI pH calculation and replace it with a weighted average of all the base malt DI pHs, which are user inputs in my sheet.

I also extrapolate out the mineral calcs for Sauergut and for Kettle Acid and Knockout Acid additions.
 
The other important change is to remove the DI pH calculation and replace it with a weighted average of all the base malt DI pHs, which are user inputs in my sheet.

I also extrapolate out the mineral calcs for Sauergut and for Kettle Acid and Knockout Acid additions.
Thank you RPIScotty.
 
If it has an Achilles heel, and with this being only my personal opinion, I feel that its beneficial use is going to be found to be out of the grasp of most potential end users due to its combined power and complexity.
Reading along I was thinking this very same thing when this post came along. The basics here are really very simple to the point that the first spreadsheet I did that predicted mash pH accurately I put together during the presentation before mine at a MBAA meeting because I wansn't very interested in what the guy was saying but noted that he did include a spreadsheet in his talk and was thus able to illustrate his points and I figured my talk would benefit from that too. To use a simple spreadsheet, though, you have to have complete malt data and you aren't going to get that from the maltsters which means you have to get it from someone like me and a few other guys who are willing to make the measurements for you or do it yourself and as there is no ASBC sanction for this there is no MOA and so the data would not be standardized. In addition to having complete malt data you have to accept the 'model' represented by that data. If you don't have that data then you have to deduce it from what you do have which is information on malt type and malt color. Augmenting that data by giving the brewer the ability to enter pHDi is obviously a step in the right direction. Giving him the ability to put in the first (linear) buffering coefficient too is another step in the right direction and allowing him to enter the second order coefficient another. But now we expect him to understand what these terms mean or rather at least what the effect of modifying them might be and that's way beyond most potential users of a spreadsheet or program - even among professional brewers.

So I think it's fantastic that you guys are exploring all these avenues but you'll probably wind up where I did: 255 rows and 30 columns for the water sheet and 134 rows by 16 columns for the malt sheet. There's quite a lot of empty cells in there, though. It's got all kind of neat bells and whistle's of course and I can do almost anything water related with it but I stopped offering it to people years ago and would never consider doing so again (though I have given it to a few people).
 
....But now we expect him to understand what these terms mean or rather at least what the effect of modifying them might be and that's way beyond most potential users of a spreadsheet or program - even among professional brewers.
AJ thank you for summing it all up. To the majority of brewers there are too many unknowns. As you have stated. When we provide options that allow brewers to compensate for each unknown we increase their learning curve. Which in the end makes things less than easy for most users.

Even today when discussing the IBU contributions of whirlpool hops or the exact cell count and viability of yeast there are unkowns. I like to refer to the followng quote. It was written some time ago about hops. But in my mind could just as easily be applied to predicting mash pH today.

"Utilization numbers are really an approximation. Each brew is unique; the variables for individual conditions, i.e. vigor of the boil, wort chemistry, or for losses during fermentation, are just too hard to get a handle on from the meager amount of published data available. Then why do we bother, you ask? Because if we are all working from the same model and using roughly the same numbers, then we will all be in the same ballpark and can compare our beers without too much error. Plus, when the actual IBUs are measured in the lab, these models are shown to be pretty close." ~John Palmer (How To Brew)
 
In scenario 2 there is twice as much acid as in scenario 1 so twice as much acid is required. It is thus clear as the azure sky of a summer's day that any software that doesn't say that scenario 2 requires twice as much acid is seriously in error to the point that I can't believe that Bru'n water nor any other program would, in response to the doubling of the amount of malt entered, respond with the admonition to add less acid. The data has to have been entered wrong.

AJ, I'm not sure what your saying above???

Let me try responding to this a second time this time realizing that there is a goof as obvious as a dead baby in the punch bowl in what I wrote. Can't blame anyone for not understanding it as I posted it. It should say "In scenario 2 there is twice as much malt as in scenario 1 so twice as much acid is required for the malt." That should make things a little clearer!
 
Last edited:
A.J., in scenario 2 there is not more water during the mash step. Only twice as much malt. The malt is being mashed within 10 gallons of DI strike water for both scenarios.
 
In No. 38 I made the point that the cations in the malt were much stronger bases than water and thus absorbed most of any added protons. I cited succinate with its second pK = 5.6 as an example but didn't give a comparable number for water. It would be - 1.44 so indeed succinate is a much stronger base. Other similar carboxyllic acids, which I assume are the sorts that would be found in malts but don't really know are
fumarate: 4.44
succinate: 5.6
tartrate: 4.4
malate: 5.2
malonate: 5.9

All of these are, in the regions of malts DI mash pH's and mash pH, have pK's which are in the region where the acids would be considered good buffers. For water this is clearly not the case. Water doesn't start to exhibit buffering (or indeed appreciable alkalinity) until pH near 4.5 is reached (ever wonder how ISO picked that value for the end point in their alkalinity titration procedure?).
 
Ah, indeed. So for scentrio 2 you need twice the acid for malt and the same for the water (2*56 + 1.2 mEq).

So there is no change. The solution for scenario 1 is 5.00 mL of 88% Lactic Acid, and the solution for scenario 2 is 9.89 mL.

Scenario #1: 57.2 mEq (malt + water) / 11.45 mEq/mL (88% lactic acid) = 5.00 mL lactic acid
Scenario #2: 113.2 mEq (malt + water) / 11.45 mEq/mL (88% lactic acid) = 9.89 mL lactic acid
 
And then an admittedly corner cutting but rapid short-cut solution to scenario #3 becomes:

21 lbs. malt/25 lbs. malt x 9.89 mL Lactic Acid for scenario #2= 8.31 mL lactic acid for scenario #3

This short-cut would rapidly establish a quasi-empirical scenario #3 upper limit for lactic acid, and then the actual answer would logically be anticipated to be fractionally a wee tad less acid than this upper limit due to the added minerals, and also due to 1 Lb. out of the 21 Lbs. of grist being Vienna malt as opposed to Pilsner malt.
 
Last edited:

Latest posts

Back
Top