Arduino pH 计
组件和用品
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
|
应用和在线服务
![]() |
|
关于这个项目
在这个项目中,我们将使用来自 Atlas Scientific 和 Arduino Uno 的 Gravity 模拟 pH 电路和探头制作台式 pH 计。读数将显示在液晶显示器 (LCD) 上。
注意:
- 该仪表是在 Windows 计算机上开发的。未在 Mac 上进行测试。
- 外壳不防水。
第 1 步:准备住房
安全 :请记住在处理工具/机械时要小心,并佩戴适当的安全装备,例如护目镜、手套和呼吸器。
使用的外壳是 ABS 塑料外壳。 pH计需修改。
为 LCD 切割开口
a) LCD 放置在外壳的顶部(盖子)。在封面上居中放置一个 98x40mm 的矩形。
b) 将工件放入台钳中,并在标记的矩形上钻一个 3.2 毫米(1/8 英寸)的导向孔。
c) 使用这个导向孔作为 3.2 毫米(1/8 英寸)干墙切割钻头的起点。由于这是一项小工作,我们将在手钻上使用钻头而不是干墙切割机。在内部工作矩形而不是线条,因为在钻头上使用此钻头以直线方式切割可能有点困难。
d) 接下来,使用手锉去除多余的材料并将矩形塑造成所需的大小。

为 BNC 连接器和 Arduino 端口切割开口
BNC 连接器和 Arduino 端口的开口位于外壳底部的侧面。
a) 使用下面提供的尺寸,标记圆的中心点和两个矩形的轮廓。
b) 将工件放入虎钳并切开开口。圆形开口是使用钻头制成的。矩形是按照与用于制作 LCD 开口的类似工艺制成的。

装配底板以安装组件
底板用于安装 Arduino、pH 传感器和迷你面包板。采用3.2mm厚亚克力板。
a) 使用带锯将亚克力板切割成 135x62.5mm。
b) 标记四个孔的位置,如下所示。钻出直径为 2.38 毫米(3/32 英寸)的孔。在板的一侧钻孔,深度为 3 毫米,直径为 4.4 毫米(11/64 英寸)。这对于在插入螺钉以固定支架时保持平坦的下表面是必要的。
c) 使用提供的螺钉连接 11 毫米支架。 pH 传感器带有 4 个支架和螺丝。将其中两个用于 Arduino。

第 2 步:在外壳中安装电子设备
a) 将底板插入外壳底部。用螺丝或热胶固定。

b) 将 pH 传感器安装在底板上。用螺丝固定到支架上。

c) 将 Arduino Uno 安装到底板上。用螺丝固定到支架上。

d) 将迷你面包板添加到底板上。

e) 将插头引脚焊接到 LCD(提供引脚)。将 LCD 插入外壳的顶部,并使用一些热胶将屏幕固定到位。

第 3 步:将电子设备连接在一起

接线组件如上图所示。
将迷你面包板用于 1kΩ 和 220Ω 以及分配 Arduino 的 5V 和接地引脚。
这两个电阻用于设置屏幕对比度。

数据表
重力pH传感器、pH探头
第 4 步:完成组装
接线完成后:
a) 使用提供的螺丝将外壳的顶部和底部放在一起。
b) 将探头连接到 BNC 连接器。

第 5 步:将代码上传到 Arduino Uno
此项目的代码使用自定义库和头文件。您必须将它们添加到您的 Arduino IDE 才能使用代码。以下步骤包括将此添加到 IDE 的过程。
a) 将 Arduino 连接到您的计算机并打开 IDE。如果您没有 IDE,可以从此 LINK 下载 IDE。转到 Tools -> Board -> 选择 Arduino/Genuino Uno .转到工具 -> 端口 -> 选择端口 Arduino 连接到的位置。
b) 添加液晶显示器库:在 IDE 中转到 Sketch -> Include library -> Manage libraries .在库管理器的搜索栏中输入“液晶”。查找名为“LiquidCrystal Built-in by Arduino, Adafruit”的包。它可能已安装,也可能未安装。如果没有,请选择软件包并点击安装 .
c) 添加 Atlas Gravity 传感器库:从以下链接下载 zip 文件。该文件将保存为“Atlas_gravity.zip”。在 IDE 中转到 Sketch -> Include library -> Add.ZIP Library .找到“Atlas_gravity.zip”文件并选择添加。
d) 接下来,我们必须添加 pH 计的代码。将此链接中的代码复制到 IDE 工作面板上。
e) 编译并上传代码到Arduino。
f) pH 读数随后将显示在 LCD 上。您还可以在串行监视器上查看读数。要打开串行监视器,请转到工具 -> 串行监视器 或按 Ctrl+Shift+M 在你的键盘上。将波特率设置为 9600 并选择“回车”。
第 6 步:校准 pH 传感器
注意:如果您计划为 Arduino 使用外部电源,请在进行校准之前将其连接到 Arduino。这将确保正确设置参考水平,这将有助于正确校准。
该 pH 计可以校准为一、二或三点校准。需要标准缓冲溶液(pH 4、7 和 10)
串行监视器用于校准过程。用户将能够观察到读数在趋于稳定时的逐渐变化并发送适当的命令。
校准数据存储在Arduino的EEPROM中。
校准命令
低点:cal,4
中点:cal,7
高点:cal,10
清除校准:校准,清除
步骤
a) 取出浸泡瓶并冲洗 pH 探针。
b) 将一些 pH 值为 4 的溶液倒入杯中。确保有足够的空间覆盖探头的感应区域。
c) 将探头放入杯中并四处搅拌以去除残留的空气。观察串行监视器上的读数。将探针置于溶液中直至读数稳定(从一个读数到下一个读数的小幅移动是正常的)
d) 读数稳定后,输入命令 cal, 4 进入串行监视器。校准至 pH 4 现已完成。
对 pH7 和 pH10 重复步骤 a-d。在处理不同的缓冲溶液时,请记住冲洗探针。
温度补偿怎么样?
该项目中使用的传感器精度为 +/- 0.2%。 pH 计将在 7 - 46°C 的温度范围内以该精度运行。在此范围之外,必须对仪表进行修改以进行温度补偿。注意:pH 探头可承受 1 - 60 °C 的温度范围。
代码
- arduino pH 计代码
arduino pH计代码C/C++
/*一旦上传,打开串口监视器,将波特率设置为9600并附加“回车”代码允许用户观察实时pH读数以及校准传感器。一、二或三点校准可以完成。校准命令:低点:“cal,4”中点:“cal,7”高点:“cal,10”清除校准:“cal,clear”*/#include“ph_grav. h" //Atlas Scientific 重力pH传感器的头文件#include "LiquidCrystal.h" //液晶显示器(lcd)的头文件String inputstring =""; //一个用于保存来自 PCboolean input_string_complete =false 的传入数据的字符串; //一个标志,表明我们是否收到了来自 PCchar inputstring_array[10] 的所有数据; //字符串解析所需的字符数组Gravity_pH pH =A0; //将Arduino的模拟引脚A0分配给Gravity_pH类。将 pH 传感器的输出连接到引脚 A0LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); //制作一个变量 pH_lcd 并将 arduino 数字引脚分配给 lcd 引脚 (2 -> RS, 3 -> E, 4 to 7 -> D4 to D7)void setup() { Serial.begin(9600); //使能串口pH_lcd.begin(20, 4); //启动lcd界面并定义lcd大小(20列4行) pH_lcd.setCursor(0,0); //将光标置于屏幕第 1 列第 1 行 pH_lcd.print("--------------------"); //显示字符 pH_lcd.setCursor(0,3); //将光标置于屏幕第 1 列第 4 行 pH_lcd.print("--------------------"); //显示字符 pH_lcd.setCursor(5, 1); //将光标置于屏幕第 6 列第 2 行 pH_lcd.print("pH Reading"); //显示“pH读数” if (pH.begin()) { Serial.println("Loaded EEPROM");} Serial.println(F("Use commands \"CAL,4\", \"CAL,7\ ", 和 \"CAL,10\" 将电路校准到相应的值")); Serial.println(F("使用命令\"CAL,CLEAR\"清除校准")); }void serialEvent() { //如果硬件串口_0接收到一个字符 inputstring =Serial.readStringUntil(13); //读取字符串直到我们看到input_string_complete =true; //设置用于判断我们是否收到来自PC的完整字符串的标志}void loop() { if (input_string_complete ==true) { //检查是否收到数据 inputstring.toCharArray(inputstring_array, 30); //将字符串转换为字符数组 parse_cmd(inputstring_array); //发送数据到pars_cmd函数input_string_complete =false; //重置用于判断我们是否收到来自PC的完整字符串的标志 inputstring =""; //清除字符串 } Serial.println(pH.read_ph()); //输出pH读数到串行监视器 pH_lcd.setCursor(8, 2); //将光标置于屏幕第 9 列第 3 行 pH_lcd.print(pH.read_ph()); //输出pH到lcd delay(1000);}void parse_cmd(char* string) { //用于调用校准函数strupr(string); //将输入字符串转换为大写 if (strcmp(string, "CAL,4") ==0) { //将用户输入字符串与 CAL,4 进行比较,如果匹配,则继续 pH.cal_low(); //调用低点校准函数 Serial.println("LOW CALIBRATED"); } else if (strcmp(string, "CAL,7") ==0) { //将用户输入字符串与CAL,7进行比较,如果匹配,则继续pH.cal_mid(); //调用函数进行中点校准 Serial.println("MID CALIBRATED"); } else if (strcmp(string, "CAL,10") ==0) { //将用户输入字符串与CAL,10进行比较,如果匹配,则继续pH.cal_high(); //调用函数进行高点校准 Serial.println("HIGH CALIBRATED"); } else if (strcmp(string, "CAL,CLEAR") ==0) { //比较用户输入字符串与CAL,CLEAR,如果匹配,继续pH.cal_clear(); //调用函数清除校准Serial.println("CALIBRATION CLEARED"); }}
示意图

制造工艺