侵权投诉
订阅
纠错
加入自媒体

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

不少美信 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 系列时,暂存器配置只需按芯片手册定义进行修订即 可。

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

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

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

选型可参见下表。

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

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


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

声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    电子工程 猎头职位 更多
    扫码关注公众号
    OFweek电子工程网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号