传感器系列之4.3流量传感器

4.3 流量数据采集实验

一、实验目的
  1. 掌握水流量计的结构与工作原理
  2. 掌握霍尔传感器的使用
二、实验材料
  1. 具有USB 串口通讯的PC 机1 台
  2. ADS1.2 集成开发软件1 套
  3. J-Link-ARM 仿真器及软件1 套
  4. NXP LPC2378 实验节点板1 个
  5. LCD 显示实验板1 个
  6. BMP085数字气压传感器模块1个
三、实验原理

流量传感器实验环境由PC机(安装有Windows XP操作系统、ADS1.2集成开发环境和J-Link-ARM-V410i仿真器)、J-Link-ARM仿真器、NXP LPC2378实验节点板、水流量计(霍尔传感器)、实验模块和LCD显示实验模块组成,如图4.3.1所示。

这里写图片描述
图4.3.1 传感器实验环境

1.水流量计

(1) 基本原理
水流量传感器主要由塑料阀体 、水流转子组件和霍尔传感器组成。水流量传感器是利用霍尔元件的霍尔效应来测量磁性物理量。 在霍尔元件的正极串入负载电阻, 同时5V通上 的直流电压并使电流方向与磁场方向正交。 当水通过涡轮开关壳推动磁性转子转动时, 产生不同磁极的旋场转,磁切割磁感应线,产生高低脉冲电平。由于霍尔元件的输出脉冲信号频率与磁性转子的转速成正比,转子的转又速 与水流量成正比,根据水流量的大小启动燃气热水器。其脉冲信号频率的经验公式见式(1)。

这里写图片描述

由水流量传感器的反馈信号通过控制器判断水流量的值。根据燃气热水器机型的不同,选择最佳的启动流量,可实现超低压(0.02MPa 以下)启动。
(2) 应用
它可装在热水器进水端,用于检测进水流量,当水通过水流转子组件时,磁性转子转动并且转速随着流量变化而变化,霍尔传感器输出相应脉冲信号,脉冲信号的频率、转速和水流成线性关系,从而获得水的流量。然后,霍尔元件就会相应地输出脉冲信号以至于可以反馈给控制器,接着就可以由控制器来有效地判断水流量的变化大小。可以通过调节控制比例阀的电流的大小,然后根据比例阀来控制燃气的气量,这样就可以有效地预防在使用的过程当中燃气热水器会出现夏暖冬凉的状况。
(3)水流量传感器和水气联动阀的对比
  压差式水气联动阀的毛病是带动水压高,而要想消沉带动水压就必要断送一定的稳流赋性(水压刚烈时的流量固执能力)。
  为了能使两者分身,唯有加洪流阀膜片,但如许随着阀体的增大成本会举高,且水流带动压力指标也不克不及做得过于低。对水流量传感器,在出水端增加稳流组件,利用稳流。形圈的几多尺寸及物理遵命,经由执行成功开发了合用于不合容量热水器的稳流组件,存在很好的稳流赋性(进水压力在0.1~0.5MPa变动时,出水量变动在3L/min以内),包管进水压力变动时,保持流量在一定局限内,达到恒温成果。
  对比压差式水气联动阀和水流量传感器,也许看出,前者是机械式,布局较复杂,体积大,但控制电路简单;后者是电气式,布局相对简单,体积小,但控制电路复杂。加倍必要的是前者带动水压较高,旱路系统阻力较大,不宜用在10L/min以上的大容量热水器AZ;尔后者带动水压低,旱路系统阻力小,在10L/min以上的大容量热水器上已普及采用。
这里写图片描述
图4.3.2水流量计的结构简图

如图4.3.2所示,水流量计的输出波形图:方波;引出线方式:红黄绿三根线,其中黑线接地,黄色为输出线,红色色接VCC,作为工作电压。

2.霍尔传感器

(1) 霍尔效应
霍尔效应是电磁效应的一种,这一现象是美国物理学家霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机制时发现的。当电流垂直于外磁场通过导体时,在导体的平行于磁场和电流方向的两个端面之间会出现电势差,这一现象就是霍尔效应。这个电势差也被称为霍尔电势差。霍尔效应应使用左手定则判断。
在半导体上外加与电流方向垂直的磁场,会使得半导体中的电子与空穴受到不同方向的洛伦兹力而在不同方向上聚集,在聚集起来的电子与空穴之间会产生电场,此电场将会使后来的电子和空穴受到电场力的作用而平衡掉磁场对其产生的洛伦兹力,使得后来的电子和空穴能顺利通过不会偏移,此称为霍尔效应。而产生的内建电压称为霍尔电压
方便起见,假设导体为一个长方体,长度分别为 ,磁场垂直 平面。电流经过 ,电流 , 为电荷密度。设霍尔电压为 ,导体沿霍尔电压方向的电场为 。设磁场强度为 。洛伦兹力为:

这里写图片描述
图4.3.3 洛伦兹力示意图

电荷在横向受力为零时不在发生横向偏转,结果电流在磁场作用下在器件的两个侧面出现了稳定的异号电荷堆积从而形成横向霍尔电场:
这里写图片描述
这里写图片描述

这里写图片描述
图4.3.4 霍尔效应示意图

其本质为:固体材料中的载流子在外加磁场中运动时,因为受到洛仑兹力的作用而使轨迹发生偏移,并在材料两侧产生电荷积累,形成垂直于电流方向的电场,最终使载流子受到的洛仑兹力与电场斥力相平衡,从而在两侧建立起一个稳定的电势差即霍尔电压。正交电场和电流强度与磁场强度的乘积之比就是霍尔系数。平行电场和电流强度之比就是电阻率。大量的研究揭示:参加材料导电过程的不仅有带负电的电子,还有带正电的空穴。
(2) 霍尔元件
根据霍尔效应,人们用半导体材料制成的元件叫霍尔元件。它具有对磁场敏感、结构简单、体积小、频率响应宽、输出电压变化大和使用寿命长等优点,因此,在测量、自动化、计算机和信息技术等领域得到广泛的应用。
(3) 霍尔传感器
由于霍尔元件产生的电势差很小,故通常将霍尔元件与放大器电路、温度补偿电路及稳压电源电路等集成在一个芯片上,称之为霍尔传感器。

3.霍尔传感器的分类

霍尔传感器分为线性型霍尔传感器和开关型霍尔传感器两种。
(1) 线性型霍尔传感器由霍尔元件、线性放大器和射极跟随器组成,它输出模拟量。
(2) 开关型霍尔传感器由稳压器、霍尔元件、差分放大器,斯密特触发器和输出级组成,它输出数字量。

4.霍尔电器工作原理

这里写图片描述
图4.3.5霍尔电器的应用图例

水流转子的相关组件主要的组成部分是制动环、涡轮开关壳和磁性转子。利用水流开关这个方式,它的尺寸明显会缩小,而且它的性能比机械式的压差盘结构要好得多。在水流流经涡轮开关壳的时候,就可以推动磁性转子,让它旋转起来。当不同的磁极接近霍尔元件的时候,霍尔元件就会导通;当磁极离开霍尔元件时,霍尔元件就会断开。那么根据上面的信息就可以测量出转子的转速。根据实测的水流量、转子转速和输出信 (电压)的曲线,便可确定出热水器的启动水压,以及启动水压相对应的启动水流量与转子的启动转速。由控制电路,便可实现当转子转速大于启动转速时热水器启动工作;在转速小于启动转速时,热水停止工作。这样热水器启动水压一般设定在 0.01 MPa,启动水流量为 3~5 L/min(需满足热水器标准对最高温升的限制 )。还有根据实际测量的转子转速、水流量还有输出信号的曲线,就可以确定转子的启动转速、热水器的启动的水压还有跟启动的水压相对应的启动的水流量。所以,可以通过控制来完成当转子的转速比启动的转速小时,热水器的停止工作;当转子的转速比启动的转速大的时候,热水器的启动工作。因此可以设定热水器启动水压和启动水流量。
还有,因为水在永磁的磁场的切割下,会转变为磁化水,这个时候,水中的含氧量就会增多,所以,人洗完澡后会感觉特别的清爽。而制动环是为了在停水的时候,可以阻止高速旋转的磁性转子的转动,因此可以停止脉冲信号的输出。那么,当控制器没有接收到脉冲信号的时候,它就会马上控制燃气的比例阀关阀,然后切断气源,这样就可以有效地防止干烧的现象出现。所以,合理使用水流量传感器,这对人体的安全是非常有保障的。
因此,在程序中中,我们只需要获取霍尔传感器发出的脉冲信号,统计脉冲信号,根据脉冲信号,利用转换公式计算出水流总量。转换公式为:
这里写图片描述

程序流程图如下:
这里写图片描述
图4.3.6程序流程图

5.NE55整形模块

这里写图片描述
图4.3.7 试验模块NE555电路图

(1)NE555简介。
集成电路是一种将模拟功能与逻辑功能巧妙结合在同一硅片上的组合集成电路。由于采用CMOS型工艺和高度集成,使时基电路的应用从民用扩展到火箭、导弹,卫星,航天等高科技领域。在这期间,日本、西欧等各大公司和厂家也竞相仿制、生产。尽管世界各大半导体或器件公司、厂家都在生产各自型号的555/556时基电路,但其内部电路大同小异,且都具有相同的引出功能端。它有很多优异的性能而且用途极广,它们表现在:第一,定时精度,工作速度和可靠性高;第二,使用的电源电压范围宽,从3V到18V,能和数字电路直接连接;第三,有一定的输出功率,可驱动微电机,指示灯、扬声器,第四,结构简单,使用灵活,用途广泛,可组成各种波形的脉冲振荡器、定时延时电路、双稳触发电路、检测电路、电源变换电路、频率变换电路等,被广泛应用于自动控制,测数,通信等各个领域。
(2)555电路的组成及功能
555电路有双极型(TTL)和互补金属氧化物半导体型(CMOS)集成电路两大类,它们在电路功能及管脚排列上基本一致,下面以双极型的555为例介绍。TTL的555电路内部有20多个晶体三极管和二极管,10多个电阻,大致可以分成分压器、比较器、R—S触发器、输出级和放电开关五部分,如下图所示,下面予以简单介绍。
比较器的参考电压由三只5 K欧姆 的电阻器构成分压,它们分别使高电平比较器A1同相比较端和低电平比较器A2的反相输入端的参考电平为 和 。A1和A2的输出端控制R—S触发器状态和放电管开关状态。当输入信号由6脚输入并超过 时,触发器复位,555的输出端3脚输出低电平,开关管导通,同时7脚对地放电;当输入信号自2脚输入并低于 时,触发器置位,555的3脚输出高电平,开关管截止,7脚对地为高阻状态。4脚MR端是复位端,当其为0时,555输出低电平,平时该端开路或接 。5脚 端是控制电压端,平时 作为比较器A1的参考电平,当5脚外接一个输入电压,即改变了比较器的参考电平,从而实现对输出的另一种控制,在不接外加电压时,通常接一个0.01uf的电容器到地,起滤波作用,以消除外来的干扰,以确保参考电平的稳定。TD为放电管,当输出端3脚输出低电平时TD导通,将给接于7脚的电容器提供低阻放电回路,当输出端3脚输出高电平时TD截止,接于7脚的电容器进行充电。
输出级是R—S触发器的输出经反向放大器实现的,由于使用了一级大电流的反向放大器,所以不仅高电平时能输出电流,在低电平时也能灌入电流,且电流较大,均为200mA。
这里写图片描述
图4.3.8 NE555时基电路管脚排列图

这里写图片描述
图4.3.9 NE55内部框图

(3) NE555电路参数
NE555电路参数如表4.3.1所示
表4.3.1NE555电路参数

项 目 单位 555参数 说 明 7555参数对比
电源电压VCC V 4.5—16 实际使用中取5—15 3—18
静态电流IO mA 10 电源电压15V时的空载电流 0.12
定时精度 % 1 作定时器时的误差为1% 2
阀值电压VTH V 2/3VCC VTH≥2/3VCC时, VO从1→0 2/3VC
阀值电流ITH µA 0.1 使VTH≥2/3VCC,翻转所需电流 0.05
触发电压VTR V 1/3VCC VTR≤1/3VCC时, VO从0→1 1/3VC
触发电流ITR µA 0.5 使VTR≤1/3VCC,翻转所需电流 0.05
复位电压VMR V 1 使输出复位VO=0,则VMR≤1 1
复位电流IMR µA 400 使VO=0,MR端所需电流 0.1
放电电流IDIS mA 200 放电管的最大放电电流 10—50
驱动电流IL mA 200 输出端向负载提供的最大电流 1—20
最高工频率fm KHZ 500 作振荡器时的最高频率 500
输出内阻r Ω 10—20 r =(VCC—V0)/IL或V0/IL 几百

四、实验内
1.实验器材连线

本实验所使用的水流量计实物图如图4.3.6所示,流量传感模块实物图如图4.1.7所示。

这里写图片描述
图4.3.10水流量计实物图

这里写图片描述
图4.3.11流量传感器模块

将流量传感器模块安装到开发板上,然后用JLINK仿真器的一端用USB接口与电脑相连,一端的20Pin的JTAG引脚与NXP LPC2378节点板的J2相连,并给NXP LPC2378节点板上电,如图4.1.8所示。
这里写图片描述
图4.3.12流量传感器模块电路接口

2.水流量检测试验

本实验,通过水流量计检测霍尔电器的输出脉冲,再根据转换公式,计算出水流量的大小,并在LCD上输出。
打开工程flow,修改Main.c中的内容如下面的代码区所示内容。

    int val;
    int xpos,ypos;
    long count;
    uint8 sndBuf[20];

    //设置LCD屏幕引脚   
    PINSEL3=PINSEL3 & 0x00000000;
    IO1DIR=IO1DIR|0x05700000;
    // 设置串口0,P0.2-TXD0 P0.3-RXD0
    //PINSEL0 = PINSEL0 & 0x00000050;   
    //P0.2 P0.3不使用上拉电阻
    PINMODE0 = PINMODE0 & 0x000000A0;   
    //去除P0.16上拉电阻
    //PINMODE0 |= 0x80000000;
    PINMODE1 |= 0x00000002;
   //屏幕初始化    
    RESET0;     //复位                           
    delay(50);
    RESET1;                     
    delay(100); 
    lcd_init();
    delay(20);
    LCD_Frame();
    DispAscStr(0,12,"  ",2,&xpos,&ypos);
    DispChnStr(xpos,ypos,"流量模块测试",6,&xpos,&ypos);
    count=0;
    while(1)
    {
        //if((IO0PIN&0x00200000)==0x00200000)//高电平脉冲
        if((FIO3PIN&(1<<3))==(1<<3))
        {
            count++;
        }
        DispChnStr(0,40,"流量值",3,&xpos,&ypos);
        //计算公式Q=f*1000/360
        //Q:水流量,单位L
        //F霍尔传感器输出脉冲
        val=count*1000/360;
        pval=val/pcount;
        sndBuf[0]=':';
        sndBuf[1]=(val%10000)/1000+'0';
        sndBuf[2]='.';
        sndBuf[3]=(val%1000)/100+'0';
        sndBuf[4]=(val%100)/10+'0';
        sndBuf[5]=val%10+'0';
        sndBuf[6]='L';
        DispAscStr(xpos,ypos,sndBuf,7,&xpos,&ypos);
        while((FIO3PIN&(1<<3))==(1<<3));
        while((FIO3PIN&(1<<3))!=(1<<3));    
    }           
3.水流量检测试验

本实验,通过水流量计检测霍尔电器的输出脉冲,再根据转换公式,计算出水流量的大小,当水流量的总量超过某个值时,显示警告信息“warning”,用来模拟生活中往太阳能中注水,当水量充足时,自动断开。
打开工程flow,修改Main.c中的内容如下面的代码区所示内容。

    int val,initval,leftval;//已注水,定水量,剩余水量
    int xpos,ypos;
    long count;
    uint8 sndBuf[20];
    uint8 sndBuf2[20];
    //省略了屏幕初始化内容,请参考上例。    
    DispAscStr(0,12,"  ",2,&xpos,&ypos);
    DispChnStr(xpos,ypos,"流量监控测试",6,&xpos,&ypos);
    initval=2000;//定水量如2L
    count=0;
    while(1)
    {
        //if((IO0PIN&0x00200000)==0x00200000)//高电平脉冲
        if((FIO3PIN&(1<<3))==(1<<3))
        {
            count++;
        }
        val=count*1000/360;
        leftval=initval-val;
        if(leftval!=0.0)
        {
            sndBuf2[0]=':';
            sndBuf2[1]=(leftval%10000)/1000+'0';
            sndBuf2[2]='.';
            sndBuf2[3]=(leftval%1000)/100+'0';
            sndBuf2[4]=(leftval%100)/10+'0';
            sndBuf2[5]=leftval%10+'0';
            sndBuf2[6]='L';
            DispAscStr(0,40,"leftval",7,&xpos,&ypos);
            DispAscStr(xpos,ypos,sndBuf2,7,&xpos,&ypos);
        }
        else
        {
            drawrect(0,40,128,48,0x2345);
            DispAscStr(0,40,"warning!",8,&xpos,&ypos);
            return 0;//停机
        }
        //****************************************************/
        sndBuf[0]=':';
        sndBuf[1]=(val%10000)/1000+'0';
        sndBuf[2]='.';
        sndBuf[3]=(val%1000)/100+'0';
        sndBuf[4]=(val%100)/10+'0';
        sndBuf[5]=val%10+'0';
        sndBuf[6]='L';
        DispAscStr(0,100,"inputval",8,&xpos,&ypos);
        DispAscStr(xpos,ypos,sndBuf,7,&xpos,&ypos);
        while((FIO3PIN&(1<<3))==(1<<3));
        while((FIO3PIN&(1<<3))!=(1<<3));    
    }           

原文地址:https://www.cnblogs.com/shugen/p/6863016.html