搜索
bottom↓
回复: 14

有没有用过SHT30的大大,为啥我的程序上温度比实际要高?

[复制链接]

出0入0汤圆

发表于 2017-4-27 11:45:18 | 显示全部楼层 |阅读模式
现在用SHT30和DS18B20的同时测试同一环境下的温度,SHT30总比温度计高2度,而DS18B20和温度计是差不多,这个是设备误差吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-4-27 12:52:00 | 显示全部楼层
用过SHT31,通电后温度会缓慢上升1~2度,发现和电路板本身温升有关

出0入0汤圆

 楼主| 发表于 2017-4-27 13:21:24 | 显示全部楼层
dianyuan 发表于 2017-4-27 12:52
用过SHT31,通电后温度会缓慢上升1~2度,发现和电路板本身温升有关

可是我的电路板都是低功耗设备,没有大电流,也会有温升?

出0入0汤圆

发表于 2017-4-27 13:50:46 | 显示全部楼层
我的读不出温湿度, 不知道是否硬件问题 , 楼主能否把代码贴出来?

出0入0汤圆

 楼主| 发表于 2017-4-27 15:10:07 | 显示全部楼层
ponder2077 发表于 2017-4-27 13:50
我的读不出温湿度, 不知道是否硬件问题 , 楼主能否把代码贴出来?
  1. bool SHT30_Get_Temp_And_Humi(int16_t *temperature, uint8_t *humiditiy)
  2. {
  3.     uint8_t  command[2] = {0};
  4.     uint8_t  data[6] = {0};
  5.     uint16_t t_tmp = 0;                  /* temperature tmp */
  6.     uint16_t h_tmp = 0;                  /* humiditiy tmp */

  7.     uint16_t num_of_bytes = 0;

  8.     init_I2C(SHT30_SLAVE_ADDRESS,I2C_400K_BAUDRATE);

  9.     /* soft reset sht30 */
  10.     command[0] = 0x30;
  11.     command[1] = 0xA2;

  12.     if(I2C_send_bytes(command, 2, &num_of_bytes) != I2C_SUCCESS)
  13.     {
  14.         /* soft reset error */
  15.         return false;
  16.     }

  17.     if(I2C_stop() != I2C_SUCCESS)
  18.     {
  19.         /* stop I2C error */
  20.         return false;
  21.     }
  22.     /* between soft reset command and sensor entering idle state : 0.5S(MAX) */
  23.     DELAY_MS(1);

  24.     /* start measurement in clock stretching mode(high repeatability) */
  25.     command[0] = 0x2C;
  26.     command[1] = 0x06;

  27.     if(I2C_send_bytes(command, 2, &num_of_bytes) != I2C_SUCCESS)
  28.     {
  29.         /* measurement error */
  30.         return false;
  31.     }

  32.     if(I2C_stop() != I2C_SUCCESS)
  33.     {
  34.         /* stop I2C error */
  35.         return false;
  36.     }

  37.     /* Duration for a humidity and temperature measurement : 13.5S(MAX) */
  38.     DELAY_MS(15);

  39.     if(I2C_read_bytes(data, 6, &num_of_bytes) == I2C_SUCCESS)
  40.     {
  41.         if(SHT30_Calc_CRC(data, 2) != data[2])
  42.         {
  43.             /* temperature data CRC error */
  44.             return false;
  45.         }

  46.         if(SHT30_Calc_CRC((data + 3), 2) != data[5])
  47.         {
  48.             I2C_stop();
  49.             /* humidity data CRC error */
  50.             return false;
  51.         }

  52.         /* combine the two bytes to a 16-bit value */
  53.         t_tmp = (data[0] << 8) | data[1];
  54.         h_tmp   = (data[3] << 8) | data[4];

  55.         /* calculate temperature [°C] T*10 = -45 + 175 * tmp / (2^16-1) */
  56.         *temperature = (int16_t)(1750.0f * (float)t_tmp / 65535.0f - 450.0f);
  57.         /* calculate relative humidity [%RH] RH = tmp / (2^16-1) * 100*/
  58.         *humiditiy   = (uint8_t)(100.0f * (float)h_tmp / 65535.0f);
  59.     }
  60.     else
  61.     {
  62.         /* read data error */
  63.         return false;
  64.     }

  65.     if(I2C_stop() == I2C_SUCCESS)
  66.     {
  67.         /* read success */
  68.         return true;
  69.     }
  70.     else
  71.     {
  72.         /* stop I2C error */
  73.         return false;
  74.     }
  75. }
复制代码

出0入442汤圆

发表于 2017-4-27 22:00:55 来自手机 | 显示全部楼层
gsq19920418 发表于 2017-4-27 13:21
可是我的电路板都是低功耗设备,没有大电流,也会有温升?

只要有电流,就有温升,区别是高或低。基本上可以以电压*电流得到每秒产生的热量,再除以板子的热容,再减个空气对流系数,就是板子的温升。小板子100mw功耗在密闭环境慢慢放着也会升个30度,除非你的板子是uw级的,不过我认为可能性不大。

出0入0汤圆

发表于 2017-4-27 22:40:57 来自手机 | 显示全部楼层
我做过测试,盛思睿的sht1-3系列传感器,都多少偏高

出0入9汤圆

发表于 2017-4-27 23:22:43 | 显示全部楼层
要不要试一试SHT31,精度更高些

出0入0汤圆

发表于 2017-4-28 08:35:40 | 显示全部楼层
wanggoals 发表于 2017-4-27 23:22
要不要试一试SHT31,精度更高些

精度越高越难搞,布线环境,产品尺寸,保护设计要求得更高。

出0入0汤圆

发表于 2017-4-28 09:02:58 | 显示全部楼层
你把它独立到小板上试试。我的就是因为焊在板上比正常温度高2度。

出10入61汤圆

发表于 2017-4-28 09:44:25 | 显示全部楼层
DS18B20 SI7021  还有其他的传感器感觉都比实际高几度,只是感觉,没有标准源对比

出0入0汤圆

发表于 2017-4-28 11:14:15 | 显示全部楼层

谢谢, 原来是硬件问题 .确实读出的温度比实际要高几度

出0入0汤圆

 楼主| 发表于 2017-4-28 13:39:40 | 显示全部楼层
wye11083 发表于 2017-4-27 22:00
只要有电流,就有温升,区别是高或低。基本上可以以电压*电流得到每秒产生的热量,再除以板子的热容,再 ...

30度?沒寫錯,我的設備是放在通信盒的,但沒有這麽大呀

出0入0汤圆

 楼主| 发表于 2017-4-28 13:40:25 | 显示全部楼层
kingqxj 发表于 2017-4-28 09:02
你把它独立到小板上试试。我的就是因为焊在板上比正常温度高2度。

瞭解,謝謝

出0入442汤圆

发表于 2017-4-28 13:45:38 | 显示全部楼层
gsq19920418 发表于 2017-4-28 13:39
30度?沒寫錯,我的設備是放在通信盒的,但沒有這麽大呀

没写错。我的小传感器板(图像传感器)温度能跑到80度上下,因为它没有任何主动散热能力,而且只能依靠空气被动散热(固定件是悬浮的塑料件,而且只有一圈连着)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-23 22:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表