查看: 2745|回复: 2

[EVAL-WSN]传感器篇——SHT21湿温传感器

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-8 16:17
  • 签到天数: 971 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-1 16:52:13 | 显示全部楼层 |阅读模式
    分享到:
    一、性能介绍
    Sensirion SHT21 是I2C 湿度和温度传感器 +/-2% RH accuracy
    1.jpg
    2.png
    物理量的转换公式
    3.png
    二、硬件电路
    4.png
    SCL和 SDA信号线相互平行并且非常接 近,有可能导致信号串扰和通讯失败。解决方法是在两个信号线之间放置 VDD和/或 GND,将信号线隔开,和使用屏蔽电缆
    须在电源引脚(VDD,GND)之间加一个 100nF的去藕电容,用于滤波。此电容应尽量靠近传感器
    三、I2C命令
    5.png
    有两个模式 hold master 与 no hold master
    6.png
    7.png
    hold master 模式,SHT21 转到master 模式,对CLK 控制,直至转换结束,期间I2C不能用于其他的通信
    no hold master模式 SHT21 没有对CLK 控制,期间MCU可以和其他的通信,在没有转换结束是SHT21不产生应答信号
    STH21的device address 为0x40
    #define SHT21_DEV_ADDR         0x40//Current Sensirion Device Addr =0x40
    #define RH_MEAS_CONST                           (-6)
    #define T_MEAS_CONST                            (-46.85)
    #define RH_MEAS_MULT_CONST12                    0.03051 // (125/2^RES); RES=12-bit for RH
    #define T_MEAS_MULT_CONST14                     0.01054 // (172.72/2^RES); RES=14-bit for Temp
    #define SHT21_I2C_WRITE_ADDR                0x80// (SHT21_DEV_ADDR<<1)|0
    #define SHT21_I2C_READ_ADDR                0x81// (SHT21_DEV_ADDR<<1)|1
    #define SHT21_Delay                0x1F //0x1FFF  //how much?????????????
    #define SHT21_TRIG_T_MEAS_HOLDMASTER0xE3
    #define SHT21_TRIG_RH_MEAS_HOLDMASTER0xE5
    #define SHT21_WRITE_USER_REGISTER        0xE6
    #define SHT21_READ_USER_REGISTER        0xE7
    #define SHT21_TRIG_T_MEAS_NO_HOLDMASTER0xF3//POLL MODE
    #define SHT21_TRIG_RH_MEAS_NO_HOLDMASTER    0xF5//POLL MODE
    #define SHT21_SOFT_RESET_REGISTER        0xFE
    #define SHT21_RESOLUTION_RH12BIT_T14BIT     0x00   //12-bit RH & 14-bit Temperature (DEFAULT)
    #define SHT21_RESOLUTION_RH8BIT_T12BIT      0x01   //8-bit RH & 12-bit Temperature
    #define SHT21_RESOLUTION_RH10BIT_T13BIT     0x80   //10-bit RH & 13-bit Temperature
    #define SHT21_RESOLUTION_RH11BIT_T11BIT     0x81   //12-bit RH & 14-bit Temperature
    #define SHT21_END_OF_BATTERY_ON             0x40
    ADSENSORAPP_RESULT_TYPE SHT21_Init()
    {
        ADSENSORAPP_RESULT_TYPE status;
    //status = adsAPI_I2C_Reg_Write_Byte(SHT21_DEV_ADDR, SHT21_SOFT_RESET_REGISTER,0x00);
    //adsAPI_Delay(SHT21_Delay*1000);
        status = adsAPI_I2C_Reg_Write_Byte(SHT21_DEV_ADDR,SHT21_WRITE_USER_REGISTER,SHT21_RESOLUTION_RH12BIT_T14BIT);//设置分辨率
        adsAPI_Delay(SHT21_Delay);
    return  status;
    }
    ADSENSORAPP_RESULT_TYPE Get_Temp_From_SHT21()
    {
        uint16_t Data;
        ADSENSORAPP_RESULT_TYPE result;
        NVIC_DisableIRQ(WUT_IRQn);
        result = adsAPI_I2C_Reg_Read_Word(SHT21_DEV_ADDR, SHT21_TRIG_T_MEAS_HOLDMASTER, &Data, 1);
    //result = adsAPI_I2C_Reg_Read_Word(SHT21_DEV_ADDR, SHT21_TRIG_T_MEAS_NO_HOLDMASTER, &Data, 1);
        NVIC_EnableIRQ(WUT_IRQn);
    if(result == API_FAIL) {
            SensData.SHT21_T=0.00;
    } else {
            Data = Data >> 2;
            SensData.SHT21_T = (float) (T_MEAS_CONST + (T_MEAS_MULT_CONST14 * Data)); //Temparature = (-46.85+176.72*St/2^RES)
    }
    return result;
    }
    ADSENSORAPP_RESULT_TYPE Get_RH_From_SHT21()
    {
        uint16_t Data;
        ADSENSORAPP_RESULT_TYPE result;
        NVIC_DisableIRQ(WUT_IRQn);//避免中断的干扰
        result = adsAPI_I2C_Reg_Read_Word(SHT21_DEV_ADDR, SHT21_TRIG_RH_MEAS_HOLDMASTER, &Data, 1);
    //result = adsAPI_I2C_Reg_Read_Word(SHT21_DEV_ADDR, SHT21_TRIG_RH_MEAS_NO_HOLDMASTER, &Data, 1);
        NVIC_EnableIRQ(WUT_IRQn);
    if(result == API_FAIL) {
            SensData.SHT21_RH=0.00;
    } else {
            Data = Data >> 4;
            SensData.SHT21_RH = (float) (RH_MEAS_CONST + (RH_MEAS_MULT_CONST12 * Data)); //Relative Humidity = (-6 + 125*RHval/2^RES)
    }
    return result;
    }
    8.png

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-14 12:16
  • 签到天数: 827 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-1 19:02:00 | 显示全部楼层
    和SHT11有什么区别?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-1 10:07
  • 签到天数: 1617 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2016-1-1 21:09:34 | 显示全部楼层
    代码用帖子中的代码工具(就是两个尖括号那个)发,格式就不会乱。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 01:26 , Processed in 0.134373 second(s), 19 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.