PH测量传感器电极信号转换模块设计原理介绍

本文详细介绍了基于8位单片机的PH传感器模块,该模块通过运放放大信号并采用10位ADC采样,利用最小二乘法计算PH值的线性函数。模块支持通过串口进行校准和读取PH值,具备0-5V可调量程,并提供UART通信。校准过程包括三个标准溶液点,通过串口协议进行指令交互。此外,还介绍了如何通过外部MCU采集信号并计算PH值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模块简介:

       本模块可将PH传感器电极信号经运放放大输出,模块载有8位单片机处理器,通过此单片机的10位ADC对放大后的传感器信号采样,板载电位器调节输出信号的量程,并通过最小二乘法软件算法计算出信号与PH值得线性函数关系式,进而采用线性函数关系式求出信号对应的PH值。另板载TTL串口接口,用户可通过串口设置校准及获取当前PH值,测量分辨率为0.1,串口功能用户可根据是否需要选择购买相应套餐。

2.技术指标:

产品型号

KM-PH

检测对象

PH传感器测量溶液PH值

通信方式

UART(TTL)可选是否需要

工作电压

5V (DC)

默认信号输出量程

0-5V(电位器可调量程)

支持PH电极接口输入

BNC接口

输出接口

PH电极放大信号、2.5V参考电压

外形尺寸

40*30(mm)

串口通讯参数

波特率9600,停止位1,无校验

串口输出PH分辨率

0.1

模块主控MCU

ST8G(10位AD分辨率)可选是否需要

3.使用说明:

      用户可通过两种方式来获取PH值,第一种为串口读取法,采用本模块的串口接口直接获取输出的PH值,第二种为AD采集计算法,用户采用外部mcu或其他处理器的ADC来采集模块输出的模拟量信号,通过自行编程计算出PH值。注意用户采用串口读取方法时需要在购买时选择带有串口输出功能的模块。

      模块可接入BNC接口的PH复合电极传感器,出厂默认PH电极放大信号输出范围0-5V。另外用户可根据自身需要调节电位器来调节PH电极放大信号的输出范围。

4.原理

       pH传感器电极输出的信号为信号电极和参比电极的相对电压,本设计传感器参比电极为中性溶液,即当被测溶液pH值为7时,其输出电压理论为0,而其余情况则根据溶液酸碱性不同,输出电压正负变化。根据运算放大器的工作原理,有负电压的输入与单电源供电矛盾。但因输出信号是相对于参比电极的电压差值,那么给参比电极(pH电极负输入)赋予一个合适的电压值,则可以保证信号电极(pH电极正输入)电压恒为正值, 单电源供电运放即可满足要求。电极输出电压并不符合单片机A/D转换输入要求,经过运放基本的放大功能可使其达到模数转换所需电压范围,即可送入单片机进行数据处理。

   本设计中RW1电位器用于量程调节,常见的量程分为:

①量程0-3.3V,将电极放入7.0标准溶液中,调节电位器,使得运放1端输出电压为1.65V(根据溶液PH越大运放1端输出电压越小的关系,(14-7)/14*3.3V=1.65V),则电路采集的PH最小值对应的输出电压为3.3V.

②量程0-5V,将电极放入7.0标准溶液中,调节电位器,使得运放1端输出电压为2.5V(根据溶液PH越大运放1端输出电压越小的关系,(14-7)/14*5V=2.5V),则电路采集的PH最小值对应的输出电压为5V.

      由于本模块板载的51单片机AD采集分为是0-5V,故本模块默认设置的量程为0-5V,即PH_Vol的默认输出量程为0-5V。

      校准原理:依次将电极放入三种标准溶液中,记录对应输出电压值,并采用excel绘制PH值与电压的标准曲线,例如:

Y=-5.9647x+22.255即为得到的标准曲线表达式,其中Y为溶液PH,x为对应输出电压。这种曲线拟合方式称为最小二乘法,根据三组数据即可求出关系表达式,本模块板载的51单片机中利用C程序实现最小二乘法求出标准曲线表达式,从而即可计算PH值,用户第一次使用模块前,只需对模块进行串口发送相应的校准指令后,方可通过读取指令,获取模块返回的PH值。

       如用户购买为非串口输出功能模块,则需自行采用以上绘制excel表格或采用软件算法计算得到标准曲线表达式,然后通过外接mcu的AD读取模块输出的模拟量来转换计算PH值。

关于采用软件实现最小二乘法可参考博客:最小二乘法求拟合曲线函数的C语言实际应用_>行者<的博客-CSDN博客_c语言 拟合函数

5.串口协议(仅对支持串口输出功能的模块适用)

     串口通讯为应答式查询方式。

     初次使用模块或更换PH电极传感器后,需对模块进行PH校准,即对与模块连接的PH复合电极进行校准,校准一共分为三个步骤,如下。

第一步:首先将PH电极放入PH值为4.0的溶液中,然后向模块串口发送校准PH值4.0指令,模块会立即返回默认状态为0的响应指令,等待模块mcu检测溶液对应电压稳定后会返回状态为1的校准完毕指令,此时可将PH电极从4.0的溶液中取出,并放入清水中冲洗后,搽拭掉电极探头处的多余水分。

1

0x80

校准PH值4.0指令

向模块

0

1

2

3

4

5

6

7

8

起始位

地址

命令

--

--

--

--

--

校验值

0xFF

0x01

0x80

0

0

0

0

0

0x7F

EXP.

FF 01 80 00 00 00 00 00 7F

模块返回

0

1

2

3

4

5

6

7

8

起始位

命令

-- 

状态 

  --      

--

--

--

校验值

0xFF

0x80

0

0

0

0

0

0

0x80

EXP.

FF 80 00 00 00 00 00 00 80    //指令响应回复

EXP.

FF 80 00 01 00 00 00 00 7F    //校准完毕回复

第二步:将PH电极放入PH值为7.0的溶液中,然后向模块串口发送校准PH值7.0指令,模块会立即返回默认状态为0的响应指令,等待模块mcu检测溶液对应电压稳定后会返回状态为1的校准完毕指令,此时可将PH电极从7.0的溶液中取出,并放入清水中冲洗后,搽拭掉电极探头处的多余水分。

1

0x81

校准PH值7.0指令

向模块

0

1

2

3

4

5

6

7

8

起始位

地址

命令

--

--

--

--

--

校验值

0xFF

0x01

0x81

0

0

0

0

0

0x7E

EXP.

FF 01 81 00 00 00 00 00 7E

模块返回

0

1

2

3

4

5

6

7

8

起始位

命令

-- 

状态 

  --      

--

--

--

校验值

0xFF

0x81

0

0

0

0

0

0

0x7F

EXP.

FF 81 00 00 00 00 00 00 7F    //指令响应回复

EXP.

FF 81 00 01 00 00 00 00 7E    //校准完毕回复

第三步:将PH电极放入PH值为10.0的溶液中,然后向模块串口发送校准PH值10.0指令,模块会立即返回默认状态为0的响应指令,等待模块mcu检测溶液对应电压稳定后会返回状态为1的校准完毕指令,此时可将PH电极从10.0的溶液中取出,并放入清水中冲洗后,搽拭掉电极探头处的多余水分后即可开始正常测量读取PH值,此时板载mcu已经根据三点校准数据采用最小二乘法计算出标准曲线函数式,并将函数关系保存至单片机内部Flash中,掉电不丢失,重新上电使用则不必执行校准步骤。

1

0x82

校准PH值10.0指令

向模块

0

1

2

3

4

5

6

7

8

起始位

地址

命令

--

--

--

--

--

校验值

0xFF

0x01

0x82

0

0

0

0

0

0x7D

EXP.

FF 01 82 00 00 00 00 00 7D

模块返回

0

1

2

3

4

5

6

7

8

起始位

命令

-- 

-- 

  --      

--

--

--

校验值

0xFF

0x82

0

0

0

0

0

0

0x7E

EXP.

FF 82 00 00 00 00 00 00 7E    //指令响应回复

EXP.

FF 82 00 01 00 00 00 00 7D    //校准完毕回复

串口读取PH值指令

1

0x86

模块PH返回值

向模块发送

0

1

2

3

4

5

6

7

8

起始位

地址

命令

--

--

--

--

--

校验值

0xFF

0x01

0x86

0

0

0

0

0

0x79

EXP.

FF 01 86 00 00 00 00 00 79

模块返回

0

1

2

3

4

5

6

7

8

起始位

命令

--

PH值

  --      

--

--

--

校验值

0xFF

0x86

0

1字节

0

0

0

0

--

EXP.

FF 86 00 44 00 00 00 00 36   

PH:0x44对应十进制为68,则PH值为6.8 (注:返回的PH值扩大了10倍,需要缩小10倍后保留一位小数)

校验值算法: 

起始位后 86 00 44 00 00 00 00 到校验值前相加求和取低八位,再取反加一。

uint8_t getCheck(uint8_t *data,uint8_t iLength)

{

uint8_t sum=0; uint8_t iFor=0;

for(iFor=0;iFor<iLength;iFor++)

{

sum+=data[iFor];

}

return (0xff-sum+1);

}

6.模块展示及接线图:

         

7.模块尺寸:

8.模块完整电路原理图:

 模块链接: https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debyZ88SJ&ft=t&id=677880984132

### 部署 Stable Diffusion 的准备工作 为了成功部署 Stable Diffusion,在本地环境中需完成几个关键准备事项。确保安装了 Python 和 Git 工具,因为这些对于获取源码和管理依赖项至关重要。 #### 安装必要的软件包和支持库 建议创建一个新的虚拟环境来隔离项目的依赖关系。这可以通过 Anaconda 或者 venv 实现: ```bash conda create -n sd python=3.9 conda activate sd ``` 或者使用 `venv`: ```bash python -m venv sd-env source sd-env/bin/activate # Unix or macOS sd-env\Scripts\activate # Windows ``` ### 下载预训练模型 Stable Diffusion 要求有预先训练好的模型权重文件以便能够正常工作。可以从官方资源或者其他可信赖的地方获得这些权重文件[^2]。 ### 获取并配置项目代码 接着要做的就是把最新的 Stable Diffusion WebUI 版本拉取下来。在命令行工具里执行如下指令可以实现这一点;这里假设目标路径为桌面下的特定位置[^3]: ```bash git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git ~/Desktop/stable-diffusion-webui cd ~/Desktop/stable-diffusion-webui ``` ### 设置 GPU 支持 (如果适用) 当打算利用 NVIDIA 显卡加速推理速度时,则需要确认 PyTorch 及 CUDA 是否已经正确设置好。下面这段简单的测试脚本可以帮助验证这一情况[^4]: ```python import torch print(f"Torch version: {torch.__version__}") if torch.cuda.is_available(): print("CUDA is available!") else: print("No CUDA detected.") ``` 一旦上述步骤都顺利完成之后,就可以按照具体文档中的指导进一步操作,比如调整参数、启动服务端口等等。整个过程中遇到任何疑问都可以查阅相关资料或社区支持寻求帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

>行者<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值