Monoprotic and Diprotic Binding Curves

Acid-Base binding curves are representations of the binding of protons from acids to basic solutions or vice versa. These curves are made from data from acid-base titrations. Monoprotic binding curves represent acids with only one proton to give in a basic solution, while diprotic curves represent acids with two protons to give. These binding curves were then analyzed by plotting the pH with fraction bound. Fraction bound refers to the degree of how ligands attach to molecules, or the degree of how protons will attach to the basic titrant as pH increases.

Monoprotic Titration

Shown here is the code and subsequent plots for the monoprotic titration data.

Mydata <- read.csv("trial 2.csv")
Mydata
##     Vol    pH
## 1   0.0  3.03
## 2   5.0  4.21
## 3  10.0  4.65
## 4  15.0  5.10
## 5  18.0  5.46
## 6  19.0  5.67
## 7  20.0  5.95
## 8  21.0  6.60
## 9  21.4  7.11
## 10 21.6  8.65
## 11 22.0 10.13
## 12 23.0 11.11
## 13 25.0 11.59
volume <- Mydata$Vol ## volume vector
pH <- Mydata$pH      ## pH vector

volume
##  [1]  0.0  5.0 10.0 15.0 18.0 19.0 20.0 21.0 21.4 21.6 22.0 23.0 25.0
pH
##  [1]  3.03  4.21  4.65  5.10  5.46  5.67  5.95  6.60  7.11  8.65 10.13 11.11
## [13] 11.59
plot(volume,pH,main="Volume of NaOH vs. pH of Solution",xlab="Volume (mL)",
     ylab="pH",xlim=c(0,25),ylim=c(0,12))

H <- 10^(-pH)

tbase <- 0.10       ## Concentration of basic titrant

Vini <- 25          ## Initial volume
 
Vend <- 21.5        ## Volume at endpoint

fbound <- 1-(tbase*volume + H*(Vini+Vend))/(tbase*Vend)
## fraction bound equation for monoprotic titrations

fbound
##  [1]  0.979815663  0.766108295  0.534399532  0.302153785  0.162715706
##  [6]  0.116232830  0.069743175  0.023250381  0.004649484 -0.004651211
## [11] -0.023255816 -0.069767442 -0.162790698
plot(pH,fbound,xlim=c(0,11.59),main="Binding Analysis of Monoprotic Titration")

library(nls2)
## Loading required package: proto
fit <- nls2(fbound ~ H/(KD+H), start=c(KD=0.0001))
## Best fit line 

summary(fit)
## 
## Formula: fbound ~ H/(KD + H)
## 
## Parameters:
##     Estimate Std. Error t value Pr(>|t|)    
## KD 1.859e-05  2.372e-06   7.838 4.63e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05208 on 12 degrees of freedom
## 
## Number of iterations to convergence: 6 
## Achieved convergence tolerance: 3.697e-06
lines(pH,predict(fit), col="blue")

Diprotic Titration

Shown here is the code and subsequent plots for the diprotic titration data.

Mydata <- read.csv("Diprotic Trial 2.csv")
Mydata
##      pH    Vol
## 1  3.04  5.044
## 2  3.08  5.244
## 3  3.13  5.444
## 4  3.18  5.644
## 5  3.23  5.844
## 6  3.29  6.044
## 7  3.36  6.244
## 8  3.40  6.444
## 9  3.48  6.644
## 10 3.54  6.844
## 11 3.62  7.044
## 12 3.71  7.244
## 13 3.82  7.444
## 14 3.94  7.645
## 15 4.06  7.845
## 16 4.19  8.045
## 17 4.31  8.245
## 18 4.44  8.445
## 19 4.55  8.645
## 20 4.64  8.845
## 21 4.73  9.045
## 22 4.80  9.245
## 23 4.87  9.445
## 24 4.93  9.645
## 25 4.99  9.845
## 26 5.05 10.045
## 27 5.10 10.245
## 28 5.17 10.445
## 29 5.22 10.645
## 30 5.27 10.845
## 31 5.31 11.045
## 32 5.35 11.245
## 33 5.40 11.445
## 34 5.44 11.645
## 35 5.50 11.845
## 36 5.52 12.045
## 37 5.57 12.245
## 38 5.61 12.445
## 39 5.65 12.645
## 40 5.68 12.845
## 41 5.74 13.045
## 42 5.78 13.245
## 43 5.81 13.445
## 44 5.87 13.645
## 45 5.91 13.845
## 46 5.95 14.045
## 47 5.99 14.245
## 48 6.04 14.446
## 49 6.09 14.646
## 50 6.13 14.846
## 51 6.19 15.046
## 52 6.24 15.246
## 53 6.30 15.446
## 54 6.37 15.646
## 55 6.44 15.846
## 56 6.51 16.046
## 57 6.59 16.246
## 58 6.67 16.446
volume <- Mydata$Vol ## Volume vector
pH <- Mydata$pH      ## pH vector

plot(volume,pH,main="Volume of NaOH vs. pH of Solution",xlab="Volume (mL)",ylab="pH")

H <- 10^-(pH)    ## H+ from pH

Vini <- 25           ## Initial Volume

Vend <- 8.245         ## Volume added in endpoint

tbase <- 0.10        ## [Base]

Fb <- (2-(((volume*tbase)+((H)*(Vini+volume)))/(Vend*tbase))) 
## fraction bound equation for diprotic titration

plot(pH,Fb)

library(nls2)

tryfit <- nls2(Fb~(H/KD1+2*H^2/(KD1*KD2))/(1+H/KD1+H^2/(KD1*KD2))
            ,start = c(KD1=0.001,KD2=0.000001))
## Best fit line

summary(tryfit)
## 
## Formula: Fb ~ (H/KD1 + 2 * H^2/(KD1 * KD2))/(1 + H/KD1 + H^2/(KD1 * KD2))
## 
## Parameters:
##      Estimate Std. Error t value Pr(>|t|)    
## KD1 2.643e-06  4.409e-08   59.95   <2e-16 ***
## KD2 1.519e-03  4.771e-05   31.85   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02025 on 56 degrees of freedom
## 
## Number of iterations to convergence: 15 
## Achieved convergence tolerance: 2.695e-07
plot(pH,Fb)

lines(pH,predict(tryfit),col="blue")

Summary

The experimental data gathered and calculated in r showed that the kd for the monoprotic acid was 1.859e-05 which is relatively close to the kd of acetic acid which was used for the monoprotic titration. For the diprotic data, kd1 was 2.643e-06 and kd2 was 1.519e-03. The kd values, especially the kd1 value, was closest to the kd value for Oxalic Acid, which was identified as the acid used in the diprotic titration experiment. As for the kd2 value, the calculations in this program seem to be a little off compared to the experimental data, but this can be explained due to the lab data remaining in pKa form rather than Ka, and the trimming of values that had to be done in order to provide binding curves that were useful.