当前位置: 首页 > article >正文

PH电极酸碱度检测

最近做了一个项目是关于PH电极测酸碱度的一个仪器。

   简单地说:玻璃电极是一种氢离子选择性电极,相当于一个对玻璃膜两侧氢离子浓度差异能产生附加电势差的“盐桥”,一般的盐桥是为了消除浓差电势或者液体接触电势这种附加电势差,玻璃电极却反其道而行之,利用这个附加电势差测量氢离子浓度的差异,从而确定氢离子浓度,即对应pH值。测量pH值时,参比电极电势与氢离子浓度无关,插在待测溶液中,组成一个半电池,而玻璃电极的内参比电极插在玻璃电极内部已知pH值,即氢离子浓度固定的的标准溶液中,组成另一个半电池。如果两个半电池是用盐桥连接的,理论上盐桥不产生附加电势差,那么测得的电池电动势就是固定的,但现在两个半电池是用玻璃膜隔开的,玻璃膜中含有硅酸钠等,玻璃膜浸水水化后,钠离子与两侧溶液中的氢离子都会发生离子交换作用,这种离子交换作用就会在玻璃膜两侧都产生附加电势差,玻璃电极内部标准溶液氢离子浓度是固定的,内侧附加电势差也固定,但玻璃电极外部待测溶液的氢离子浓度不固定,因此外侧附加电势差不固定,这样一来整个玻璃膜带来的附加电势差就与玻璃电极外部待测溶液的氢离子浓度有了函数关系,也就是与待测溶液的pH值有了函数关系,而这个附加电势差就叠加在外参比电极与玻璃电极内参比电极构成的原电池电动势上,用电压表测出实际电动势,确定附加电势差,即可换算出玻璃电极外部待测溶液的pH值。因此,pH计只不过是一种高精度,高内阻的电压表罢了。由于玻璃膜本身是绝缘体,因此用玻璃膜“盐桥”隔开的原电池内阻极高,可达数百兆欧姆以上,一般的电压表根本无法测量这个原电池的电动势,因此需要带有高输入阻抗器件放大器的电压表,这种高输入阻抗器件基本不可能是双极型晶体管(BJT),通常只能使用电子管或者场效应晶体管(JFET或者MOS),或者以场效应管作为输入级的运算放大器。早年国内的经典产品雷磁25型酸度计就是使用电子管放大器的,因此又大又笨重,耗电也大,工作时还要事先做预热、校准、调零等。现在用集成运放就可以轻易解决了,因此现在生产的酸度计很轻便,价格也便宜,但玻璃电极一直在使用。

以上转至知乎作者:Studio TBsoft
链接:https://www.zhihu.com/question/351271623/answer/862429131
来源:知乎

      模块检测原理:本模块是通过一个放大电路把PH电极探头采集的信号通过放大器放大,通过STM32的12位ADC对放大后的传感器信号采样,并通过最小二乘法软件算法计算出信号与PH值得线性函数关系式,进而采用线性函数关系式求出信号对应的PH值,这里PH斜率我查看了很多资料最终自己总结得到了一个方程式,这个方程式不是固定的,需要自己用PH标准液来测试,看看不同的ph溶液对应不同的电压,最终列出方程式。得到斜率公式以后就可以把自己测的值代入公式得到PH值。用PH校正液来给模块校准。校准方法是在三种不同的溶液中测试,记得每测试一种溶液后要拿清水冲一下,记录好不同溶液的电压值,然后下面是斜率计算公式,写的可能有点乱。

     这是一个大概的公式,具体的还看自己的电路,蓝色是0-3.3v的 红色是0-5v的,有人就纳闷了,为啥还分俩啊?因为部分芯片ADC只能采集0-3.3V的电压。

 

     同相放大电路

 Vout=(1+R4/R3)×(R2/(R1+R2)*Vin+ph+)

 不同的温度下采集到的PH电极也是不一样的,所以这里要用到温度补偿算法,要测试出来温度,有线性变化,我们还加了一个DS18B20温度传感器来采集温度。通常见到很多方法中建议pH和温度同时测量并记录。其他方法可能pH在样品温度下进行测量。 如果有必要在不同于校准的温度下测量pH,要注意到应用的温度补偿纠正会变大,就像缓冲液和样品的温度和pH值会进一步拉大。对于样品pH读数的温度补偿纠正系数一般为0.003pH/℃/pH,以pH为基准计算。 比如,如果在20℃下进行校准,但是测量的样品温度为38℃且读数为pH8.5。则温度补偿纠正应该接近0.003 pH x (38-20℃)x (8.5-7.0 pH单位)=0.08 pH。

     板载的有RS485芯片,通过modebus-rtu协议用主机来读取从机的数据,我们这里是个从机,或者可以直接用上位机串口来读数据。

 已经通过测试,PH值校准后还是很准的

  正面和背面 由于前期要测试所以有BNC接口,后期是直接放在一个仪器内部里的是用接线方式

 正面


http://www.kler.cn/a/2664.html

相关文章:

  • 微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
  • MacBook Linux 树莓派raspberrypi安装Golang环境
  • 洛谷P1617————数字转英文
  • Ubuntu中使用miniconda安装R和R包devtools
  • Kafka如何实现顺序消费?
  • 119.使用AI Agent解决问题:Jenkins build Pipeline时,提示npm ERR! errno FETCH_ERROR
  • 使用@Aspect和@Before注解以及全局异常拦截
  • NX二次开发 图层函数总结
  • I2C和SPI总线以及通信
  • Springboot Long类型数据太长返回给前端,精度丢失问题 复现、解决
  • Oracle数据库从入门到精通系列之一:定义数据库和实例
  • DevOps系列文章 - K8S构建Jenkins持续集成平台
  • 一文了解Jackson注解@JsonFormat及失效解决
  • 功能测试转型测试开发年薪27W,又一名功能测试摆脱点点点,进了大厂
  • 字节跳动测试岗面试记:二面被按地上血虐,所幸Offer已到手...
  • webpack——使用、分析打包代码
  • python中socket智能调结用户连接数
  • 2万字带你精通MySQL索引
  • Vue:路由管理模式
  • 编写软件界面的方式
  • maven setting 配置
  • 制作简单进销存管理系统(C#)
  • 大数据专业应该怎么学习
  • python --获取内网IP地址
  • libvirt零知识学习5 —— libvirt源码编译安装(3)
  • ring_log环形日志-6M缓冲区_proc接口