查看: 2721|回复: 2

[EVAL-WSN]传感器篇——ADT75温度传感器

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

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-12-20 11:02:30 | 显示全部楼层 |阅读模式
    分享到:
           ADT75 是一款 精度±2.0°C(−25℃至+100°C),分辨率0.0625°C/LSB  12位数字温度传感器 SMBus/I2C总线
            注意点:

           1)1条SMBus/I2C总线最多挂8个ADT75       2)ADT75温度值寄存器是左对齐的,这有利于数据的处理,由12位二进制补码字表示。MSB是温度符号 位。四个LSB(位DB0至DB3)不是温度转换结果的一部分, 始终为0。也就是说读出来,就是有符号的16位
           1.png
    ADSENSORAPP_RESULT_TYPE Get_Temp_From_ADT75()
    {
        uint16_t Data;
        ADSENSORAPP_RESULT_TYPE result;
        result = adsAPI_I2C_Reg_Write_Byte(ADT75_DEV_ADDR, ADT75_ONESHOT_REG_ADDR, ADT75_ONESHOT_REG_DEFVAL);       //One-Shot Mode
        //adsAPI_Delay(ADI_Sensor_Delay);
        result = adsAPI_I2C_Reg_Read_Word(ADT75_DEV_ADDR, ADT75_TEMPVAL_REG_ADDR, &Data, 0);
        if(result == API_FAIL)
            SensData.ADT75 = 0;
        else {
            #if 0
            //Data = 0xE700;  //-25
            Data = Data >> 4;
            if (Data >> 11)
                SensData.ADT75 = (((float)Data) - 4096)/16;
                
            else
                SensData.ADT75 = ((float) Data)/16;
            #else
            SensData.ADT75 = ((float)((int16_t)Data/16) )/16;
            #endif
        }
        return result;
    }
            3)初始化

            ADT75 只有四个寄存器

    2.png
    依次配置 Thyst  Tos  配置寄存器,即可
    ADSENSORAPP_RESULT_TYPE ADT75_Config_for_Intr()
    {
        uint8_t status = 0;
    //=========================== Program Critical Temperature Registers to raise interrupt ======================================//
        /*设置超过高温 OS/ALERT引脚激活*/
        status = adsAPI_I2C_Reg_Write_Word(ADT75_DEV_ADDR, ADT75_OVERTEMP_REG_ADDR, (OVER_TEMP_LIMIT*256));
       
        /*设置由高温降至某正常值 OS/ALERT引脚复位*/
        status = adsAPI_I2C_Reg_Write_Word(ADT75_DEV_ADDR, ADT75_HYST_REG_ADDR,     (HYST_TEMP_LIMIT*256));
        /*至于 OS/ALERT 极性由ADT75_CONFIG_REG_ADDR配置寄存器D2设置*/
    //=========================== Program Config Register to run ADT75 in Cont/one-shot mode =====================================//
    #ifdef LOWPOWER_EVENT_MODE
        status = adsAPI_I2C_Reg_Write_Byte(ADT75_DEV_ADDR, ADT75_CONFIG_REG_ADDR,  0x02);     //0x26 //Continuous mode + Interrupt enabled
    #else
        status = adsAPI_I2C_Reg_Write_Byte(ADT75_DEV_ADDR, ADT75_CONFIG_REG_ADDR,  0x22);     //0x26 //One-Shot mode
    #endif
        if(status == ADI_I2C_SUCCESS)
            return API_SUCCESS;
        else
            return API_FAIL;
    }







    回复

    使用道具 举报

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

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-12-20 21:01:51 | 显示全部楼层
    数字温度传感器比较方便,就是成本高一些。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-12-21 09:29:15 | 显示全部楼层
    多谢分享!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 20:32 , Processed in 0.133551 second(s), 21 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.