【HB-023】水位传感器

一、主要功能

本模块是一款简单易用的电阻式液位测量传感器,通过电路板上裸露的平行铜线来测量液位的深度,电路板将液位深度转换成电压值通过OUT引脚输出,可轻松通过单片机的ADC测量引脚测量出相对应的模拟量,获取液位深度值。

实物图:

图片[1]-【HB-023】水位传感器-黑白模组

正面图片[2]-【HB-023】水位传感器-黑白模组

背面

二、原理分析

本模块具有一系列的裸露铜线,这些铜线相互之间没有被连接,当液位淹没这些裸露铜线时,会将被淹没的铜线进行桥接,电路板上有一系列不同阻值的电阻,当淹没的程度不同时,根据桥接铜线的数量不同,会在OUT引脚输出不同的电压,因此我们可以根据OUT引脚输出的电压来判断液位深度,简单来说,可以把这款模块看作一个简单的滑动电阻,根据液位深度会产生不同的阻值。

引脚定义:

引脚 标识 功能
1 VCC 电源输入电压(5V)
2 GND 电源输出地
3 OUT 模拟量输出

三、尺寸图以及实物赏析

图片[3]-【HB-023】水位传感器-黑白模组

图片[4]-【HB-023】水位传感器-黑白模组

图片[5]-【HB-023】水位传感器-黑白模组

图片[6]-【HB-023】水位传感器-黑白模组

四、程序分析

液位传感器的输出引脚输出的是模拟量也就是电压值,因此我们只需要通过STM32CubeMX软件配置ADC引脚采集AD值即可,下面是STM32F103C8T6的AD采集部分的代码(STM32 HAL库):

HAL_ADC_Start(&hadc1);
if(HAL_ADC_PollForConversion(&hadc1, 999) == HAL_OK)
	adc_value= HAL_ADC_GetValue(&hadc1);
HAL_ADC_Stop(&hadc1);

得到AD的值之后我们可以进一步通过计算得到相应的液位值,因为不同的液体导电性能不同,所以要视情况对液位传感器进行矫正(即使同样是自来水,不同地区的自来水也会有差异),下面是简单的示例,其中adc_value 的值需要根据实际测量液位淹没相应标注的程度进行填写:

if(adc_value <= 100)
	level = 0;
else if(adc_value > 100 && adc_value <= 400)
	level = 10;
else if(adc_value > 400 && adc_value <= 800)
	level = 20;
else if(adc_value > 800 && adc_value <= 1200)
	level = 30;
else if(adc_value > 1200 && adc_value <= 1600)
	level = 40;
else if(adc_value > 1600 && adc_value <= 2000)
	level = 50;
else if(adc_value > 2000 && adc_value <= 2400)
	level = 60;
else if(adc_value > 2400 && adc_value <= 2800)
	level = 70;
else if(adc_value > 2800 && adc_value <= 3200)
	level = 80;
else if(adc_value > 3200 && adc_value <= 3600)
	level = 90;
else if(adc_value > 3600)
	level = 100;

如果不追求精度可以不使用上面的方式而下面的公式进行粗略的计算得到百分比的值:

level = adc_value/4095.0*100;

 

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容