精华内容
下载资源
问答
  • 其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用压力传感器的应用。 一个工业自动化...
  • 其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些常用压力传感器的应用。 一个工业自动化...
  • 压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定...压力传感器是工业实践中最为常用一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工...

    3c49a3ea8f3b65e95765149dc7c4954b.gif

    压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定的规律将压力信号转换成可用的输出的电信号的器件或装置。

    压力传感器通常由压力敏感元件和信号处理单元组成。按不同的测试压力类型,压力传感器可分为表压传感器、差压传感器和绝压传感器。

    压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,下面就简单介绍一些压力传感器的应用实例。

    1、压力传感器在称重系统中的应用 

    在工业控制技术的商用称重系统中,压力传感技术越来越多的被应用。在很多压力控制过程中,经常需要采集压力信号,转换成能够进行自动化控制的电信号。以压力传感器制作的压力控制装置一般称为电子称重系统,电子称重系统作为各种工业过程中物料流动的在线控制工具显得越来越重要。电子称重系统既能组合在产品制造过程中优化生产,提高产品质量,又能把有关生产过程中物料流动的数据加以采集并传送到数据处理中心,作为在线库存控制和财务结算之用。

    在称重的过程自动化控制中,要求压力传感器不仅能感知重力信号,而且其性能必须可靠、动态响应性要好、抗干扰性能要好;压力传感器提供的信号经检测系统可以直接显示、记录打印、存储或用于反馈调节控制。通过集成技术将压力传感器与测量线路集成在-起,使得整个装置的体积大大减小;另外屏蔽技术的发展,也将使得称重压力传感器的抗干扰能力得到保障,使得称重过程的自动化控制程度进一步得到提高。

    ca771e026db1f5fac142163fa0756cb9.png

    2da768599cbb0f676bf1e6266fe678df.png

    2、压力传感器在石化行业中的应用

    压力传感器是石化行业自动控制中使用最多的测量装置之一。在大型的化工项目中, 几乎包含了所有压力传感器的应用:差压、绝压、表压、高压、微差压、高温、低温,以及各种材质及特殊加工的远传法兰式压力传感器。几乎石化行业对压力传感器的需求主要集中在可靠性、稳定性和高精度3个方面。其中,可靠性和许多附加需求,如,量程比、总线类型等,依赖变送器的结构设计、机械加工工艺水平和结构材料。压力变送器的稳定性和高精度则主要由压力传感器的稳定性和测量精度保证。

    与压力变送器的测量精度相对应的是压力传感器的测量精度和响应速度,与压力变送器的稳定性相对应的是压力传感器的温度特性和静压特性以及长期稳定性。石化行业对压力传感器的需求就体现在测量精度、快速响应、温度特性和静压特性、长期稳定性4个方面。

    d8bbfa1c2a1b02dac08b701fa4edaebf.png

    2ef2f2d8eba44b7ce757672d273ecfc2.png

    3、压力传感器在水处理中的应用

    我国的环保水处理行业,近些年得到快速的发展,并且未来前景广阔。在供水和污水处理工艺中有赖于使用压力传感器为系统保护和质量保证提供重要控制和监测手段。

    b8bcec2c30fffae6ef71209bd6ac697f.png

    2ca1fe176e7ef286a708c202911fa1aa.png

    4、压力传感器在医疗行业中的应用

    随着医疗设备市场的发展,对压力传感器在医疗行业中使用提出了更高的要求,如精度、可靠性、稳定性、体积等都需要加以改进。压力传感器在微创导管消融术和体温传感器测量中有着较好的应用。

    微创手术不仅可以减少手术部位的创伤,而且大大减轻患者的疼痛,恢复过程也很快。能达到这样的要求,除了医生的手术操作经验之:外, 还与各种医疗监测设备。现在很多用于此操作的医疗器械都是微小的,像各种各样的导管和消融设备。导管包括热稀释导管、尿道管、食管导管和中心静脉导管和颅内压力容器等,它们除具有导电功能,导管在温度或压力传感器,患者的病理检查和微创手术的顺利进行提供了重要保障,温度和压力参数是成功操作的关键参数。

    传感器能够放置在靠近患者的位置对于许多应用来说非常关键,比如在透析应用中,准确地测量透析液和静脉压力就非常重要。压力传感器必须能够精确地监测透析液和血液的压力以确保其维持在所设定的范围内。

    此类型应用需求传感器必须外形小巧且能够耐受液体介质。在许多情况下,与液体介质不兼容的传感器需要额外安装部件来保护它,增加了产品的体积、费用以及复杂性。液体介质耐受力在监测病人呼吸时显得特别重要,因为此处的传感器必须能够承受病人的咳嗽和呼出的潮湿空气。

    ed5820764650eba2a2740a03e675cc42.png

    995c9de575eeaab68e02fb4be12b0d56.png

    —— END ——

    • 往期精选

    3dbdf6e5233206e468f937dccd5d2c32.pngcceb58eeff1e20bf48bae27a3f7735c8.png

    中国机床之路,为什么越走越窄?

    中国没有掌握的技术,何止是芯片

    地摊经济新风口:这些电子应用和平价的国产芯片即将爆发!

    f71f3d971c81583b55011490cb7cf796.png1ae20f12d3434e68228fe12d3081e539.gif
    展开全文
  • 压力传感器主要有偏移量误差、灵敏度误差、线性误差和滞后误差,本文将介绍这四种误差产生机理和对测试结果影响,同时将介绍为提高测量精度压力标定方法以及应用实例。  目前市场上传感器种类丰富多样,...
  • 关于压阻式压力传感器的设计以及外围电路 电桥的设计应用,以及应用电路设计,介绍了压阻式压力传感器的工作原理,以及相关应用电路,并给出了一个应用实例加以说明
  • MS5837压力传感器是一种可用于电路板上,适用于检测10-1200mbar压力范围传感器,灵敏度非常高,理论上能够检测到0.01mbar压力变化,实际使用过程中测试并无明显变化。 MS5837采用I2C总线通讯,与STM32MCU...

    MS5837压力传感器是一种可用于电路板上,适用于检测10-1200mbar压力范围的传感器,灵敏度非常高,理论上能够检测到0.01mbar的压力变化,实际使用过程中测试并无明显的变化。

    MS5837采用I2C总线通讯,与STM32的MCU可以实现I2C通讯。硬件连接方式如下:

    MS5837只有5个基本命令:复位、读取出厂校准值、数据1转换(压力值数据)、数据2转换(温度值数据)和读取ADC的转换结果。具体分配如下:

     

    因为MS5837的地址是固定的,所以一个I2C总线只能挂1个MS5837模块。为了让程序具有较好的可移植性,我们在便写程序时不使用对硬件的直接操作,而采用函数指针来操作,所以我们定义了:

    /*向MS5837下发指令,指令格式均为1个字节*/

    typedef void (*WriteCommandToMs5837Type)(uint8_t deviceAddress,uint8_t command);

    /*从MS5837读取多个字节数据的值*/

    typedef void (*ReadBytesFromMs5837Type)(uint8_t deviceAddress,uint8_t *pData,uint16_t bytesNum);

    以上两个函数指针来实现针对硬件的读写操作。接下来我们开始编写代码。

    1)复位操作

    复位操作的数据流如下图所示,只需要发送一条命令就可完成:

     

    /*复位MS5837操作*/
    
    void ResetForMs5837(uint8_t deviceAddress,WriteCommandToMs5837Type WriteCommandToMs5837)
    
    {
    
      uint8_t command=COMMAND_RESET;
    
      /*下发复位命令*/
    
      WriteCommandToMs5837(deviceAddress,command);
    
    }

    2)读取校准值

    校准值是出厂时厂家校准的各种系数,每台设备都有差异,是固定不变的,只需要一次读取就可以了,共有6个系数,均为16为整数。首先发送读系数的命令,然后读取就可以了,每次读取1个,分6次读取。过程数据流如下图所示:

     

    /*从MS5837的PROM中读取校准数据*/
    
    void GetCalibrationData(uint8_t deviceAddress,uint16_t *caliPara,WriteCommandToMs5837Type WriteCommandToMs5837,ReadBytesFromMs5837Type ReadBytesFromMs5837)
    
    {
    
      /*C1压力灵敏度*/
    
      caliPara[0]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C1,WriteCommandToMs5837,ReadBytesFromMs5837);
    
      /*C2压力补偿值*/
    
      caliPara[1]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C2,WriteCommandToMs5837,ReadBytesFromMs5837);
    
      /*C3压力灵敏度温度系数*/
    
      caliPara[2]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C3,WriteCommandToMs5837,ReadBytesFromMs5837);
    
      /*C4压力补偿温度系数*/
    
      caliPara[3]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C4,WriteCommandToMs5837,ReadBytesFromMs5837);
    
      /*C5参考温度*/
    
      caliPara[4]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C5,WriteCommandToMs5837,ReadBytesFromMs5837);
    
      /*C6温度传感器温度系数*/
    
      caliPara[5]=ReadPromFromMs5837(deviceAddress,COMMAND_PROM_READ_C6,WriteCommandToMs5837,ReadBytesFromMs5837);
    
    }

    3)读取转换值

    读取转换结果值是我们的目的,可以读取温度和压力两个量,不过一次只能读一个。首先发送命令设定采集压力还是温度,并设定精度。然后发送读取的命令,最后读取对应的值。再使用校准系数计算出最终的物理值。

     

    /*获取转换值,包括温度和压力*/
    
    void GetConversionValue(uint8_t deviceAddress,float *pPres,float *pTemp,uint16_t *caliPara,uint16_t *semaphore,WriteCommandToMs5837Type WriteCommandToMs5837,ReadBytesFromMs5837Type ReadBytesFromMs5837)
    
    {
    
      uint16_t senst1;        //C1压力灵敏度
    
      uint16_t offt1;         //C2压力补偿值
    
      uint16_t tcs;           //C3压力灵敏度温度系数
    
      uint16_t tco;           //C4压力补偿温度系数
    
      uint16_t tref;          //C5参考温度
    
      uint16_t tempsens;      //C6温度传感器温度系数
    
     
    
      /*从MS5837的PROM中读取校准数据*/
    
      if(*semaphore>0)
    
      {
    
        GetCalibrationData(deviceAddress,caliPara,WriteCommandToMs5837,ReadBytesFromMs5837);
    
        *semaphore=*semaphore-1;
    
      }
    
      senst1=caliPara[0];
    
      offt1=caliPara[1];
    
      tcs=caliPara[2];
    
      tco=caliPara[3];
    
      tref=caliPara[4];
    
      tempsens=caliPara[5];
    
     
    
      uint32_t digitalPressureValue;
    
      uint32_t digitalTemperatureValue;
    
     
    
      /*读取压力数据*/
    
      digitalPressureValue=ReadConversionFromMs5837(deviceAddress,COMMAND_CONVERTD1OSR4096,WriteCommandToMs5837,ReadBytesFromMs5837);
    
     
    
      Delayms(20);
    
     
    
      /*读取温度数据*/
    
      digitalTemperatureValue=ReadConversionFromMs5837(deviceAddress,COMMAND_CONVERTD2OSR4096,WriteCommandToMs5837,ReadBytesFromMs5837);
    
     
    
      /*对温度进行一阶修正*/
    
      int32_t dT;
    
      int32_t temp;
    
      dT=digitalTemperatureValue-tref*256;
    
      temp=(int32_t)(2000+dT*tempsens/pow(2,23));
    
     
    
      /*对压力进行一阶修正*/
    
      int64_t off;
    
      int64_t sens;
    
      int32_t pres;
    
      off=(int64_t)(offt1*pow(2,17)+(tco*dT)/pow(2,6));
    
      sens=(int64_t)(senst1*pow(2,16)+(tcs*dT)/pow(2,7));
    
      pres=(int32_t)((digitalPressureValue*sens/pow(2,21)-off)/pow(2,15));
    
     
    
      /*对温度和压力进行二阶修正*/
    
      int64_t ti=0;
    
      int64_t offi=0;
    
      int64_t sensi=0;
    
      int64_t off2=0;
    
      int64_t sens2=0; 
    
     
    
      if(temp<2000)
    
      {
    
        ti=(int64_t)(11*dT*dT/pow(2,35));
    
        offi=(int64_t)(31*(temp-2000)*(temp-2000)/pow(2,3));
    
        sensi=(int64_t)(63*(temp-2000)*(temp-2000)/pow(2,5));
    
       
    
        off2=off-offi;
    
        sens2=sens-sensi;
    
       
    
        temp=temp-(int32_t)ti;
    
        pres=(int32_t)((digitalPressureValue*sens2/pow(2,21)-off2)/pow(2,15));
    
      }
    
     
    
      if((-4000<=temp)&&(temp<=8500))
    
      {
    
        *pTemp=(float)temp/100.0;
    
      }
    
      if((1000<=pres)&&(pres<=120000))
    
      {
    
        *pPres=(float)pres/100.0;
    
      }
    
    }

    最终在STM32的I2C接口实现通讯时,实现2个WriteCommandToMs5837Type(uint8_t deviceAddress,uint8_t command);和ReadBytesFromMs5837Type(uint8_t deviceAddress,uint8_t *pData,uint16_t bytesNum);函数并调用就可以了,换做其他的平台也只需要重写这两个函数就能实现通讯了。

    转载于:https://www.cnblogs.com/foxclever/p/6533907.html

    展开全文
  • MSC1211是德州仪器公司(TI)新近推出的一款功能强大的带24位Σ-Δ A/D转换和16位D/A转换的微处理器。文中详细介绍了MSC1211的特点和性能,给出了它在智能压力传感器系统上的应用实例
  • 文中详细介绍了MSC1211的特点和性能,给出了它在智能压力传感器系统上的应用实例。  关键词:传感器;MSC1211;Σ-Δ A/D转换器;D/A转换器 在信息高速发展的今天,传感器的智能化和集成化成为其发展的两个...
  • 压力传感器

    2015-06-25 19:26:33
    压力传感器在全自动洗衣机中的应用实例
  • MS5803压力传感器支持SPI和I2C总线通讯,拥有24位AD转换。能够同时获得压力值和温度值,其中压力测量范围为10-1100mbar,温度测量范围是-40-85摄氏度。各引脚功能及参数如下: 传感器内部结构图如下: 通讯...

    MS5803压力传感器支持SPI和I2C总线通讯,拥有24位AD转换。能够同时获得压力值和温度值,其中压力测量范围为10-1100mbar,温度的测量范围是-40-85摄氏度。各引脚功能及参数如下:

    传感器内部结构图如下:

     

    通讯协议的选择通过PS引脚来设置:

    PS引脚电位

    通讯模式

    使用的引脚

    高电平

    I2C

    SDA, SCL, CSB

    低电平

    SPI

    SDI, SDO, SCLK, CSB

    在SPI模式下,SCLK作为外部输入时钟,SDI作为串行数据输入,支持Mode0和Mode3的时钟极性和相位。传感器的响应数据输出为SDO引脚,片选信号为CSB引脚。界限示意图如下:

     

    在I2C模式下,SCLK为外部串行时钟输入,SDA位串行数据通讯。CSB引脚作为地只选择,可以链接到VDD或者GND,这也意味着MS5803可以在一条I2C总线接两个设备。在CSP接高电平时,地址为0x76(1110110 b),而CSB接低电平时,地址为0x77 (1110111 b)这个地址是高七位,最后以为有读写命令来决定。实现写命令时,最后一位为0,实现读命令时,最后一位为1。

    MS5803拥有5个基本命令:复位、读取出厂校准值、数据1转换(压力值数据)、数据2转换(温度值数据)和读取ADC的转换结果。具体分配如下:

     

    因为MS5803的地址位仅有1位是可以设定的,所以一条I2C总线最多只能挂2个MS5803模块。为了让程序具有较好的可移植性,我们在便写程序时不使用对硬件的直接操作,而采用函数指针来操作,所以我们定义了:

    /*向MS5803下发指令,指令格式均为1个字节*/

    typedef void (*WriteCommandToMS5803Type)(uint8_t deviceAddress,uint8_t command);

    /*从MS5803读取多个字节数据的值*/

    typedef void (*ReadBytesFromMS5803Type)(uint8_t deviceAddress,uint8_t *pData,uint16_t bytesNum);

    以上两个函数指针来实现针对硬件的读写操作。接下来我们开始编写代码。

    1)复位操作

    复位操作的数据流如下图所示,只需要发送一条命令就可完成:

    /*复位MS5803操作*/
    
    void ResetForMS5803(uint8_t deviceAddress,WriteCommandToMS5803Type WriteCommandToMS5803)
    
    {
    
      uint8_t command=COMMAND_RESET;
    
      /*下发复位命令*/
    
      WriteCommandToMS5803(deviceAddress,command);
    
    }

    2)读取校准值

    校准值是出厂时厂家校准的各种系数,每台设备都有差异,是固定不变的,只需要一次读取就可以了,共有6个系数,均为16为整数。首先发送读系数的命令,然后读取就可以了,每次读取1个,分6次读取。过程数据流如下图所示: 

    /*从MS5803的PROM中读取校准数据*/
    
    void GetCalibrationData(uint8_t deviceAddress,uint16_t *caliPara,WriteCommandToMS5803Type WriteCommandToMS5803,ReadBytesFromMS5803Type ReadBytesFromMS5803)
    
    {
    
      /*C1压力灵敏度*/
    
      caliPara[0]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C1,WriteCommandToMS5803,ReadBytesFromMS5803);
    
      /*C2压力补偿值*/
    
      caliPara[1]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C2,WriteCommandToMS5803,ReadBytesFromMS5803);
    
      /*C3压力灵敏度温度系数*/
    
      caliPara[2]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C3,WriteCommandToMS5803,ReadBytesFromMS5803);
    
      /*C4压力补偿温度系数*/
    
      caliPara[3]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C4,WriteCommandToMS5803,ReadBytesFromMS5803);
    
      /*C5参考温度*/
    
      caliPara[4]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C5,WriteCommandToMS5803,ReadBytesFromMS5803);
    
      /*C6温度传感器温度系数*/
    
      caliPara[5]=ReadPromFromMS5803(deviceAddress,COMMAND_PROM_READ_C6,WriteCommandToMS5803,ReadBytesFromMS5803);
    
    }

    3)读取转换值

    读取转换结果值是我们的目的,可以读取温度和压力两个量,不过一次只能读一个。首先发送命令设定采集压力还是温度,并设定精度。然后发送读取的命令,最后读取对应的值。再使用校准系数计算出最终的物理值。

    /*获取转换值,包括温度和压力*/
    
    void GetConversionValue(uint8_t deviceAddress,float *pPres,float *pTemp,uint16_t *caliPara,uint16_t *semaphore,WriteCommandToMS5803Type WriteCommandToMS5803,ReadBytesFromMS5803Type ReadBytesFromMS5803)
    
    {
    
      uint16_t senst1;        //C1压力灵敏度
    
      uint16_t offt1;         //C2压力补偿值
    
      uint16_t tcs;           //C3压力灵敏度温度系数
    
      uint16_t tco;           //C4压力补偿温度系数
    
      uint16_t tref;          //C5参考温度
    
      uint16_t tempsens;      //C6温度传感器温度系数
    
     
    
      /*从MS5803的PROM中读取校准数据*/
    
      if(*semaphore>0)
    
      {
    
        GetCalibrationData(deviceAddress,caliPara,WriteCommandToMS5803,ReadBytesFromMS5803);
    
        *semaphore=*semaphore-1;
    
      }
    
      senst1=caliPara[0];
    
      offt1=caliPara[1];
    
      tcs=caliPara[2];
    
      tco=caliPara[3];
    
      tref=caliPara[4];
    
      tempsens=caliPara[5];
    
     
    
      uint32_t digitalPressureValue;
    
      uint32_t digitalTemperatureValue;
    
     
    
      /*读取压力数据*/
    
      digitalPressureValue=ReadConversionFromMS5803(deviceAddress,COMMAND_CONVERTD1OSR4096,WriteCommandToMS5803,ReadBytesFromMS5803);
    
     
    
      Delayms(20);
    
     
    
      /*读取温度数据*/
    
      digitalTemperatureValue=ReadConversionFromMS5803(deviceAddress,COMMAND_CONVERTD2OSR4096,WriteCommandToMS5803,ReadBytesFromMS5803);
    
     
    
      /*对温度进行一阶修正*/
    
      int32_t dT;
    
      int32_t temp;
    
      dT=digitalTemperatureValue-tref*256;
    
      temp=(int32_t)(2000+dT*tempsens/pow(2,23));
    
     
    
      /*对压力进行一阶修正*/
    
      int64_t off;
    
      int64_t sens;
    
      int32_t pres;
    
      off=(int64_t)(offt1*pow(2,17)+(tco*dT)/pow(2,6));
    
      sens=(int64_t)(senst1*pow(2,16)+(tcs*dT)/pow(2,7));
    
      pres=(int32_t)((digitalPressureValue*sens/pow(2,21)-off)/pow(2,15));
    
     
    
      /*对温度和压力进行二阶修正*/
    
      int64_t ti=0;
    
      int64_t offi=0;
    
      int64_t sensi=0;
    
      int64_t off2=0;
    
      int64_t sens2=0; 
    
     
    
      if(temp<2000)
    
      {
    
        ti=(int64_t)(11*dT*dT/pow(2,35));
    
        offi=(int64_t)(31*(temp-2000)*(temp-2000)/pow(2,3));
    
        sensi=(int64_t)(63*(temp-2000)*(temp-2000)/pow(2,5));
    
       
    
        off2=off-offi;
    
        sens2=sens-sensi;
    
       
    
        temp=temp-(int32_t)ti;
    
        pres=(int32_t)((digitalPressureValue*sens2/pow(2,21)-off2)/pow(2,15));
    
      }
    
     
    
      if((-4000<=temp)&&(temp<=8500))
    
      {
    
        *pTemp=(float)temp/100.0;
    
      }
    
      if((1000<=pres)&&(pres<=190000))
    
      {
    
        *pPres=(float)pres/100.0;
    
      }
    
    }

    最终在STM32的I2C接口实现通讯时,实现2个WriteCommandToMS5803Type(uint8_t deviceAddress,uint8_t command);和ReadBytesFromMS5803Type(uint8_t deviceAddress,uint8_t *pData,uint16_t bytesNum);函数并调用就可以了,换做其他的平台也只需要重写这两个函数就能实现通讯了。

    转载于:https://www.cnblogs.com/foxclever/p/6615901.html

    展开全文
  • android中自带传感器的接口与函数,主要有加速度、方向、压力、光、温度传感器,不同android机可能有的传感器没有,可以使用PC机和虚拟机互联的方式来模拟,此方法主要是调用模拟传感器的接口与函数,两者无大区别。...

        android中自带传感器的接口与函数,主要有加速度、方向、压力、光、温度传感器,不同android机可能有的传感器没有,可以使用PC机和虚拟机互联的方式来模拟,此方法主要是调用模拟传感器的接口与函数,两者无大区别。本例程建立在真机调试的情况。

        1.activity代码如下:

    package com.example.sensortest;
    
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Context;
    import android.widget.EditText;
    
    public class SensorTest extends Activity implements SensorEventListener
    {
    	private SensorManager  mSensorManager;
    	EditText etAccelerometer;
    	EditText etMagnetic;
    	//EditText etTemperature;
    	EditText etLight;
    	EditText etPressure;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_sensor_test);
    		//获取id
    		etAccelerometer =(EditText) findViewById(R.id.etAccelerometer);
    		etMagnetic =(EditText) findViewById(R.id.etMagnetic);
    		//etTemperature =(EditText) findViewById(R.id.etTemerature);
    		
    		etLight =(EditText) findViewById(R.id.etLight);
    		etPressure =(EditText) findViewById(R.id.etPressure);
    		//获取真机的sensor服务
    		 
    		mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    	 }
    
    	//@SuppressWarnings("deprecation")
    	@Override
    	protected void onResume()
    	{ 
    		super.onResume();
    		mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);
    		mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_GAME);
    		//	mSensorManager.registerListener(this, mSensorManager.get(Sensor.TYPE_TEMPERATURE), SensorManager.SENSOR_DELAY_GAME);
    		mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_GAME);
    		mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE), SensorManager.SENSOR_DELAY_GAME);
    		
    	}
    	@Override
    	protected void onStop()
    	{
    		mSensorManager.unregisterListener(this);
    	    super.onStop();
    	}
    	
    	/*
    	 @Override
    	protected void onPause()
    	{
    		mSensorManager.unregisterListener(this);
    		super.onPause();
    	}
    	*/
    	
    	@Override
    	public void onAccuracyChanged(Sensor sensor,int accuracy)
    	{
    		
    	}
    	
    	public void onSensorChanged(SensorEvent event)
    	{
    		float[] values =event.values;
    		int sensorType = event.sensor.getType();
    		StringBuilder sb = null;
    		switch(sensorType)
    		{
    		case Sensor.TYPE_ACCELEROMETER:
    			sb = new StringBuilder();
    			sb.append("绕Z转过的角度");
    			sb.append(values[0]);
    			sb.append("\n绕X转过的角度");
    			sb.append(values[1]);
    			sb.append("\n绕Y转过的角度");
    			sb.append(values[2]);
    			etAccelerometer.setText(sb.toString());
    			break;
    		case Sensor.TYPE_MAGNETIC_FIELD:
    			sb = new StringBuilder();
    			sb.append("X方向的角度");
    			sb.append(values[0]);
    			sb.append("\nY方向的角度");
    			sb.append(values[1]);
    			sb.append("\nZ方向的角度");
    			sb.append(values[2]);
    			etMagnetic.setText(sb.toString());
    			break;
    	/*	case Sensor.TYPE_TEMPERATURE:
    			sb = new StringBuilder();
    			sb.append("当前温度为:");
    			sb.append(values[0]);
    			etTemperature.setText(sb.toString());
    			break;*/
    		case Sensor.TYPE_LIGHT:
    			sb = new StringBuilder();
    			sb.append("当前光强:");
    			sb.append(values[0]);
    			etLight.setText(sb.toString());
    			break;
    		case Sensor.TYPE_PRESSURE:
    			sb = new StringBuilder();
    			sb.append("当前压力为:");
    			sb.append(values[0]);
    			etPressure.setText(sb.toString());
    			break;			
    			
    		}
    				
    				
    				
    	}
    
    }
    

      2.layout下的布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    	xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="vertical"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent">
    	
        
    <TextView
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="@string/accelerometer"
        	 />
         
    <EditText
    	android:id="@+id/etAccelerometer"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:editable="false"
    	android:cursorVisible="false" />
    
    
    <TextView
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="@string/magnetic" />
      <EditText
    	android:id="@+id/etMagnetic"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:editable="false"
    	android:cursorVisible="false" />
      
    
    <TextView
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="@string/light" />
    <EditText
    	android:id="@+id/etLight"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:editable="false"
    	android:cursorVisible="false" />	
    	
    	
    <TextView
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="@string/pressure" />
    <EditText
    	android:id="@+id/etPressure"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:editable="false"
    	android:cursorVisible="false" />			
    </LinearLayout>

    3. strings.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <string name="app_name">SensorTest</string>
        <string name="action_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
        <string name="accelerometer">速度传感器的值</string>
        <string name="magnetic">磁场传感器的值</string>
        <string name="light">光传感器的值</string>
         <string name="pressure">压力传感器的值</string>
                
    </resources>
    

    4.真机测试。





    展开全文
  • 摘要:描述MPXY8020的结构、主要参数及特性,简单介绍MPXY8020在汽车轮胎压力检测系统中的应用方法并给出应用实例。  关键词:MPXY8020;轮胎压力检测系统;汽车电子   随着汽车工业的发展,人们越来越关注汽车...
  • 描述MPXY8020的结构、主要参数及特性,简单介绍MPXY8020在汽车轮胎压力检测系统中的应用方法并给出应用实例
  • 本手册为亚为推出YAV P压力传感器专用采集卡用户手册,主要内容包括功能概述、1路压力传感器信号采集功能、2路数字量输入功能、2路数字量输出功能、串口RS232通信、应用实例、性能测试、注意事项及故障排除等。...
  • 传感器应用接口电路PDF书

    热门讨论 2009-02-10 18:48:55
    第二节半导体压力传感器的基本应用电路 一、压力悻感器实用放大电路 二、Ⅲ力传感器怔流J:作的基本应用电路 二、压力传感器恒压工作的塾奉成用电路 四、牛’}体压山传感器的补偿、调整技术 第三节 半导体压力...
  • 下面就有关SBE 37-SI MicroCAT温盐深传感器在潜水器中数据采集过程进行探讨,对其中传输格式不对应,不便于直接传输,提出一种可行设计方案和思路,并给出一个已经得到应用的实例进行说明。
  • 智能传感器

    2014-04-25 00:15:33
    主要内容包括智能传感器的基本概念,基于dsPIC系列数字信号控制器设计智能传感器的方法,以及温度检测、压力和称重检测、流量检测三种典型应用的设计实例。这些实例包含丰富的硬件电路图、软件流程图以及很多设计...
  • 最近在我们使用STM32F1VET6读取压力和温湿度传感器数据时,就是使用I2C接口来实现通讯。但在使用I2C和STM32F1标准库读取数据时出现了死机现象。其现象是这样,程序可以顺利运行,但I2C没有数据返回。用示...
  • 《实例解读模拟电子技术完全学习与应用(配教学视频)》通过丰富多彩的应用实例,由浅入深地剖析模拟电子电路各方面的知识。例如,通过电子地动仪的介绍带领读者进入电子学的殿堂,通过USB充电器和电池保护器介绍有关...
  • 硅应变计优点在于高灵敏度。硅材料中应力引起体电阻变化。相比那些仅靠电阻尺寸变化引起电阻变化金属箔或粘贴丝式应变计,其输出通常要大一个数量级。... MEMS 器件 常见一个实例是硅压力传感
  • 力传感器可以用来测量物体的质量,最常见的应用就是电子秤。而关于力传感器的信号处理,在开发设计中未必是...力传感器力传感器的种类繁多,如电阻应变片压力传感器、半导体应变片压力传感器、压阻式压力传感器、电...
  • 该方案可将水位、压力、真空度、流量等传感器信号传输给启动器中PLC,由一台组合启动器来控制多台水泵电动机,直接实现排水系统自动控制。重点介绍组合启动器基本组成和功能,给出了一个PLC选型和编程的实例
  • Android实例代码

    2012-08-22 17:12:34
    压力传感器Pressure; 第16章、GPS应用开发 16.1、支持GPS核心API: 16.2、获取LocationProvider: 16.3、获取定位信息: 16.4、临近警告: 第17章、使用Google Map服务 17.1、调用Google Map准备: 17.2...
  • MCU的应用范围4.1 智能仪器4.2 工业控制4.3 家用电器4.4 网络和通信4.5 医用设备4.6 模块化系统4.7 汽车电子4.8 MCU应用实例介绍 4. MCU的应用范围 4.1 智能仪器 ​ 单片机具有体积小、功耗低、控制功能强、扩展...
  • 实际工业应用中常常由传感器采集压力、温度、速度等非电信号,并将这些非电量转换为电压或电流信号再传输给PLC、单片机等控制系统,此时这些信号均为模拟量。我们往往要对PLC中采集模拟量信息进一步加工处理,...
  • 设计的实例是专为汽车应用设计轮胎压力监测(TPM)系统,主要用来监测轮胎内部的压力和温度。当然,本设计亦可作为其它近距离无线监测设备设计参考。系统组成TPM系统主要由传感器/发送器(S/TX)部件,射频(RF...
  • pic IIC通信

    2013-01-10 17:04:13
    基于pic单片机IIC模式数据采样实例压力传感器应用
  • 2.9 低成本高精度压力传感器微机接口设计147 2.10 峰值检测电路原理及应用151 2.11 用 LF398制作实用峰值和谷值保持电路153 2.12 AD637集成真有效值转换器156 2.13 传感器信号调理模块 ZB31162 2.14 2B31模块在...
  • 第七章 应用实例 7.1 IC卡读/写器设计 7.2 串行EEPROM读写器设计 7.3 带IC卡接口智能仪器设计 7.4 便携式全汉化IC卡终端机 7.5 微功耗袖珍照明计时器 7.6 PIC16C57单片机构成温度...
  • 1.3.5 强大的应用程序开发支持 12 1.3.6 丰富、安全的应用集成 12 1.3.7 无障碍发布 13 1.3.8 为应用程序提供的“自由市场” 13 1.3.9 新生并逐渐成长的平台 14 1.4 Android平台 14 1.4.1 Android的...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

压力传感器的应用实例