Monoprotic Acid Analysis

Abstract

We presents the analysis of the titration of a monoprotic acid using non-linear least squares fitting to determine its dissociation constant (Ka). The findings are compared with traditional titration methods and suggestions for future research are discussed.

Introduction

Titration is a common analytical technique used to determine the concentration of an unknown acid or base solution. Traditional methods focus on the titration curve, where pH is plotted against volume of titrant added. Recent approaches transform these data into binding curves, which can offer a more detailed understanding of acid-base interactions. This report analyzes monoprotic acid titration, aiming to better our understanding of its dissociation constant through both traditional and binding curve methods.

Titration Analysis

The titration data for a monoprotic acid are recorded as changes in pH with increasing volumes of a base titrant. The endpoint is determined where the pH rapidly changes with a small addition of titrant, indicating neutralization.

Theoretical Expression For The Binding Curve of a Weak Acid Fraction Bound

\(F = \frac{H}{H+KD}\)

library(nls2)
## Loading required package: proto
# Monoprotic Data
monoprotic_data <- read.csv("Monoprotic.csv")
monoprotic_data
##    Volume.ml.   pH
## 1         0.0 5.57
## 2         1.0 5.85
## 3         2.0 5.97
## 4         3.0 6.08
## 5         4.0 6.37
## 6         5.0 6.42
## 7         6.0 6.55
## 8         7.0 6.63
## 9         8.0 6.73
## 10        9.0 6.80
## 11       10.0 6.97
## 12       11.0 7.02
## 13       12.0 7.07
## 14       13.0 7.20
## 15       14.0 7.30
## 16       15.0 7.31
## 17       16.0 7.46
## 18       17.0 7.65
## 19       18.0 7.79
## 20       19.0 7.84
## 21       20.0 8.10
## 22       20.2 8.31
## 23       20.4 8.44
## 24       20.6 8.62
## 25       20.8 9.41
#Concentration Base
cB <- c(0.101)
cB
## [1] 0.101
#Volume
Volume_mono <- monoprotic_data$Volume.ml.
Volume_mono
##  [1]  0.0  1.0  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0 10.0 11.0 12.0 13.0 14.0
## [16] 15.0 16.0 17.0 18.0 19.0 20.0 20.2 20.4 20.6 20.8
#pH
pH <- monoprotic_data$pH
pH
##  [1] 5.57 5.85 5.97 6.08 6.37 6.42 6.55 6.63 6.73 6.80 6.97 7.02 7.07 7.20 7.30
## [16] 7.31 7.46 7.65 7.79 7.84 8.10 8.31 8.44 8.62 9.41
#[H+]
H_plus <- 10^(-pH)
H_plus
##  [1] 2.691535e-06 1.412538e-06 1.071519e-06 8.317638e-07 4.265795e-07
##  [6] 3.801894e-07 2.818383e-07 2.344229e-07 1.862087e-07 1.584893e-07
## [11] 1.071519e-07 9.549926e-08 8.511380e-08 6.309573e-08 5.011872e-08
## [16] 4.897788e-08 3.467369e-08 2.238721e-08 1.621810e-08 1.445440e-08
## [21] 7.943282e-09 4.897788e-09 3.630781e-09 2.398833e-09 3.890451e-10
Vini <- 25.00
Vend <- 20.80
Vadd <-Volume_mono

#Fraction Bound Equation 
fraction_bound <- 1 - (cB * Vadd + H_plus * (Vini +Vadd)) / (cB * Vend)
fraction_bound
##  [1]  9.999680e-01  9.519056e-01  9.038324e-01  8.557581e-01  8.076864e-01
##  [6]  7.596100e-01  7.115343e-01  6.634580e-01  6.153817e-01  5.673051e-01
## [11]  5.192290e-01  4.711522e-01  4.230754e-01  3.749989e-01  3.269221e-01
## [16]  2.788452e-01  2.307686e-01  1.826919e-01  1.346151e-01  8.653816e-02
## [21]  3.846137e-02  2.884605e-02  1.923069e-02  9.615333e-03 -8.481658e-09
#Plotting the Titration Curve and Fraction Bound Curve
plot(Volume_mono,pH, main="Titration Curve: Volume vs pH", xlab="Volume (ml)", ylab="pH", pch=19, col="blue")

#Plotting the Fraction Bound Curve
plot(pH,fraction_bound, main = "Fraction Bound Curve", xlab = "pH", ylab = "Fraction Bound", pch=19, col="red")

nonl_model <- nls2(fraction_bound ~ H_plus / (H_plus + Ka), start = c(Ka = 0.0001))
summary(nonl_model)
## 
## Formula: fraction_bound ~ H_plus/(H_plus + Ka)
## 
## Parameters:
##     Estimate Std. Error t value Pr(>|t|)    
## Ka 1.125e-07  2.549e-09   44.14   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01888 on 24 degrees of freedom
## 
## Number of iterations to convergence: 9 
## Achieved convergence tolerance: 8.568e-06
lines(pH, predict(nonl_model))

cA<- c(0.1)

# Display the estimated Ka
Ka <- coef(nonl_model)["Ka"]
Ka
##           Ka 
## 1.125185e-07
pKa <- -log10(Ka)
pKa 
##       Ka 
## 6.948776

Comparison

Traditional titration methods provide a straightforward visualization of the neutralization point, but do not offer insight into the specific interactions at different pH levels. The binding curve method, through its detailed analysis, provides deeper understanding of the acid-base interactions across the pH spectrum.

Future Studies

Further research could explore the effects of ionic strength and temperature on the dissociation constants, as well as apply these methods to a broader range of acid types.

Diprotic Acid Analysis

Titration Data

The titration data represents the reaction between a diprotic acid and sodium hydroxide (NaOH). The experiment involved titrating a diprotic acid solution with a known concentration of NaOH, measuring the pH at various volumes of NaOH added. The titration data is crucial for determining the acid dissociation constants (pK1 and pK2) of the diprotic acid.

From the titration curve generated using the collected data (Volume of NaOH vs. pH), we visually identify the inflection points, which correspond to the pK values. The midpoints of these inflection points, often where the pH changes most rapidly, can be approximated as the pK values. By plotting Volume vs. pH, see two distinct buffering regions which typically indicate the pK1 and pK2 of the acid.

Converting to Binding Curve

To convert the titration data into a binding curve, we first calculated the concentration of hydrogen ions ([H+]) from the pH measurements using the formula [H+] = 10^(-pH). The fraction bound, is then determined using the formula:

\(Fraction Bound = 2- \frac{cB×V_{add}+[H+]×(V_{ini}+V_{add})}{cB×V_{end}}\)

where cB is the concentration of the diprotic acid, Vadd is the added volume of NaOH, Vini is the initial volume of the acid solution, and Vend is the volume at the endpoint of the titration.

Analyzing the Binding Curve

Using nonlinear least squares (NLS) modeling, we fitted the calculated binding data to a theoretical binding model where KD1 and KD2 are the dissociation constants of the acid. Initial estimates for these constants are necessary for the fitting process, and the NLS method iteratively adjusts these estimates to best fit the experimental data. By analyzing the fit, we can refine our estimates of pK1 and pK2. Adjusting the endpoint used in the calculations may be necessary if the fit appears off.

diprotic_data <- read.csv("Diprotic.csv")
diprotic_data
##    Volume.of.NaOH..mL.   pH
## 1                6.329 2.76
## 2                6.529 2.88
## 3                6.729 3.00
## 4                6.929 3.10
## 5                7.129 3.23
## 6                7.329 3.33
## 7                7.529 3.42
## 8                7.729 3.51
## 9                7.929 3.60
## 10               8.129 3.68
## 11               8.329 3.74
## 12               8.529 3.80
## 13               8.729 3.89
## 14               8.929 3.96
## 15               9.129 4.03
## 16               9.329 4.09
## 17               9.529 4.16
## 18               9.730 4.23
## 19               9.930 4.30
## 20              10.130 4.38
## 21              10.330 4.43
## 22              10.530 4.51
## 23              10.730 4.58
## 24              10.930 4.68
## 25              11.130 4.77
## 26              11.330 4.87
## 27              11.530 4.98
## 28              11.730 5.10
## 29              11.930 5.25
## 30              12.130 5.42
## 31              12.330 5.62
## 32              12.530 5.89
## 33              12.668 5.96
## 34              12.868 6.34
## 35              12.936 6.39
## 36              13.107 6.49
## 37              13.307 6.65
## 38              13.507 6.85
## 39              13.707 7.15
## 40              13.812 7.38
## 41              13.887 7.68
## 42              13.914 7.78
## 43              13.981 7.88
## 44              14.148 8.47
## 45              14.173 8.85
#Concentration Base
cB_dipro <- 0.100
cB_dipro
## [1] 0.1
#Volume
Volume_dipro <- diprotic_data$Volume.of.NaOH..mL.
Volume_dipro
##  [1]  6.329  6.529  6.729  6.929  7.129  7.329  7.529  7.729  7.929  8.129
## [11]  8.329  8.529  8.729  8.929  9.129  9.329  9.529  9.730  9.930 10.130
## [21] 10.330 10.530 10.730 10.930 11.130 11.330 11.530 11.730 11.930 12.130
## [31] 12.330 12.530 12.668 12.868 12.936 13.107 13.307 13.507 13.707 13.812
## [41] 13.887 13.914 13.981 14.148 14.173
#pH
pH_dipro <- diprotic_data$pH
pH_dipro
##  [1] 2.76 2.88 3.00 3.10 3.23 3.33 3.42 3.51 3.60 3.68 3.74 3.80 3.89 3.96 4.03
## [16] 4.09 4.16 4.23 4.30 4.38 4.43 4.51 4.58 4.68 4.77 4.87 4.98 5.10 5.25 5.42
## [31] 5.62 5.89 5.96 6.34 6.39 6.49 6.65 6.85 7.15 7.38 7.68 7.78 7.88 8.47 8.85
#[H+]
H_plus_dipro <- 10^-(pH_dipro)
H_plus_dipro
##  [1] 1.737801e-03 1.318257e-03 1.000000e-03 7.943282e-04 5.888437e-04
##  [6] 4.677351e-04 3.801894e-04 3.090295e-04 2.511886e-04 2.089296e-04
## [11] 1.819701e-04 1.584893e-04 1.288250e-04 1.096478e-04 9.332543e-05
## [16] 8.128305e-05 6.918310e-05 5.888437e-05 5.011872e-05 4.168694e-05
## [21] 3.715352e-05 3.090295e-05 2.630268e-05 2.089296e-05 1.698244e-05
## [26] 1.348963e-05 1.047129e-05 7.943282e-06 5.623413e-06 3.801894e-06
## [31] 2.398833e-06 1.288250e-06 1.096478e-06 4.570882e-07 4.073803e-07
## [36] 3.235937e-07 2.238721e-07 1.412538e-07 7.079458e-08 4.168694e-08
## [41] 2.089296e-08 1.659587e-08 1.318257e-08 3.388442e-09 1.412538e-09
Vini_dipro <- 25
Vend_dipro <- 14.173/2
Vadd_dipro <- Volume_dipro

#Fraction Bound Equation 
fraction_bound_dipro <- 2 - (cB_dipro * Vadd_dipro + H_plus_dipro * (Vini_dipro + Vadd_dipro)) / (cB_dipro * Vend_dipro)
fraction_bound_dipro
##  [1]  1.030066e+00  1.020019e+00  1.005674e+00  9.864360e-01  9.673055e-01
##  [6]  9.444417e-01  9.201056e-01  8.950621e-01  8.694399e-01  8.431220e-01
## [11]  8.161083e-01  7.889452e-01  7.620897e-01  7.347488e-01  7.072813e-01
## [16]  6.796157e-01  6.519596e-01  6.240809e-01  5.962737e-01  5.684549e-01
## [21]  5.404464e-01  5.125267e-01  4.845272e-01  4.565714e-01  4.285422e-01
## [26]  4.004938e-01  3.724229e-01  3.443283e-01  3.162243e-01  2.880954e-01
## [31]  2.599456e-01  2.317811e-01  2.123174e-01  1.841285e-01  1.745354e-01
## [36]  1.504095e-01  1.221921e-01  9.397384e-02  6.575497e-02  5.093965e-02
## [41]  4.035728e-02  3.654746e-02  2.709304e-02  3.527647e-03 -7.808274e-08
#Plotting the Titration Curve
plot(Volume_dipro, pH_dipro, main="Diprotic Titration Curve: Volume vs pH", xlab="Volume of NaOH (mL)", ylab="pH", pch=19, col="blue")

#Plotting the Fraction Bound Curve
plot(pH_dipro, fraction_bound_dipro, main="Fraction Bound vs pH", xlab="pH", ylab="Fraction Bound",pch=19, col="green")

library(nls2)
fit<- nls2(fraction_bound_dipro ~(H_plus_dipro/ KD1 + (2*H_plus_dipro^2)/(KD1*KD2)) /(1+H_plus_dipro/KD1 + H_plus_dipro^2/(KD1*KD2)), start =list(KD1 = 1e-5, KD2 = 1e-4))
summary(fit)
## 
## Formula: fraction_bound_dipro ~ (H_plus_dipro/KD1 + (2 * H_plus_dipro^2)/(KD1 * 
##     KD2))/(1 + H_plus_dipro/KD1 + H_plus_dipro^2/(KD1 * KD2))
## 
## Parameters:
##      Estimate Std. Error t value Pr(>|t|)    
## KD1 2.670e-05  2.585e-06  10.331 3.19e-13 ***
## KD2 8.051e-02  2.168e-01   0.371    0.712    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08694 on 43 degrees of freedom
## 
## Number of iterations to convergence: 11 
## Achieved convergence tolerance: 5.586e-06
lines(pH_dipro, predict(fit), col="black")