这是一款简单易用,性价比高的水位/液滴传感器,它通过暴露的5条平行导线来测量其水滴/水量的多少从而判断水位,它自带水量到模拟量的转换,输出的是模拟量信号,可以直接被单片机采集读取,从而达到水位读取效果。理论上,此传感器将输出0-1024之间的模拟信号,但随着PCB上的走线长度的增加,可以发现范围在480至〜710之间。传感器的输出电压为0-4.2 V
产品信息 | 详细参数 |
工作电压 | 3~5V |
工作电流 | <20mA ,低功耗特性,节能且不易发热 |
测量深度 | 4cm |
工作湿度 | 10% - 90% 无凝结 ,适应一定湿度环境 |
输出信号 | AD模拟量信号 |
工作温度 | 10℃ - 30℃ ,在此温度区间内稳定工作 |
检测面积 | 40mm x 16mm |
产品尺寸 | 62mm x 20mm x 8mm |
产品重量 | 约3.5g |
输出特性 | 水位未浸入时输出值为 0 ,随着浸入深度增加,模拟引脚输出值增大,完全浸入时输出值最大约 670 |
模拟量输出值对应参考值(近似值)
树莓派pico | 水位传感器 |
3.3 | +正极 |
GND | -负极 |
GP26 | S模拟量信号输出 |
接线图
from machine import ADC, Pin import time # 配置ADC引脚 adc = ADC(26) # GP26连接到传感器 # 校准参数(根据实际传感器特性调整) VOLTAGE_MIN = 0.0 # 对应0%水位的电压 VOLTAGE_MAX = 1.75 # 对应100%水位的电压 WATER_DEPTH_MIN = 0 # 最小水位深度(cm) WATER_DEPTH_MAX = 5 # 最大水位深度(cm) <-- 修改为4cm ADC_REF = 3.3 # ADC参考电压 ADC_RESOLUTION = 65535 # 16位ADC # 可选:配置LED指示灯 led_low = Pin(16, Pin.OUT) # 低水位LED led_high = Pin(17, Pin.OUT) # 高水位LED def map_value(value, in_min, in_max, out_min, out_max): """将一个范围的值映射到另一个范围""" return (value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min def read_water_level(): """读取并计算水位深度""" # 读取ADC值并转换为电压 adc_value = adc.read_u16() voltage = adc_value * (ADC_REF / ADC_RESOLUTION) # 限制电压在有效范围内 voltage = max(min(voltage, VOLTAGE_MAX), VOLTAGE_MIN) # 将电压映射到水位深度 depth = map_value(voltage, VOLTAGE_MIN, VOLTAGE_MAX, WATER_DEPTH_MIN, WATER_DEPTH_MAX) return depth, voltage, adc_value def main(): try: print("水位监测系统已启动...") while True: # 读取水位数据 depth, voltage, adc_value = read_water_level() # 控制LED指示灯 if depth < WATER_DEPTH_MAX * 0.2: # 水位低于20% led_low.on() led_high.off() elif depth > WATER_DEPTH_MAX * 0.8: # 水位高于80% led_low.off() led_high.on() else: led_low.off() led_high.off() # 打印结果 print(f"ADC值: {adc_value}, 电压: {voltage:.3f}V, 水位: {depth:.1f}cm") # 延时 time.sleep(1) except KeyboardInterrupt: print("程序已停止") # 关闭所有LED led_low.off() led_high.off() if __name__ == "__main__": main()
运行结果: