BrouwVisie (zuur toevoegen)

Gestart door tieskewieske, 31-05-2019 14:10 u

Vorige topic - Volgende topic

0 leden en 1 gast bekijken dit topic.

tieskewieske

Goedemiddag,

Ik wil in BrouwVisie invullen hoeveel fosforzuur (75%) ik toevoeg aan mijn water. Hoe doe ik dit precies? Ik zie een leeg vakje, dan een M en dan H3PO4. Moet ik niet ook ergens invullen welke concentratie ik gebruik? Kan ik ook ergens uitrekenen hoeveel zuur/brouwzouten ik moet toevoegen? (Net als in BrouwHulp). 

Groet

Oscar



In je maisscherm... en dan bij je aantekeningen dat je dit aan je maischwater hebt toegevoegd

Citaat van: tieskewieske op 31-05-2019  14:10 uKan ik ook ergens uitrekenen hoeveel zuur/brouwzouten ik moet toevoegen? (Net als in BrouwHulp). 

Nee...


Jacques

Citaat van: Oscar op 01-06-2019  00:11 u

In je maisscherm... en dan bij je aantekeningen dat je dit aan je maischwater hebt toegevoegd

Nee...

Daarvoor heb je een aanvullend rekenhulpje voor nodig zoals

https://sites.google.com/site/brunwater/
of
http://www.ezwatercalculator.com/


@Oscar
Misschien een idee om dit alsnog in te bouwen? (Ik weet het... dat kost de nodige tijd en die is schaars.)

Oscar

Citaat van: Jacques op 01-06-2019  15:28 u@Oscar
Misschien een idee om dit alsnog in te bouwen? (Ik weet het... dat kost de nodige tijd en die is schaars.)

Indien ik de formules kan achterhalen.... :denken:

hansHalberstadt

Zou inderdaad mooi zijn om daar een keer de theorie van op een rijtje te hebben. Adrie heeft eea geimplementeerd. Als je zoekt in zijn code dan staat het in frwateradjustment.pas. Maar dat is 70kB aan programmacode, dus niet echt uitnodigend voor reverse engineering.

Jacques

Citaat van: Oscar op 02-06-2019  01:42 uIndien ik de formules kan achterhalen.... :denken:

Zie de links die ik hiervoor gegeven heb. (Excel-rekenbladen...)

Oscar

Citaat van: Jacques op 02-06-2019  12:05 uZie de links die ik hiervoor gegeven heb. (Excel-rekenbladen...)

Ja... de ene is niet te lezen en de ander is beveiligd, dus dat wordt hem niet...

William

In de BrouwHulp excel kun je de VB code achterhalen (ontwikkelaarsmode, macros):

Er zijn daar twee sub procedures

Sub BrewingSalts()
''Calculate adding brewing salts based on desired Target water

en
Sub BrewingSalts2()
''Calculate adding brewing salts based on residual alkalinity for the beer color and Cl/SO4 ratio of the Target water
"

Daarnaast is het vooral de juiste doelwaarden en startwaarden uit de excelinvoervelden trekken.

Hieronder de code in de macro. Moet te doen zijn toch?


Sub BrewingSalts()
''Calculate adding brewing salts based on desired Target water

Dim Na1 As Double, Na2 As Double, Ca1 As Double, Ca2 As Double, Mg1 As Double, Mg2 As Double
Dim Cl1 As Double, Cl2 As Double, SO41 As Double, SO42 As Double, CO31 As Double, CO32 As Double
Dim dNa As Double, dCa As Double, dMg
Dim dCl As Double, dSO4 As Double, dCO3 As Double
Dim NaCl1 As Double, Na2CO31 As Double, CaCl21 As Double, CaCO31 As Double
Dim NaCl2 As Double, Na2CO32 As Double, CaCl22 As Double, CaCO32 As Double
Dim NaCl3 As Double, Na2CO33 As Double, CaCl23 As Double, CaCO33 As Double
Dim NaCl4 As Double, Na2CO34 As Double, CaCl24 As Double, CaCO34 As Double
Dim MgSO4 As Double, CaSO4 As Double
Dim Neg1 As Double, Neg2 As Double, Neg3 As Double, Neg4 As Double, MaxNeg As Double
Dim Vol As Double

Call BrewingSaltsZero

CaSO4 = 0
CaCl21 = 0
CaCO31 = 0
NaCl1 = 0
Na2CO31 = 0
CaCl22 = 0
CaCO32 = 0
NaCl2 = 0
Na2CO32 = 0
CaCl23 = 0
CaCO33 = 0
NaCl3 = 0
Na2CO33 = 0
CaCl24 = 0
CaCO34 = 0
NaCl4 = 0
Na2CO34 = 0
MgSO4 = 0

'' Get concentration of ions in dilluted brewwater (1) and Target water (2) in mmol/l
Ca1 = GetCellValue("Waterbehandeling", "C8") / CaMol
Ca2 = GetCellValue("Waterbehandeling", "C5") / CaMol
Mg1 = GetCellValue("Waterbehandeling", "D8") / MgMol
Mg2 = GetCellValue("Waterbehandeling", "D5") / MgMol
Na1 = GetCellValue("Waterbehandeling", "E8") / NaMol
Na2 = GetCellValue("Waterbehandeling", "E5") / NaMol

CO31 = GetCellValue("Waterbehandeling", "F8") / CO3Mol
CO32 = GetCellValue("Waterbehandeling", "F5") / CO3Mol
SO41 = GetCellValue("Waterbehandeling", "G8") / SO4Mol
SO42 = GetCellValue("Waterbehandeling", "G5") / SO4Mol
Cl1 = GetCellValue("Waterbehandeling", "H8") / ClMol
Cl2 = GetCellValue("Waterbehandeling", "H5") / ClMol

Vol = GetCellValue("Waterbehandeling", "C11")

dNa = Max(Na2 - Na1, 0)
dCa = Max(Ca2 - Ca1, 0)
dMg = Max(Mg2 - Mg1, 0)
dCl = Max(Cl2 - Cl1, 0)
dSO4 = Max(SO42 - SO41, 0)
dCO3 = Max(CO32 - CO31, 0)

MgSO4 = dMg
CaSO4 = Max(dSO4 - dMg, 0)

''situation 1: no Na2CO3
Na2CO31 = 0
NaCl1 = dNa
CaCl21 = (dCl - dNa) / 2
CaCO31 = dCO3
Neg1 = Min(Na2CO31, NaCl1, CaCl21, CaCO31)

''situation 2: no NaCl
NaCl2 = 0
CaCl22 = dCl / 2
CaCO32 = dCa + dMg - dSO4 - dCl / 2
Na2CO32 = dNa / 2
Neg2 = Min(Na2CO32, NaCl2, CaCl22, CaCO32)

''situation 3: no CaCO3
CaCO33 = 0
Na2CO33 = dCO3
NaCl3 = dNa - 2 * dCO3
CaCl23 = dCa + dMg - dSO4
Neg3 = Min(Na2CO33, NaCl3, CaCl23, CaCO33)

''situation 4: no CaCl2
CaCl24 = 0
NaCl4 = dCl
CaCO34 = dCa + dMg - dSO4
Na2CO34 = dNa - dCl
Neg4 = Min(Na2CO34, NaCl4, CaCl24, CaCO34)

MaxNeg = Max(Neg1, Neg2, Neg3, Neg4)

If Neg1 = MaxNeg Then
  NaCl1 = Max(NaCl1, 0)
  CaCl21 = Max(CaCl21, 0)
  CaCO31 = Max(CaCO31, 0)
  Na2CO31 = Max(Na2CO31, 0)
ElseIf Neg2 = MaxNeg Then
  NaCl1 = Max(NaCl2, 0)
  CaCl21 = Max(CaCl22, 0)
  CaCO31 = Max(CaCO32, 0)
  Na2CO31 = Max(Na2CO32, 0)
ElseIf Neg3 = MaxNeg Then
  NaCl1 = Max(NaCl3, 0)
  CaCl21 = Max(CaCl23, 0)
  CaCO31 = Max(CaCO33, 0)
  Na2CO31 = Max(Na2CO33, 0)
ElseIf Neg4 = MaxNeg Then
  NaCl1 = Max(NaCl4, 0)
  CaCl21 = Max(CaCl24, 0)
  CaCO31 = Max(CaCO34, 0)
  Na2CO31 = Max(Na2CO34, 0)
End If

''calculate addition in grams per salt
NaCl1 = NaCl1 * (NaMol + ClMol) * Vol / 1000
CaCl21 = CaCl21 * (CaMol + 2 * ClMol + 2 * H2OMol) * Vol / 1000
Na2CO31 = Na2CO31 * (2 * NaMol + CO3Mol) * Vol / 1000
CaCO31 = CaCO31 * (CaMol + CO3Mol) * Vol / 1000
MgSO4 = MgSO4 * (MgMol + SO4Mol + 7 * H2OMol) * Vol / 1000
CaSO4 = CaSO4 * (CaMol + SO4Mol + 2 * H2OMol) * Vol / 1000

Call SetCellValue("Waterbehandeling", "C12", 1 * CaSO4)
Call SetCellValue("Waterbehandeling", "C13", 1 * CaCl21)
Call SetCellValue("Waterbehandeling", "C14", 1 * CaCO31)
Call SetCellValue("Waterbehandeling", "C15", 1 * MgSO4)
Call SetCellValue("Waterbehandeling", "C16", 1 * Na2CO31)
Call SetCellValue("Waterbehandeling", "C17", 1 * NaCl1)
End Sub


Sub BrewingSalts2()
''Calculate adding brewing salts based on residual alkalinity for the beer color and Cl/SO4 ratio of the Target water

Dim Na1 As Double, Na2 As Double, Ca1 As Double, Ca2 As Double, Mg1 As Double, Mg2 As Double
Dim Cl1 As Double, Cl2 As Double, SO41 As Double, SO42 As Double, CO31 As Double, CO32 As Double
Dim dNa As Double, dCa As Double, dMg
Dim dCl As Double, dSO4 As Double, dCO3 As Double
Dim NaCl As Double, Na2CO3 As Double, CaCl2 As Double, CaCO3 As Double
Dim MgSO4 As Double, CaSO4 As Double
Dim Neg1 As Double, Neg2 As Double, Neg3 As Double, Neg4 As Double, MaxNeg As Double
Dim Vol As Double
Dim R1 As Double, R2 As Double, R3 As Double
Dim Ratio1 As Double, Ratio2 As Double

Call BrewingSaltsZero

CaSO4 = 0
CaCl2 = 0
CaCO3 = 0
NaCl = 0
Na2CO3 = 0
MgSO4 = 0
R1 = 0
R2 = 0
dNa = 0
dCa = 0
dMg = 0
dCl = 0
dSO4 = 0
dCO3 = 0

'' Get concentration of ions in dilluted brewwater (1) and Target water (2) in mmol/l
Ca1 = GetCellValue("Waterbehandeling", "C8") / CaMol
Ca2 = GetCellValue("Waterbehandeling", "C5") / CaMol
Mg1 = GetCellValue("Waterbehandeling", "D8") / MgMol
Mg2 = GetCellValue("Waterbehandeling", "D5") / MgMol
Na1 = GetCellValue("Waterbehandeling", "E8") / NaMol
Na2 = GetCellValue("Waterbehandeling", "E5") / NaMol

CO31 = GetCellValue("Waterbehandeling", "F8") / CO3Mol
CO32 = GetCellValue("Waterbehandeling", "F5") / CO3Mol
SO41 = GetCellValue("Waterbehandeling", "G8") / SO4Mol
SO42 = GetCellValue("Waterbehandeling", "G5") / SO4Mol
Cl1 = GetCellValue("Waterbehandeling", "H8") / ClMol
Cl2 = GetCellValue("Waterbehandeling", "H5") / ClMol

Vol = GetCellValue("Waterbehandeling", "C11")

''Calculate Residual Alkalinity of the brewing water and the desired RA for the beer color
R1 = 2.8 * CO31 - 1.6 * Ca1 - 0.8 * Mg1
R2 = GetCellValue("Waterbehandeling", "F28")

''First, get SO4 levels at desired level, using the Cl/SO4 ratio:
Ratio1 = Cl1 / SO41 ''current ratio
Ratio2 = Cl2 / SO42 ''ratio in Target water

If Ratio2 <= Ratio1 Then ''add calcium sulfate
  SO42 = Ratio1 * SO41 / Ratio2
  CaSO4 = SO42 - SO41
  Cl2 = Cl1
  Ca2 = Ca1 + CaSO4
Else: ''add calcium chloride
  Cl2 = Ratio2 * Cl1 / Ratio1
  CaCl2 = 0.5 * (Cl2 - Cl1)
  SO42 = SO41
  Ca2 = Ca1 + CaCl2
End If
 
''Now calculate the new Residual Alkalinity
R3 = 2.8 * CO31 - 1.6 * Ca2 - 0.8 * Mg1
If R3 > R2 Then ''RA is still too high. Add CaCl2 and CaSO4, but don't change the Cl/SO4 ratio
  Ca2 = (2.8 * CO31 - 0.8 * Mg1 - R2) / 1.6
  dCa = Ca2 - (Ca1 + CaSO4)
  ''CaCl2 = CaCl2 + (Ratio2 * SO42 + Ratio2 * dCa - Cl2) / (Ratio2 + 2)
  ''CaSO4 = CaSO4 + dCa - CaCl2
  CaCl2 = CaCl2 + dCa / ((2 / Ratio2) + 1)
  CaSO4 = CaSO4 + 2 * CaCl2 / Ratio2
ElseIf R3 < R2 Then ''RA is too low. Add CaCO3
  CaCO3 = (R2 - R3) / 1.2
  dCa = dCa + CaCO3
End If

''calculate addition in grams per salt
CaCl2 = CaCl2 * (CaMol + 2 * ClMol + 2 * H2OMol) * Vol / 1000
CaCO3 = CaCO3 * (CaMol + CO3Mol) * Vol / 1000
CaSO4 = CaSO4 * (CaMol + SO4Mol + 2 * H2OMol) * Vol / 1000

Call SetCellValue("Waterbehandeling", "C12", 1 * CaSO4)
Call SetCellValue("Waterbehandeling", "C13", 1 * CaCl2)
Call SetCellValue("Waterbehandeling", "C14", 1 * CaCO3)
End Sub

Oscar

Citaat van: William op 02-06-2019 &nbsp;13:05 uIn de BrouwHulp excel kun je de VB code achterhalen (ontwikkelaarsmode, macros):

Ja, die heb ik al uitgepluist... en dat zit al in BrouwVisie  :)

hansHalberstadt

Restalkaliniteit wordt berekend, maar geen pH als ik het goed zie.

Jacques

Citaat van: Oscar op 02-06-2019 &nbsp;12:40 uJa... de ene is niet te lezen en de ander is beveiligd, dus dat wordt hem niet...

Volgens mij hef je de beveilig van de tweede link eenvoud op...

middelaersch

Citaat van: Jacques op 02-06-2019 &nbsp;14:19 uVolgens mij hef je de beveilig van de tweede link eenvoud op...

Google op

 excel protected sheet remove password

Of breng ik nu iemand op verkeerde ideeën?

hansHalberstadt

Citaat van: hansHalberstadt op 02-06-2019 &nbsp;10:07 uZou inderdaad mooi zijn om daar een keer de theorie van op een rijtje te hebben. Adrie heeft eea geimplementeerd. Als je zoekt in zijn code dan staat het in frwateradjustment.pas. Maar dat is 70kB aan programmacode, dus niet echt uitnodigend voor reverse engineering.
zie
https://github.com/BrewBuddyOrg/BrewBuddy/blob/master/Source/UserInterface/Forms/frwateradjustment.pas

Oscar

Citaat van: middelaersch op 02-06-2019 &nbsp;21:40 uGoogle op

 excel protected sheet remove password

Of breng ik nu iemand op verkeerde ideeën?

 :brouwen: ^-^ :duimop: :duimop:

Tags:

Zoeken met Google op deze site.
Brouwspullen zijn ook te koop via Bol.com.
Als je iets bestelt bij Bol.com (ook andere zaken dan brouwspullen) via deze link steun je het forum.


Het boek van de beheerder van deze site.