社区
单片机/工控
帖子详情
DS18B20问题:温度跳变,比如从18直接跳23,然后又跳回,不知道如何解决?
老顽童
2009-12-21 11:37:59
也不知道是不是我转换频率高了?我2S转换一次。
...全文
2481
26
打赏
收藏
DS18B20问题:温度跳变,比如从18直接跳23,然后又跳回,不知道如何解决?
也不知道是不是我转换频率高了?我2S转换一次。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sim卡2
2010-08-05
打赏
举报
回复
我的也有跳变,1-15度这之间稳定,但是,但是15度时,显示32度,到了48度时,又显示64度!我怀疑是温度的计算出问题了!
kyzf
2009-12-23
打赏
举报
回复
楼主 能分享下吗?
你的DS18b20那些故障到底是什么问题? 怎么解决的? 谢谢哦
老顽童
2009-12-23
打赏
举报
回复
感谢各位帮助,已经解决。接分吧。哈哈
mrmou
2009-12-23
打赏
举报
回复
============================================================
tcdzyq
2009-12-22
打赏
举报
回复
可能:
1 温度确实在跳
2 时序不对
lyj2009
2009-12-22
打赏
举报
回复
楼主外挂了几个18B20? 如果只有一个,不是采样频率的问题,觉得可能是时序问题,可能程序被中断或者其它地方有BUG。
codesnail
2009-12-22
打赏
举报
回复
采样频率高一些
老顽童
2009-12-22
打赏
举报
回复
看了其他帖子,很多人提到国产假货和原厂的问题,不知道如何识别时原厂还试国产山寨货?
老顽童
2009-12-22
打赏
举报
回复
[Quote=引用 8 楼 kyzf 的回复:]
楼主首先 注意下: 读取温度时,对应的延时;另外可以考虑测量N次后,取平均值,再显示一次;
(N可以自由设定;比如测量5次,显示一次)
楼主可以看看:
http://www.unsp.com/app/html/200619181102.shtml
[/Quote]
谢谢你的提示,只是我想先从硬件或时序上解决。
kyzf
2009-12-22
打赏
举报
回复
楼主首先 注意下: 读取温度时,对应的延时;另外可以考虑测量N次后,取平均值,再显示一次;
(N可以自由设定;比如测量5次,显示一次)
楼主可以看看:
http://www.unsp.com/app/html/200619181102.shtml
老顽童
2009-12-22
打赏
举报
回复
谢谢楼上各位,我先去测试下。
qzf368
2009-12-22
打赏
举报
回复
读的时候要关中断
baizi258
2009-12-22
打赏
举报
回复
#pragma disable
#pragma rb(0)
对DS18B20读写时的函数加上关中断、选寄存器组等加预处理指令,可以看一下时序的波形是否正确;
老顽童
2009-12-22
打赏
举报
回复
//DS18B20的读时序
//对于DS18B20的读时序分为读0时序和读1时序两个过程。
//对于DS18B20的读时隙是从主机把单总线拉低之后,在
//15us之内就得释放单总线,以让DS18B20把数据传输到
//单总线上。DS18B20在完成一个读时序过程,至少需要
//60us才能完成。
uchar DS18B20_read()
{
uchar i,in_data,k;
in_data=0;
EA=0;
for(i=0;i<8;i++) //串行发送数据
{
in_data+=in_data;//循环左移1位
DQ=0;
//NOP;
DQ=1;
NOP;
NOP;
NOP;
k=DQ; //读DQ端
if(k==1) //读到的数据是1
{
in_data=in_data|0x01;
}
else
{
in_data=in_data|0x00;
}
NOP;
NOP;
NOP;
NOP;
//sdelay(n)=10+n*7 us
sdelay(6); //延时45us(总60us)
DQ=1;
}
EA=1;
return(in_data);
}
老顽童
2009-12-22
打赏
举报
回复
//DS18B20的写时序
//对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
//对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,
//单总线要被拉低至少60us,保证DS18B20能够在15us到45us之
//间能够正确地采样IO总线上的“0”电平,当要写1时序时,
//单总线被拉低之后,在15us之内就得释放单总线。
void DS18B20_write(uchar in_data) //写DS18B20的子程序(有具体的时序要求)
{
uchar i,out_data,k;
out_data=in_data;
EA=0;
for(i=0;i<8;i++) //串行发送数据
{
DQ=0;
k=out_data&0x01;
if(k==0x01) //判断数据 写1
{
DQ=1;
}
else //写0
{
DQ=0;
}
sdelay(10); //延时80us(60-120us)
DQ=1;
out_data>>=1; //循环左移1位
}
EA=1;
}
老顽童
2009-12-22
打赏
举报
回复
void Get_Temper(void)
{
uchar T_L,T_H;
DsTemp=0;
DS18B20_init(); //DS18B20初始化
NOP;
if(DS18B20) //判断DS1820是否存在?若DS18B20不存在则返回
{
DsTemp=0;
DS18B20_write(0xcc); // 跳过ROM匹配
DS18B20_write(0x44); //发出温度转换命令
//等待转换结束
while(DQ==0) ldelay(1);
DS18B20_init(); //DS18B20初始化
if(DS18B20) //判断DS1820是否存在?若DS18B20不存在则返回
{
DS18B20_write(0xcc);//跳过ROM匹配
DS18B20_write(0xbe);//发出读温度命令
T_L=DS18B20_read(); //数据读出
T_H=DS18B20_read();
NOP;
T_sign=T_H>0x80?1:0; //温度符号
T_H=T_H&0x07;
NOP;
DsTemp=(T_H*256+T_L)>>4; //温度转换常数
DsTempF=((T_L&0x0F)*10)>>4;
}
}
}
mjwang
2009-12-22
打赏
举报
回复
你在读温度时序中有没有被其他程序中断了,比如用了RTOS,或是有频繁的中断程序,我以前在一个系统里想用,因为有RTOS,温度总是跳,后来才知道DS18B20对时序要求十分严格,在读的期间不能被打断,所以后来选择使用其他芯片了。
空影
2009-12-22
打赏
举报
回复
2s的采用周期已经足够转换时间了,应该是代码的问题,建议楼主把代码传来看下
宇帆
2009-12-22
打赏
举报
回复
估计时序哪里没有处理好,是采集过来的数据有问题呢?还是你显示处理那有问题呢?这要看你代码了
lbing7
2009-12-22
打赏
举报
回复
如果,不能确定自己的延时能超过DS18B20的转换时间的话
那就读18B20的状态,然后确认它是否轮换完成
在读数据的时候如果没有把握
就读CRC出来自己算一下。。。
什么跳变什么的
这个很可能是你的总线协议的问题
本来就是数字电路读寄存器,怎么可能会乱变呢?
呵呵
加载更多回复(6)
STM32F103
DS
18
B20
数字
温度
传感器
STM32F103
DS
18
B20
数字
温度
传感器是嵌入式系统中一个典型的硬件组合,用于实现精确的
温度
测量。STM32F103是意法半导体(STMicroelectronics)生产的高性能、低功耗的微控制器,属于STM32系列中的Cortex-M3内核产品。...
DS
18
B20
读取
温度
C程序
DS
18
B20
是一款由Dallas Semiconductor(现Maxim Integrated)生产的数字
温度
传感器,它能够
直接
输出数字信号,无需ADC转换。这款传感器以其简单易用、精度高、接口方便等特点在许多嵌入式系统和物联网应用中得到广泛...
ds
18
b20
的keil工程
在这个
DS
18
B20
的Keil工程中,开发者已经配置好了必要的硬件接口和软件代码,使得用户可以
直接
读取
DS
18
B20
测得的
温度
数据,范围为0到99摄氏度。 关键知识点: 1. **
DS
18
B20
工作原理**:
DS
18
B20
采用1-Wire协议,允许...
DS
18
B20
_stm32f407_
ds
18
b20
_
首先,
DS
18
B20
是一款高精度的数字
温度
传感器,它能够提供9位到12位的
温度
分辨率,并且可以
直接
通过一根数据线与微控制器进行通信,这得益于其独特的单线协议(One-Wire Protocol)。这种协议使得系统布线简单,减少...
ds
18
b20
温度
报警程序
【
ds
18
b20
温度
报警程序】是一个针对
DS
18
B20
数字
温度
传感器设计的应用程序,旨在监测环境
温度
并触发报警机制当
温度
超出预设范围时。这个程序对于那些需要实时监控
温度
变化的场景非常有用,比如在温室管理、数据中心...
单片机/工控
27,511
社区成员
28,797
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章