风筝
发表于: 2020-6-13 20:56:53 | 显示全部楼层

pH计用来测量液体的酸碱度。它的读数范围为1-14,其中1表示最酸性的液体,而14表示最碱性的液体。 pH值为7表示既不是酸性也不是碱性的中性物质。现今,pH计在我们的生活中起着非常重要的作用,并且被用于各种应用中。例如,它可以在游泳池中使用以检查水质。同样,pH计测量可用于多种应用,例如农业、废水处理、工业、环境监测等。


在本篇文章中,我们将使用Arduino开发板制作一个pH计,并学习如何使用pH传感器和Arduino测量液体溶液的pH值。 LCD1602显示屏用于在屏幕上显示pH值。我们还将学习如何校准pH传感器以确定传感器的精度。现在,让我们开始动手制作吧!


所需的组件

●    Arduino Uno开发板

●    LCD1602显示屏

●    用于LCD的I2C模块

●    模拟pH传感器

●    连接导线

●    面包板


什么是pH值?

我们用来测量物质酸度的单位称为pH。术语“ H”定义为氢离子浓度的负对数。 pH范围可以是0到14。pH值为7是中性,因为纯净水的pH值恰好为7。低于7的值是酸性(acidic),大于7的值是碱性(alkaline)。

pH-Scale.png


模拟pH传感器的工作原理?

模拟pH传感器旨在测量溶液的pH值并显示物质的酸度或碱度。它通常用于各种应用,例如农业、废水处理、工业、环境监测等。该模块板载一颗稳压器芯片,该芯片可支持3.3-5.5V DC的宽电压电源,可以兼容Arduino这样的任何控制板的5V和3.3V电压。输出信号使用滤波降低抖动。


技术特点:

信号转换模块:

●    d供电电压:3.3〜5.5Vd

●    BNC连接器

●    高精度:±0.1@25°C

●    检测范围:0〜14

PH-Signal-Conversion-Board.jpg

PH电极:

●    工作温度范围:5〜60°C

●    零点:7±0.5

●    易于校准

●    内阻:<250MΩ

PH-Electrode.jpg


引脚说明:

V +:5V DC输入

G:接地

Po:pH模拟输出

Do:3.3V DC输出

To:温度输出


pH电极构造:

PH-Electrode-Construction.png


pH传感器的结构如上所示。 pH传感器看起来像一根通常由玻璃材料制成的棒,其尖端称为“Glass membrane”。该膜充满已知pH(通常pH = 7)的缓冲溶液。这种电极设计确保了H +离子与玻璃膜内部的结合力恒定的环境。当浸入待测溶液中时,待测溶液中的氢离子开始与玻璃膜上的其他带正电的离子交换,从而在整个膜上产生电化学势,该电化学势被馈送到测量电位的电子放大器模块在两个电极之间并将其转换为pH单位。这些电势之间的差根据能斯特Nernst方程确定pH值。


能斯特 (NERNST)公式:

能斯特公式(Nernst equation)给出了电化学电池的电池电势、温度、反应商和标准电池电势之间的关系。在非标准条件下,能斯特方程用于计算电化学电池中的电池电势。 Nernst方程还可以用于计算整个电化学电池的总电动势(EMF)。该方程式也用于计算溶液的PH值。玻璃电极响应受能斯特方程的控制,可以表示为:

  1. E = E0-2.3(RT / nF)ln Q
复制代码

这里:

Q =反应系数

E =电极输出的mV

E0 =电极的零偏移

R =理想气体常数= 8.314 J / mol-K

T =温度,单位:ºK

F =法拉第常数= 95484.56 C / mol

N =离子电荷


基于Arduino的pH测量仪电路图

该pH测量仪项目的电路图如下所示:

Arduino-pH-Meter-Circuit-Diagram.png


Arduino和PH信号转换板之间的实物连接如所示。

Arduino-pH-Meter.jpg


编写PH计的Arduino程序

成功建立硬件连接后,现在该对Arduino进行编程了。本文的底部提供了带Arduino的pH计的完整代码。以下是该项目的简要说明。

程序中要做的第一件事是包括所有必需的库。这里包括用于LCD显示屏的LiquidCrystal_I2C.h”库和用于在Arduino上使用I2C功能的“ Wire.h”库。

  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. LiquidCrystal_I2C lcd(0x27, 16, 2);
复制代码

接下来,定义校准值,可以根据需要对其进行修改以获取溶液的准确pH值。

  1. float calibration_value = 21.34;
复制代码

在setup()函数中,编写LCD命令实现在LCD上显示欢迎消息。

  1.   lcd.init();
  2.   lcd.begin(16, 2);
  3.   lcd.backlight();
  4.   lcd.setCursor(0, 0);
  5.   lcd.print("   Welcome to      ");
  6.   lcd.setCursor(0, 1);
  7.   lcd.print(" Circuit Digest    ");
  8.   delay(2000);
  9.   lcd.clear();
复制代码

在loop()函数中,读取10个样本模拟值并将它们存储在数组中。我们使用滑动输出结果。

  1. for(int i=0;i<10;i++)
  2. {
  3. buffer_arr[i]=analogRead(A0);
  4. delay(30);
  5. }
复制代码

然后,按升序对收到的模拟值进行排序。这是必需的,因为我们需要在后期计算采样的滑动平均值。

  1. for(int i=0;i<9;i++)
  2. {
  3. for(int j=i+1;j<10;j++)
  4. {
  5. if(buffer_arr[i]>buffer_arr[j])
  6. {
  7. temp=buffer_arr[i];
  8. buffer_arr[i]=buffer_arr[j];
  9. buffer_arr[j]=temp;
  10. }
  11. }
  12. }
复制代码

最后,计算中间6个采样模拟值的平均值。然后将该平均值转换为实际的pH值并打印输出在LCD显示屏上。

  1. for(int i=2;i<8;i++)
  2. avgval+=buffer_arr[i];
  3. float volt=(float)avgval*5.0/1024/6;
  4. float ph_act = -5.70 * volt + calibration_value;
  5. lcd.setCursor(0, 0);
  6. lcd.print("pH Val:");
  7. lcd.setCursor(8, 0);
  8. lcd.print(ph_act);
  9. delay(1000);
  10. }
复制代码

pH电极校准

PH电极的校准在该项目中非常重要。为此,我们需要一个固定pH值的解决方案。可以将其用作传感器校准的参考解决方案。


假设我们有一个溶液的PH值为7(蒸馏水)。现在,将电极浸入参比溶液中时,LCD上显示的PH值为6.5。然后对其进行校准,只需在代码中的校准变量“ calibration_value”中添加7-6.5 = 0.5。即使值21.34 + 0.5 = 21.84。进行这些更改之后,再次将代码上传到Arduino,然后通过将电极浸入参考溶液中来重新检查pH。现在,LCD应该显示正确的pH值,即7(几乎没有很大的变化)。同样,调整此变量以校准传感器。然后检查所有其他pH值以获取准确的输出。


测试Arduino pH仪

我们通过将其浸入纯净水和柠檬水中测试了Arduino pH计,您可以在下面看到结果。


纯净水:

Arduino-pH-Tester-Working.jpg


柠檬水:

Working-of-Arduino-pH-Meter.jpg


以上就是我们使用Arduino开发板和pH传感器制作pH计,并用来检查各种液体的pH值的方法。


代码

本文使用的完整代码如下: main.rar (556 Bytes, 下载次数: 103)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 19:30 , Processed in 0.153505 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表