搜索
bottom↓
回复: 8

18b20转换时间为什么和数据手册的不一样?

[复制链接]

出0入0汤圆

发表于 2013-4-21 23:19:53 | 显示全部楼层 |阅读模式
本帖最后由 01bffe806c 于 2013-4-22 00:04 编辑

在温度转换时18b20会拉低总线,转换完会恢复,数据手册给出了转换时间。



我在程序里加了等待18b20将总线拉低的命令,但是用逻辑分析仪测试时发现18b20并没有拉低总线,转换命令后直接接了下一个复位信号。





我以为读总线太快了,在之前加了延迟,结果还是没得到正在转换中的信号
但是温度能正常读出,我用串口返回的温度值,0x0118是17.5度,而且把手放上面温度是变化的,说明工作正常。



也试了一些网上的程序,也是没有转换信号,这是为啥呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-4-21 23:26:06 | 显示全部楼层
程序问题。

出0入0汤圆

 楼主| 发表于 2013-4-21 23:29:47 | 显示全部楼层
SNOOKER 发表于 2013-4-21 23:26
程序问题。

能推荐一个正确的吗?

出0入0汤圆

发表于 2013-4-21 23:38:16 | 显示全部楼层
01bffe806c 发表于 2013-4-21 23:29
能推荐一个正确的吗?

“我在程序里加了等待总线复位的命令,但是用逻辑分析仪测试时发现18b20并没有拉低总线”

器件没拉低说明你给的复位脉冲不合要求,仔细看数据手册。
复位应该是单片机主动拉低总线480-960uS,然后将DQ设置为输入,这时最好关中断,在15-60uS内18B20会拉低总线作为应答,
接着单片机等这个应答脉冲结束,一个复位流程就完成了。

出0入0汤圆

 楼主| 发表于 2013-4-21 23:53:16 | 显示全部楼层
本帖最后由 01bffe806c 于 2013-4-22 00:05 编辑
SNOOKER 发表于 2013-4-21 23:38
“我在程序里加了等待总线复位的命令,但是用逻辑分析仪测试时发现18b20并没有拉低总线”

器件没拉低说 ...


这句话写错了,应该是在程序里加了等待18b20将总线拉低的命令,就是程序里那个"while(!DQ);"
我的复位是按手册写的,没用中断,串口用的是查询。我得到了温度值,不能是复位不正确吧。



unsigned char Reset_18b20(void)
{
        unsigned char _data;
        DQ=0;
        Delay100us(5);
        DQ=1;
        Delay10us(7);
        if(DQ==1)
                _data=0;
        else
                _data=1;
        Delay100us(5);
        return(_data);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-4-22 00:42:23 | 显示全部楼层
这两个帖子好像也有转换时间的问题,最后也都没有答案。
http://www.amobbs.com/forum.php? ... B%E8%BD%AC%E6%8D%A2
http://www.amobbs.com/forum.php? ... B%E8%BD%AC%E6%8D%A2

出0入0汤圆

发表于 2013-4-22 10:52:29 | 显示全部楼层
关注一下!

出0入0汤圆

 楼主| 发表于 2013-8-23 14:58:20 | 显示全部楼层
本帖最后由 01bffe806c 于 2013-8-23 15:09 编辑

今天才注意到那个时间是最大时间,以前真是不认真。这个可能是在寄生电源电量不足的条件下得出来的。普通电源条件下转换还是很快的,几乎瞬间就完成了。这只是个人猜测,网上也找不到相关信息。算是给这个问题一个交代吧。可惜分析仪不给力,有人能帮忙测一下是不是有拉低的过程和转换时间吗?

出145入215汤圆

发表于 2013-8-23 21:17:37 | 显示全部楼层
本帖最后由 dz20062008 于 2013-8-23 23:35 编辑

楼主的意思是在发送转换指令后读取DS18B20的转换状态字,就是收到转换命令后拉高总线,检测有无低电平的转换状态字。
楼主这么一说我也就明白我以前的转换时间短的疑惑了,因为单总线的操作方式是初始化,rom操作命令,ds功能命令。所以发送了转换指令后的下一个操作是读暂存器指令,但DS的指令的每一次操作都需要初始化一次,还有ROM操作指令。

      由于没有进行转换状态查询所以第一次读出来的是85度这个初始值,经过多次循环后当时间累计到内部所需要的转换时间后读出的才是实际的温度,后面的不出现85是因为DS没有断电所以里面储存的是上一次转换的结果,实际很多次读的是旧的值。所以实际的DS的速度并不是比手册上标的快。

这东西还是挺灵敏的,我的七位温度计很远吹口气温度都会马上变高,虽然精度不咋的,也够用了。还有就是这乖乖绝对会轻微自升温,不过精度。5还是有保障的。不知道地线弄短点焊接在散热片上会好些不,貌似无意思。

PS:楼主发送转换命令后释放总线为高,不再做其他操作。用逻辑分析仪看看是否有低电平应答。看哈对应的精度的转换时间是否与手册上标注的一致。楼主检测到了请分享哈。我看了楼主的问题是我有了灵感解决我的一个疑惑,我通过我以前的代码,也验证了我的想法,解决了开机瞬间显示85的毛病。只是没有加入状态查询,也没有测出实际转换时间。楼主成功了要请分享哈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表