|
在化学中,pH是用于指定水基溶液的酸性或碱性的标度。酸性溶液的pH值较低,而碱性溶液的pH值较高。因此,Ph传感器具有确定任何溶液的Ph的能力,即可以判断该物质本质上是酸性、碱性还是中性。通过了解pH,我们可以监控农业农场和养鱼场的水质。同样,pH传感器具有广泛的应用,例如废水处理、制药、化学和石化。
在本篇文章中,我们将学习如何将pH传感器与Arduino开发板连接,设计一个简单的pH计,并在OLED显示屏上显示pH值。我们还将了解pH传感器的制作和工作原理。最后,我们将学习校准方法,该方法将确定传感器的正确性和准确性。
所需的组件 以下是制作本文所需的组件。 ● Arduino UNO开发板 ● pH传感器套件 ● OLED显示屏
什么是pH? 术语pH是水溶液或其他液体溶液的酸度或碱度的定量度量。该术语广泛用于化学、生物学和农学领域,将通常在每升约1到10-14克当量之间的氢离子浓度值转换为0到14之间的数字。
在中性(既不是酸性也不是碱性)的纯净水中,氢离子的浓度为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值不敏感,参比电极由连接到显示器的金属导体组成。将该导体浸入电解质溶液(通常为氯化钾)中,该电解质溶液通过多孔陶瓷膜与测试溶液接触。显示屏包含一个电压表,显示pH单位的电压。
模拟pH传感器套件
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开发板连接。连接非常简单,下面给出电路原理图。
pH传感器有3个需要连接到Arduino的引脚。因此,如上图所示,将VCC引脚连接至Arduino的5V,GND连接至GND,并将其模拟引脚连接到Arduino的A0。
源代码 下面给出了DFRobot pH传感器与Arduino连接的源代码。只需复制代码并将其上传到Arduino开发板即可。 - #define SensorPin A0 // the pH meter Analog output is connected with the Arduino’s Analog
- unsigned long int avgValue; //Store the average value of the sensor feedback
- float b;
- int buf[10],temp;
-
- void setup()
- {
- pinMode(13,OUTPUT);
- Serial.begin(9600);
- Serial.println("Ready"); //Test the serial monitor
- }
- void loop()
- {
- for(int i=0;i<10;i++) //Get 10 sample value from the sensor for smooth the value
- {
- buf[i]=analogRead(SensorPin);
- delay(10);
- }
- for(int i=0;i<9;i++) //sort the analog from small to large
- {
- for(int j=i+1;j<10;j++)
- {
- if(buf[i]>buf[j])
- {
- temp=buf[i];
- buf[i]=buf[j];
- buf[j]=temp;
- }
- }
- }
- avgValue=0;
- for(int i=2;i<8;i++) //take the average value of 6 center sample
- avgValue+=buf[i];
- float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
- phValue=3.5*phValue; //convert the millivolt into pH value
- Serial.print(" pH:");
- Serial.print(phValue,2);
- Serial.println(" ");
- digitalWrite(13, HIGH);
- delay(800);
- digitalWrite(13, LOW);
-
- }
复制代码
测试不同溶液的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传感器,测试结果如下:
将pH传感器与Arduino和OLED显示屏连接 现在,让我们在OLED显示器上而不是串口监视器上显示pH值。为此,我们需要向Arduino Uno添加0.96英寸I2C OLED显示屏。连接图如下所示。
连接非常简单。将pH传感器的模拟引脚连接到Arduino的A0引脚并为其提供5V电压。另外,将OLED Display的SDA和SCL引脚分别连接到Arduino A4和A5引脚。
测试结果 上载代码后,OLED显示屏将开始显示pH值。将pH电极浸入不同的溶液中将得到不同的值,如下图所示。
pH传感器校准 如果您使用过pH测量,您将知道PH值范围是0-14。如果pH 0呈酸性,pH 7将呈中性,pH 14呈碱性。使用pH传感器时最大的问题是校准。由于Ph传感器是模拟传感器,输出取决于电压,因此需要校准。我们需要一个pH强度已知的溶液。市场上有各种PH值固定的缓冲溶液。
校准pH传感器的最简单方法是将pH电极浸入已知强度的溶液中并观察读数。例如,将电极浸入pH值为7的溶液中时,读数应显示为7。如果读数不正确,则需要旋转信号转换板上的电位器。一旦读数匹配,您就可以停止旋转,此时传感器已校准。
|