_SKU_KIT0139_投入式液位变送器 - jimaobian/DFRobotWikiCn GitHub Wiki
投入式液位变送器采用高性能的感压芯片,配合先进的电路处理和温度补偿技术,在不同深度下传感器受到的压力不同,不同压力转化为对应数值的电流信号输出,从而达到对液位深度的测量。 本产品采用不锈钢外壳隔离防腐,可直接投入被测液体中,从水、油到粘度较大的糊状物都可以进行高精度的测量。无论是在河水、水库液位测量,还是在供水液位监测、城市地下水位监测、水处理池上都有良好的使用效果。 本产品搭配了Gravity: 电流转电压模块(4~20mA),该模块将传感器的电流信号转换为电压信号供Arduino或其他控制器读取,此产品应用于水厂、炼油厂、污水处理厂、建材、轻工、机械等工业领域,实现对液体的测量。
- 线长: 5m
- 量程: 0-5m
- 综合精度: 0.5%
- 输出信号: 4-20mA
- 工作电压: 12-36V
- 工作温度: -20-70℃
- 过载能力: 300%
- 寿命: 1*10^8压力循环(25℃)
- 膜片壳体材质: 316L不锈钢
- 防护等级: IP68
|
标号 | 名称 | 功能描述 |
1(红) | VCC | 液位变送器正极 |
2(红,粗管) | AIR PIPE | 导气管 |
3(黑) | GND | 液位变送器负极 |
投入式液位变送器引脚对应表
|- |
|
标号 | 名称 | 功能描述 |
1 | GND | 电源负极(0V) |
2 | VCC | 电源正极(3.3~5.5V) |
3 | A | 电压信号输出 |
4 | I+ | 测量电流输入端 |
5 | I- | 测量电流输出端 |
电流转电压模块引脚对应表
|}
该教程介绍投入式液位传感器搭配电流转电压模块,将传感器输出的电流信号转化为电压信号,Arduino UNO主控板通过读取该电压信号并转换,从而实现对水深的测量,其它5V/3.3V电平的主控板使用方法类似。
当液位变送器投入到被测液体某一深度,传感器末端所受到的压力为 同时,通过导气管将液面上的大气压力P0引入到传感器的背压腔,以抵消传感器末端的大气压力P0,使传感器测得压力为P'=P-P0=ρgh。因此,若已知液体密度ρ和重力加速度g,通过测量压力P',可推算出液位深度h。
液位传感器测得压力信号经电路转换放大与补偿后以标准的4-20mA信号输出。液位变送器电流、电流转电压模块输出电压与所测量的呈线性关系,如下图:
| 注意:
图中所示量程、电压与电流为对于纯水而言,若为其它液体,需要考虑该液体的密度,具体换算关系见样例代码。 |
-
硬件
- Arduino UNO控制板(或类似的控制板) x1
- Gravity: 电流转电压模块(4~20mA) x1
- 投入式液位变送器(输出4~20mA电流信号) x1
- PH2.0-3P传感器连接线(或杜邦线) x1
-
软件
- Arduino IDE (1.0.x或1.8.x) 点击下载Arduino IDE
|
/***********************************************************
DFRobot Gravity: Analog Current to Voltage Converter(For 4~20mA Application)
SKU:SEN0262
GNU Lesser General Public License.
See <http://www.gnu.org/licenses/> for details.
All above must be included in any redistribution
****************************************************/
#define ANALOG_PIN A1
#define RANGE 5000 // Depth measuring range 5000mm (for water)
#define CURRENT_INIT 4.00 // Current @ 0mm (uint: mA)
#define DENSITY_WATER 1 // Pure water density normalized to 1
#define DENSITY_GASOLINE 0.74 // Gasoline density
#define PRINT_INTERVAL 1000
int16_t dataVoltage;
float dataCurrent, depth; //unit:mA
unsigned long timepoint_measure;
void setup()
{
Serial.begin(9600);
pinMode(ANALOG_PIN, INPUT);
timepoint_measure = millis();
}
void loop()
{
if (millis() - timepoint_measure > PRINT_INTERVAL) {
timepoint_measure = millis();
dataVoltage = analogRead(ANALOG_PIN);
dataCurrent = dataVoltage / 120.0; //Sense Resistor:120ohm
depth = (dataCurrent - CURRENT_INIT) * (RANGE/ DENSITY_WATER / 16.0); //Calculate depth from current readings
if (depth < 0) depth = 0.0;
//Serial print results
Serial.print("depth:");
Serial.print(depth);
Serial.println("mm");
}
}
|}
在Arduino IDE串口监视器能实时显示此时变送器所处水深深度,显示单位为毫米。
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖! |