易商讯
当前位置: 首页 » 网络 » 科技 » 正文

0.1℃单总线温度芯片 M1820 等升级替代 DS18B20 应用指南

放大字体  缩小字体 发布日期:2022-06-10 12:11:16
导读

不少美信 DS18B20 用户,想要用更高精度或更快读温速度的单总线温度芯片进行应用 升级。敏源第 4 代高精度温度芯片 M1820(TO92S 封装)、M1601(SOT23 封装)、 M601(DFN8 封装)等,最高测温精度±0.1℃,同时也有±0.5℃精度的产品。温度芯片内 置 16 bit ADC,温度转换时间 10.5/5.5/4ms 可配置,客户把原有 DS1

不少美信 DS18B20 用户,想要用更高精度或更快读温速度的单总线温度芯片进行应用 升级。敏源第 4 代高精度温度芯片 M1820(TO92S 封装)、M1601(SOT23 封装)、 M601(DFN8 封装)等,最高测温精度±0.1℃,同时也有±0.5℃精度的产品。温度芯片内 置 16 bit ADC,温度转换时间 10.5/5.5/4ms 可配置,客户把原有 DS18B20 应用例程做如 下简单修改即可:

1、温度转换时间 DS18B20 温度转换时间最快 500ms,M1820、M1601、M601 系列温度转换时间 10.5/5.5/4ms(默认出厂配置 10.5ms),配置方式见下:

ConvertTemp();

Delay_ms(11);//不同重复性下转换时间不同,此处延时必须大于对应的转换时间。

@brief 设置周期测量频率和重复性

* @param mps 要设置的周期测量频率(每秒测量次数),可能为下列其一

*@arg CFG_MPS_Single:每执行 ConvertTemp 一次,启动一次温度测量

*@arg CFG_MPS_Half:每执行 ConvertTemp 一次,启动每秒 0.5 次重复测量

*@arg CFG_MPS_1:每执行 ConvertTemp 一次,启动每秒 1 次重复测量

*@arg CFG_MPS_2:每执行 ConvertTemp 一次,启动每秒 2 次重复测量

*@arg CFG_MPS_4:每执行 ConvertTemp 一次,启动每秒 4 次重复测量

*@arg CFG_MPS_10:每执行 ConvertTemp 一次,启动每秒 10 次重复测量

* @param repeatability:要设置的重复性值,可能为下列其一

*@arg CFG_Repeatbility_Low:设置低重复性,转换时间 4ms

*@arg CFG_Repeatbility_Medium:设置中重复性,转换时间 5.5ms

*@arg CFG_Repeatbility_High:设置高重复性,转换时间 10.5ms

* @retval 无

bool OW_SetConfig(uint8_t mps, uint8_t repeatability)

{ uint8_t scrb[sizeof(M1820_SCRATCHPAD_READ)];

M1820_SCRATCHPAD_READ *scr = (M1820_SCRATCHPAD_READ *) scrb;

读 9 个字节。第 7 字节是系统配置寄存器,第 8 字节是系统状态寄存器。最后字节是 前 8 个的校验和 CRC if(OW_M1820_ReadScratchpad_SkipRom(scrb) == FALSE)

{ return FALSE; 读暂存器组水平 }

计算接收的前 8 个字节的校验和,并与接收的第 9 个 CRC 字节比较。

if(scrb[8] != MY_OW_CRC8(scrb, 8))

{ return FALSE; CRC 验证未通过 }

scr->Cfg &= ~CFG_Repeatbility_Mask;

scr->Cfg |= repeatability;

scr->Cfg &= ~CFG_MPS_Mask;

scr->Cfg |= mps;

OW_M1820_WriteScratchpad_SkipRom(scrb+4);

return TRUE; }

2、温度寄存器

DS18B20 分辨率 9-12bit ADC,M1820、M1601、M601 系列为 16bit ADC,温度 寄存器格式不同,计算公式也不同,修改如下:

float M1820_OutputtoTemp(int16_t out)

{ return ((float)out/256.0 + 40.0); }

3、睡眠模式

M1820、M601、M1601 系列进入睡眠时,需要把 Scratchpad 寄存器的 9 个字节全 部读完,无需发送发送指令,读取函数按如下进行修改:

bool ReadTempWaiting_SkipRom(uint16_t *iTemp)

{ uint8_t scrb[sizeof(MY18E20_SCRATCHPAD_READ)];

MY18E20_SCRATCHPAD_READ *scr = (MY18E20_SCRATCHPAD_READ *) scrb; 读 9 个字节。前两个是温度转换结果,最后字节是前 8 个的校验和--CRC。 if(MY18E20_ReadScratchpad_SkipRom(scrb) == FALSE)

{ return FALSE; 读寄存器失败 }

计算接收的前 8 个字节的校验和,并与接收的第 9 个 CRC 字节比较。 if(scrb[8] != MY_OW_CRC8(scrb, 8))

{ return FALSE; CRC 验证未通过 }

将温度测量结果的两个字节合成为 16 位字。 *iTemp=(uint16_t)scr->T_msb<<8 | scr->T_lsb; return TRUE; }

4、暂存器

使用 M1820、M1601、M601 系列时,暂存器配置只需按芯片手册定义进行修订即 可。

与 DS18B20 相比,M1820、M1601、M601 系列除了更高精 度外,还具有更宽电压范围(1.8~5.5V)、更低功耗(测温平均电 流 5μA@3.3V,1Hz)、温度一致性好、测温分辨率高等优点。

选型可参见下表。


微软雅黑;font-size:14px;">原文标题:0.1℃单总线温度芯片 M1820 等升级替代 DS18B20 应用指南

温度传感芯片数字温度传感芯片
 
(文/小编)
免责声明
• 
本文0.1℃单总线温度芯片 M1820 等升级替代 DS18B20 应用指南链接:http://www.esxun.cn/internet/64103.html 。本文仅代表作者个人观点,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们,我们将在24小时内处理完毕。如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
 

Copyright © www.esxun.cn 易商讯ALL Right Reserved


冀ICP备2023038169号-3