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")