37个传感器和执行器的提法在互联网上广泛传播。事实上,Arduino可兼容的传感器模块必须超过37种。鉴于我积累了一些传感器和执行器模块,根据实践(必须做)的概念,为了学习和交流,这里准备逐一尝试一系列实验,无论成功(程序),都会记录——小进步或问题,希望吸引玉。
【Arduino】168传感器模块系列实验(数据代码 模拟编程 图形编程)
实验88: 霍尔水流传感器1号咖啡机直饮机流量监控模块
水流传感器 是指通过水流感应输出脉冲信号或电流、电压等信号的水流感应仪器。该信号的输出与水流成一定的线性比,具有相应的转换公式和比较曲线。因此,可以进行水控管理和流量计算。在热方面,可以用传感器测量一段时间的介质能量损失,如热能表。水流传感器主要与控制芯片、单片机甚至PLC配合使用。水流传感器具有流量控制准确、循环设置动作流量、水流显示和流量积累计算的功能。
流量 是指单位时间内通过封闭管道或明渠有效截面的流量,也称为瞬时流量。当流量以体积表示时,称为体积流量;当流量以质量表示时,称为质量流量。在单位时间内通过管道的流体的体积称为横截面的体积流量。简称流量,使用Q表示。测量在一定通道内流动的流体的流量统称为流量测量。流量测量的流体是多样化的,如气体、液体和混合流体;流体的温度、压力和流量差异很大,所需的测量精度也不同。因此,流量测量的任务是研究各种相应的测量方法,以确保流量值的正确传场所等测量条件,研究各种相应的测量方法,确保流量值的正确传输。例如,河流流量,河流在一秒钟内流过一定点的立方米。一般来说,下游流量越大,所以在识别地图上的河流方向时,它通常从窄到宽。河流流量是指单位时间内通过河流某一横截(断)表面的水量,一般每秒以立方米表示。流量也可以用一个月、一个季节和一年的总流量来表示。流量,从水力学的角度来看,应为:在单位时间内,通过水段的水体积为每秒立方米,主要用于河流和湖泊段的进出水量测量。从水文站的角度来看,流量测量方法可分为浮标法、流量仪法、超声波法等,流量仪法测量精度最高。
水流传感器基本原理1 水流量传感器是利用霍尔元件的霍尔效应来测量磁性物理量。在霍尔元件的正极串入负载电阻,同时通上5V直流电压使电流方向与磁场方向正交。当水通过涡轮开关壳推动磁转子旋转时,产生不同磁极的旋转磁场,切割磁感应线,产生高低脉冲电平。由于霍尔元件的输出脉冲信号频率与磁转子速度成正比,转子速度与水流量成正比,燃气热水器根据水流量的大小启动。脉冲信号频率的经验公式见(1)。
f=8.1q-3(1)
式中:f—脉冲信号频率,H2
q—水流量,L/min
水流传感器的反馈信号通过控制器判断。根据燃气热水器的不同型号,选择最佳启动流量,可实现超低压(0.02MPa以下)启动。
水流传感器工作原理2 水流传感器主要由铜阀体、水流转子组件、稳流组件和霍尔元件组成。它装在热水器的进水端用于测量进水流量。当水流过转子组件时,磁性转子转动,并且转速随着流量成线性变化。霍尔元件输出相应的脉冲信号反馈给控制器,由控制器判断水流量的大小,调节控制比例阀的电流,从而通过比例阀控制燃气气量,避免燃气热水器在使用过程中出现夏暖冬凉的现象。水流量传感器从根本上解决了压差式水气联动阀启动水压高以及翻板式水阀易误动作出现干烧等缺点。它具有反映灵敏、寿命长、动作迅速、安全可靠、连接方便利启动流量超低(1.5L/min)等优点,深受广大用户的喜爱。 水流转子组件主要由涡轮开关壳、磁性转子、制动环组成。使用水流开关方式时,其性能优于机械式压差盘结构,且尺寸明显缩校当水流通过涡轮开关壳,推动磁性转子旋转,不同磁极靠近霍尔元件时霍尔元件导通,离开时霍尔元件断开。由此,可测量出转子转速。根据实测的水流量、转子转速和输出信号(电压)的曲线,便可确定出热水器的启动水压,以及启动水压相对应的启动水流量与转子的启动转速。由控制电路,便可实现当转子转速大于启动转速时热水器启动工作;在转速小于启动转速时,热水器停止工作。这样热水器启动水压一般设定在0.01MPa,启动水流为3~5L/min(满足热水器标准对最高温升的限制)。此外,由于水在永磁材料磁场切割下变成磁化水,水中含氧量增加,洗澡后感觉清爽。制动环的作用是停止高速旋转的磁性转子旋转和脉冲信号输出。控制器无法接收脉冲信号,立即控制气体比例阀关闭阀,切断气源,防止干燃烧。
水流传感器的作用
1.水流传感器(赛盛尔)具有开关信号输出和脉冲信号输出;
2.线性比例输出脉冲信号,与流量成比例关系,实现加热功率调节,达到恒温效果。大多数恒热器和气势水器都使用这种方法。现在一些电势水龙头和洗手宝也使用水流传感器。
3.水流传感器从根本上解决了压差式水气联动阀启动水压高、翻板式水阀容易误动、干烧等缺点。反映灵敏,使用寿命长,动作快,安全可靠,连接方便,启动流量超低(1.5L/min)等优点,深受广大用户的喜爱。
使用水流传感器时应注意的事项
1.当磁性数据或磁性数据接近传感器时它的特征可以改变。
2.为防止颗粒和杂物进入传感器过滤网必须安装在传感器的入口处。
3.水流传感器的装置应避免强烈轰动和摇晃的环境防止影响传感器的测量精度。
引出线方式:
1 红 IN 接正极
2 黄 OUT 信号输出线
3 黑 GND 接负极
实验开源代码
/*【Arduino】168传感器模块系列实验(数据代码 模拟编程 图形编程)88: 1霍尔水流传感器 直饮机流量监控模块项目1:串口绘图器显示测量的波形*/void setup(){ Serial.begin(9600)void loop(){ Serial.println(analogRead(0)delay(100)
实验串口绘图器返回情况 【Arduino】168传感器模块系列实验(数据代码 模拟编程 图形编程) 实验91: 1霍尔水流传感器 直饮机流量监控模块 项目2:串口检查是否有工作流量
实验开源代码
/* 【Arduino】168传感器模块系列实验(数据代码 模拟编程 图形编程) 实验91: 1霍尔水流传感器 直接饮用机流量监控模块 项目2:串口检测是否有工作流量*/int readpin = A0;int incoming = 0;void setup (){
pinMode (readpin, INPUT) ; Serial.begin(9600);}void loop (){
incoming = analogRead(readpin) ; if (incoming > 500) {
Serial.println("没有检测到"); } if (incoming < 500) {
Serial.println("检测到有流量"); } delay(1000);}
吹气实验,串口输出截图 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一: 1号霍尔水流量传感器 直饮机流量监控模块 项目三:使用串口读取水流速传感器的累计脉冲数 实验接线:Uno D2接流量传感器OUT
实验开源代码
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一: 1号霍尔水流量传感器 直饮机流量监控模块 项目三:使用串口读取水流速传感器的累计脉冲数 实验接线:Uno D2接流量传感器OUT*/#define PIN 2volatile long count = 0;//变量count声明为volatile类型void setup() {
pinMode(PIN, INPUT); attachInterrupt(0, blinkA, FALLING);//当引脚电平由高电平变为低电平时触发中断服务程序 Serial.begin(9600);}void loop() {
Serial.print("累计脉冲="); Serial.println(count); delay(1000);}void blinkA(){
count++;}
实验串口输出截图
实验场景图 记录脉冲的原理是,在转盘上设置磁感应点,每次磁场穿过传感器时,输出一个电平信号:
采用外部中断函数计数,当传感器被磁铁触发,程序中断,执行计数函数,记录一次。把每1000毫秒的圈数,再乘以30(双磁铁)即为实时的转速。
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一: 1号霍尔水流量传感器 直饮机流量监控模块 项目四:通过外部中断简易测量转速(转/分钟) 实验接线:Uno D2接流量传感器OUT*/const byte interruptPin = 2;const long taketime = 1000; // 每次测量的时间为1000毫秒unsigned long time; //设置变量 time,计时float Val = 0; //设置变量 Val,计数void setup() {
Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(interruptPin), count, FALLING);//触发信号必须是变化的,上升或下降皆可 time = millis();//开始计时,time获得当前系统时间}void loop() {
if (millis() >= time) {
Serial.print("转速= "); Serial.println(Val * 30); //转换成rpm,单磁铁触发分辨率为60rpm,2个磁铁为30rpm time = millis() + taketime;//标记未来的时间点,1000ms后执行if判断,输出结果。另,降低刷新频率,可以提高分辨率 Val = 0;//输出速度结果后清零,记录下一秒的触发次数 }}void count() {
Val += 1;}
实验串口输出 实验输出的实时转速波形
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一: 1号霍尔水流量传感器 直饮机流量监控模块 项目五:简易测速*/int rpmcount; //一秒钟旋圈数int rpm ;//速度(转/分钟)unsigned long sj;//运行时间void setup (){
Serial.begin(9600); attachInterrupt(0, rpm_fun, CHANGE); rpmcount = 0; rpm = 0; sj = 0;}void loop(){
if ((millis() - sj) >= 1000) {
rpm = rpmcount * 3; rpmcount = rpmcount / 2; Serial.print("秒转:"); Serial.print(rpmcount); Serial.println("圈"); Serial.print("转速= "); Serial.print(rpm); Serial.println("转/分钟"); Serial.println(""); sj = millis(); rpmcount = 0; rpm = 0; }}void rpm_fun(){
rpmcount++;}
串口输出截图
/* 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一: 1号霍尔水流量传感器 直饮机流量监控模块 项目六:累计脉冲大于等于50则点亮LED灯 实验接线:Uno D2接流量传感器OUT,LED接D13*/#define pin 2#define led 13volatile long count = 0;//变量count声明为volatile类型void setup() {
pinMode(pin, INPUT); pinMode(led, OUTPUT); attachInterrupt(0, blinkA, FALLING);//当引脚电平由高电平变为低电平时触发中断服务程序 Serial.begin(9600); Serial.println("准备就绪OK"); Serial.println("");}void loop() {
Serial.print("累计脉冲="); Serial.println(count); delay(1000); if (count >= 50) {
digitalWrite(led, HIGH); Serial.println("点亮LED灯"); } else digitalWrite(led, LOW);}void blinkA(){
count++;}
实验串口返回情况