【气压传感器】

本文介绍了霍尼韦尔的RSC系列气压传感器,适合用于移液枪中,具有高分辨率、高精度和温度补偿特性。传感器提供SPI和I2C数字接口,易于集成到PCB设计中,适用于医疗领域。代码示例展示了传感器的SPI接口使用。
摘要由CSDN通过智能技术生成


前言

气压传感器供应商较多,如霍尼韦尔,first sensor,TE,CFsensor,西人马等。本文介绍一种适用于移液枪中气压传感器,霍尼韦尔的RSC 系列 – 高分辨率,高精度,带温度补偿。


一、原理图

市场中的移液枪如hamilton,其内部气压传感器使用First seneor差压式。本次使用霍尼韦尔的RSC系列,成本较高但性能好。
RSC气压传感器
PCB
气压传感器
• 绝压式:1.6mbar-10bar;0-15psi
• 差压式:1.6mbar-4bar
• 医疗用:0-50°C
• 精度:+/-0.1%FSS
• 供电:2.7-5V
• 数字接口:SPI,I2C
• 功能:气压监测
• 供应商:霍尼韦尔,TE,First sensor
RSC系列气压传感器减少转换要求以及直接连接至微处理器加快输出速度。易于设计集成,相比于许多同类传感器,它的封装尺寸非常小,因此在PCB板上的占据空间更小。它提供多种端口和外壳选项,简化了集成设计过程。
• 按照传感器重新设计PCB,加接插端子,插拔
• SPI数字接口
• 哈美顿气压传感器:RSCDJJM010MDSE3
高分辨率,双列直插,单径向倒钩端口,医疗用,差压+/-10mbar,SPI接口,外部运算,3.3V供电

RSC

二、代码

代码如下(示例):

/*
 --------------------------------------------------------------------------------
    Global Function Definitions
 --------------------------------------------------------------------------------
 */

/*! \fn       Compensate_Pressure_Init
 *  \brief    Functional To Initialize the Compensate Pressure module.
 *  \details  Functional To Initialize the Compensate Pressure module,
 *            By validating EEPROM map and extracting the coefficients.
 *  \param    u8EEPROM_ptr  - Pointer to EEPROM image which is read bytewise
 *                            in a contiguous memory buffer.
 *  \return   CompStatus_Enum
 *                          COMPINIT_OK - Compensation init successful
 *                          COMPINIT_NOK - Compensation init failure
 *
 *  \verbatim
 *  \endverbatim
 */
CompStatus_Enum Compensate_Pressure_Init(unsigned char *u8EEPROM_ptr)
{
   
    unsigned char u8i;
    unsigned short int u16k = 0u;
    unsigned short int CRC16_Computed = 0xFFFF;
    unsigned long int u32temp;

    /*! Copy EEPROM Contents */
    /*! Copy Part number from EEPROM MAP */
    for(u8i = 0u; u8i < PART_NO_SIZE; u8i++)
    {
   
        EEPROM_MAP.au8PartNumber[u8i] = (unsigned char)*((unsigned char *)u8EEPROM_ptr + PARTNUMBER_ADDRESS + u8i);
    }

    /*! Copy Serial number from EEPROM MAP */
    for(u8i = 0u; u8i < SERIAL_NO_SIZE; u8i++)
    {
   
        EEPROM_MAP.au8SerialNumber[u8i] = (unsigned char)*((unsigned char *)u8EEPROM_ptr + SERIALNUMBER_ADDRESS + u8i);
    }

    /*! Copy Pressure Range from EEPROM MAP */
    u32temp = READ32_ADV((unsigned char *)u8EEPROM_ptr + PRESSURERANGE_ADDRESS);
    EEPROM_MAP.f32Pressure_Range = *((float*)&u32temp);

    /*! Copy Pressure Offset from EEPROM MAP */
    u32temp = READ32_ADV((unsigned char *)u8EEPROM_ptr + PRESSUREOFFSET_ADDRESS);
    EEPROM_MAP.f32PressureOffset = *((float*)&u32temp);

    /*! Copy Pressure unit from EEPROM MAP */
    for(u8i = 0u; u8i < PRESSURE_UNIT_SIZE; u8i++)
    {
   
        EEPROM_MAP.au8PressureUnit[u8i] = (unsigned char)*((unsigned char *)u8EEPROM_ptr + PRESSUREUNITS_ADDRESS + u8i);
    }

    /*! Copy Pressure reference from EEPROM MAP */
    EEPROM_MAP.u8PressureReference = (unsigned char)*((unsigned char *)u8EEPROM_ptr + PRESSUREREFERENCE_ADDRESS);

    /*! Copy ADC default configuration data from EEPROM MAP */
    for(u8i = 0u, u16k = 0u; u8i < 4u; u8i++, u16k += 2u)
    {
   
        EEPROM_MAP.au16ADC_Config[u8i] = (unsigned short int)READ16_ADV(((unsigned char *)u8EEPROM_ptr + ADCCONFIG_ADDRESS + u16k));
//			printf(" %#x \r\n",EEPROM_MAP.au16ADC_Config[u8i]);
    }

    /*! Copy coefficients set 1 from EEPROM MAP */
    for(u8i = 0u, u16k = 0u; u8i < DEGREE_POLYNOMIAL; u8i++, u16k += 4u)
    {
   
        u32temp = READ32_ADV((unsigned char *)u8EEPROM_ptr + COEFF1_ADDRESS + u16k);
        EEPROM_MAP.af32Coeff1[u8i] = *((float*)&u32temp);
    }

    /*! Copy coefficients set 2 from EEPROM MAP */
    for
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值