打印
[技术问答]

NUC029LAN单总线驱动18B20

[复制链接]
1091|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
5574293|  楼主 | 2018-6-5 19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在有这样一个问题,DS18B20时序已经调整完成,且按照数据手册来调整的。我一共接了20个18b20,用的屏蔽线,屏蔽层也接地了,每两个DS18B20之间间隔有1米的线长。然后问题来了,采集温度数据的时候,采集到第7个之后,第八个的数据就开始不准确了,而且完全不准。第8个后面开始采集到的数据都是不准的。然后数据脚内部上拉接的5V,20个18B20事先读取的ROM,然后再来匹配ROM,读取每个的温度值。现在问题不知道是不是IO口驱动电流小了,还是其他问题。希望高手们解答一下。对了还补充一点,之前20个我全部接到一起调试过,温度都可以准确的读出来,但是20个的距离很短,差不多在20厘米长的一条线上。
沙发
5574293|  楼主 | 2018-6-5 19:54 | 只看该作者
u16 ReadTemperature_match(u08 dat[8])
{       
        int data;
        DS18B20_init();
        DS18B20_write_byte(0xCC); // 跳过读序号列号的操作
        DS18B20_write_byte(0x44);        // 启动温度转换

        DS18B20_init();
        DS18B20_write_byte(0x55);        //匹配序列号
        for(data = 0;data < 8;data ++)                   //发送8个字节的序列号   
    {
       DS18B20_write_byte(dat[data]);
    }
       
        DS18B20_write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
        tempL=DS18B20_read_byte();        //低位
       
        tempH=DS18B20_read_byte();        //高位
        tempH =(tempH<<8);
        temp=tempL+tempH;
       
        return(temp);
}
这个是匹配ROM的程序,其他的时序我都调合适了,不知道是不是这里出问题了

使用特权

评论回复
板凳
huangcunxiake| | 2018-6-6 20:36 | 只看该作者
应该是硬件问题,如果你替换两个的位置问题跟位置保持不变关系,那就是硬件驱动电流不足。

使用特权

评论回复
地板
5574293|  楼主 | 2018-6-7 08:44 | 只看该作者
huangcunxiake 发表于 2018-6-6 20:36
应该是硬件问题,如果你替换两个的位置问题跟位置保持不变关系,那就是硬件驱动电流不足。 ...

已解决,还是我软件上面有问题,没做好配置

使用特权

评论回复
5
chongdongchen| | 2018-6-7 09:36 | 只看该作者
虽然你说解决了,但是我还想问问:接近20米的距离,你打算只利用了内部上拉吗?

使用特权

评论回复
6
5574293|  楼主 | 2018-6-7 11:34 | 只看该作者
chongdongchen 发表于 2018-6-7 09:36
虽然你说解决了,但是我还想问问:接近20米的距离,你打算只利用了内部上拉吗? ...

4.7k外部上拉,一直用起的

使用特权

评论回复
7
huangcunxiake| | 2018-6-7 15:42 | 只看该作者
5574293 发表于 2018-6-7 08:44
已解决,还是我软件上面有问题,没做好配置

软件的配置会影响数量?

使用特权

评论回复
8
huangcunxiake| | 2018-6-7 15:42 | 只看该作者
多谢楼主分享宝贵经验。

使用特权

评论回复
9
yiyigirl2014| | 2018-6-7 16:53 | 只看该作者
楼主分享一下代码啊。学习一下。

使用特权

评论回复
10
5574293|  楼主 | 2018-6-9 08:33 | 只看该作者
huangcunxiake 发表于 2018-6-7 15:42
软件的配置会影响数量?

对呀   一开始想得简单了,只觉得引脚置高置低就行了,结果还要在引脚上转换输入或输出。

使用特权

评论回复
11
5574293|  楼主 | 2018-6-9 08:34 | 只看该作者
yiyigirl2014 发表于 2018-6-7 16:53
楼主分享一下代码啊。学习一下。

代代码网上的都差不多,只是需要在置高和置低的时候,配置成相应的输入输出就行了

使用特权

评论回复
12
5574293|  楼主 | 2018-6-9 08:36 | 只看该作者
yiyigirl2014 发表于 2018-6-7 16:53
楼主分享一下代码啊。学习一下。

反正需要注意的就是两点,时序很重要,延时的话,就需要在自己的跑的单片机上面确定好,然后就是我说的那个引脚配置成输入输出

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

166

帖子

1

粉丝