DLC

DLC

DLC-005D-D4是什么 封装?

回复

匿名用户 发起了问题 • 1 人关注 • 0 个回复 • 29 次浏览 • 2021-06-09 22:30 • 来自相关话题

All Sensors DLC系列压力传感器开发笔记

laoguo 发表了文章 • 0 个评论 • 264 次浏览 • 2020-08-01 09:49 • 来自相关话题

All sensors新出了一个系列性价比很高的微差压压力传感器----DLC系列。然而这个传感器对开发者来说却不是那么“友好”。总是或多或少会遇到一些问题,笔者根据自己的经验,总结了以下一些需要注意的地方,希望能够帮到各位开发者。


1. 硬件设计

     也许你是10年硬件开发经验的老手,这不过是一个压力传感器罢了,IIC读取,就那么几根线,闭着眼都不会接错。是的,但是很多人眼睁睁的接错了。


     首先封装形式,有D1、D3、D4、U1、U2、U5六种封装形式,其中D封装是双气嘴封装,U封装是单气嘴封装。

       不同于一般的IIC传感器,DLC系列多出一个EOC引脚,很多开发者会认为这个引脚没有作用,不接。如果不接,软件工程师就马上有疑问了:为什么我读取的值都是FF! 传感器有问题!

       如下图,很多软件工程师都会选择性地不去看EOC的状态,但是EOC却起着决定是读到FF还是其它值的作用。那么什么是EOC呢?EOC是传感器输出的一个状态表示位,EOC为低电平时,表示传感器内部在读数,此时去读传感器只能读到FF,EOC为高电平时,才能读到数值。

       Mark一下,是传感器输出,不是输入!有些开发者给EOC接上拉或者下拉,然后发现EOC的状态没有变化,传感器有问题!!

       如果不接EOC可行吗?回答是也可以,不过,读取数据时要注意时序,在EOC刚好高电平的时候读数,这对时序要求比较高,如果软件兼有其它传感器或者功能,建议要连接EOC。当然也可以采取轮询状态的方式。


D4封装也是常见的一个封装,也是很多开发者容易忽视硬件问题的封装:

如图,NOTES里面提示:

      第4点:Do not connect any signal to Pin 1,3,14.

      第5点 PCB must connect Pin13 to Pin16

      很多老鸟喜欢忽视手册,不确定接的时候,就接了个GND,然后就发现传感器读数不出来,马上提出,传感器有问题!

      另外,这里的Pin13 toPin16 是指把第13脚和第16脚连接起来,而不是把13到16脚之间的引脚连起来。

2. 软件设计

       如果硬件连接对了,软件部分基本上没有什么难度。

       如果硬件连错了,那么软件调试相当困难。

      所以开发者看到这一步的时候,可以返回去看看自己的硬件设计部分,看看硬件部分是否存在问题。

 

现在开始软件部分

      首先是IIC地址,手册的第五页,十进制的地址41,换算成十六进制则是0x29.

      然后是读取指令,DLC系列给出了一个指令表:

     如图,经过我们验证,0xAF二进制为10101111,0xAE二进制为10101110。。。。这几个指令二进制形式上很接近,很容易受到干扰,故建议开发者如果要读取多次平均的值,可以发送0XAA,读取单次的值,然后再自己做平均。


这里贴出一段DLC系列的压力读取程序(没有读取EOC,仅作参考):

voidRead_DLC_0XD(void)

{

u8 I2c_Address = 0x29;

u8 Read_Commond = 0xAA;

u8 DLC_DATA[7] = {0x00};

u8 Status;

u32 Pressure_data,Tempertaure_data;

IIC_Init();

IIC_Start();

IIC_Send_Byte((I2c_Address)<<1|0);  //write

IIC_Wait_Ack();

IIC_Send_Byte(Read_Commond);   //1mps

IIC_Wait_Ack();

IIC_Stop();

delay_ms(360);

IIC_Start();

IIC_Send_Byte((I2c_Address)<<1|1);  //read

IIC_Wait_Ack();

DLC_DATA[0]=IIC_Read_Byte(1);    //STATUS[7:0]

DLC_DATA[1]=IIC_Read_Byte(1);     //PRESSURE[23:16]

DLC_DATA[2]=IIC_Read_Byte(1);    //PRESSURE[15:8]

DLC_DATA[3]=IIC_Read_Byte(1);    //PRESSURE[7:0]

DLC_DATA[4]=IIC_Read_Byte(1);     //TEMPERATURE[23:16]

DLC_DATA[5]=IIC_Read_Byte(1);     //TEMPERATURE[15:8]

DLC_DATA[6]=IIC_Read_Byte(0);     //TEMPERATURE[7:0]

IIC_Stop();     

Status = DLC_DATA[0];

Pressure_data=(DLC_DATA[1]<<16)|(DLC_DATA[2]<<8)|DLC_DATA[3];

Tempertaure_data=(DLC_DATA[4]<<16)|(DLC_DATA[5]<<8)|DLC_DATA[6];

}


      补充一下Status,Status是状态位,手册上有状态位的说明:0x40是正常的状态。如果读到其它状态了,请根据提示找问题。

3. 压力计算

       程序读出来了,计算压力却始终不对,这可郁闷了。

       以手册公式为例,我们来计算一个DLC-L01D的压力值:

     

Poutdig 是程序读到的值,假设读到的值为0XBF5A4A

OSdig 可以从手册上的参数表查得:LXXD为0.5*224

FSS也可以从参数表中获取:LXXD为+/- 0.4*224注意单位是counts,如果换算成压力单位 inch,L01D的FSS应该为1-(-1)=2.

所以读值为0XBF5A4A的压力为:

      1.25*【(0XBF5A4A-0.5*224)/224】*2 =0.6inch

      如果要转换成Pa,inch与Pa的转换关系为1inch=249Pa,故当前应为0.6*249=149.4Pa


       以上就是我的DLC系列开发心得,转自项目管理与精益制造公众号欢迎开发者们咨询All Sensors代理商科沃电子

Tel:17764509575, zf@cowo.net.cn。


DLC压力传感器有没有1英寸水柱的量程?

回复

laoguo 回复了问题 • 1 人关注 • 1 个回复 • 280 次浏览 • 2020-08-01 08:49 • 来自相关话题

DLC-005D-D4是什么 封装?

回复

匿名用户 发起了问题 • 1 人关注 • 0 个回复 • 29 次浏览 • 2021-06-09 22:30 • 来自相关话题

DLC压力传感器有没有1英寸水柱的量程?

回复

laoguo 回复了问题 • 1 人关注 • 1 个回复 • 280 次浏览 • 2020-08-01 08:49 • 来自相关话题

All Sensors DLC系列压力传感器开发笔记

laoguo 发表了文章 • 0 个评论 • 264 次浏览 • 2020-08-01 09:49 • 来自相关话题

All sensors新出了一个系列性价比很高的微差压压力传感器----DLC系列。然而这个传感器对开发者来说却不是那么“友好”。总是或多或少会遇到一些问题,笔者根据自己的经验,总结了以下一些需要注意的地方,希望能够帮到各位开发者。


1. 硬件设计

     也许你是10年硬件开发经验的老手,这不过是一个压力传感器罢了,IIC读取,就那么几根线,闭着眼都不会接错。是的,但是很多人眼睁睁的接错了。


     首先封装形式,有D1、D3、D4、U1、U2、U5六种封装形式,其中D封装是双气嘴封装,U封装是单气嘴封装。

       不同于一般的IIC传感器,DLC系列多出一个EOC引脚,很多开发者会认为这个引脚没有作用,不接。如果不接,软件工程师就马上有疑问了:为什么我读取的值都是FF! 传感器有问题!

       如下图,很多软件工程师都会选择性地不去看EOC的状态,但是EOC却起着决定是读到FF还是其它值的作用。那么什么是EOC呢?EOC是传感器输出的一个状态表示位,EOC为低电平时,表示传感器内部在读数,此时去读传感器只能读到FF,EOC为高电平时,才能读到数值。

       Mark一下,是传感器输出,不是输入!有些开发者给EOC接上拉或者下拉,然后发现EOC的状态没有变化,传感器有问题!!

       如果不接EOC可行吗?回答是也可以,不过,读取数据时要注意时序,在EOC刚好高电平的时候读数,这对时序要求比较高,如果软件兼有其它传感器或者功能,建议要连接EOC。当然也可以采取轮询状态的方式。


D4封装也是常见的一个封装,也是很多开发者容易忽视硬件问题的封装:

如图,NOTES里面提示:

      第4点:Do not connect any signal to Pin 1,3,14.

      第5点 PCB must connect Pin13 to Pin16

      很多老鸟喜欢忽视手册,不确定接的时候,就接了个GND,然后就发现传感器读数不出来,马上提出,传感器有问题!

      另外,这里的Pin13 toPin16 是指把第13脚和第16脚连接起来,而不是把13到16脚之间的引脚连起来。

2. 软件设计

       如果硬件连接对了,软件部分基本上没有什么难度。

       如果硬件连错了,那么软件调试相当困难。

      所以开发者看到这一步的时候,可以返回去看看自己的硬件设计部分,看看硬件部分是否存在问题。

 

现在开始软件部分

      首先是IIC地址,手册的第五页,十进制的地址41,换算成十六进制则是0x29.

      然后是读取指令,DLC系列给出了一个指令表:

     如图,经过我们验证,0xAF二进制为10101111,0xAE二进制为10101110。。。。这几个指令二进制形式上很接近,很容易受到干扰,故建议开发者如果要读取多次平均的值,可以发送0XAA,读取单次的值,然后再自己做平均。


这里贴出一段DLC系列的压力读取程序(没有读取EOC,仅作参考):

voidRead_DLC_0XD(void)

{

u8 I2c_Address = 0x29;

u8 Read_Commond = 0xAA;

u8 DLC_DATA[7] = {0x00};

u8 Status;

u32 Pressure_data,Tempertaure_data;

IIC_Init();

IIC_Start();

IIC_Send_Byte((I2c_Address)<<1|0);  //write

IIC_Wait_Ack();

IIC_Send_Byte(Read_Commond);   //1mps

IIC_Wait_Ack();

IIC_Stop();

delay_ms(360);

IIC_Start();

IIC_Send_Byte((I2c_Address)<<1|1);  //read

IIC_Wait_Ack();

DLC_DATA[0]=IIC_Read_Byte(1);    //STATUS[7:0]

DLC_DATA[1]=IIC_Read_Byte(1);     //PRESSURE[23:16]

DLC_DATA[2]=IIC_Read_Byte(1);    //PRESSURE[15:8]

DLC_DATA[3]=IIC_Read_Byte(1);    //PRESSURE[7:0]

DLC_DATA[4]=IIC_Read_Byte(1);     //TEMPERATURE[23:16]

DLC_DATA[5]=IIC_Read_Byte(1);     //TEMPERATURE[15:8]

DLC_DATA[6]=IIC_Read_Byte(0);     //TEMPERATURE[7:0]

IIC_Stop();     

Status = DLC_DATA[0];

Pressure_data=(DLC_DATA[1]<<16)|(DLC_DATA[2]<<8)|DLC_DATA[3];

Tempertaure_data=(DLC_DATA[4]<<16)|(DLC_DATA[5]<<8)|DLC_DATA[6];

}


      补充一下Status,Status是状态位,手册上有状态位的说明:0x40是正常的状态。如果读到其它状态了,请根据提示找问题。

3. 压力计算

       程序读出来了,计算压力却始终不对,这可郁闷了。

       以手册公式为例,我们来计算一个DLC-L01D的压力值:

     

Poutdig 是程序读到的值,假设读到的值为0XBF5A4A

OSdig 可以从手册上的参数表查得:LXXD为0.5*224

FSS也可以从参数表中获取:LXXD为+/- 0.4*224注意单位是counts,如果换算成压力单位 inch,L01D的FSS应该为1-(-1)=2.

所以读值为0XBF5A4A的压力为:

      1.25*【(0XBF5A4A-0.5*224)/224】*2 =0.6inch

      如果要转换成Pa,inch与Pa的转换关系为1inch=249Pa,故当前应为0.6*249=149.4Pa


       以上就是我的DLC系列开发心得,转自项目管理与精益制造公众号欢迎开发者们咨询All Sensors代理商科沃电子

Tel:17764509575, zf@cowo.net.cn。