• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

用DS18B20温度采集,读不出数据的问题?

电子WWW 2019-04-01 浏览量:4955
用M0内核的一个32单片机,驱动ds18b20采集温度,能检测到ds18b20,但是读不出来数据,用示波器测量温度传感器数据输出口,得到的是一个评率相同的正弦波,正常状态下应该是一个频率不同矩形波7.png8.png9.png10.png16.png17.png18.png
1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 波形变为正弦波,说明你的电路上存在问题吧,可能是你的ds18b20的数据引脚上存在一个电容,导致信号波形发生畸变。至于你说的能检测到传感器,但是读不出数据,这应该就是延时时间导致的,这个传感器对时间要求还是比较严格的,在编程的时候要多留意,最好有个逻辑分析仪就好办了。我之前在使用103驱动ds18b20的时候,发现一个问题,就是只要我初始化定时器后,一旦使能定时器,定时器就会立马发生一个中断事件,而从使能定时器到这个中断发生刚好符合ds18b20的复位电平,好像是750ns左右。而且我程序移植到407芯片也是一样。也就是说,只要是定时器初次使能,就会自动出现一个定时器中断请求。不知道你的M0芯片存不存在这个问题。
    • 发布于 2019-04-02
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:7
  • 如果能检测到18b20说明通讯没问题,数据读不到,可能延时有误差,检测可以,但是数据读取对时钟要求较高,可用示波器看下延时误差是否再范围之内
    • 发布于2019-04-01
    • 举报
    • 评论 1
    • 3
    • 0
电子WWW 回复了 yhj416606438 :用示波器测量温度传感器数据输出口,得到的是一个正弦波 回复

  • 要用示波器看看输出的DS18B20的信号时序对吗?是不是datasheet上面给的时间。
    • 发布于2019-04-01
    • 举报
    • 评论 0
    • 1
    • 0

  • 这种情况照着DS18B20的时序,看一下延时是否满足时序要求;另外,可以把读取字节这部分代码贴上看看。
    • 发布于2019-04-01
    • 举报
    • 评论 0
    • 1
    • 0

  • 估计是延时有问题,我当时跟你情况差不多,后来改改延时就差不多了。把DS18B20的手册看一下,再改改程序。
    • 发布于2019-04-02
    • 举报
    • 评论 0
    • 1
    • 0

  • 测到正弦波可能是硬件上的问题或者测量不标准的原因

    测量是否共地,输入最好高阻态,降低影响

    然后看硬件上总线的上拉电阻是否太高,影响到了通讯

    • 发布于2019-04-03
    • 举报
    • 评论 0
    • 1
    • 0

  • 如果用示波器测到DS18B20输出脚上面有正弦波,说明电平变化的速度过于缓慢,应该是电路上面有电容这类储能器件,像DS18B20,可以选择加一个电容来滤波,但是这个电容不宜加的太大,用那种贴片的就足够了
    • 发布于2019-04-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 首先波形变成了正弦波,这个应该是传感器电路上有容性负载,导致波形变差。其次,初始化成功,说明传感器是没有问题,但是这个传感器对时序要求比较严格,可能你程序的时序是正确的,但是由于波形变差,相当于你的时序发生了改变,所以导致读不出数据。建议还是先把电路理一下,波形先调整回来
    • 发布于2019-04-12
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

用DS18B20温度采集,读不出数据的问题?