大学化学, 2021, 36(4): 2005008-0 doi: 10.3866/PKU.DXHX202005008

自学之友

Kapok V1.0:一个酸碱滴定和配位滴定辅助教学软件包

甘峰,

Kapok V1.0: A Computer-Aided Instruction Package for Acid-Base Titration and Complexometric Titration

Gan Feng,

通讯作者: 甘峰, Email: cesgf@mail.sysu.edu.cn

收稿日期: 2020-05-5   接受日期: 2020-06-1  

Received: 2020-05-5   Accepted: 2020-06-1  

Abstract

This paper introduces a computer-aided instruction program package for teaching of acid-base titration and complexometric titration. The core parts of the package were programmed using C++ based on general expressions for acid-base titration and complexometric titration of arbitrary mixtures. The parameter file was designed to conduct operations of the software package. Users only need to write the parameter file according to a rule and then to calculate the titration curves of acid-base titration and complexometric titration of complicated system. A graphic user interface was developed to make it easy to implement the package. The package is helpful for the teaching of the theories of acid-base titration and complexometric titration.

Keywords: Acid-base titration ; Complexometric ; Computer-aided instruction package ; Graphical user interface ; Parameter file

PDF (1520KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

甘峰. Kapok V1.0:一个酸碱滴定和配位滴定辅助教学软件包. 大学化学[J], 2021, 36(4): 2005008-0 doi:10.3866/PKU.DXHX202005008

Gan Feng. Kapok V1.0: A Computer-Aided Instruction Package for Acid-Base Titration and Complexometric Titration. University Chemistry[J], 2021, 36(4): 2005008-0 doi:10.3866/PKU.DXHX202005008

在滴定分析的教学中,绘制滴定曲线是阐述滴定理论最好的方式之一。对于简单的体系,例如用氢氧化钠滴定盐酸,几乎所有的分析化学教科书都会介绍如何手工绘制滴定曲线。但是,对于相对复杂的体系,就必须借助相关的计算软件[1-3]。然而,如果涉及到滴定多个酸和多个碱的情况,或者用EDTA同时滴定多个金属离子的情况时,当前发布的软件均难以做到以一种优雅的方式计算相关的滴定曲线。例如,当前的一些软件需要用户根据具体的滴定方法构建相应的计算公式,然后才能进行计算。对于许多学生而言这本就是很困难的事情,由此会影响许多学生放弃采用这类软件深入研究滴定分析过程细节,从而更好地掌握滴定分析原理的机会。

本文将介绍一个可用于计算复杂体系酸碱滴定和配位滴定的软件包。该软件包有友好的用户界面,按照一定的规则编写参数文件,该软件包原则上可以计算较为复杂的酸碱滴定体系和配位滴定体系的滴定曲线。

1 理论背景

1.1 酸碱滴定

本软件包的酸碱滴定部分的程序编写基于de Levie [4]提出的酸碱滴定通式,其数学表示如下:

$\eta = \frac{{{V_\text{t}}}}{{{V_\text{s}}}} = - \frac{{\Sigma {F_\text{s}}{c_\text{s}} + \Delta }}{{\Sigma {F_\text{t}}{c_\text{t}} + \Delta }}$

这里,下标s和t分别表示待滴定物(样品)和滴定剂;Vt是加入的滴定剂的体积;Vs是待滴定物的初始体积;cs是待滴定物的浓度;ct是滴定剂的浓度;Δ是体系中氢离子浓度与氢氧根离子的浓度差,即Δ = [H+] - [OH-];符号F表示酸的质子解离函数或碱的质子结合函数[4, 5]

式(1)建立了体积比η与Δ之间的函数关系,本质是建立了η与[H+]之间的函数关系。通过给定[H+]的数值即可计算出η的值,绘制成η-pH图即为酸碱滴定曲线。有了该滴定曲线,也可以计算体系中各种型体的浓度变化曲线。式(1)是一个普遍成立的式子,基于它原则上可以计算任意复杂酸碱滴定体系的滴定曲线。

1.2 配位滴定

本软件包的配位滴定部分的程序编写基于甘峰[6, 7]建立的基于EDTA的配位滴定通式。对于包含n个金属离子M1,M2,…,Mn的体系,它们均与EDTA发生1 : 1型的反应,如下:

$\mathrm{M}_{i}+\mathrm{Y} \rightleftharpoons \mathrm{M}_{i} \mathrm{Y}, K_{i}=\frac{\frac{\left[\mathrm{M}_{i} \mathrm{Y}\right]}{c^{\ominus}}}{\frac{\left[\mathrm{M}_{i}\right]}{c^{\ominus}} \frac{[\mathrm{Y}]}{c^{\ominus}}}, i=1, 2, n, \cdots$

这里,Y代表EDTA;Ki表示配合物MiY的形成常数。为了表示的便利略去了电荷。

设包含这些金属离子的溶液的初始体积为V0;第i个金属离子的分析浓度为c(Mi);EDTA的分析浓度为c(Y);当滴加的EDTA的体积为Vt时,滴定方程如下:

$\begin{aligned}\left[\mathrm{M}_{i}\right] =\frac{c\left(\mathrm{M}_{i}\right)}{(1+\eta)\left(\alpha\left(\mathrm{M}_{i}\right)+K_{i}[\mathrm{Y}] / c^{\ominus}\right)} \end{aligned}$

$\eta= \frac{\alpha(\mathrm{Y} \cdot \mathrm{H})[\mathrm{Y}]+\sum_{i=1}^{n} \frac{K_{i}[\mathrm{Y}] c\left(\mathrm{M}_{i}\right)}{\alpha\left(\mathrm{M}_{i}\right) c^{\ominus}+K_{i}[\mathrm{Y}]}}{c(\mathrm{Y})-\alpha(\mathrm{Y} \cdot \mathrm{H})[\mathrm{Y}]}$

这里,η = Vt/V0α(Mi)表示金属离子Mi的副反应系数;α(Y∙H)表示EDTA的酸效应系数。

式(4)决定了η-[Y]的关系,可通过设定不同的[Y]值然后计算η值的方式,得到式(3)的数值解。将该数值解带入到式(3)即可建立η-[Mi]关系,绘制η-p[Mi]图就是该金属离子的滴定曲线。此外,通过这些数值解也可以计算滴定体系中形成的配合物的浓度变化曲线。

2 软件设计

2.1 基本框架

本软件包的计算部分全部用C++语言编写,在MinGW环境下编译[8]。图形用户界面用Qt开发[9]。绘制滴定曲线采用了QCustomPlot函数库[10]。计算过程中用Eigen函数库管理数据和进行科学计算[11]

本软件包的主程序名为Kapok.exe,其余部分不拟进一步说明,图 1所示为其图形用户界面。该图形用户界面基于Qt的多文档模板,程序中的File、Edit、Window和Help菜单项对应的功能与一般软件相同,在此不做介绍。Titration菜单项目前包含三个功能:(1) 计算酸碱滴定曲线;(2) 计算酸碱滴定体系中相关型体的浓度变化曲线;(3) 计算配位滴定曲线及形成的配合物的浓度变化曲线。未来还有可能根据需要添加新的功能。

图1

图1   Kapok软件包用户界面


图 1的视图中的文件为参数文件,计算过程由该文件驱动。用户所要做的事情是编写这个文件,详细的规则在2.2小节介绍。这里要强调的是,在编写参数文件时应采用UTF-8编码格式,否则可能出错。选中参数文件为焦点文件后,点击Titration菜单项中的按钮,主程序会首先检测参数文件类型,然后运行相关的可执行文件进行计算,用户无需关注程序的执行细节。

2.2 参数文件

参数文件在本软件包中起到关键作用,不同的参数文件驱动不同的运算。本软件包的参数文件由系统标识符和参数值构成。系统标识符是程序自身设定,用户不得更改。参数值则可由用户基于具体的滴定体系进行设置。

2.2.1 酸碱滴定参数文件

图 2所示为用NaOH标准溶液滴定,由HCl、HAc和H3PO4构成的混合酸溶液的参数文件。用户可以通过本程序的用户界面创建和编写该参数文件,也可以采用其他的文本编辑软件编写和修改该文件。注意,编码格式必须设定为UTF-8。图 2中已对相关的内容做了注释,下面对其中的主要内容进行详细的解释。

图2

图2   NaOH滴定由HCl、HAc和H3PO4构成的混合酸体系的参数文件


(1) 文件的第1行顶行填写ACABT,这是酸碱滴定计算的标识符。程序将首先核查参数文件的顶行内容,如果不属于可识别的标识符,将直接提示错误。

(2) Mode是系统标识符。如果是碱滴定酸,则Mode == 0;如果是酸滴定碱,则Mode == 1。这里的双等号==也是系统标识符,用于分割系统标识符和数据。下同。

(3) Acid_Number和Base_Number是系统标识符,记录系统中酸的数目和碱的数目。在本例中,用NaOH单一碱做滴定剂,所以Base_Number == 1。而滴定物由三个酸混合而成,所以Acid_Number == 3。这里设定的数字必须与后续的Acid_List和Base_List下面列举的酸或碱的数目对应,否则可能会出错。

(4) Max_pK_Number是系统标识符,用于设定滴定物中所含酸解离常数的最大数目。在本例中,H3PO4是三元酸,包含三个酸解离常数,所以Max_pK_Number == 3。

(5) End_Point_pH是系统标识符,用于设定滴定终点时的pH值。滴定终点取决于所采用的指示剂,可从教科书或者手册中查找。本例中采用酚酞做指示剂,所以End_Point_pH == 9.5。

(6) Equivalence_Point是系统标识符,用于设定化学计量点处的体积比(η)。计量点处的体积比可以根据滴定剂和滴定物的分析浓度计算。例如,本例中的分析浓度均为0.1 mol∙L-1,而H3PO4的第3个氢离子不能滴定,所以实际可滴定的氢离子浓度是0.4 mol∙L-1。总量滴定时化学计量点处的体积比为0.4 mol∙L-1/0.1 mol∙L-1 = 4,本例中Equivalence_Point == 4。实际上,计算过程被设定为计算到Equivalence_Point + 0.2即停止。所以,改变Equivalence_Point的设定值,可以逐步放大显示滴定曲线的进程。

(7) Acid_List是系统标识符,表明其后续部分是酸的列表,每个酸占一行,这里的行数必须与Acid_Number的数值一致。酸在溶液中会形成多种型体,这里将其所有型体均列举出来。以HCl为例,首先是滴定物的型体HCl,后续部分为HCl和Cl{-},分别表示HCl在水溶液中的两个型体,这些符号将用于标记对应型体的浓度变化曲线。其中的 & 为系统标识符,用于分割各型体。双等号==后面的数值0.1,1,1,-10,0.0,0.0分别表示酸的分析浓度、酸的原始型体(本例是HCl)理论上可提供的氢离子的数目、作为滴定物(本例依然是HCl)时其当前型体可提供氢离子的数目和酸的解离常数负对数值。这里要说明的是,HCl等强酸本质上是完全解离的,一般的教科书因而也不明确给出强酸的解离常数值。De Levie [4]建议对于强酸可直接赋予其酸解离常数为一个足够大的值,例如Ka = 1010,对应的pKa值即为-10。后面用0.0补齐,使得它看上去也是有三个酸解离常数值,与Max_pK_Number的值相一致。

(8) Base_List是系统标识符,表明其后续部分是碱的列表。本例中只有一个碱NaOH,它在水溶液中实际上完全解离。本软件中依然从形式上设定其原始型体和解离型体等。双等号==后面的数值0.1,1,1,220,0.0,0.0分别表示NaOH的分析浓度、滴定剂原始型体可提供氢离子的数目、当前型体可提供氢离子的数目和碱的解离常数负对数值。从酸碱滴定通式[4]的推导过程中可以发现,对于强碱而言其F = 1。本软件包本可以在编写程序时直接设定强碱的F = 1,而不必编写其具体的参数值。但为了参数表达的一致性和软件包未来的可拓展性,虚拟地设定了强碱的参数值。本例中的NaOH从形式上看包含1个氢离子,但是这个氢离子无解离的可能性,因而给它设定了一个非常小的酸解离常数,即Ka(NaOH) = 10-220。基于该值计算得到F值在精度要求范围内等于1。并且,基于该解离常数值计算得到的NaOH水溶液中各种型体的分布分数值也与实际体系一致。这里强调说明,本软件包当前只考虑一元强碱的情况,用户在研究NaOH滴定其他体系时,可以直接拷贝上述内容稍作修改即可。

(9) Result_File是系统标识符,用于指定计算结果保存位置及文件名。本软件包中将文件路径用绝对路径形式设定,目的是为了不至于因为安装路径不同导致计算出错。用户在编写或编辑本参数文件时,需要确保在此处设定的路径确实存在,否则程序会报错。用户还可以根据保存目录下的计算结果进行进一步的研究分析之用。

本软件包中包含了多个酸碱滴定实例的参数文件,用户可以先用这些文件学习本软件包的酸碱滴定部分的计算和显示方式。在此基础上再编写自己的参数文件。笔者建议将本程序中的参数文件另存后再在上面进行修改,避免因为编码的问题导致程序无法运行。

2.2.2 配位滴定参数文件

图 3所示为EDTA滴定Zn2+和Cu2+混合溶液的参数文件。该文件中已经对相关的内容进行注释,有分析化学知识的用户应该对于文件的理解不会存在太大的困难。为了便于读者的理解,这里还是对某些内容进行详细的解释。

图3

图3   EDTA滴定Zn2+和Cu2+混合溶液的参数文件


(1) 顶行开始的ACCT0是配位滴定参数文件的标识符。

(2) Mode是系统标识符。Mode == 0表示用EDTA滴定一个或多个金属离子,其他配体的浓度均视为常数。本软件包当前只实现这一种模式,将来会考虑进行扩展。

(3) OtherLigandNumber是系统标识符。配位滴定中可能会采用其他的配体对体系中的某些离子进行掩蔽,由此引入的配体对于其中的所有离子均可能发生配位反应。这里设定具体采用的其他配体数目,本例中实际上没有采用其他配体,但是虚拟设定其他配体数目为1,是为了给参数文件构建占位符,便于参数文件的一致性设计,及计算模块的通用性。后面的OtherLigandList是对应的系统识别符,用于列举其他配体与金属离子的(累积)形成常数。OtherLigandList中的参数用于计算金属离子的副反应系数。

(4) BufferNumber是系统标识符。配位滴定几乎都需要在缓冲溶液中进行,而构成缓冲溶液的试剂也可能与金属离子进行配位反应。在本例中采用了氨缓冲溶液,其中的NH3会与铜离子和锌离子进行配位反应。与BufferNumber对应的系统标识符是BufferList,它后面列举缓冲溶液中的配体与金属离子的累积形成常数。例如,本例中NH3与Zn离子的参数为0.005,2.37,4.81,7.31,9.46,0.0,0.0,分别为NH3的游离浓度和NH3与Zn离子的累积形成常数。BufferList中的参数用于计算金属离子的副反应系数。

(5) TitrantList是系统标识符。本例中的滴定剂是EDTA,其后续的数值为分析浓度和EDTA与氢离子的累积形成常数,用于计算EDTA的酸效应系数。

3 应用示例

3.1 酸碱滴定应用示例

图 2所示的酸碱滴定参数文件设定为焦点文件(鼠标点击该文件),点击Titration → Acid-base titration curve,即完成相关计算,得到图 4(A)所示的滴定曲线。图中的绿色圆点和红色圆点分别代表设定的化学计量点和滴定终点。从这个滴定曲线上可以看到只有一个显著的滴定突跃,对应于η=4。这也表明无法对该体系中的三个酸实现分别滴定,而只能滴定它们的总量。

图4

图4   NaOH滴定由HCl、HAc和H3PO4构成的混合酸体系的滴定曲线

电子版为彩图


图 4(A)中的滴定误差[7]是基于设定的化学计量点以酚酞为指示剂,并以其理论变色点为基准计算得到的(即参数文件中设定的End_Point_pH = 9.5)。这里要说明的是,酸碱滴定指示剂本身也是弱酸或者弱碱,它们实际上也是参与到滴定过程中去的。这里不仔细探究由于指示剂的存在所导致的误差问题,有兴趣的读者可参阅相关文献[12]

通过Windows菜单,找到参数文件,再次选定参数文件,然后执行Titration → Acid-base titration species curve,即会计算滴定过程中各个型体的浓度变化曲线,如图 4(B)4(C)4(D)所示。这里要说明的是,以往的酸碱滴定教材中用浓度对数图的方式来揭示滴定过程中各种型体的浓度变化形态。本软件直接计算出各种型体的浓度变化曲线,相对于传统的做法更为直观。

图 4(B)所示为盐酸中两种型体的浓度变化曲线。从图中可以看到,HCl型体的浓度实际上等于0,即盐酸是完全解离状态。从Cl-的滴定曲线上可以看到,在η=1处它并不等于0,表明在η=1之前可能并非只有源自HCl的氢离子被滴定,其他酸解离的部分,氢离子其实在同时被滴定。本质上说,不同来源的氢离子解离到溶液中后是无法区分的,均同时参与到与NaOH的反应之中。

图 4(C)所示为醋酸中两种型体的浓度变化曲线。从图中可以看到,即便在η=2处,HAc也只是部分被滴定;在η=3处,Ac-的浓度达到极大值,此时HAc才可视为被滴定完全。

图 4(D)所示为磷酸中4种型体的浓度变化曲线。从图中可以看到,H3PO4η=2处才基本被滴定完全,此时H2PO4-也恰好达到最大值。在后续的滴定过程中H2PO4-被持续滴定,最终在η=4处才被滴定完全。从η=4处开始,磷酸的第3个氢离子被滴定,但是由于其酸性太弱,不会形成滴定突跃。

基于上述的滴定曲线可以得出如下的结论:(1) 从滴定开始,3种酸解离状态的氢离子就一同被滴定;(2) 从η=2开始,主要在滴定游离的HAc,并在η=3处将HAc滴定完全;从η=3处开始,就只滴定H2PO4-,直至η=4时将H2PO4-滴定完全。

3.2 配位滴定应用示例

图 3所示的配位滴定参数文件设定为焦点文件,点击Titration → Complexation titration curve (mode 0),得到图 5所示的EDTA滴定铜离子和锌离子的滴定曲线和生成的配合物的浓度变化曲线。要说明的是,为了表达的简洁性,将滴定曲线纵坐标用pM标示,表示金属离子浓度的负对数值。在此体系中,溶液的pH用氨缓冲溶液控制,并假设游离氨浓度为0.005 mol∙L-1。由于NH3能够与Cu2+和Zn2+进行配位反应,所以从一开始就部分消耗了这两种金属离子,其结果是Cu2+和Zn2+的滴定曲线的起始点均被抬高,如图 5(A)所示。如果不存在类似NH3的配体,则根据Cu2+和Zn2+的分析浓度计算可知,二者的滴定曲线的起点均应该在pM = 2。由于NH3的配位效应,使得滴定开始前Cu2+和Zn2+的pM值均大于2。并且,由于NH3与Cu2+的配位能力更强,消耗更多的Cu2+,使得Cu2+的滴定曲线的起始pM位置高于Zn2+的滴定曲线的起始位置。从图 5(A)中还可以看到,在η=2处两种金属离子同时达到滴定突跃,这也表明在该体系中只能滴定两种金属离子的总量。

图5

图5   EDTA滴定由Cu2+和Zn2+构成的混合体系的滴定曲线


图 5(B)所示为两种金属离子与EDTA形成的配合物的滴定曲线。从图中可以看到,配合物ZnY2-优先生成。这表明在该体系中实际表现出的Zn2+与EDTA的形成常数要大于Cu2+与EDTA的形成常数,或者说Zn2+的条件形成常数要大于Cu2+的条件形成常数。从图 5 (B)还可以看到,在η=1附近,ZnY2-的浓度达到最大值,这也表明此时Zn2+基本被滴定完全,此后Cu2+才开始被显著滴定,最终在η=2处两种金属离子才被同时滴定完全。

上述的两个例子很好地演示了本软件包在分析复杂酸碱滴定体系和配位滴定体系时所展现的强大功能。限于篇幅,本文中不再展示其他例子。有兴趣的读者可以与本文作者联系,申请本软件的免费试用。还可通过腾讯课堂观看本软件的教学演示,链接地址为https://ke.qq.com/webcourse/index.html?cid=1477891&term_id=101576079&lite=1&from=800021724。

4 结语

作者基于酸碱滴定通式和配位滴定通式成功构建了辅助教学软件包。该软件包可直接运行在Windows平台上,用户无需安装其他的计算软件。参数文件的引入是本软件包的一大优势,它使得不同类型的计算均可以被纳入到同一个用户界面下,而用户所需要做的事情仅仅是根据规则构建参数文件,不再需要去建立复杂的计算方程,从真正的意义上实现了“公式化”。参数文件驱动的形式也为后续的拓展提供了便利的空间。限于作者的水平有限,本软件当前还不能处理更为复杂的配位滴定体系,希望这一不足能在不远的将来得以弥补。

参考文献

Gonzalezgomez D. ; Rodriguez D. A. ; Canadacanada F. ; Jeong J. S. J. Chem. Edu. 2015, 92, 855.

DOI:10.1021/ed5005646      [本文引用: 1]

Gutz, I. G. R. CurTiPot-pH and Acid-Base Titration Curves: Analysis and Simulation freeware, version 4.2. [2020-05-02]. http://www.iq.usp.br/gutz/Curtipot_.html

邵利民. 大学化学, 2017, 32 (10), 52.

URL     [本文引用: 1]

De Levie R. Anal. Chem. 1996, 68, 585.

DOI:10.1021/ac950430l      [本文引用: 4]

De Levie R. J. Chem. Edu. 1999, 76, 987.

DOI:10.1021/ed076p987      [本文引用: 1]

甘峰. 大学化学, 2007, 22 (5), 54.

URL     [本文引用: 1]

甘峰; 朱芳; 方萍萍. 分析化学, 北京: 科学出版社, 2019, 60- 116.

[本文引用: 2]

GNU, Minimalist GNU for Windows. [2020-05-02]. http://www.mingw.org

[本文引用: 1]

Nord, H.; Chambe-Eng, E. Qt v5. [2020-05-02]. https://www.qt.io

[本文引用: 1]

Eichhammer, E. QCustomPlot 2.0.1, A Qt C++ widget for plotting and data visualization, [2020-05-02]. http://www.qcustomplot.com

[本文引用: 1]

Guennebaud, G.; Jacob, B. Eigen v3. [2020-05-02]. http://eigen.tuxfamily.org/

[本文引用: 1]

李莲云; 余惠娟; 尹华勤; 甘峰. 大学化学, 2015, 30 (6), 859.

URL     [本文引用: 1]

/