标题: MCU无法读出正常温度值的18B20 [打印本页]

作者: kmsj    时间: 2019-8-26 10:29
标题: MCU无法读出正常温度值的18B20
18B20用的很熟了,从来没有出现问题,直到某宝买了几个18B20无法读出温度值,仔细看,以前的18B20序号是1620C4+233AA,序号为1710C4+816AC,就是右边的这个18B20,除了应答脉冲基本正常以外,无论如何读出的温度值永远是85度,请问大家有没有遇到这种问题?那家店买了好多年的电子元件,从来没有出过问题,就是这个18B20无法读出温度值,难道买了假货?



作者: 韦杰123    时间: 2019-8-26 16:25
是没有上拉吗。
作者: csmyldl    时间: 2019-8-26 17:45
假货肯定不是,能读出85至少器件传送数据是没有问题的,主要要查读出的时序关系是否正确,与程序的结构和编写有关,与单片机晶振频率有关,建议先把时序调整一下,尽量满足较大的时序关系。
作者: tyrl800    时间: 2019-8-26 19:43
时序不对呀
作者: kmsj    时间: 2019-8-26 23:42
在实验板上,左边的18B20一切正常,右边的18B20就是不行,一直都是85度,上拉电阻肯定正常,各种时序调整过还是不行,转换温度指令发送后加延时,可以读出27,但是,温度如何变化还是27
作者: kmsj    时间: 2019-8-27 10:51



是这样的,一个温控电路,需要读出两个18B20的温度,当使用序号为1620C4+233AA的两个18B20,读出来的温度都是25度。

用手捏两个18B20之后,温度可以升到30多度,这就说明,读两个18B20的程序应该没有问题。

但是,只要换上一个序号为1710C4+816AC的18B20之后,读出来的温度永远都是85度。

MCU用的是ATMEGA16,以串行方式驱动两片CD4094和一片74HC165,两片CD4094驱动1602液晶,一片74HC165扩展了6个感应开关,用的是融合的RH6030感应开关IC。
我相信我的电路没有问题、程序也没有问题,问题是为什么序号为1710C4+816AC的18B20读不出正常温度?搞的我都不敢到某宝买18B20了,不买还不行,我们本地根本买不到18B20,看来只有和店家商量好,买个运费险,测试很简单,用三根杜邦线直接连接18B20,立马就知道能不能用,用不成就退货,不影响店家的二次销售。


作者: zqy876    时间: 2019-8-27 16:17
是否是上拉太强
作者: M_my    时间: 2019-8-28 10:32
85度是18b20初始化的数据,这说明是不是初始化过后就没有数据更新了,一般是延时函数有问题
作者: wind2233    时间: 2019-8-29 15:44
读取温度的两次间隔要拉远一点,至少750ms
作者: lwh999995    时间: 2019-8-29 16:34
1. 不管假货真货都能读温度的;
2. 一般都是时序问题,当然也也可能电路问题;
3. 时序写严格一点吧,示波器观察下。
作者: kmsj    时间: 2019-9-4 13:37
标题: RE: MCU无法读出正常温度值的18B20(已解决)
多谢各位的回复!的确是时序问题,经过调整,四个18B20可以读出三个,有一个读出来的温度值永远是85,那三个正常的18B20又有一个超过30度时不时会变成85,超过50度彻底变成85,放置好几分钟又正常,这就说明,这批18B20肯定是假货,而且毫无悬念!好在只有四个,以前我用过的18B20从来没有出过问题。在这里我给大家提个醒,序号为1710C4+816AC的18B20肯定是假货,谁买谁上当。


作者: sZhou    时间: 2019-10-25 19:03
M_my 发表于 2019-8-28 10:32
85度是18b20初始化的数据,这说明是不是初始化过后就没有数据更新了,一般是延时函数有问题

兄台一出口,便知实力不俗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1