概述
浊度传感器采用光学原理,通过测量透明管道等容器中液体的透光率和散射率来综合判断溶液浊度情况,给出一个定性的分析,从而达到检测水质的目的。这款浊度传感器,采用非接触式方式检测透明管道中的液体的浑浊度,传感器采用两个红外探头,通过对射安装的方式安装于40~50mm的透明管道上,当透明管道中液体超过两个传感器探头安装高度时,即可通过光线的透过量对水质的浑浊度进行定性分析。它的优势在于为非接触式安装,不用接触检测液体,避免传感器因防水不足进水或被液体腐蚀的情况。
技术参数
-
工作电压 :5V
-
工作电流::<10mA(Max)
-
响应时间:<1s (VDD=5V Ta=25℃)
-
工作温度:5~60℃
-
储存温度:0~65℃
-
工作寿命:50000h (VDD=5V Ta=25℃)
-
通信方式:TTL
1.波特率:9600
2.数据位:8bit
3.校验位:无
4.停止位:1bit
通信协议
主机协议格式: | 帧头 | 数据长度 | 写指令 | 读指令 | 帧尾 |
---|---|---|---|---|---|
从机协议格式 | 帧头 | 数据长度 | 写指令应答 | 数据 | 帧尾 |
主机读脏污数据 | 0X18 | 0X05 | 0X00 | 0X01 | 0X0D |
从机发送数据 | 0X18 | 0X05 | 0X00/0XAA | 0X00-0XFF | 0X0D |
从机读取AD数据 | 0X18 | 0X05 | 0X00 | 0X02 | 0X0D |
从机发送AD值 | 0X18 | 0X05 | 0X00/0XAA | 0X00-0X0F/0X00-0XFF | 0X0D |
主机标定 | 0X18 | 0X05 | 0X55 | 0X00 | 0X0D |
标定发送成功 | 0X18 | 0X05 | 0XAA | 0X00 | 0X0D |
主机清楚标定 | 0X18 | 0X05 | 0X5A | 0X00 | 0X0D |
清除标定成功 | 0X18 | 0X05 | 0X00 | 0X00 | 0X0D |
连接示意图
传感器采用TTL通信方式与MCU进行通信,检测到不同浊度数据后通过串口传输数据
传感器线序定义
黑色=GND 蓝色=TX 红色=VCC 白色=RX
此处我们使用Gravity: 4Pin传感器转接板,Gravity-4P连接线(一头PH2.0插头 一头2.54杜邦母头)将传感器与uno板连接。接线对应关系如下表。
传感器 | 转接板(接传感器) | uno | 转接板接(接uno) |
---|---|---|---|
GND | GND | GND | GND |
VCC | VOUT | VCC | VIN |
RX | IO1 | 6(TX) | I01 |
TX | IO2 | 7(RX) | I02 |
安装方式
两探头固定于透明管道左右两侧,保持对中。
尺寸图
硬件准备
1 x uno控制板
1 x 浊度传感器
1 x Micro USB数据线
1 x Gravity-4P连接线(一头PH2.0插头 一头2.54杜邦母头)
软件
Arduino IDE 点击下载Arduino IDE
连线图
示例代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(6, 7); // RX, TX
unsigned char str[5] = { }; //串口接收数据
unsigned char col;
unsigned int distance = 0;
unsigned char a[5] = {
0x18,0x05, 0x00, 0x01 ,0x0D
};
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop() {
mySerial.write(a, 5);
while (!mySerial.available());
while (mySerial.available() > 0) //检测是否有串口数据
{
for (int i = 0; i < 5; i++)
{
str[i]=mySerial.read();
delay(5);
}
Serial.println(str[3],DEC);
mySerial.flush();
}
delay(500);
}
常见问题
Q1:输出百分比随浊度的变化曲线?