Post Go back to editing

ds2482读取个别18b20,温度返回0x7FF

Category: Hardware
Product Number: DS2482-100

用DS2482驱动18B20,大多数18B20读取温度正常,但有的18B20读取温度异常,返回0x7FF。

针对该问题进行了一下排查工作

1.异常的18B20用onewireviewer可正常读取温度,证明18B20本身无问题;

2.异常的18B20的ID匹配正常,DS2482可识别到温度异常的18B20存在;

3.用示波器抓取了单总线上波形,发现18B20实际返回温度的就是0x7ff;

4.DS2482挂接1个或多个18B20,异常的18B20返回温度都是0x7FF。

请问可能是什么原因造成的该现象。是DS2482批次性问题么,与18B20时序不匹配?

  • 后续测试发现,

    (1)温度读取异常的18B20,在温度转换时将数据线的高电平从3.3V拉至2.7V。18B20采用外部3.3V供电,供电电压一直正常。数据线用4.7k电阻上拉至3.3V。

    (2)异常的18B20。用万用表黑表笔接VCC,红表笔接GND,测得阻抗超量程为OL。对比测试正常18B20,该阻抗约14MΩ。

    因此,怀疑18B20自身问题导致单总线数据线功率异常增大,高电平被拉低,温度转换指令执行失败。读取温度0x7FF估计为寄存器默认初始值。

    目前的疑问是,

    (1)该批次18B20是从正规渠道供应商采购的,已测试了20个左右,约4个18B20存在该问题。这是否为正常现象?

    (2)18B20采用外部3.3V供电而非寄生供电,仅数据线高电平拉低至2.7V,应该不会影响18B20工作。为什么温度转换会失败?数据线上为什么会有这么大的电流?

  • DS18B20在温度转换时需要较大的电流(1.5mA),如果是寄生供电确实可能会出现电压跌落的现象。但是,如果采用外部供电,应该不会有这个问题。

    建议

    1、监测DS18B20的电源电压,看看再转换的时候电源电压是否也发生了跌落。

    2、即使您DS18B20用了外部供电,但有时候主机并不知道从机实际是在外部供电模式还是寄生供电模式,也可能导致通信错误。建议按照DS18B20手册,发送命令获取DS18B20的实际供电模式。

    3、如果上一步发现DS18B20实际还是处于寄生供电模式,则应该不用无源上拉,对DS2482采取强上拉(SPU),甚至用PCTLZ引脚控制外部MOS管,从而提供超过DS2482引脚驱动的电流以满足负载。