这是一款简单易用,性价比高的水位/液滴传感器,它通过暴露的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()
运行结果:

联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...