在二次充放电电池、分析电极、腐蚀电化学还有氧化还原电极的实验过程中,往往需要在测试电化学稳态阻抗谱(EIS)之后,还需要对其进行等效电路的拟合(EIS拟合)。经过物理化学家的不懈努力,EIS拟合目前已经发展成熟,许多的拟合软件已经商业化,并且也有很多的教程教导人们如何使用软件。但是一个EIS数据可以对应多个等效电路,因此选择等效电路成为了EIS拟合的一个很重要的点。等效电路的选择可以通过大量地阅读相关专业领域的文献来限定。但是如果是出现了不同于本领域的EIS图谱的时候,就需要到EIS的拟合底层逻辑里面去找寻解决办法。
因为EIS拟合现在已经发展成为一个应用层面的东西,所以我在入门的时候对于底层逻辑并没有研究很清楚就开始动手了。现在再研究EIS拟合的python源代码的时候,我对这个底层逻辑又有了从新的认识。所以写下这个文章来提醒自己和分享给大家。
EIS是改变频率的大小,在单个频率的位置给体系传入一个具有固定振幅的电压,记录体系传出的电流的变化,同时将这个电流和电压的关系通过欧姆定律换算为阻抗值。由于振幅的变化是很微弱同时是正负相消的,所以对体系的影响是很微弱,对体系的物理化学性质没有影响的,是一种近乎稳态的无损的测量方式。另外由于电压在其振幅范围内是随着频率交变变化的(高频就是变化快,低频就是变化慢),所以得到的电流及转换后的阻抗都是有频率变化的特性的。因此,EIS导出的数据是一组(频率,阻抗实部,阻抗虚部)。也可以从侧面的地说明,振幅的大小在结果中是不会直接反映出来的,是属于测试中的控制变量。越大的振幅,在同一频率下,可以提高电流的大小,增强阻抗的收集敏感度,但同时也增加了测试时间。
阻抗分为实部和虚部,实际阻抗的表达式:
Z=Z′+jZ′′Z = Z^{\prime} + jZ^{\prime\prime}Z=Z′+jZ′′
实部和虚部的值的平方和根号是模量:
∣Z∣2=Z′2+Z′′2|Z|^{2} = Z^{\prime 2} + Z^{\prime\prime 2}∣Z∣2=Z′2+Z′′2
虚部与实部的比是相位角的正切值:
tan⁡ϕ=−Z′′Z′\tan\phi = \frac{- Z^{\prime\prime}}{Z^{\prime}}tanϕ=Z′−Z′′​
EIS拟合的底层逻辑就是找到拟合阻抗表达式能够无限接近甚至等价于实际阻抗的表达式。
因此,为了这个目的,我们就要用到电路学上的数学等式进行变换:
在串联电路中,实际阻抗和各部分的元器件的阻抗的总和:
Z=Z1+Z2+⋯+ZnZ = Z_{1} + Z_{2} + \cdots + Z_{n}Z=Z1​+Z2​+⋯+Zn​
在并联电路中,实际阻抗和各部分的元器件的阻抗的倒数的总和的倒数:
Z=11Z1+1Z2+⋯+1ZnZ = \frac{1}{\frac{1}{Z_{1}} + \frac{1}{Z_{2}} + \cdots + \frac{1}{Z_{n}}}Z=Z1​1​+Z2​1​+⋯+Zn​1​1​
为了代入上述的表达式,我们就要知道每个元器件的阻抗表达式:
电阻,阻抗中电阻性越强,整体图形越偏X轴正轴(实部,Z),因为频率是从大到小:
Z=RZ = RZ=R
纯电容,阻抗中电容性越强,整体图形越偏Y轴正轴(虚部,-Z),因为频率是从大到小:
Z=1C×j2πfZ = \frac{1}{C \times j2\pi f}Z=C×j2πf1​
非恒相位元件,是对电容的非恒相位变化的一个补充,当n=1的时候就是恒电容:
ZCPE=1j(2πfQ)n{Z_{CPE} = \frac{1}{j(2\pi fQ)^{n}}} ZCPE​=j(2πfQ)n1​
ZQ=1Y02πfncos⁡nπ2−j1Y02πfnsin⁡nπ2{Z_{Q} = \frac{1}{Y_{0}2\pi f^{n}}\cos\frac{n\pi}{2} - j\frac{1}{Y_{0}2\pi f^{n}}\sin\frac{n\pi}{2}}ZQ​=Y0​2πfn1​cos2nπ​−jY0​2πfn1​sin2nπ​
电感,阻抗中电感性越强,整体图形越偏Y轴负轴(虚部,Z),可能在最后出现第四象限的点,因为频率是从大到小:
Z=L×j2πfZ = L \times j2\pi fZ=L×j2πf
Warburg阻抗,σ是Warburg系数,阻抗中Warburg表现为一条斜向上的直线,因为频率是从大到小:
Z=σ2πf(1−j)Z = \frac{\sigma}{\sqrt{2\pi f}}(1 - j)Z=2πf​σ​(1−j)
由于有了上面的这些电子元器件的单独表达式之后,我们可以在前人的研究的基础上,利用他们得出的经验模型,然后得到一个表达式。

得到的直观表达式:
Z=RΩ+1j2πfCd+1RctZ = R_{\Omega} + \frac{1}{j2\pi fC_{d} + \frac{1}{R_{ct}}}Z=RΩ​+j2πfCd​+Rct​1​1​
将直观表达式转化为可以分拆实部和虚部的表达式:
Z=RΩ+Rct1+2πf2Cd2Rct2−j2πfCdRct21+2πf2Cd2Rct2Z = R_{\Omega} + \frac{R_{ct}}{1 + 2\pi f^{2}C_{d}^{2}R_{ct}^{2}} - j\frac{2\pi fC_{d}R_{ct}^{2}}{1 + 2\pi f^{2}C_{d}^{2}R_{ct}^{2}}Z=RΩ​+1+2πf2Cd2​Rct2​Rct​​−j1+2πf2Cd2​Rct2​2πfCd​Rct2​​
将要使用的拟合虚部表达式:
Zdata′′=2πfCdRct21+2πf2Cd2Rct2Z_{\text{data}}^{\prime\prime} = \frac{2\pi fC_{d}R_{ct}^{2}}{1 + 2\pi f^{2}C_{d}^{2}R_{ct}^{2}}Zdata′′​=1+2πf2Cd2​Rct2​2πfCd​Rct2​​
将要使用的实部表达式:
Zdata′=RΩ+Rct1+2πf2Cd2Rct2Z_{\text{data}}^{\prime} = R_{\Omega} + \frac{R_{ct}}{1 + 2\pi f^{2}C_{d}^{2}R_{ct}^{2}}Zdata′​=RΩ​+1+2πf2Cd2​Rct2​Rct​​
然后通过给定一些初始值,如RΩ、Rct、Cd。而2πf是用实验用的频率变化段(一个数列)。随后,通过非线性最小二乘回归法,不停地按一定规律增大或减少地变化RΩ、Rct、Cd等导出参数值,以实际的阻抗实部、阻抗虚部、2πf作为对象,拟合得到一个二维向量(Zmodel , Z′′model)和方差χ2
χ2=∑n=0N[Zdata′(ωn)−Zmodel′(ωn)]2+[Zdata′′(ωn)−Zmodel′′(ωn)]2\chi^{2} = \sum\limits_{n = 0}^{N}\left\lbrack Z_{\text{data}}^{\prime}\left( \omega_{n} \right) - Z_{\text{model}}^{\prime}\left( \omega_{n} \right) \right\rbrack^{2} + \left\lbrack Z_{\text{data}}^{\prime\prime}\left( \omega_{n} \right) - Z_{\text{model}}^{\prime\prime}\left( \omega_{n} \right) \right\rbrack^{2}χ2=n=0∑N​[Zdata′​(ωn​)−Zmodel′​(ωn​)]2+[Zdata′′​(ωn​)−Zmodel′′​(ωn​)]2
如果χ2可以达到一个比较满意的值就可以输出(Zmodel , Z′′model)的一个二维数组。同时输出RΩ、Rct、Cd的三个一维数组。这时候χ2如果足够小,拟合的能斯特图和实际的能斯特图可以达到比较好的重合效果。
要知道(Zmodel , Z′′model)数组都是变化的,所以RΩ、Rct、Cd的三个一维数组也是变化的,最终导出RΩ、Rct、Cd的三个值是平均值,因此也会有三个值的标准差。在Zsimpwin中会显示每个RΩ、Rct、Cd的标准差值σ,如果有哪个值的标准差σ超出了预期(例如1),这时候我们就要以RΩ、Rct、Cd的输出值作为输入值,重新改变(一般是减少)RΩ、Rct、Cd的值输入到直观表达式中,再走一次最小二乘法拟合,直至RΩ、Rct、Cd的标准差值σ到达预期,同时RΩ、Rct、Cd的值有一定的物理意义(如溶液电阻不可能太大)。这时候RΩ、Rct、Cd就可以作为电极表面的平均变化过程的物理值来和其他情况相对比较。前提是其他情况也是有相似的拟合过程(初始输入值和直观表达式)。
上述的EIS拟合的底层逻辑说明了拟合的过程需要满足三次验证,一次是最小二乘法的χ2符合预期,另外一次是各个单位输出值的标准差值σ符合预期,最后一个是各个单位输出值在其物理意义内。

一个流程图

Created with Raphaël 2.2.0开始,打开EIS拟合软件导入数据(频率,阻抗实部,阻抗虚部)三个一维数列显示能斯特图和波特图观察有多少个时间常数所在领域常用的等效电路是否用非恒相位元件CPE代替电容C?给出拟合元器件的起始值使用最小二乘法拟合方差符合预期?各个元器件的标准差是否符合预期?各个元器件的值是否符合物理意义要求的范围?结束,输出各个元器件的平均值作为文章分析的数据yesnoyesnoyesno

参考自:
https://www.baidu.com/link?url=w34yjUqRP3xeLsBePE382F7A96rANvX2EFM2lGcx07ju6U0WDP2hJoQbdbH2oBTvflZkWui5-obJQbWDBjY8yUpVsTVXWsAqFHJir5OKfvZq46JrywkX-oOOhIAQgeW4&wd=&eqid=c80b7eee0006c35b000000066009bbca
https://impedancepy.readthedocs.io/en/latest/circuit-elements.html

使用软件或Python编程时EIS拟合的底层逻辑(EIS拟合的原理/过程)相关推荐

  1. 对于使用progisp软件进行ISP编程时进入不了编程模式的解决方法

    目录 对于使用progisp软件进行ISP编程时无法进入编程模式的解决方法 前提说明 Win10 解决方法 Win10 "禁用强制驱动程序签名" Win10 手动安装驱动. Win ...

  2. 免费学python的软件-初学python编程,有哪些不错的软件值得一用?

    推荐些适合初学用python编程的软件,有一些软件虽然功能强大,也广受大家认可,但个人不认为适合初学者.比如PyCharm.Anaconda. IDLE 作为Python默认安装的 ide,基本的功能 ...

  3. python能做什么软件-初学python编程,有哪些不错的软件值得一用?

    推荐些适合初学用python编程的软件,有一些软件虽然功能强大,也广受大家认可,但个人不认为适合初学者.比如PyCharm.Anaconda. IDLE 作为Python默认安装的 ide,基本的功能 ...

  4. python软件下载-Python编程软件下载

    Thonny是一款Python编程工具,非常适合Python的初学者使用,简单易操作,有错误的部分会直接显示出来,对于一些难懂的部分会给予解释,非常的人性化,需要的朋友欢迎下载使用. 软件优势 初始布 ...

  5. python入门编程软件免费-Python编程干货免费领取!!!

    原标题:Python编程干货免费领取!!! 早在18 年,教育部就正式将人工智能.物联网.大数据处理正式划入高中新课标,这就意味着现在的学生16岁就要开始学习编程了! 开发岗位的高薪和人工智能的发展, ...

  6. python编程软件v-Thonny(Python编程工具) V3.2.5 官方版

    相关软件 软件大小 版本说明 下载地址 Thonny是一款专门针对python初学者开发的编程学习软件.使用一个友好的IDE,为您提供几个有用的学习工具,所有这些都打包成一个直观的GUI,让你更快的熟 ...

  7. python编程时常用的模块

    python之所以能在编程语言排行榜中占据榜首,处理语言自身的特点之外还在于其丰富的应用库,涵盖了计算机应用领域的方方面面. 一.算法设计 Python的数据结构,算法和设计模式的实现.另请参阅真棒算 ...

  8. 学习用Python编程时要避免的3个错误

    这些错误会造成很麻烦的问题,需要数小时才能解决. 当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python. ...

  9. python里unexpected eof while parsing_使用Python编程时的10个注意事项

    01初始变化量 在Python里,一个表达式中的名字在它被赋值之前是没法使用的.这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,"" ...

  10. 哪个软件可以用来python编程_python编程用哪个软件

    Python是编程入门不错的选择,现在也有不少的程序员业余时间会研究这门编程语言. 学习Python有时候没有第一时间找到好工具,会吃不少的苦头.毕竟好的工具能将工作效率多倍速提升.(推荐学习:Pyt ...

最新文章

  1. 004_URL 路由 - 对磁盘文件的请求进行路由
  2. .NET设计模式(8):适配器模式(Adapter Pattern)
  3. Python并发与并行的新手指南
  4. 我这几年呆的这几个公司
  5. phonegap安装 环境搭建与配置详解(3.4 完整版 提供下载地址)
  6. 十大算法 — 插入排序法【C语言代码诠释】
  7. Combination Sum II - LeetCode
  8. Vue相关开源项目库汇总(转)
  9. 手把手带你搭建Linux环境(保姆级,包含vivado与petalinux)
  10. ubuntu软件默认安装位置
  11. 歌曲影视随意赏计算机课件,世界影视音乐赏析课件.ppt
  12. java开发一般用se,用大白話聊聊JavaSE
  13. 微信整人假红包图片_微信假红包图片生成器,假红包生成器微信(玩别人没商量)...
  14. 代码解放,一个智能化的「云控制台」如何运转?
  15. 复习单片机:动态数码管(1 数码管介绍+2 74HC245 和 74HC138 芯片介绍+3 硬件设计+4 软件设计+5 实验现象)
  16. PS填充、仿制图章和修补工具
  17. python的数据与matlab互通:SciPy
  18. 总线(四)Modbus总线 协议
  19. html下拉复选框联动,HTML : CheckBox 复选框成组联动(JavaScript)
  20. Emulator: emulator: INFO: QtLogger.cpp:68: Critical: Uncaught ReferenceError: $ is not defined (qrc:

热门文章

  1. 力软下拉框多选_[力软7.0.6]力软敏捷开发框架敏捷框架前端API
  2. 数据库基础知识(面试)
  3. 编程语言c语言vb,c语言和vb语言哪个比较简单
  4. Python学习第一弹——Python环境搭建
  5. (转载)你的个人信息是如何被盗走的?MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段
  6. DEM数据如何生成高程点
  7. ✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(三)✨✨✨
  8. 慕课软件质量保证与测试(习题集)
  9. 34.【日期】计算后续日期--北京理工大学编程题
  10. Eclipse的环境变量如何配置和为什么要配置环境变量?