模拟锥形pH计

简介

土壤的pH值是一个重要的参数,影响着植物的生长。不同的植物,适宜生长的土壤pH值是不一样的。不同的食物,如水果、肉类等,它们的pH值也是不同的。食物的pH值也是一个重要的参数,如通过对肉类pH值的检测,来判断肉类的质量。
对于土壤、食物这类半固体物质,普通pH电极不可直接测量,不然容易导致电极异常甚至损坏。为此,我们推出了这款锥形pH计。该产品的pH电极带有不锈钢针刺护套,可直接刺入半固体物质,因此可方便的测量湿润土壤、食物(如肉类、水果)等物质的pH值,这是普通pH电极不能达到的。
本产品兼容Arduino,即插即用,简单方便,可快速DIY一个pH检测仪,直接测量土壤或食物的pH值。

  • warning_yellow.png
  • 严禁用于测量坚硬的固体样品、含有尖锐颗粒的半固体样品。
  • 请始终保持电极插头、信号转接板(特别是BNC接口座)的清洁及干燥。
  • 本电极为实验室电极,不适用于长时间的在线测试,因此请勿将电极长时间浸泡于被测物内。
  • 电极使用完毕,请认真对电极进行清洗工作。
  • 本产品接触被测物的部件有黑色ABS外壳、玻璃组件和硅橡胶材料,测试被测物之前需确认被测物对这些材料没有伤害。
  • 不适合测量:油性样品、粘度较大的样品、含较多细微颗粒的样品。
  • 不适用于非水滴定。
  • 不锈钢护套的头部比较尖锐,使用时请注意安全。

技术规格

锥形pH电极

  • 测量范围:0~10pH
  • 测量精度:±0.1pH
  • 温度范围:5~60℃
  • 响应时间:标准溶液中≤2min
  • 盐桥材料:聚四氟乙烯
  • 外壳材料:聚甲醛
  • 填充液:不可充
  • 连线接口:BNC
  • 线长:85cm(包含BNC接口的长度)

信号转接板

  • 输入电压:+ 5.00V
  • 输出信号:0~4V
  • 测量精度:±0.2pH(25℃)
  • 电极接口:BNC
  • 信号接口:PH2.0-3P
  • 产品尺寸:43mm×32mm

引脚说明



锥型pH计信号转接板管脚定义

标号 名称 功能描述
1 A 模拟信号输出端(0~4.0V)
2 + 电源输入正极 (5.0V)
3 - 电源输入负极
4 BNC pH电极连线接口

pH电极特性

pH电极的输出信号为毫伏级的电压,与pH值有着对应关系。25℃时,理想输出电压与pH值的关系如下:

电位差计 (mV) 标称pH 电位差计 (mV) 标称pH
414.12 0.00 59.16 6.00
354.96 1.00 0.00 7.00
295.80 2.00 -59.16 8.00
236.64 3.00 -118.32 9.00
177.48 4.00 -117.48 10.00
118.32 5.00

使用教程

本教程将演示如何使用这款锥形pH计来测量半固体物质(如湿润土壤、食物)的pH值。

准备

  • 硬件
    • 1 x Arduino UNO控制板(或类似的控制板)
    • 1 x 锥形pH电极
    • 1 x 信号转接板
    • 1 x 不锈钢针刺护套
    • 1 x 3PIN模拟传感器连接线(或若干 杜邦线)
    • 1 x pH标准液(4.0)
    • 1 x pH标准液(7.0)
  • 软件

组装锥形pH电极

在测量半固体物质前,pH电极必须安装好不锈钢针刺护套。如果是放在标准缓冲液中进行校准,则不锈钢针刺护套可先不安装。待校准完毕以后,再安装。
首先将pH电极的保护液瓶及瓶盖取下,然后拧开并取下固定环。接着小心翼翼的将不锈钢针刺护套装到电极头部,再装上并拧紧固定环。具体的安装操作,请参考下图。



接线图

锥形pH电极组装完毕以后,将电极接到信号转接板上。信号转接板接到Arduino主控器上。接着就可上传样例代码至Arduino主控器。连线请参考下图:



校准

如是第一次使用本产品,或者使用了一段时间,则需要进行校准,减小误差。校准时,如发现电极头部的玻璃球内有气泡,可将电极轻甩几次,使得气泡消失。

  • 推荐使用外接精密开关电源,使电压尽量接近+5.00V,电压越准,精度越高!
  • 电极在每次使用前均需要使用标准缓冲溶液进行校准,为取得更正确的结果,环境温度最好在25℃左右。
  • pH电极测量另外不同pH值的溶液,必须使用纯净水清洗,防止溶液污染。建议使用蒸馏水清洗。
  • 电极连续使用2小时后,为保证精度,也应再次进行校准。
  • 请保持信号转接板的清洁与干燥,防止影响BNC接口座子的输入电阻。
  1. 将pH电极插入到pH值为7.00的标准溶液中,等待一分钟后,打开Arduino IDE的串口监视器,可以看到当前打印出的pH值,误差不会超过0.3。记录下此时打印的值,然后与7.00相比,把差值修改到程序中的OFFSET处(差值 = 标准值(7.0) - 打印值)。比如,打印出的pH值为6.88,则差值为0.12,则在样例程序中把#define OFFSET 0.00改成#define OFFSET 0.12。
  2. 清洗pH电极,然后用滤纸吸干残留水迹。将pH电极插入pH值为4.00的校准液中,等待一分钟后,打开Arduino IDE的串口监视器,调整增益电位器,使打印出的pH值尽量稳定在4.00左右。
  3. 清洗pH电极,然后用滤纸吸干残留水迹。这些步骤完成后,校准就完成了,之后pH电极就可用于实际的测量了。

测量半固体物质的pH值

电极校准完毕以后,就可测量食物、湿润土壤等半固体物质的pH值了。
测量时,如发现电极头部的玻璃球内有气泡,可将电极轻甩几次,使得气泡消失。将电极插入被测物后,推荐等待5分钟后读数
测量半固体物质pH值的方法如下:

  • 水果pH值测量

  • 将装好不锈钢护套的锥形pH电极穿过果皮,刺入果肉中,刺入深度控制视电极的液洛部(玻璃头部)浸于果肉中10mm左右,测试完毕后,拔出电极,拧下不锈钢护套,将电极玻璃头部用纯净水(推荐蒸馏水)反复冲洗,最后用滤纸吸干残留水迹,套上保护套,以备下次再用。

  • 肉类pH值测量

  • 将装好不锈钢护套的锥形pH电极刺入新鲜的肉里,应刺入到一定的深度,以保证电极的液洛部也接触到肉,如果pH计显示的pH值不稳定,可将电极从鲜肉中退出,卸掉不锈钢保护套,直接将锥形pH电极从原插孔里插入,这样电极与鲜肉接触就比较密实,显示的pH值就比较真实可靠。测试完毕后,拔出电极,可用稀皂液或洗涤剂进行油脂处理,最后用纯净水(推荐蒸馏水)反复冲洗,用滤纸吸干残留水迹,套上保护套,以备下次再用。

  • 土壤pH值测量
    ⚠被测量的土壤,必须为湿润土壤!且不得含有硬的或者尖锐的物质!

  • 由于电极无法直接测量干燥的土壤,在测量前需要用适量的水(蒸馏水)湿润被测土壤,将装好不锈钢护套的锥形pH电极刺入土壤,应刺入到一定的深度,以让土壤及其浸出液包裹住电极的液洛部。测试完毕后,拔出电极,用纯净水(推荐蒸馏水)反复冲洗掉粘粘在玻璃头部的土壤,最后用滤纸吸干残留水迹,套上保护套,以备下次再用。

样例代码

下载样例代码后,打开Arduino IDE的串口监视器,即可看到结果。

/***************************************************
 DFRobot Gravity: Analog Spear Tip pH Sensor / Meter Kit (For Soil And Food Applications)
 <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_Spear_Tip_pH_Sensor_/_Meter_Kit_(For_Soil_And_Food_Applications)_SKU:_SEN0249>

 ***************************************************
 This product is used to measure the pH value of the semisolid,such as meat,fruit,moist soil and so on.
 This sample code reads the pH value.

 Created 2017-9-10
 By Jason <jason.ling@dfrobot.com@dfrobot.com>

 GNU Lesser General Public License.
 See <https://www.gnu.org/licenses/> for details.
 All above must be included in any redistribution
 ****************************************************/

 /***********Notice and Trouble shooting***************
 1. This code is tested on Arduino Uno and Leonardo with Arduino IDE 1.0.5 r2 and 1.8.2.
 2. More details, please click this link: <https://www.dfrobot.com/wiki/index.php/Gravity:_Analog_Spear_Tip_pH_Sensor_/_Meter_Kit_(For_Soil_And_Food_Applications)_SKU:_SEN0249>
 ****************************************************/

#define PHSensorPin  A2    //dissolved oxygen sensor analog output pin to arduino mainboard
#define VREF 5.0    //for arduino uno, the ADC reference is the AVCC, that is 5.0V(TYP)
#define OFFSET 0.00  //zero drift compensation

#define SCOUNT  30           // sum of sample point
int analogBuffer[SCOUNT];    //store the analog value in the array, readed from ADC
int analogBufferTemp[SCOUNT];
int analogBufferIndex = 0,copyIndex = 0;

float averageVoltage,phValue;

void setup()
{
    Serial.begin(115200);
    pinMode(PHSensorPin,INPUT);
}

void loop()
{
   static unsigned long analogSampleTimepoint = millis();
   if(millis()-analogSampleTimepoint > 30U)     //every 30 milliseconds,read the analog value from the ADC
   {
     analogSampleTimepoint = millis();
     analogBuffer[analogBufferIndex] = analogRead(PHSensorPin);    //read the analog value and store into the buffer
     analogBufferIndex++;
     if(analogBufferIndex == SCOUNT)
         analogBufferIndex = 0;
   }
   static unsigned long printTimepoint = millis();
   if(millis()-printTimepoint > 1000U)
   {
      printTimepoint = millis();
      for(copyIndex=0;copyIndex<SCOUNT;copyIndex++)
      {
        analogBufferTemp[copyIndex]= analogBuffer[copyIndex];
      }
      averageVoltage = getMedianNum(analogBufferTemp,SCOUNT) * (float)VREF / 1024.0; // read the value more stable by the median filtering algorithm
      phValue = 3.5 * averageVoltage + OFFSET;
      Serial.print("Voltage:");
      Serial.print(averageVoltage,2);
      Serial.print("   pH value:");
      Serial.println(phValue,2);
   }
}

int getMedianNum(int bArray[], int iFilterLen)
{
      int bTab[iFilterLen];
      for (byte i = 0; i<iFilterLen; i++)
      {
      bTab[i] = bArray[i];
      }
      int i, j, bTemp;
      for (j = 0; j < iFilterLen - 1; j++)
      {
      for (i = 0; i < iFilterLen - j - 1; i++)
          {
        if (bTab[i] > bTab[i + 1])
            {
        bTemp = bTab[i];
            bTab[i] = bTab[i + 1];
        bTab[i + 1] = bTemp;
         }
      }
      }
      if ((iFilterLen & 1) > 0)
    bTemp = bTab[(iFilterLen - 1) / 2];
      else
    bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
      return bTemp;
}

常见问题

Q1. 如何正确保存pH电极?

  • A. 请在电极的保护液瓶中添加约10mm高度的3.0mol/L氯化钾溶液,然后安装在电极测量前端。将电极放回盒体内,室温保存。

Q2. 电极多久需要进行校准?

  • A. 电极每次使用前均需要使用标准缓冲溶液进行校准。另外,电极使用2小时后,也应再次进行校准。

更多

DFshopping_car1.png DFRobot商城购买链接