$buffer-solutions
Buffer solutions: To control pH values in electrolytes.
$buffer-solutions optional !
buffer-name character required !
number-of-ions integer required !
ion-valency double_array required !
ion-name-1 character required !
ion-name-2 character required !
ion-name-3 character optional ! (only necessary for some buffers, e.g. PBS)
ion-name-4 character optional ! (only necessary for some buffers, e.g. PBS)
pKa double_array required ! pKa at 25° C ( = 298.15 K)
dpKa_dT double_array required ! d pKa / d T
z_acid double_array required ! charge on the conjugate acid species
$end_buffer-solutions optional !
pKa at 25° C ( = 298.15 K)
d pKa / d T
Syntax
buffer-name = ACETATE ! Acetate (sodium acetate + acetic acid) (CH3COO-Na+ + CH3COOH)
= HEPES ! HEPES (C8H18N2O4S)
= TRIS ! TRIS (C4H11NO3)
= MOPS ! MOPS (C7H15NO4S)
= PBS ! PBS (phosphate buffer)
Name of buffer
- Acetate (sodium acetate + acetic acid)
CH3COO-Na+ + CH3COOH
- HEPES
C8H18N2O4S
- TRIS
C4H11NO3
- MOPS
C7H15NO4S
- PBS (phosphate buffer)
…
number-of-ions = 2 ! 2 for ACETATE, HEPES, TRIS and MOPS
= 4 ! 4 for PBS
Number of ions that are contained in the buffer
ion-valency = -1.0 +1.0 ! for ACETATE: (CH3COO)- Na+
= +1.0 -1.0 ! for TRIS: TrisH+ (OH)-
= -1.0 +1.0 ! for MOPS: (C7H14NO4S)- Na+
= -1.0 -2.0 -3.0 1.0 ! for PBS: (H2PO4)- (HPO4)2- (PO4)3- Na+
Valency of the ions that are contained in the buffer.
The number of expected entries corresponds to number-of-ions.
ACETATE: (CH3COO)- Na+
TRIS: TrisH+ (OH)-
MOPS: (C7H14NO4S)- Na+
PBS: (H2PO4)- (HPO4)2- (PO4)3- Na+
Name of the ions that are contained in the buffer:
ion-name-1 = CH3COO^- ! name of ion no. 1 (for ACETATE)
ion-name-2 = Na^+ ! name of ion no. 2 (for ACETATE)
CH3COOH <==> (CH3COO)- + H+
ion-name-1 = TrisH^+ ! name of ion no. 1 (for TRIS)
ion-name-2 = OH^- ! name of ion no. 2 (for TRIS)
TrisH+ <==> Tris + H+
( “NH3+” <==> “NH2” + H+ )
Tris + H2O <==> TrisH+ + (OH)-
( “NH2” + H2O <==> “NH3+” + (OH)- )
! ("SO3H" <==> "(SO3)-" + H+)
ion-name-1 = Mops^- ! name of ion no. 1 (for MOPS) C7H15NO4S <==> (C7H14NO4S)- + H+
ion-name-2 = Na^+ ! name of ion no. 2 (for MOPS)
(“SO3H” <==> “(SO3)-” + H+)
C7H15NO4S <==> (C7H14NO4S)- +H+
ion-name-1 = H2PO4^- ! name of ion no. 1 (for PBS) NaH2PO4 <==> (H2PO4)- + Na+
ion-name-2 = HPO4^2- ! name of ion no. 2 (for PBS) Na2HPO4 <==> (HPO4)2- + 2 Na+
ion-name-3 = PO4^3- ! name of ion no. 3 (for PBS) (HPO4)2- <==> (PO4)3- + H+
ion-name-4 = Na^+ ! name of ion no. 4 (for PBS)
NaH2PO4 <==> (H2PO4)- + Na+
Na2HPO4 <==> (HPO4)2-+ 2 Na+
(HPO4)2- <==> (PO4)3-+ H+
pKa = 4.76 ! for ACETATE: pKa at 25° C ( = 298.15 K)
= 7.66 ! for HEPES: pKa at 25° C ( = 298.15 K)
= 8.06 ! for TRIS: pKa at 25° C ( = 298.15 K)
= 7.31 ! for MOPS: pKa at 25° C ( = 298.15 K)
= 2.15 7.21 12.33 ! for PBS: pKa,1 pKa,2 pKa,3 at 25° C ( = 298.15 K)
pKa value(s) of buffer reactions. One can calculate the pH value from the pKa value and the concentrations of acid and base (Henderson-Hasselbalch equation):
pH = pKa+ log10( [base] / [acid] )
Example: pH = pKa+ log10( [Cl^-] / [HCl] )
HCl + H2O <==> Cl- + H3O+
dpKa_dT = -0.0002 ! for ACETATE: d pKa / d T
= -0.014 ! for HEPES: d pKa / d T
= -0.028 ! for TRIS: d pKa / d T
= -0.011 ! for MOPS: d pKa / d T
= 0.0044 -0.0028 -0.026 ! for PBS: d pKa,1 / d T d pKa,2 / d T d pKa,3 / d T
d pKa / d T value(s) of pKa value(s), i.e. temperature dependence of pKa value(s) (temperature coefficient, i.e. the rate of change of pKa with temperature). If the buffer solution warms up, the pKa value drops. For further details, see $buffer-solutions.
z_acid = 0.0 ! for ACETATE: 0 = CH3COOH
= 0.0 ! for MOPS: 0 = C7H15NO4S
= +1.0 ! for TRIS: +1 = TrisH+
= 0.0 -1.0 -2.0 ! for PBS: 0 = H3PO4, -1 = (H2PO4)- , -2 = (HPO4)^2-
Charge on the conjugate acid species.
Note: ‘conjugate acid’ + H20<==> ‘conjugate base’ + H30+
This value enters the equation for the ionic strength dependence of the pKa value (modified pKa value: pKa’).
- for
ACETATE: 0= CH3COOH- for
MOPS: 0= C7H15NO4S- for
TRIS: +1= TrisH+- for
PBS: 0= H3PO4,-1= (H2PO4)- ,-2= (HPO4)2-
Examples: Acetate, MOPS and PBS (phosphate buffer)
The phosphate buffer is special (and thus more complicated) because it consists of three pKa values (and it thus has four different ions).
$buffer-solutions
buffer-name = ACETATE ! Acetate (sodium acetate + acetic acid) (CH3COO-Na+ + CH3COOH)
number-of-ions = 2 ! CH3COOH <==> (CH3COO)- + H+
ion-valency = -1.0 +1.0 !
ion-name-1 = CH3COO^- ! (CH3COO)-
ion-name-2 = Na^+ ! Na+
pKa = 4.76 ! pKa at 25° C ( = 298.15 K)
dpKa_dT = -0.0002 ! d pKa / d T
z_acid = 0.0 ! charge on the conjugate acid species (0 = CH3COOH)
(CH3COO-Na+ + CH3COOH)
CH3COOH<==> (CH3COO)- + H+
buffer-name = MOPS ! MOPS (C7H15NO4S) + NaOH
number-of-ions = 2 !
ion-valency = -1.0 +1.0 ! (C7H14NO4S)- Na+
ion-name-1 = Mops^- ! C7H15NO4S <==> (C7H14NO4S)- + H+
ion-name-2 = Na^+ !
pKa = 7.31 ! pKa at 25° C ( = 298.15 K)
! (Note: This pKa is thermodynamic value. The working pKa' is 7.20.)
dpKa_dT = -0.011 ! d pKa / d T
z_acid = 0.0 ! charge on the conjugate acid species (0 = C7H15NO4S)
(C7H15NO4S) + NaOH
(C7H14NO4S)- Na+
C7H15NO4S <==> (C7H14NO4S)- + H+
(0 = C7H15NO4S)
buffer-name = PBS ! PBS (phosphate buffer)
number-of-ions = 4 !
ion-valency = -1.0 -2.0 -3.0 1.0 ! (H2PO4)- (HPO4)2- (PO4)3- Na+
ion-name-1 = H2PO4^- ! NaH2PO4 <==> (H2PO4)- + Na+
ion-name-2 = HPO4^2- ! Na2HPO4 <==> (HPO4)2- + 2 Na+
ion-name-3 = PO4^3- !
ion-name-4 = Na^+ !
pKa = 2.15 7.21 12.33 ! pKa,1 pKa,2 pKa,3 at 25° C ( = 298.15 K)
dpKa_dT = 0.0044 -0.0028 -0.026 ! d pKa / d T
z_acid = 0.0 -1.0 -2.0 ! charge on the conjugate acid species (0 = H3PO4, -1 = (H2PO4)- , -2 = (HPO4)2-)
$end_buffer-solutions
(H2PO4)- (HPO4)2- (PO4)3- Na+
NaH2PO4 <==> (H2PO4)- + Na+
Na2HPO4 <==> (HPO4)2- + 2 Na+
(0 = H3PO4, -1 = (H2PO4)- , -2 = (HPO4)2-)
For more details on buffers, please have a look at the excellent book of [Beynon1996]. Rob Beynon also provides a web interface A recipe calculator for thermodynamically correct buffers for pH control at: https://phbuffers.org
Example: Acetate buffer (sodium acetate + acetic acid)
The following figure shows the pH value as a function of the concentration of the (CH3COO)- ions. Note that this number is equal to the concentration of Na+ ions (see equations above). The concentration of the acetate buffer is 0.1 M, i.e. it consists of
0.1 M CH3COOH (acetic acid) and
0.1 M CH3COO-Na+ (sodium acetate).
The temperature was set to 298.15 K ( = 25° C).
The pKa value at 25° C is 4.76. Note that the
pKa value depends on temperature and ionic strength. Thus
for each pH value a different value of pKa had been
calculated self-consistently=>pKa’.
The calculations were performed by looping over the
pH values. Note that the code adds the appropriate concentrations of
Cl- ions (originating from the acid HCl) and Na+
ions (originating from the base NaOH) automatically.
CH3COO- + H3O+ + Cl- <==> CH3COOH + H2O + Cl-
CH3COOH + Na+ + OH- <==> CH3COO- + H2O + Na+
The acetate buffer has the best buffering range (i.e. pH = ±1) at around pKa = 4.76, i.e. it buffers nicely between pH = 3.76 and pH = 5.76.
Below the pH value of 3, the concentration of (CH3COO)- is negligible and only CH3COOH exists.
Above the pH value of 8, the concentration of CH3COOH is negligible and only (CH3COO)- exists.
pH value vs. [CH3COO-]
The relation between the pH value, the pKa’ value and the concentration of CH3COO- ions is governed by the Henderson-Hasselbalch equation.
pH = pKa’ + log ( [CH3COO-] / [CH3COOH] )
The concentration of all ions (not only the buffer ions), the ionic strength, as well as the pKa’ value(s) as a function of pH are contained in this file: BufferIonConc_vs_pH.dat
If you want to obtain the input file (Buffer_Acetate.nn3) that calculates the above figure, please submit a support ticket.
Details on the calculations
ACETATE(sodium acetate + acetic acid)[CH3COOH] = [ACETATE] / ( 1 + 10pH-pKa )
[(CH3COO)-] = [CH3COOH] * 10pH-pKa (Henderson-Hasselbalch equation)
[Na+] = [(CH3COO)-]
MOPS[C7H15NO4S] = [MOPS] / ( 1 + 10pH-pKa )
[(C7H14NO4S)-] = [C7H15NO4S] * 10pH-pKa (Henderson-Hasselbalch equation)
[Na+] = [(C7H14NO4S)-]
(analogous for
HEPESandTRIS)PBS(phosphate buffer)[H3PO4] = [PBS] / ( 1 + 10pH-pKa,1 * ( 1 + 10pH-pKa,2 * ( 1 + 10pH-pKa,3 ) ) )
[(H2PO4)-] = [H3PO4] * 10pH-pKa,1 (Henderson-Hasselbalch equation)
[(HPO4)2-] = [(H2PO4)-] * 10pH-pKa,2 (Henderson-Hasselbalch equation)
[(PO4)3-] = [(HPO4)2-] * 10pH-pKa,3 (Henderson-Hasselbalch equation)
[Na+] = (1 * [(H2PO4)-] + 2 * [(HPO4)2-] + 3 * [(PO4)3-]
The following figure shows the pH value as a functions of the Na+ concentration for a PBS buffer. Note that there are three buffer ranges.
In this figure, we plot the concentration of the PBS buffer ions, and the resulting ionic strength as a function of pH.
If you want to obtain the input file Buffer_PBS.nn3 that calculates the above figure, please submit a support ticket.
The entries for $buffer-solutions that are specified in the database can be overwritten in the input file.
For details, have a look at the input file keyword $buffer-solutions.


