PH测量传感器电极信号转换模块设计原理介绍
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
PH测量传感器电极信号转换模块设计原理介绍相关推荐
- SAP CRM Service Order(服务订单)的状态字段设计原理介绍
WebUI上的One order header和status是1:N的关系:在WebUI上的search结果里,会把一个order当前所有的status全部连接成一个string,并显示出来. 从Co ...
- 电极电阻测量,防雷接地电极设计原理和测试方案
了解与接地电极系统设计相关的电极电阻测量是理解设计.接地电阻和土壤电阻率测量和计算的基本原理的关键.以下是地凯科技接地电极设计原理和测试系列的介绍 防雷接地的解决方案 1.土壤电阻率与测量 2.计算单 ...
- LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法
LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法 LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装 ...
- 基于FPGA的除法器原理介绍及设计实现
基于FPGA的除法器原理介绍及设计实现 引言应用 在FPGA的设计应用领域里,许多电路需要用到除法器,而在硬件描述语言里却没有直接的除法器"%","/"可以直接 ...
- 远心镜头设计原理详细介绍
远心镜头设计目的就是消除由于被测物体(或CCD芯片)离镜头距离的远近不一致,造成放大倍率不一样.根据远心镜头分类其设计原理如下: 1.物方远心光路设计原理及作用: 物方主光线平行于光轴 ...
- 晶体工作原理介绍【转】
晶体工作原理介绍[转] 晶振是石英晶体谐振器(quartz crystal oscillator)的简称,也称有源晶振,它能够产生中央处理器(CPU)执行指令所必须的时钟频率信号,CPU一切指令的执行 ...
- 手机快充芯片及其技术标准和设计原理详解
手机快充芯片及其技术标准和设计原理详解 智能手机对于宽带无线通信.图像处理等多方面的需求导致实际耗电呈指数增长.未来5G通信带宽将比4G增加10倍,4K/8K等高清视频技术逐渐应用,CPU.GPU等运 ...
- 以STC的单片机为例A/D做按键扫描应用原理介绍
以STC单片机为例A/D做按键扫描应用原理介绍 矩阵按键扫描或者是多个按键扫描,我们通常想到的可能大多是通过多个IO口来搭建按键扫描电路,例如下面的4X4矩阵按键,今天来介绍的是通过引入模拟量信号采集 ...
- 利用GPS北斗卫星信号开发设计NTP网络时间服务器
利用GPS北斗卫星信号开发设计NTP网络时间服务器 利用GPS北斗卫星信号开发设计NTP网络时间服务器 引言 准确的时间是天文观测所必需的.天文望远镜在特定时间内的准确指向.CCD曝光时间的控制以及不 ...
最新文章
- kali linux samba,Kali Linux 渗透测试:SMB、SMTP扫描工具(14)
- 关于oracle spfile配置文件问题
- 64位 windows python3.4及numpy matplot等的安装
- websocket 群/单聊 基础
- BIM技术在各阶段应用的软件你知多少?
- 谁是2020年最强Python库?年度Top10出炉
- Web版记账本开发记录(五)
- 动态规划求解金矿问题
- PE文件格式偏移参考
- 如何有效的屏蔽百度蜘蛛
- 霍华德大学计算机科学,霍华德大学有哪些专业
- 彩蛋-管理员root@‘locahost‘ 密码丢失,处理方案。
- python大数据之缺省值处理
- 生于80年代,穷于10年代,败于90后
- Windows 7 插入耳机后没声音,拔下后扬声器有声音
- 《计算机网络实验教程》——验证性实验
- k8s技术预研8--深入掌握Kubernetes Service
- [经验技巧] 完美解决小米DCIM文件夹下生成.thumbnails缩略图文件夹的方法
- android 海拔高度_Android:如何获取准确的海拔高度?
- 在html中加入外部css样式,如何引入CSS样式表?