朱小丽 周杰 高利敏
惠而浦(中国)股份有限公司研发中心 安徽合肥 230088
在现代社会,洗衣机基本已经普及到每个家庭并且成为家用电器中非常重要的一员,大大解放了双手并节约了手工洗衣服的时间,且大部分洗衣机都实现了智能化控制,仅仅在非常偏远的农村地区还有双桶洗衣机的市场。
在能源越来越重要的现代社会,要实现智能控制,如何保证洗衣机精确用水是一个非常重要的课题。目前市面上绝大部分洗衣机都带有自动检测水位功能,普遍采用的水位检测方式是两线或者三线的压力传感器,这种压力传感器检测原理主要是根据水位传感器在不同水压下,传感器的电感量会根据压力变化,从而改变震荡频率,通过单片机对频率的识别来判断水位的当前状态。但是这种检测方式有一个很大的缺点,就是检测精度不高,甚至有可能导致洗衣机用水差异很大,做不到精准控制,从而带来一系列问题,如洗衣机体验差、用水量及耗电量都很难控制在一定范围内、对洗衣机洗净比及能耗的标注带来困难等。
如图1、2所示,传统水位传感器的组成主要有图上标注的几个部分,水位传感器的工作方式如下:气管处接通气管同时做好密封,通气管另外一端接洗衣机桶底并做好密封,当洗衣机进水后,洗衣机内水位高度变化首先会改变通气管中的压强变化,这个压强变化会通过空气导管传给传感器的橡胶隔膜板,受到压力变化的影响,隔膜板产生位移,带动铁芯上下移动,隔膜板抬起,对弹簧产生一作用力,当弹簧的反作用力和压力变化产生的作用力在传感器中的某一确定的位置达到平衡后,线圈会输出一个固定的电感值。
电感值变化后,则根据LC振荡回路谐振频率:
获得一频率信号。把电感转化的频率信号传输给洗衣机MCU,洗衣机通过这一频率信号,从而可以确定当前水位高度。图3为压力传感器电路示意图及频率输出电路。
为了解决压力传感器水位检测精度的问题,本文选用一种集成式数字压力传感器IMS7902用于水位检测。这种传感器具有检测精度高、体积小、功耗低、环境适应性强等优点。
集成数字压力传感器的工作原理:与传统压力传感器类似,气管处接通气管同时做好密封,通气管另外一端接洗衣机桶底并做好密封,当洗衣机进水后,洗衣机内水位高度变化首先会改变通气管中的压强变化。水位高度不同,压强不同,压强直接通过通气管作用在传感器的膜片上,使膜片产生与介质压力成正比的微位移,使传感器的电阻发生变化,用电子线路检测这一变化,转换输出一个对应于这个压力的数字标准信号。此信号通过通讯协议传输给MCU,从而判断水位高度。
与传感水位检测方式对比,数字式压力传感器具有水位检测精准、体积小、功耗低等优点。
ITM公司生产的IMS7902集成式压力传感器具有精度高,功耗小,体积小等优点,同时可以进行温度补偿,在0~70度范围内都能测试到非常精确的水位信息。该传感器工作参数:检测0~6kPa气体压力变化;检测精度:±1.5%(±0.09kPa);工作温度范围:0~70℃;工作模式:最大2.5mA;睡眠模式:最大32uA;14-bit模数转换;支持SPI/I2C通讯协议;工作电压:2.7-5.5V;体积小;直接安装在PCB上。传感器实物如图4所示。
IMS7902集成式压力传感器硬件原理图如图5所示,引脚定义见表1,集成式数字压力传感器和普通压力传感器一致,通过通气软管接在洗衣机桶底及压力传感器的气管两端并保证密封性。集成式数字压力传感器用5V供电,电源通过电容和TVS管做滤波和防浪涌设计,传感器1脚和2脚MCU通过I2C线路连接,在通讯时钟及数据线上串电阻并增加去耦电容用于线路的抗干扰,由于硬件I2C是开漏输出,要加上拉电阻。原理图设计好之后可以结合洗衣机其他部分硬件设计画出PCB,并完成实物制作。
图1 传统水位传感器实物图
图2 传统压力传感器结构图
图3 压力传感器电路示意图及频率输出电路(LC为传统压力传感器模型)
图4 IMS7902压力传感器实物图
图5 集成式数字压力传感器硬件电路设计(压力传感器为图中U3),SDA,SCL接MCU的I/O口
表1 IMS7902集成式压力传感器引脚定义
图6 I2C通讯的起始信号和停止信号
图7 I2C通讯的数据格式
在本方案中,主控MCU和数字压力传感器之间采用I2C的通讯方式,MCU通过一定的时间间隔向传感器发送检测压力的命令并定时向传感器查询当前的压力状态,并转换成当前水位信号,对水位多次检测取平均值。
4.1.1 起始信号和停止信号
如图6所示:
开始信号——在SCLK的高电平器件,拉低SDA的信号(由1变为0);
结束信号——在SCLK的高电平期间,拉高SDA信号,表示通信结束。
4.1.2 数据位的有效性规定
在I2C总线进行数据传送时,时钟信号为高电平时,数据线的信号必须保持不变;只有时钟信号为低电平器件,数据信号上的数据才允许发生改变(高电平变为低电平或者低电平变为高电平)。
4.1.3 数据传送格式
I2C通讯的数据格式如图7。发送到SDA线上的每个字节必须是8位的,每次传输可以发送的字节数量不受限制。每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧9位)。
如果从机要完成一些其他功能后才能继续接收或发送,从机可以拉低SCL迫使主机进入等待状态。当从机准备好接收并释放SCL后,数据继续传输。如果主机在传输数据期间也需要完成一些其他功能也可以拉低SCL以占住总线。
由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。
如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。
当主机接受数据时,它收到最后一个数据字节后,必须向从机发送一个结束传送的信号,这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。
4.1.4 数据帧格式
I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
在起始信号后必须传送一个从机的地址(7位),在第8位是数据的传送方向(R/T),用“0”标识主机发送数据(T),“1”标识主机接受数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
在总线的一次数据传送过程中可以有以下几种组合方式,我们介绍其中需要用到的一种。如图8所示,主机向从机发送数据,数据产送方向在整个传送过程中不变。其中有阴影部分表示数据由主机向从机发送,无阴影部分则表示数据由从机向主机传送。A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。
4.2.1 IMS7902传感器I2C通讯的读取模式
我们对IMS7902通讯采用的是读模式,在读模式下,MCU给IMS7902发送7位从机地址和一位“1”(READ),IMS7902会发送一个应答信号(ACK)来指示通讯成功。IMS7902有四个读命令,Read_MR,Read_DF2,Read_DF3以及Read_DF4。具体信息如图9所示:
(1)IMS7902从机地址:0x28;
(2)Read_MR模式:MCU发送从机地址以及读信号,等待应答后发送停止信号,意味着传感器开始测量及数据转化;
(3)Read_DF2:读取两个字节数据,包括压力的两个字节数据量;
(4)Read_DF3:读取三个字节数据,包括两个字节压力数据及一个字节温度数据;
(5)Read_DF4:读取四个字节数据,包括两个字节压力数据及两个字节温度数据。
4.2.2 IMS7902传感器工作的软件流程框图
IMS7902传感器工作的软件流程框图如图10所示。
4.2.3 MCU与IMS7902传感器的通讯
MCU每间隔500ms检测下当前的水位状态,根据当前的水位状态确定要执行的相应程序。
在完成数字压力传感器的水位检测方案设计后,与传统的水位检测方式做对比测试,选择相同的条件并多次测试取平均值,测试的结果如表2所示。
通过表2可以明显看出数字式压力传感器相比传统压力传感器具有更高的检测精度及更小的波动范围。对于洗衣机精确水位控制有更大的助益。可以有效解决传统水位传感器带来的无法精确用水等问题。这对于消费者来说可以带来更好的洗衣体验,同时也能帮助企业减少由于水位检测不准确而浪费的开发投入。
图8 数据帧格式
图9 IMS7902传感器的4个读命令
图10 IMS7902传感器工作的软件流程框图
表2 数字式压力传感器和传统压力传感器检测水位对比