当前位置:首页 > 公众号精选 > 21ic电子网
[导读]TMP100温度传感器最近一个新项目,板子尺寸有限,对传感器功耗要求也高,之前用的插件是RW1820温度传感器,位置不够了,就换成立TMP100贴片式的SOT23-6封装,完整的料号是TMP100AQDBVRQ1,TI出品的。看了一下资料精度±1℃,实际测试差不多2℃的样子,不过一般测温项目够用了。

出品  21ic论坛  laocuo1142

网站:bbs.21ic.com


TMP100温度传感器最近一个新项目,板子尺寸有限,对传感器功耗要求也高,之前用的插件是RW1820温度传感器,位置不够了,就换成立TMP100贴片式的SOT23-6封装,完整的料号是TMP100AQDBVRQ1,TI出品的。看了一下资料精度±1℃,实际测试差不多2℃的样子,不过一般测温项目够用了。


详细参数:
供电电压:2.7V~5V
接口类型:I2C
分辨率:9 bit to 12 bit
工作温度:-40℃~125℃
工作电流:150uA
操作频率:100 KHz /400KHz/3.4MHz

项目经验:TMP100温度传感器设计全过程
[size=14.0000pt]你如果需要低功耗的话,直接初始化为9bit,关断模式。关断模式就是采集转换一次温度数据之后,传感器自动进入cut down模式。
[size=13.3333px]uint8 TMP100_init(void)
[size=13.3333px]{
[size=13.3333px]    I2CStart();                             //启动I2C总线
[size=13.3333px]

[size=13.3333px]          I2CWriteByte(slaveaddr);                //发送从器件地址 90 写寄存器
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }                  
[size=13.3333px]          I2CWriteByte(0x01);                            //发送配置寄存器地址0x01
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }
[size=13.3333px]          I2CWriteByte(0x01);                                //写配置寄存器0x81????  0x01  设置为关断模式 读9bit
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }      
[size=13.3333px]          I2CStop();
[size=13.3333px]    return 1;
[size=13.3333px]}
然后每次读就转换一次,这样功耗是非常低的。
[size=13.3333px]uint8 Read_TMP100(void)
[size=13.3333px]{
[size=13.3333px]        volatile uint8 tempH,tempL;
[size=13.3333px]    uint8 i=0;
[size=13.3333px]    uint8 Tmp[2];
[size=13.3333px]     /*--设置温度探头寄存器--*/
[size=13.3333px]        I2CStart();                             //启动I2C总线
[size=13.3333px]

[size=13.3333px]          I2CWriteByte(slaveaddr);                //发送从器件地址 90 写寄存器
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }                  
[size=13.3333px]          I2CWriteByte(0x01);                            //发送配置寄存器地址0x01
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }
[size=13.3333px]          I2CWriteByte(0x81);                                //写配置寄存器0x81????  0x81  设置为读9bit
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }      
[size=13.3333px]          I2CStop();
[size=13.3333px]

[size=13.3333px]  /*--开始读取数据操作--*/
[size=13.3333px]          I2CStart();                             //启动I2C总线        
[size=13.3333px]          //I2CWriteByte(slaveaddr+1);              //发送从器件地址
[size=13.3333px]    I2CWriteByte(slaveaddr);                  //发送从器件地址
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }
[size=13.3333px]    I2CWriteByte(0x00);                      //读取温度寄存器
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }
[size=13.3333px]                        
[size=13.3333px]///**********************等待转换完毕**************************/         
[size=13.3333px]        DelayMCU_ms(40);
[size=13.3333px]         
[size=13.3333px]/***********************读取温度***************************/
[size=13.3333px]    I2CStart();
[size=13.3333px]   
[size=13.3333px]    I2CWriteByte(slaveaddr+1);                      //读取温度寄存器
[size=13.3333px]          if(I2CWaitACK()==0)                                 //从地址无响应
[size=13.3333px]          {
[size=13.3333px]                  return 0;
[size=13.3333px]          }
[size=13.3333px]          tempH = I2CReadByte();                                //读取温度高字节        
[size=13.3333px]          I2CSendAck();
[size=13.3333px]

[size=13.3333px]          tempL = I2CReadByte();                                //读取低字节        
[size=13.3333px]          I2CSendNoAck();         
[size=13.3333px]   
[size=13.3333px]          I2CStop();
[size=13.3333px]//    RealTemp = (int16)(((uint16)tempH<<8)+tempL);
[size=13.3333px]    RealTemp = (int16)(((uint16)tempH<<3)+((tempL>>7)*4));
[size=13.3333px]          return 1;
[size=13.3333px]}


9bit采集的话,主要就是0.5℃为一个采集间隔,按着这个传感器的精度,其实也差不多了。 

项目经验:TMP100温度传感器设计全过程   [size=18.6667px]

待机功耗确实非常低,官方标称的0.1uA,确实是的,不需要另外加电源控制了。
项目经验:TMP100温度传感器设计全过程

[size=10.5000pt]

[size=10.5000pt]

温度寄存器和温度计算方法。

项目经验:TMP100温度传感器设计全过程

对应的计算公式:
温度值= T11×27 + T10×26 +T9×25 +T8×24+T7×23+T6×22+T5×21+
T4×20+T3×2-1+T2×2-2+T1×2-3+T0×2-4

选择12 Bits 位精度时,有效位为T11~T0,最低位从T0开始,故分辨率为0.0625℃

选择11 Bits 位精度时,有效位为T11~T1,最低位从T1开始,故分辨率为0.125℃

选择10 Bits 位精度时,有效位为T11~T2,最低位从T2开始,故分辨率为0. 25℃

选择9 Bits 位精度时,有效位为T11~T3,最低位从T3开始,故分辨率为0.5℃

我这个项目使用的是9位数据,这样的转换时间是最短的。

项目经验:TMP100温度传感器设计全过程

实际测试我都是延时40ms,去采集12bit的温度,也是可以正常采集的。

IIC的程序我就暂时不贴了,如果有需要可以留言。现在流行IOT产品越来越多了,温度是一个常规的参数,这个传感器也是一个好选择。

在电路上,只需要在通讯线上接上拉电阻就行了,如下图:

项目经验:TMP100温度传感器设计全过程


本文系21ic论坛网友laocuo1142原创



项目经验:TMP100温度传感器设计全过程

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

21ic电子网

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭