风筝
发表于: 2020-2-26 21:32:30 | 显示全部楼层

在化学中,pH是用于指定水基溶液的酸性或碱性的标度。酸性溶液的pH值较低,而碱性溶液的pH值较高。因此,Ph传感器具有确定任何溶液的Ph的能力,即可以判断该物质本质上是酸性、碱性还是中性。通过了解pH,我们可以监控农业农场和养鱼场的水质。同样,pH传感器具有广泛的应用,例如废水处理、制药、化学和石化。


在本篇文章中,我们将学习如何将pH传感器与Arduino开发板连接,设计一个简单的pH计,并在OLED显示屏上显示pH值。我们还将了解pH传感器的制作和工作原理。最后,我们将学习校准方法,该方法将确定传感器的正确性和准确性。


所需的组件

以下是制作本文所需的组件。

●    Arduino UNO开发板

●    pH传感器套件

●    OLED显示屏


什么是pH?

术语pH是水溶液或其他液体溶液的酸度或碱度的定量度量。该术语广泛用于化学、生物学和农学领域,将通常在每升约1到10-14克当量之间的氢离子浓度值转换为0到14之间的数字。

Ph-Scale.jpg


在中性(既不是酸性也不是碱性)的纯净水中,氢离子的浓度为10,每升7克当量,相当于pH值为7。pH值小于7的溶液被认为是酸性(acidic)。 pH值大于7的溶液被视为碱性(alkaline)。


什么是pH计?

pH计是一种科学仪器,可测量水性溶液中的氢离子活性,指示其酸度或碱度以pH表示。 pH计测量pH电极和参比电极之间的电势差,因此pH计有时被称为“电位pH计”。电位差与溶液的酸度或pH有关。


ph计的制作与工作原理

pH酸碱度传感器具有通常由玻璃制成的棒状结构,底部装有一个装有传感器的灯泡。用于测量pH的玻璃电极具有专门设计成对氢离子浓度具有选择性的玻璃灯泡。浸入要测试的溶液中时,测试溶液中的氢离子会与玻璃灯泡上的其他带正电的离子交换,从而在灯泡上产生电化学势。电子放大器检测在测量中生成的两个电极之间的电位差,并将电位差转换为pH单位。根据能斯特方程(Nernst equation),整个玻璃灯泡上的电化学势的大小与pH线性相关。

Ph-Sensor-Construction-Working.jpg


参比电极对溶液的pH值不敏感,参比电极由连接到显示器的金属导体组成。将该导体浸入电解质溶液(通常为氯化钾)中,该电解质溶液通过多孔陶瓷膜与测试溶液接触。显示屏包含一个电压表,显示pH单位的电压。


模拟pH传感器套件

DFRobot-Ph-Sensor.jpg


DFRobot模拟pH计专为测量溶液的pH并反映酸度或碱度而设计。作为pH计V1的升级版,该传感器极大地提高了精度和用户体验。板载稳压器芯片支持3.3〜5.5V的宽电压电源。经硬件滤波的输出信号具有低抖动。使用此pH传感器,您可以快速构建pH计来测量不同水溶液的pH值。


主要技术特点:

1.  输入电压:3.3〜5.5V

2.  硬件滤波的输出信号,低抖动

3.  Gravity连接器和BNC连接器

4.  易于校准

5.  传感器和连接器尺寸均匀,易于机械装配。


模拟pH传感器与Arduino的连接

现在,让我们将pH传感器与Arduino开发板连接。连接非常简单,下面给出电路原理图。

Interfacing-Ph-Sensor-with-Arduino.jpg


pH传感器有3个需要连接到Arduino的引脚。因此,如上图所示,将VCC引脚连接至Arduino的5V,GND连接至GND,并将其模拟引脚连接到Arduino的A0。

Ph-Sensor-Arduino-Connection.jpg


源代码

下面给出了DFRobot pH传感器与Arduino连接的源代码。只需复制代码并将其上传到Arduino开发板即可。

  1. #define SensorPin A0          // the pH meter Analog output is connected with the Arduino’s Analog
  2. unsigned long int avgValue;  //Store the average value of the sensor feedback
  3. float b;
  4. int buf[10],temp;

  5. void setup()
  6. {
  7.   pinMode(13,OUTPUT);  
  8.   Serial.begin(9600);  
  9.   Serial.println("Ready");    //Test the serial monitor
  10. }
  11. void loop()
  12. {
  13.   for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  14.   {
  15.     buf[i]=analogRead(SensorPin);
  16.     delay(10);
  17.   }
  18.   for(int i=0;i<9;i++)        //sort the analog from small to large
  19.   {
  20.     for(int j=i+1;j<10;j++)
  21.     {
  22.       if(buf[i]>buf[j])
  23.       {
  24.         temp=buf[i];
  25.         buf[i]=buf[j];
  26.         buf[j]=temp;
  27.       }
  28.     }
  29.   }
  30.   avgValue=0;
  31.   for(int i=2;i<8;i++)                      //take the average value of 6 center sample
  32.     avgValue+=buf[i];
  33.   float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  34.   phValue=3.5*phValue;                      //convert the millivolt into pH value
  35.   Serial.print("    pH:");  
  36.   Serial.print(phValue,2);
  37.   Serial.println(" ");
  38.   digitalWrite(13, HIGH);      
  39.   delay(800);
  40.   digitalWrite(13, LOW);

  41. }
复制代码

测试不同溶液的pH值

为了测试上述设计的pH计,我使用了4种具有不同pH值的不同方案。我采取以下溶液:

1.  肥皂水:pH值约为9-10

2.  牛奶:pH值约为6.5-6.7

3.  自来水:pH值约为6.5-8.5

4.  柠檬汁:pH值约为2-3


测试结果

将代码上传到Arduino开发板后,您可以打开串口监视器并开始测试pH传感器。我使用上面提供的所有4种溶液测试了pH传感器,测试结果如下:

1-Soap.jpg


将pH传感器与Arduino和OLED显示屏连接

现在,让我们在OLED显示器上而不是串口监视器上显示pH值。为此,我们需要向Arduino Uno添加0.96英寸I2C OLED显示屏。连接图如下所示。

Circuit-Diagram-2.jpg


连接非常简单。将pH传感器的模拟引脚连接到Arduino的A0引脚并为其提供5V电压。另外,将OLED Display的SDA和SCL引脚分别连接到Arduino A4和A5引脚。


测试结果

上载代码后,OLED显示屏将开始显示pH值。将pH电极浸入不同的溶液中将得到不同的值,如下图所示。

12.jpg


pH传感器校准

如果您使用过pH测量,您将知道PH值范围是0-14。如果pH 0呈酸性,pH 7将呈中性,pH 14呈碱性。使用pH传感器时最大的问题是校准。由于Ph传感器是模拟传感器,输出取决于电压,因此需要校准。我们需要一个pH强度已知的溶液。市场上有各种PH值固定的缓冲溶液。

buffer-solution.jpg


校准pH传感器的最简单方法是将pH电极浸入已知强度的溶液中并观察读数。例如,将电极浸入pH值为7的溶液中时,读数应显示为7。如果读数不正确,则需要旋转信号转换板上的电位器。一旦读数匹配,您就可以停止旋转,此时传感器已校准。

Ph-Sensor-Calibration.jpg


跳转到指定楼层
小虫子
发表于: 2021-4-17 21:43:58 | 显示全部楼层

你好,有pH传感器与Arduino连接显示屏的源代码吗,求解了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 11:31 , Processed in 0.060713 second(s), 10 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

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

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