Research: Science and Education
A General Simulator for Acid–Base Titrations Robert de Levie Chemistry Department, Georgetown University, Washington DC 20057;
[email protected] Modern computer technology has made it possible to produce visual aids to prepare students for their laboratory experience, by simulating lab experiments in realistic-looking ways. Acid–base titrations are part of the standard laboratory repertoire of all budding chemists, and it may therefore be desirable to have a competent titration simulator. Here we do not describe the design of a “visual reality” titrator, such as Ramette’s Acid–Base Package (1), but merely that of a general computational engine that can be used in such a program. One can also imagine the application of such an algorithm in “expert” systems. Progress curves (titrant volume versus [H+]) for acid–base titrations of arbitrary mixtures of acids, bases, and salts, can be calculated using quite general equations (2, 3) based on well-known principles, such as the Guldberg–Waage law of chemical equilibrium (4 ) and the conservation of mass and charge. With these one can readily plot the entire corresponding titration curves (pH versus titrant volume) by transposition (coordinate interchange), or obtain individual points of the titration curves by interpolation. The use of progress curves leads to simple, explicit mathematical expressions (5–9) rather than to higher-order equations that require iterative numerical solution. Below we describe in detail how to calculate the progress curves. We will assume that water is used as the solvent. For the autodissociation of water we will use the value pKw = 14.00 of Harned and Robinson (10). A small library containing a number of acids, bases, and salts should be provided, together with their acid dissociation constants. The latter might be values to be taken from some well-reputed source, such as the extensive compilation of Martell and Smith (11). The library values should be stored in such a way that they can be updated readily by the user, and so that the contents of the library can also be extended easily by incorporation of additional chemical species. The chemical species might be stored by name (and, perhaps, chemical formula) in a list, from which they can be selected one by one by the student. The user selects both a sample and a titrant. The sample may contain one or more acids, bases, and salts, including acid salts, and the same applies to the titrant. Of course, one will seldom intentionally select a mixture as titrant, but it might be instructive to simulate, for example, the effect of titrating with NaOH contaminated with sodium carbonate, as might happen due to unintentional exposure of NaOH to atmospheric CO2. For all chemical species used in either sample or titrant, the user must specify the concentrations, in moles per liter (M). Furthermore the user must specify the sample volume, Vs, in self-consistent volume units such as L or mL. In practice, titrations are often performed at temperatures below 25 °C, but since the temperature coefficients of the acid dissociation constants of relatively few acids and bases are available, the simulation has here been restricted to the “standard” temperature of 25 °C.
The calculation of the progress curves will be based on eq 28 of ref 1, Vt = {Vs (Σ Fs Cs + [H+] – [OH{])/(Σ FtCt + [H+] – [OH{]) (1) where Vt is the titrant volume added to the sample (Vt will therefore vary during the titration, typically from 0 to some positive value), Vs is the volume of the initial sample taken (and is therefore constant during the titration, as distinct from the total solution volume in the titration vessel which will increase upon addition of titrant), each Cs denotes the total analytical concentration of a component of the original sample, each Ct similarly represents the total analytical concentration of a solution component in the buret used to titrate the sample, the F ’s are functions describing the acid–base properties of the various species involved, and [OH{] = Kw /[H+]. The summations in eq 1 cover all electrolyte components in the sample and titrant solution, respectively. During the titration, Vt and [H+] change, as do all parameters that are specifically functions of [H+], namely, [OH{] and the F ’s. All other parameters in eq 1, such as Vs and all terms Cs and Ct, will remain constant. Simulating a progress curve, then, requires that the user specify the various concentrations Cs and Ct and identify their individual chemical natures, so that the software can find the associated acid dissociation constants in its library and either compute or find the corresponding functions F. Note that, regardless of the complexity of the mixtures selected as sample and titrant, only one progress curve is calculated. That progress curve is then stored and can be interpolated on demand whenever individual points of the titration curve are requested, such as in simulating the effect of dropwise addition of the titrant. There are several ways in which the proton association functions F can be handled. When only a small library of chemicals is provided, a specific function F may be stored with each chemical species. For a larger and more flexible library it will usually be more efficient to compute F from a small number of integer coefficients. We will use the latter, more general approach. All chemical species considered here are electrolytes, and are therefore at least partially dissociated at some pH value. For the purpose of efficient data storage, it is convenient to categorize these electrolytes in two groups: (i) the acids and bases that, apart from hydrogen ions or hydroxyl ions, contain only one functional group, and (ii) the salts, that contain at least two such groups. With the acids and bases we will store the pertinent acid dissociation constants; the salts will then refer to those constants. When no activity corrections are needed we will use the stored values of the acid dissociation constants (which are mostly extrapolated to infinite dilution) as if they are valid at any ionic strength; when activity corrections are used, we will assume that the library values pertain to infinite dilution. The function F for a given acid or base can be computed from just two integer coefficients, p and q, together with the requisite acid dissociation constants. Here p denotes the
JChemEd.chem.wisc.edu • Vol. 76 No. 7 July 1999 • Journal of Chemical Education
987
Research: Science and Education
maximum number of dissociable protons an acid or base can accommodate, and q defines the actual number of protons associated with a particular species. The function F is then obtained from the expression p
F=
Σ j=0
j
p–j
p–q–j H p
ΣH
p–j
j=0
Ki Π i=0
j
Π Ki
(2)
i=0
where we have used H as shorthand for [H+], and where K0 ≡ 1. The acid dissociation constants are of course specific for each particular chemical species. In order to make eq 2 somewhat less abstract, we illustrate below how it is used. For a diprotic acid such as oxalic acid, H2Ox, we have p = 2, q = 2, so that eq 2 yields F = ({ H K1 – 2K1K2)/(H 2 + HK1 + K1K2 ) which the reader may recognize as { α HOx{ – 2α Ox2{ in terms of the corresponding concentration fractions α. For the base ethylenediamine we also have p = 2; but q = 0, so that F = (2H2 + HK1)/(H2 + HK1 + K1K2 ) The numerical values of the acid dissociation constants K1 and K2 for oxalic acid and ethylene diamine are of course quite different. We now consider the triprotic acids orthophosphoric acid, aspartic acid, and lysine. For H3PO4 we have p = 3, q = 3; hence F = ({H2K1– 2HK1K2 – 3K1K2K3)/(H3 + H2K1 + HK1K2 + K1K2K3) For aspartic acid we use p = 3, q = 2; hence
Negative values of Vt should of course be discarded as not physically meaningful; such values are obtained when one calculates Vt at pH values that are not realizable with the particular sample and titrant used. For example, in the titration of 0.01 M HCl with 0.02 M NaOH, pH values below 2 or above 12.3 obviously cannot be realized. Consequently, eq 1 will yield negative values for Vt in those pH regions. For an acid or base, the two coefficients p and q, plus the pertinent acid dissociation constants, are all that is required to calculate F. For a salt (as defined above), more than one functional group and also some stoichiometric parameters need to be specified; but the acid dissociation constants can be obtained from the acids and bases involved and, therefore, need not be stored again. To illustrate the treatment of salts, we list in Table 1 a series of phosphate salts and the corresponding expressions for F. Activity Corrections When activity corrections are desired, additional information is needed to calculate the ionic strength of the soluTable 1. Some Examples of Expressions Used to Represent Salts Reference to parent base(s) and acid(s), together with the corresponding coefficients p, q, r
Salt NaH2PO4
NaOH (1, 1, 1)
+ H3PO4 (3, 2, 0)
Na2HPO4
2NaOH (1, 1, 1)
+ H3PO4 (3, 1, 0)
Na3PO4
3NaOH (1, 1, 1)
+ H3PO4 (3, 0, 0)
NH4H2PO4
NH3 (1, 1, 1)
+ H3PO4 (3, 2, 0) + H3PO4 (3, 1, 0)
(NH4)2HPO4
2NH3 (1, 1, 1)
NaNH4HPO4
NaOH (1, 1, 1) + NH3 (1, 1, 1) + H3PO4 (3, 1, 0)
F = (H3 – HK1K2 – 2K1K2K3)/(H3 + H2K1 + HK1K2 + K1K2K3)
(NH4)3PO4
3NH3 (1, 1, 1)
+ H3PO4 (3, 0, 0)
Ca(H2PO4)2
Ca(OH)2 (2, 2, 2)
+ 2H3PO4 (3, 2, 0)
And for lysine we find p = 3, q = 1; hence
CaHPO4
Ca(OH)2 (2, 2, 2)
+ H3PO4 (3, 1, 0)
Ca3(PO4)2
3Ca(OH)2 (2, 2, 2)
+ 2H3PO4 (3, 0, 0)
CaNH4PO4
Ca(OH)2 (2, 2, 2) + NH3 (1, 1, 1) + H3PO4 (3, 0, 0)
F = (2H 3 + HK1 – K1K2K3)/(H3 + H2K1 + HK1K2 + K1K2K3) For the hexaprotic mellitic acid (benzene hexacarboxylic acid) we have p = 6, q = 6, and consequently F = ({H5K1 – 2H 4K1K2 – 3H3K1K2K3 – 4H 2K1K2K3K4 – 5HK1K2K3K4K5 – 6K1K2K3K4K5K6)/(H6 + H5K1 + H4K1K2 + H3K1K2K3 + H2K1K2K3K4 + HK1K2K3K4K5 + K1K2K3K4K5K6) For the equally hexaprotic ethylene diamine tetraacetic acid (EDTA, in its neutral form often abbreviated as H4Y), we have instead p = 6, q = 4, so that
The notation shows the stoichiometric coefficients with the parent base(s) and acid(s), each followed by the numerical values of p, q, and r , in this order. (The coefficient r is used in activity corrections, as is the function G . The bases and acids are specified because they provide access to the appropriate acid dissociation constants. the Explicit expressions for the F’s and G ’s are then computed; they will assume the following values (which are not stored, but are shown here merely for the convenience of the reader): Na+
NaOH (1, 1, 1)
F = {K1/(H + K1) ≈ 0 a G = H/(H + K1) ≈ 1a
F = (2H6 + H5K1 – H3K1K2K3 – 2H 2K1K2K3K4 –
NH4+
NH3 (1, 1, 1)
F = {K1/(H + K1) G = H/(H + K1)
3HK1K2K3K4K5 – 4K1K2K3K4K5K6)/(H6 + H5K1 + H4K1K2 +
Ca2+
H3K1K2K3 + H2K1K2K3K4 + HK1K2K3K4K5 + K1K2K3K4K5K6)
Ca(OH)2 (2, 2, 2) F = ( { 2HK1 – K1K2)/(H2 + HK1+ K1K2) ≈ 0b G = (4HK1 + K1K2)/(H2+ HK1 + K1K2) ≈ 4b
H2PO4{ H3PO4 (3, 2, 0)
F = (H3 – HK1K2 – 2K1K2K3)/denomc G = (H2K1+ 4HK1K2 + 9K1K2K3)/denomc
HPO42{ H3PO4 (3, 1, 0)
F = (2H3 + H2K1 – K1K2K3)/denomc G = (H2K1 + 4HK1K2 + 9K1K2K3)/denomc
PO43{
F = (3H3 + 2H2K1 + HK1K2)/denomc G = (H2K1+4HK1K2 + 9K1K2K3)/denomc
Again, all of these can be written more compactly as concentration fractions α with appropriate integer coefficients (2, 3), but are here given in the form most convenient for their numerical evaluation in terms of [H+] and the various K values. The procedure to calculate the progress curve is, then, to compute for each value of [H+] in the chosen pH range the sums ΣFC in the numerator and denominator of eq 1, and from these find and store the value of Vt . 988
H3PO4 (3, 0, 0)
N OTE: H3PO4, H 2PO4{, HPO 42{ , and PO43{ are distinguished by their different r-values. aFor K