您好,欢迎来到您的网站!
搜索

在线客服

在线客服
SM7391微差压传感器应用于呼吸机的调试经验
专栏:技术支持
发布日期:2023-11-22
阅读量:216
作者:安泰
收藏:
SM7391微差压传感器是一款内部集成16位MCU的,其量程为±500pa,典型输出精度为±0.1%FS ,出厂时已经做了温度补偿和压力校准,温度补偿范围为-5℃至65℃,支持I2C和模拟输出。TWI_SendByte(0x30);

        SM7391微差压传感器一款内部集成16位MCU的,其量程为±500pa,典型输出精度为±0.1%FS ,出厂时已经做了温度补偿和压力校准,温度补偿范围为-5℃至65℃,支持I2C和模拟输出。目前已经成功应用在于国内呼吸机产品中,主要通过差压传感器实现呼吸流量的计量。

1700618942067067068.jpg

        很多工程师在使用SM7391时候,可能会遇到不同的技术问题,下面是基于某客户实际调试SM7391压力传感器的过程,希望给其他工程师给予借鉴。


        首先,差压传感器SM7391可以工作在3V或者5V系统中,支持标准I2C通信,工程师可以采用模拟I2C,也可以使用硬件I2C。很多工程师在询问SM7391的I2C地址,原厂设置为0x36。


        其次,差压传感器SM7391的I2C输出值范围为-26214至+26214,而模拟输出对应电压范围10%*VDD至90*VDD,两种方式分别对应量程为-500pa至500pa,所以通过此可以计算出线性直线斜率。


1700619951728045584.jpg

图1、差压传感器SM7391的I2C通信校准曲线


        第三,差压传感器SM7391内部集成低通滤波器,通过外置MCU可以设置三种不同的滤波参数:

        1、截止频率fc=10hz 时,设置Part numbers 11, 12, 13;

        2、截止频率fc=20hz 时,设置Part numbers 21, 22, 23;

        3、截止频率fc=50hz 时,设置Part numbers 51, 52, 53;



        第四,差压传感器SM7391出厂时温度补偿范围是-5℃至65℃,可以参考下面图片。而实际产品则要求-40℃至85℃,中间没有补偿的温度范围需要工程师自己在外置MCU中进行补偿。补偿方法可以依5℃为梯度进行温度、压力测试,将数据读取之后进行曲线拟合。

1700620742142021040.jpg

图2、差压传感器SM7391的出厂时的温补曲线


        第五,差压传感器SM7391的典型电路如下图,很多工程师在询问13脚的作用。此引脚是SMI原厂出厂调试使用的,客户在使用差压传感器SM7391时只需要将该引脚接到GND上即可。

1700620841686083512.png

图3、差压传感器SM7391的典型电路


        第六,差压传感器SM7391的测量结果存放在一个2字节的结果寄存器中,温度结果寄存器地址为0x2E,压力结果寄存器地址为0x30,状态结果寄存器地址为0x32。很多工程师只是需要压力值,所以MCU只需要读取0x30寄存器的值即可,然后通过与直线斜率计算出当前的压力值。


注意:差压传感器SM7391默认是低字节在前,高字节再后。

Pcounts=256*byte2+ byte1


        如果工程师使用差压传感器SM7391为模拟输出,比如在3V系统中,-500pa输出电压为0.33V,500pa输出电压为2.97V,根据此计算出斜率,然后通过下列公式计算出压力值,单位为mbar。

1700621408626020468.jpg


设计工程师可以参考下面的代码,将其移植到MCU中,实现差压传感器SM7391测量压力值转换。

void SM16bit_sensor_read(void)

{

BYTE i; for(i=0;i<trycount;i++)

{

TWI_Start();

TWI_SendByte(slaveID|0x00);

SDAinput();

if(!TWI_WaitAck())

 {

SDAoutput();

TWI_Stop();

continue;

}

SDAoutput();

TWI_SendByte(0x30); //数据地址

SDAinput(); if(!TWI_WaitAck())

{

SDAoutput(); TWI_Stop(); continue;

}

SDAoutput();

TWI_Start(); TWI_SendByte(slaveID|0x01); SDAinput();

 if(!TWI_WaitAck())

{

SDAoutput();

TWI_Stop();

continue;

}

SDAoutput();

break;

}

if(i==trycount) return; SDAinput();

presslow = TWI_ReceiveByte();

SDAoutput();

TWI_Ack();

SDAinput(); presshigh=TWI_ReceiveByte(); SDAoutput();

TWI_NoAck();

TWI_Stop();

 return;

}


希望以上经验可以帮助到每一位工程师!


上一页:SM7391微差压压力传感器用于手持式制氧机,最小检测压力范围500Pa左右,线性度1.5%
下一页:超微医用压力传感器0.075*0.22*0.75(mm³),广泛应用于微创外科手术及介入治疗领域