《电子技术应用》
您所在的位置:首页 > 模拟设计 > 业界动态 > 0.1℃单总线温度芯片 M1820 等升级替代 DS18B20 应用指南

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

2022-06-15
来源:工采网电子元件
关键词: 芯片 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 系列时,暂存器配置只需按芯片手册定义进行修订即 可。

1.jpg

2.jpg

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

选型可参见下表。

3.jpg


4.jpg




1最后文章空三行图片11.jpg


本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。