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

    Homebrewing Facebook Group

Statistical significance of mash pH estimates?

Homebrew Talk

Help Support Homebrew Talk:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
It now seems all these recent posts regarding ph are more directed at the fact people are taking readings at 10-20 mins and it's matching what there software is suggesting. So is you argument that the ph needs to be taken at 30 mins if using newer software and the old method is incorrect? If so we have all wasted alot of bandwidth debating seemingly the same thing over and over and I think rewording the question would have prevent the ongoing debate. That being said these threads in the last few days are the first time I've heard of doing it that late. Ive never noticed a significant change in the ph from 10-30 mins but I've also only been concerned about staying in range. I also use a herms system and run it at full speed recirculation so it might help with how much time it takes to get a accurate reading as the liquid is turned over much faster than just letting it sit. Cheers

If you are happy to accept a false low early pH reading taken when saccharification is incomplete and reactions are still actively happening, merely because it works for your preferred software (and obviously for your preferred general to specific chosen water to grist ratio, which is a demonstrable tripping point for your softwares output precision) rather than achieve a more correct mash pH, then by all means remain happy and continue as you have been doing. But this thread is seriously attempting to establish the strict criteria by which valid mash pH measurements can be achieved (plus determine if they even can) across multiple people making multiple batches, and the last thing that statistical significance (the entire point of this thread) needs by which to damage it and make it impossible to achieve is to have everyone who contributes on a different page rather than everyone on the same page.

But despite your happiness, if your software says something on the order of 2.4 mL of lactic acid is correct to hit a 5.4 mash pH target, and A.J. deLanges proton balancing software says something on the order of 5.9 mL is required (quite similar as to what BS3 predicts from your testimony in other threads by the way), and if A.J.'s software is using hard science based upon measured chemical reaction reality (and D.M. Riffe, is doing likewise, wherein BS3 is using D.M. Riffe), then shouldn't you be willing to take a step back and reflect upon the potential implications of this a bit, rather than ever boldly charging forward and stating your position that sampling at 10 minutes always works for you and your preferred software so therefore it not only should, but must, be made to work the exact same way for everyone else as well, with the clear implication that their software and science efforts and mash pH sampling times are flawed?
 
Last edited:
If you are happy to accept a false low early pH reading taken when saccharification is incomplete and reactions are still actively happening, merely because it works for your preferred software (and obviously for your preferred general to specific chosen water to grist ratio, which is a demonstrable tripping point for your softwares output precision) rather than achieve a more correct mash pH, then by all means remain happy and continue as you have been doing. But this thread is seriously attempting to establish the strict criteria by which valid mash pH measurements can be achieved (plus determine if they even can) across multiple people making multiple batches, and the last thing that statistical significance (the entire point of this thread) needs by which to damage it and make it impossible to achieve is to have everyone who contributes on a different page rather than everyone on the same page.

But despite your happiness, if your software says something on the order of 2.4 mL of lactic acid is correct to hit a 5.4 mash pH target, and A.J. deLanges proton balancing software says something on the order of 5.9 mL is required (quite similar as to what BS3 predicts from your testimony in other threads by the way), and if A.J.'s software is using hard science based upon measured chemical reaction reality (and D.M. Riffe, is doing likewise, wherein BS3 is using D.M. Riffe), then shouldn't you be willing to take a step back and reflect upon the potential implications of this a bit, rather than ever boldly charging forward and stating your position that sampling at 10 minutes always works for you and your preferred software so therefore it not only should, but must, be made to work the exact same way for everyone else as well, with the clear implication that their software and science efforts and mash pH sampling times are flawed?
I was asking a question. You seem to think everyone is challenging you and never actually answer the questions. Take a breath. You and the others have forgotten more about this topic then I'll ever know. Jeez what's so hard for you to understand. I'm asking a simple question because I genuinely stiil don't understand what this huge debate is about. I ask a simple question and get a huge long scientific answer that most including myself don't understand. Can you please answer my question directly and simply. All I've ever said over and over and over again is that the software I was using appeared to be working fine. All my question to you is what software do you recommend I use and what time do you suggest I check my pH. It's that simple dude come on wake up. It's not a challenge.
 
I was asking a question. ... snip ... All my question to you is what software do you recommend I use and what time do you suggest I check my pH. It's that simple dude come on wake up. It's not a challenge.

1) MpH or Brewer's Friend in grist mode, followed by gen 2 when it actually appears. Brewer's Friend accepts DI_pH values.

2) 30 minutes or later during the mash.
 
1) MpH or Brewer's Friend in grist mode, followed by gen 2 when it actually appears. Brewer's Friend accepts DI_pH values.

2) 30 minutes or later during the mash.
Thanks for the easy to understand response. Do you think it's possible the reason people are having issues with bs3 is because there taking there Reading's at the 10min mark? I only ask because I really really want a all in one solution and didn't have luck with bs3? Cheers
 
1) BS3 is gen 1, but as stated above, if it is using Riffe's highly respected formulas (as RPIScotty attests), it has an undeniably high pedigree in that regard.
I've responded to this post before but am doing so again on a different part of it i.e. that quoted above. I was looking at the Riffe formula the other day and got a "hey, that looks familiar!" twinge. And indeed it is. This is going to get a bit technical so don't feel bad if you are not one of the small group interested in this stuff (e.g. people developing spreadsheets - maybe this should be under Brewing Software.

The proton deficit of a mash at pHz is

Q(pH) = ∑_i mi*(a1i*∆pHi + a2i*∆pHi^2 + a3i*∆pHi^3) + Qw(pH) + Qo(pH)

in which mi represents the mass of malt number i, ∆pHi = pH - pHDi where pH is a pH of interest (e.g. the desired mash pH) and pHDi the pH of a mash made with malt i and deionized water, a1i the linear buffering coefficient for malt i, a2i the quadratic buffering coefficient for malt i and a3i the cubic. Qw is the proton deficit of the water (mostly due to alkalinity) and Qo the deficit of other stuff in the mash, that is the acids or bases the brewer has added to set pH. Both of these are non linear functions of pH as is, obviously, the sum over the malts. The pH of the mash is the pH that sets Q(pH) = 0 at which pH the protons contributed by acid malts and added acids just equal the protons absorbed by the basic malts, the water's alkalinity and any added bases. As the function is clearly non linear we can't write a simple equation pH = formula to solve it. What we have to do is guess what we think the answer might be and call this pHo. pHo = 5.4, in the middle of the range of desirable mash pH's might be a good guess. We then find the rate of change of the function with pH at pHo. This is symbolized by dQo/dpH. Those familiar with a little calculus will easily perceive that

dQo/dpH = ∑_i mi*(a1i +2*a2i*∆pHi + 3*a3i*∆pHi^2) + dQw(pHo)/dpH + dQo(pHo)/dpH

∆pHi = pHo - pHDi in this formula

We now "correct" our initial guess and come up with a new guess, pH1

pH1 = pHo - Q(pHo)/(dQo/dpH)

We then repeat the process until we are satisfied that Q(pHn) is sufficiently close to 0. Those with some familiarity will recognize that this is the Newton - Raphson algorithm. It is how mash pH is found in the Gen II software.

Gen I programs don't (AFAIK) do iterative processing (though any Excel spreadsheet is capable through its Solver and other means). So what they do is say "Lets pretend the malts are linear, that the water's deficit is given by the alkalinity and that the number of protons absorbed or released by added acids and bases are constants". This implies that the a2 and a3 coefficients are both 0 as are dQw(pHo)/dpH and dQo(pHo)/dpH. These assumptions simplify Q to

Q(pHo) = ∑_i mi*a1i*(pHo - pHDi) - Qw - Qo

and dQo/dpH to

dQo/dpH = ∑_i mi*a1i

The first guess is then

pH1 = pHo - (∑_i mi*a1i*(pHo - pHDi) + Qw(pH) + Qo(pH))/∑_i mi*a1i

There is no reason to make a second or subsequent guesses as the linearized approximation to Q will be 0 at pH1.

Now Riffe went one step further (to his detriment). He set pHo = 0. This changes pH1 to

pH1 = - (∑_i mi*a1i*(- pHDi) + Qw(pH) + Qo(pH))/∑_i mi*a1i

Rearranging the signs

pH1 = (∑_i mi*a1i*pHDi - Qw + Qo)/∑_i mi*a1i

This is the Riffe equation arrived at by solving Q(pH) = ∑_i mi*a1i*(pH - pHDi) + Qw + Qo for pH. Appreciating that this is essentially taking the first step in a Newton-Raphson solution might have let him perceive that one does not need to completely throw away non linear malt information (where it is available) nor does one have to neglect the dependence of the deficits of bicarbonate (added or alkalinity derived), lactic, phosphoric or other acids and bases on pH in order to have a non iterative solution. One has everything he needs to compute

pH1 = pHo -( ∑_i mi*(a1i*∆pHi + a2i*∆pHi^2 + a3i*∆pHi^3) + Qw(pH) + Qo(pH) )/(∑_i mi*(a1i +2*a2i*∆pHi + 3*a3i*∆pHi^2) + dQw(pHo)/dpH + dQo(pHo)/dpH)

and thus get a better answer than the current form of the equation. To do so he must compute the water and addition deficits and their derivatives. While the formulas for dQw/dpH and dQo/dpH are algebraic nightmares it is easy enough to get these derivatives from, for example

dQw/dpH = ( Qw(pH + epsilon) - Qw(pH) )/epsilon

where epsilon is a very small number.

All the formulas above are there to show the relationship of the Riffe equation to the first step of Newton-Raphson. The message to be taken away here is that a developer will get a better answer from

pH = 5.4 - Q(5.4)/dQ(5.4)/dpH

with dQ/dpH = ( Q(pH + epsilon) - Q(pH) )/epsilon than he will from the Riffe formula as it is now stated. Note that improvement depends on how non linear the mash is and is typically quite small but it can be up to 0.05 pH or more in some cases. If one is to use a linear malt model and constant Qw and Qo there is no advantage. Of course its still better to write code to implement Newton- Raphson.
 
Last edited:
I posted something to the "How do I correlate pHDI with Wort pH" thread which may just have appreciable relevance here in this thread which is trying to establish baselines for standardization.

The link to my post is:
"https://www.homebrewtalk.com/forum/...t-ph-for-weyermann-malts.653767/#post-8377418

To gain a more full understanding for this linked post, please read the entire thread once you get there via the above link.

This insight just hit me early this morning. As of my posts from yesterday (right up to my last one) I was still chasing the elusive "mash pH" standardization requirements. Now I'm abandoning "mash pH" itself as fantasy conception useful only for bragging rights. In the real world of brewing the only thing that matters (with respect to pH, and its measurement) is "wort pH".

The Weyermann "mash pH/wort pH" stuff can be seen in the Sauermalz (acid malt) progression table presented within this pdf of what I believe was originally a Weyermann ppt presentation:
http://lowoxygenbrewing.com/wp-content/uploads/2016/11/Weyermann_TKW_Mash-pH_2010.pdf
 
Last edited:
Well, last Tuesday night I finally was able to brew a Saison. I changed a couple of items in my recipe and obtained new lactic acid addition suggestions. They were:

Mash Made Easy 3.10 2.98ml
Brewer's Friend 3.07ml
BeerSmith 3 7.01ml

I choose to add 3.07ml. Below are my readings:
@15 minutes: cooled to 31.8c (89.24F) 5.48 pH
@15 minutes: cooled to 29.1c (84.38F) 5.53 pH

@30 minutes: cooled to 40.3c (120.74F) 5.52 pH
@30 minutes: cooled to 29.3c (84.74F) 5.56 pH
@30 minutes: cooled to 24.6c (76.28F) 5.56 pH
 
Nice test results there!!!

For every recipe thrown at it Mash Made Easy actually provides 6 different outcomes for 6 different primary base malt types. Which of the 6 DI_pH ranges did you have selected for your recipes primary base malt when you arrived at 2.98 mL, and what specific base malt did you actually utilize in this recipe?
 
If your target was 5.4 mash pH, and you mashed at 5.56 pH, then my first guess (not knowing any specifics of the recipe or the water) is that something closer to ~5.5 mL or 6 mL of 88% lactic acid was required here.
 
I probably did not use the correct drop downs. With that said, I used the very bottom (6th) one (-5.77 to 5.82 DI_pH). I'm guessing I probably did not input some items correctly...my target was 5.40 pH.

My recipe was:
- 16.30 RO water with 9.90g gypsum and 7.91 calcium chloride
- 14.7lbs Dingeman's Pilsner
- 2.37lbs Briess Rye Malt
- 2.10lbs Briess Aromatic Malt
- 1.20lbs Flaked Rye
- 0.63lbs Torrefied Wheat

I have a two vessel k-rim system similar to Blichmann's BrewEasy except I use Spike Brewing's 20 gallon custom kettles side by side with two recirculating pumps.
 
You entered it correctly for the Pilsner malt.

I can see now where I'm going to have to properly accommodate both rye malt and flaked rye in my next upgrade release. By forcing a far more correct DI_pH (complements of D.M. Riffe) of 6.65 for the Flaked Rye via manual override I was able to get MME up to a need for 4.89 mL of 88% lactic acid, as can be seen below. Drop the 6.65 pH manual override and MME (as otherwise seen below) is asking for 3.71 mL of 88% lactic acid.

CodeSection.png


Edit: Does anyone have a measured DI_pH for Briess Rye Malt (or anyone else's Rye Malt)?
 
Last edited:
As it turns out, BS3 was likely not any farther off than the others (for the way you input the requisite data). BS3's estimate of 7 mL of 88% lactic acid (again, per your inputs) would highly likely have mashed this recipe within the 5.25 to 5.3 pH range. Essentially the same magnitude of error as for the others, only in the opposite direction.
 
@Silver_Is_Money , thank you for looking at this. I definitely had items wrong. I had the grist buffering capacity at 34.0. My anticipated gallons to fermenter was 10.5 gallons.

I had:
- Dingeman's Pilsner 1.6 Lovibond Color
- Briess Rye Malt 3.7
- Briess Aromatic Malt 20
- Flaked Rye 3.0
- Torrefied Wheat 1.50
 
It would have been interesting to see if a sample drawn at fully 60 minutes into the mash would have come in at about 5.61 to 5.63 pH.
 
@Silver_Is_Money , thank you for looking at this. I definitely had items wrong. I had the grist buffering capacity at 34.0. My anticipated gallons to fermenter was 10.5 gallons.

I had:
- Dingeman's Pilsner 1.6 Lovibond Color
- Briess Rye Malt 3.7
- Briess Aromatic Malt 20
- Flaked Rye 3.0
- Torrefied Wheat 1.50

Oops, my error in not revising my copy of MME to reflect 10.5 gallons to the fermenter (and leaving it at 5.7 gallons) impacts only the final SRM color forecast. And changing my input to match your specific Lovibond colors would hardly move the results. And 34 vs. 35 for the buffering changes things very little also. As you mentioned above, what really matters is choosing the best drop-down selectors for each grist component (or better yet of course, manually inputting DI_pH values). And I clearly need selectors for Rye Malt and for Flaked Rye in an update. But I will first need to attain a valid DI_pH for Rye Malt.
 
Last edited:
I will take a 60 minute measurement in the future. Thanks for the suggestion.

Thank you! Are you interested in taking a DI_pH for your Briess Rye Malt? Mash 50 grams of the malt in 100 mL of distilled (or good quality RO) water at about 146-158 degrees F. for 60 minutes, and take the DI pH reading at room temperature.
 
I definitely had items wrong. I had the grist buffering capacity at 34.0. My anticipated gallons to fermenter was 10.5 gallons.

I had:
- Dingeman's Pilsner 1.6 Lovibond Color
- Briess Rye Malt 3.7
- Briess Aromatic Malt 20
- Flaked Rye 3.0
- Torrefied Wheat 1.50
@CodeSection for a 10 gallon batch using the grains you mention. I get a predicted mash pH of 5.50 without adding any lactic acid when just adding 9.9g gypsum and 7.1g of calcium chloride. When adding 3.1ml lactic acid it changes to 5.41 pH. How sure are you of your actual pH measurements?
 
As an aside, I find it interesting that both BS3 and ezReipe (ScrewyBrewer's latest spreadsheet) use D.M. Riffe's formulas, yet one (ezRecipe) arrives at ~3.1 mL of lactic acid, while the other (BS3) arrives at ~7 mL's.
 
Thank you! Are you interested in taking a DI_pH for your Briess Rye Malt? Mash 50 grams of the malt in 100 mL of distilled (or good quality RO) water at about 146-158 degrees F. for 60 minutes, and take the DI pH reading at room temperature.

Sure, I can do that. Long weekend, wife out of town = extra time.
 
@CodeSection for a 10 gallon batch using the grains you mention. I get a predicted mash pH of 5.50 without adding any lactic acid when just adding 9.9g gypsum and 7.1g of calcium chloride. When adding 3.1ml lactic acid it changes to 5.41 pH. How sure are you of your actual pH measurements?

Are you considering that the Flaked Rye has a DI_pH of a whopping 6.65 per D.M. Riffe?
 
@CodeSection for a 10 gallon batch using the grains you mention. I get a predicted mash pH of 5.50 without adding any lactic acid when just adding 9.9g gypsum and 7.1g of calcium chloride. When adding 3.1ml lactic acid it changes to 5.41 pH. How sure are you of your actual pH measurements?

I used a brand new Milwaukee MW102 ATC pH meter which I bought and received at the end of May but didn't use until last Tuesday. I calibrated it about 5-7 minutes before I first used it using the buffering solution packets (4.01 and 7.01) that came with the unit. I bought extra bottled buffering solutions for future use. Can buffering solution go bad? BTW, the pH electrode was in a sealed wet storage vial when I opened the box. It did not dry out.
 
Thank you! Are you interested in taking a DI_pH for your Briess Rye Malt? Mash 50 grams of the malt in 100 mL of distilled (or good quality RO) water at about 146-158 degrees F. for 60 minutes, and take the DI pH reading at room temperature.
Please take a reading at 25 - 30 minutes. Nothing wrong with taking another at 60 too but what we need is the 30 minute reading.

And if you are really interested in helping out repeat the process with 200 mg of sodium bicarbonate added. This will give us the buffering (equally as important as the mash pH) using the Riffe method but with sdium bicarbonate as the 'fiducial malt'.
 
Are you considering that the Flaked Rye has a DI_pH of a whopping 6.65 per D.M. Riffe?
I’m not looking at DI pH in ezRecipe using Riffe’s latest formula. ezRecipe 1.21 is using Gen1 color based predictions based on Riffe’s prior work.

@30 minutes: cooled to 24.6c (76.28F) 5.56 pH

I just don’t get how a measurement of pH 5.56 is possible given the grains and mineral additions plus 3.1ml of lactic on top of that.
 
Last edited:
Please take a reading at 25 - 30 minutes. Nothing wrong with taking another at 60 too but what we need is the 30 minute reading.

And if you are really interested in helping out repeat the process with 200 mg of sodium bicarbonate added. This will give us the buffering (equally as important as the mash pH) using the Riffe method but with sdium bicarbonate as the 'fiducial malt'.

Ok. Just to make sure I am understanding..

First round: 50g of Briess Rye Malt with 100 ml of distilled water mashed between 146-158 degrees for 60 minutes. Take readings at 30 minutes and 60 minutes AFTER it cools to room temperature (~72F). Since I need a sample at 30 minutes, can I double the recipe to 100g of malt with 200ml of distilled water, if needed since I would be removing a portion for testing?

Second round: Repeat the above, however, add 200mg sodium bicarbonate to 100 ml of distilled water or 400mg sodium bicarbonate to 200ml of distilled water before starting mash.
 
Close except for one little detail.

Mash at 50 °C for 60 minutes with frequent stirring. At 30 minutes withdraw a little of the liquid and cool to room temperature as quickly as possible. Measure the pH of that. It might make things a little easier if you used 40 g with 100 mL (that's what I did for the MBAA paper which represents the closest thing to a standard procedure that we have at this time).
Continue mashing for another 30 minutes at 50 °C (total 60 minutes). Cool a sample and measure.
 
@CodeSection for a 10 gallon batch using the grains you mention. I get a predicted mash pH of 5.50 without adding any lactic acid when just adding 9.9g gypsum and 7.1g of calcium chloride. When adding 3.1ml lactic acid it changes to 5.41 pH. How sure are you of your actual pH measurements?

I just realized I could use your program. When I entered everything including 3.1ml of lactic acid, it changes the pH to 5.40 which was my target number.

I am confused as well. If the pH meter is calibrated minutes before at taking actual samples, one would think the meter would be accurate. What could I being doing wrong?
 
Close except for one little detail.

Mash at 50 °C for 60 minutes with frequent stirring. At 30 minutes withdraw a little of the liquid and cool to room temperature as quickly as possible. Measure the pH of that. It might make things a little easier if you used 40 g with 100 mL (that's what I did for the MBAA paper which represents the closest thing to a standard procedure that we have at this time).
Continue mashing for another 30 minutes at 50 °C (total 60 minutes). Cool a sample and measure.

Got it. Thanks!
 
I’m not looking at DI pH in ezRecipe using Riffe’s latest formula. ezRecipe 1.21 is using Gen1 color based predictions based on Riffe’s prior work.

@30 minutes: cooled to 24.6c (76.28F) 5.56 pH

I just don’t get how a measurement of pH 5.56 is possible given the grains and mineral additions plus 3.1ml of lactic on top of that.

Well I'm a little confused about the pHDI's and I don't really have models for any malts that are close to a lot of those used but using the Riffe value for the flaked rye here's what I get.
Untitled 2.jpeg


Estimated pH right at 5.56! Of course I could change parameter for any component and get a different answer but I guess this proves that even one pellet from a shotgun load has a chance of going through the bullseye. You can see from the right two columns where the protons went (target pH 5.4) and how they pulled the pH estimate.
 
Last edited:
Back
Top