The purpose of titration is to find the concentration of an unknown solution by adding a known volume of a solution with a known concentration to the unknown concentration of a solution. After finding the concentration of this unknown solution, one can find the pH of the solution, given information about the acid dissociation constant(s). A titration curve is a graphical representation of the pH of a solution during a titration.
In this experiment our goal is identify an unknown acid via data analysis through equivalence points and find out which method of analysis was better suited for this kind of experiments.
A diprotic acid,H2A, is an acid that has the ability to donate two protons or hydrogen atoms per molecule to an aqueous solution. In occurs in two steps, the first step involves H2A dissociating into a proton H+ and HA-. The second step involves further dissociation of HA-. into another proton H+ and \({A}^{2-}\). Examples of diprotic acids are sulfuric acid, H2SO4, and carbonic acid, H2CO3.1
A diprotic acid H2A dissociates in two steps that can be written as:
\(\mathrm{H}_{2}\mathrm{~A}+\mathrm{H}_{2}\mathrm{O}\rightleftarrows \mathrm{H}_{3} \mathrm{O}^{+}+\mathrm{HA}^{-}\)
\(\mathrm{HA}+\mathrm{H}_{2} \mathrm{O} \longleftrightarrow \mathrm{H}_{3} \mathrm{O}^{+}+\mathrm{A}^{2-}\)
As a result of successive dissociations, titration curves of diprotic acids have two equivalence points.
The corresponding equilibrium constants of the Diprotic acid, \(K_{a_{1}}\) and \(K_{a_{2}}\), can then be written as:
\(K_{a_{1}}=\frac{\left[\mathrm{HA}^{-}\right]\times\left[\mathrm{H}_{3}\mathrm{O}^{+}\right]}{\left[\mathrm{H}_{2} \mathrm{~A}\right]}\)
\(K_{a_{2}}=\frac{\left[A^{2-}\right] \times\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]}{\left[\mathrm{HA}^{-}\right]}\)
This lab involved titrating an unknown diprotic acid with NaOH to identify the unknown acid. We can find the 𝑝𝑘𝑎value of titration with the acid dissociation constant \(K_{a_{1}}\)and \(K_{a_{2}}\).
After calculating all the data a ph curve and a binding curve was plotted to see which curve showed more accurate point for analysis. The values of both graph was comared with the standdard values of the oxalic acid.2
A setup of lab instruments and chemical reagents were given to perform the titration of diprotic acid.
The lab equipment needed to perform this experiment- Mettler Toledo Easy pH Titrator (auto titrator), laptop, spatula, electronic balance, one 25ml cylinder, one 100ml volumetric flasks, six 100 ml plastic beaker, one 600 ml beaker, one 400 ml waste beaker, para film, stir bar and pipette pump.
The reagents needed to perform the experiment - Unknown diprotic ,Bromocresol Green indicator 0.1% w/v– BCG, Standard NaOH solution 0.1000 M (provided and pre-loaded in the auto titrator), m and deionized water.
The experiment was conducted into two parts. In the first part, the sample for unknown diprotic acid was weighted and in the second part we used the Mettler Toledo Easy pH Titrator to find the pH of the sample. First, four portions of unknown diprotic acid were weighted between 0.0900 – 0.1100 g into different 100ml plastic beaker. The beakers were labeled First Titration, Trial 1, Trial 2 and Trial 3. (The fast titration was used as a sample trial so the data is not included in the lab report). The mass for the trials is recorded in Table 1 .Then, 25 ml of deionized water was measured with a 25 ml cylinder and added to each beaker to dissolve the solids separately. The beakers were covered with para film so that it does not get contaminated. Finally , we added Bromocresol Green indicator 0.1% w/v– BCG into each beaker to find the pH in the second step. In the second part of the experiment, first, the Mettler Toledo Easy pH Titrator was set up using the instructions in lab manual provided by the ‘Department of Chemistry and Biochemistry, CCNY.’ Then, the electrode from the auto titrator was added to the beaker, and the beaker was placed onto a magnetic stirrer and a stir bar was placed inside the beaker. The auto titrator was already preloaded with NaOH solution. After that, the pH was recorded for until it reached 11.00 or above 11.00 and the data was transferred from pH measure software. Finally, the same procedure was done with Trial 2 and Trial 3 the data was recorded. During the experiment, the burette of the auto titrator was rinsed before each trial to ensure accurate result.
A titration curve is the plot of the pH of the analyte solution versus the volume of the titrant added as the titration progresses.
pH <-read.csv("PH data set.csv")
Vol <- read.csv("Volume Data set.csv")
VolVect <- Vol$Volume # this extracts a vector from dataframe column
length(VolVect)
## [1] 78
pHVect <- pH$PH
length(pHVect)
## [1] 78
H <- 10^-(pHVect) # convert pH to H+
H
## [1] 1.288250e-02 1.230269e-02 1.202264e-02 1.122018e-02 1.071519e-02
## [6] 1.000000e-02 9.772372e-03 9.120108e-03 8.511380e-03 8.128305e-03
## [11] 7.413102e-03 7.079458e-03 6.456542e-03 6.025596e-03 5.623413e-03
## [16] 5.128614e-03 4.677351e-03 4.168694e-03 3.801894e-03 3.311311e-03
## [21] 2.884032e-03 2.511886e-03 2.137962e-03 1.819701e-03 1.513561e-03
## [26] 1.174898e-03 9.549926e-04 7.762471e-04 6.309573e-04 5.011872e-04
## [31] 4.073803e-04 3.467369e-04 2.454709e-04 2.137962e-04 1.862087e-04
## [36] 1.584893e-04 1.412538e-04 1.230269e-04 1.096478e-04 9.549926e-05
## [41] 8.511380e-05 7.585776e-05 6.606934e-05 5.754399e-05 5.128614e-05
## [46] 4.365158e-05 3.801894e-05 3.311311e-05 2.818383e-05 2.344229e-05
## [51] 1.949845e-05 1.548817e-05 1.202264e-05 8.709636e-06 5.888437e-06
## [56] 3.311311e-06 2.187762e-06 1.548817e-06 1.122018e-06 6.456542e-07
## [61] 4.897788e-07 2.818383e-07 2.041738e-07 1.230269e-07 8.511380e-08
## [66] 5.011872e-08 3.715352e-08 2.041738e-08 1.737801e-08 9.549926e-09
## [71] 7.413102e-09 5.495409e-09 3.548134e-09 2.137962e-09 1.479108e-09
## [76] 9.120108e-10 6.606934e-10 4.365158e-10
length(H)
## [1] 78
L <- H
plot(VolVect,pHVect,main='Titration curve for the first trial',
xlab='Volume of NaOH', ylab='pH Values')
#Volume added at the 1st endpoint:
VE=12.891/2
VE
## [1] 6.4455
#Initial volume of unknown acid:
VI=25
VI
## [1] 25
#The concentration of the base NaOH:
CB=0.10
CB
## [1] 0.1
#H+ concentration:
H
## [1] 1.288250e-02 1.230269e-02 1.202264e-02 1.122018e-02 1.071519e-02
## [6] 1.000000e-02 9.772372e-03 9.120108e-03 8.511380e-03 8.128305e-03
## [11] 7.413102e-03 7.079458e-03 6.456542e-03 6.025596e-03 5.623413e-03
## [16] 5.128614e-03 4.677351e-03 4.168694e-03 3.801894e-03 3.311311e-03
## [21] 2.884032e-03 2.511886e-03 2.137962e-03 1.819701e-03 1.513561e-03
## [26] 1.174898e-03 9.549926e-04 7.762471e-04 6.309573e-04 5.011872e-04
## [31] 4.073803e-04 3.467369e-04 2.454709e-04 2.137962e-04 1.862087e-04
## [36] 1.584893e-04 1.412538e-04 1.230269e-04 1.096478e-04 9.549926e-05
## [41] 8.511380e-05 7.585776e-05 6.606934e-05 5.754399e-05 5.128614e-05
## [46] 4.365158e-05 3.801894e-05 3.311311e-05 2.818383e-05 2.344229e-05
## [51] 1.949845e-05 1.548817e-05 1.202264e-05 8.709636e-06 5.888437e-06
## [56] 3.311311e-06 2.187762e-06 1.548817e-06 1.122018e-06 6.456542e-07
## [61] 4.897788e-07 2.818383e-07 2.041738e-07 1.230269e-07 8.511380e-08
## [66] 5.011872e-08 3.715352e-08 2.041738e-08 1.737801e-08 9.549926e-09
## [71] 7.413102e-09 5.495409e-09 3.548134e-09 2.137962e-09 1.479108e-09
## [76] 9.120108e-10 6.606934e-10 4.365158e-10
VA <- VolVect
#To calculate the fraction bound or occupancy we need to write a formula:
F <- (2-(((VA*CB)+((H)*(VI+VA)))/(VE*CB)))
F # fraction bound for each data point
## [1] 1.3027789266 1.2914356342 1.2681146393 1.2666308394 1.2532174098
## [6] 1.2489643938 1.2244831468 1.2182788863 1.2106065391 1.1935345488
## [11] 1.1910276041 1.1723621732 1.1667074781 1.1528828741 1.1380347189
## [16] 1.1276217632 1.1155348079 1.1063573652 1.0909525939 1.0815231815
## [21] 1.0694391666 1.0550259816 1.0409280201 1.0244083660 1.0075045600
## [26] 0.9923615143 0.9716562521 0.9490740899 0.9249559451 0.9001591697
## [31] 0.8736502662 0.8455361793 0.8195098555 0.7900126660 0.7603263258
## [36] 0.7306638854 0.7004765396 0.6703514574 0.6399840023 0.6096653567
## [41] 0.5791562346 0.5485934048 0.5180648384 0.4873190553 0.4566109304
## [46] 0.4259817235 0.3952475229 0.3644767530 0.3337103278 0.3029364961
## [51] 0.2721208923 0.2413114808 0.2104736837 0.1796293462 0.1487588861
## [56] 0.1178761167 0.0869107608 0.0717431245 0.0615280910 0.0520917733
## [61] 0.0409302166 0.0345813106 0.0252770102 0.0198516083 0.0131825028
## [66] 0.0088404372 0.0051176688 0.0032568874 0.0010850076 0.0001545856
## [71] -0.0020173470 -0.0031032633 -0.0048097658 -0.0080677699 -0.0121015533
## [76] -0.0155147539 -0.0200140022 -0.0235823700
length(F)
## [1] 78
In the titration curve graph the first equivalence points it is not very clear for the trials.This may have been due to the fact the first equivalence point was very small, therefore it is not shown above as a very prominent slope as compared to the second equivalence point.So, we use the binding curve to find the equivalance points as binding curve gives us more accurate and clear points.
library(nls2)
## Loading required package: proto
rF <- 0
rph <- 0
for(i in 1:78) {
rF[i] <- F[1*i]
rph[i] <- pHVect[1*i]
}
length(rph)
## [1] 78
length(rF)
## [1] 78
L <- 10^(-rph)
L
## [1] 1.288250e-02 1.230269e-02 1.202264e-02 1.122018e-02 1.071519e-02
## [6] 1.000000e-02 9.772372e-03 9.120108e-03 8.511380e-03 8.128305e-03
## [11] 7.413102e-03 7.079458e-03 6.456542e-03 6.025596e-03 5.623413e-03
## [16] 5.128614e-03 4.677351e-03 4.168694e-03 3.801894e-03 3.311311e-03
## [21] 2.884032e-03 2.511886e-03 2.137962e-03 1.819701e-03 1.513561e-03
## [26] 1.174898e-03 9.549926e-04 7.762471e-04 6.309573e-04 5.011872e-04
## [31] 4.073803e-04 3.467369e-04 2.454709e-04 2.137962e-04 1.862087e-04
## [36] 1.584893e-04 1.412538e-04 1.230269e-04 1.096478e-04 9.549926e-05
## [41] 8.511380e-05 7.585776e-05 6.606934e-05 5.754399e-05 5.128614e-05
## [46] 4.365158e-05 3.801894e-05 3.311311e-05 2.818383e-05 2.344229e-05
## [51] 1.949845e-05 1.548817e-05 1.202264e-05 8.709636e-06 5.888437e-06
## [56] 3.311311e-06 2.187762e-06 1.548817e-06 1.122018e-06 6.456542e-07
## [61] 4.897788e-07 2.818383e-07 2.041738e-07 1.230269e-07 8.511380e-08
## [66] 5.011872e-08 3.715352e-08 2.041738e-08 1.737801e-08 9.549926e-09
## [71] 7.413102e-09 5.495409e-09 3.548134e-09 2.137962e-09 1.479108e-09
## [76] 9.120108e-10 6.606934e-10 4.365158e-10
length(L)
## [1] 78
length(rF)
## [1] 78
plot(rph,rF, main='The Binding Curve',col='blue',
xlab='pH Values', ylab='Fraction Bound Values')
tryfit <- nls2(rF ~ (L/KD1 + 2*L^2/(KD1*KD2))/(1+L/KD1 + L^2/(KD1*KD2) ),
start = c(KD1 = 0.0001,KD2=0.01))
tryfit
## Nonlinear regression model
## model: rF ~ (L/KD1 + 2 * L^2/(KD1 * KD2))/(1 + L/KD1 + L^2/(KD1 * KD2))
## data: parent.frame()
## KD1 KD2
## 5.836e-05 3.087e-02
## residual sum-of-squares: 0.02941
##
## Number of iterations to convergence: 6
## Achieved convergence tolerance: 4.375e-07
pk1 =1.27 and pk2 = 4.28
Using the nls2 command we fiited 20 points on the curve to observe the binding analysis more accurately.
rF <- 0
rph <- 0
for(i in 1:20) {
rF[i] <- F[3*i]
rph[i] <- pHVect[3*i]
}
length(rph)
## [1] 20
length(rF)
## [1] 20
L <- 10^(-rph)
L
## [1] 1.202264e-02 1.000000e-02 8.511380e-03 7.079458e-03 5.623413e-03
## [6] 4.168694e-03 2.884032e-03 1.819701e-03 9.549926e-04 5.011872e-04
## [11] 2.454709e-04 1.584893e-04 1.096478e-04 7.585776e-05 5.128614e-05
## [16] 3.311311e-05 1.949845e-05 8.709636e-06 2.187762e-06 6.456542e-07
length(L)
## [1] 20
length(rF)
## [1] 20
tryfit <- nls2(rF ~ (L/KD1 + 2*L^2/(KD1*KD2))/(1+L/KD1 + L^2/(KD1*KD2) ),
start = c(KD1 = 0.0001,KD2=0.01))
tryfit
## Nonlinear regression model
## model: rF ~ (L/KD1 + 2 * L^2/(KD1 * KD2))/(1 + L/KD1 + L^2/(KD1 * KD2))
## data: parent.frame()
## KD1 KD2
## 5.841e-05 3.110e-02
## residual sum-of-squares: 0.008356
##
## Number of iterations to convergence: 5
## Achieved convergence tolerance: 8.724e-06
plot(rph,rF, main='The Binding Curve Fit')
lines(rph,predict(tryfit),col = "blue")
Calculation_method <- c("Standard value","Titration analysis","Binding analysis")
S <- c(1.27,2.14,1.51)
A <- c(4.28,4.21,4.23)
Xdata <- data.frame(Calculation_method,S,A)
knitr::kable(Xdata[,], col.names = c('Calculation_method','pk1 value','pk2 values'), caption = "Table of Pka Values")
| Calculation_method | pk1 value | pk2 values |
|---|---|---|
| Standard value | 1.27 | 4.28 |
| Titration analysis | 2.14 | 4.21 |
| Binding analysis | 1.51 | 4.23 |
The purpose of this experiment is to identify an unknown acid via data analysis through equivalence points and find out which method of analysis was better suited for this kind of experiments. Based on the data we gathered our the value of our experimented was really closed to oxalic acid dihydrate. As seen on the experiment, the pka1 and pk2 value using the pH titration curve was 2.14 and 4.21 respectively. The value using the binding analysis was 1.51 and 4.23 respectively. Our standard pka1 and pka2 value for oxalic acid is 1.27 and 4.28. Therefore, it is seen that binding analysis is better suited for this kind of experiment as it gives us close to accurate values for both pka1 and pka2.