单线智能温度传感器DS18B20无需外部电路和其他变换电路就可以直接输出被测温度,测温范围宽、精度高、转换时间快并可适配各种单片机或系统机等众多优点,在各种领域已得到了广泛的应用。我公司采用DS18B20温度传感器制作四路温度巡检控制的温控仪。在对温控仪进行各种环境适应验证试验中发现一个问题:DS18B20传感器采用10m长连接线时工作不正常,而采用3m长连接线时工作正常。DS18B20传感器的连接线缆长度一般可达到50~100m,当采用双绞线芯的屏蔽电缆时,其最大长度可达150m。图1为温控仪传感器连接部分电路图,传感器采用单独供电,接在P1口上。
后经对DS18B20传感器的读写子程序分析及对传感器读写时序波形分析得出的结论,是因为读写子程序对DS18B20传感器的读写的时序把握不够准确造成的。下面就DS18B20传感器的读写的时序把握度进行分析,希望能对初步接触该传感器的人员有所帮助。
DSl8B20传感器对读写时序的要求
首先对DS18B20传感器的读写时序的要求进行分析和了解。按D S 1 8 B 2 0 器件手册介绍, 对DSl8B20写数据时,主机产生读时间片。当主机把I/O数据总线从逻辑高电平拉至逻辑低电平时,低电平持续时间最少1μs,就产生写时间片。在变为低电平15μs之后,DSl8B20在15~45μs之间对线采样,如果线为高电平,写1就发生,如果线为低电平,便发生写0。时间片必须有最短为60μs的持续期,各写周期之间必须有最短为1μs的恢复时间。图2为DS18B20生产厂家提供的读写时序图。
从DSl8B20读数据时,主机产生读时间片。当主机把数据线从逻辑高电平拉至低电平时,产生读时间片。低电平持续时间至少1μs;来自DS18B20 的输出数据在读时间片下降沿之后15μs有效,因此,在产生读时间片15μs后主机必须停止把I/O线驱动至低电平,由上拉电阻拉回至高电平,主机在15μs末期对数据线采样,如果线为高电平,就读为1,如果线为低电平,便读为0。读时间片的最短持续期限为60μs,各读时间片之间必须有最短为1μs的恢复时间。 在处理高低电平跳变时,还有必要了解DS18B20传感器直流参数特性。其特性为:I/O口检测低电平范围为-0.3~0.8V,高电平范围为2.2~5.5V,同单片机的I/O口检测低电平范围为-0.5V~0.2Vcc-0.1 V和高电平范围为0.2Vcc+0.9V~Vcc+0.5V基本上相同。
数据连接线缆对读写数据波形的影响
针对微秒级数据脉冲信号,对于较长的数据线缆,不应仅看作纯阻性线缆,应充分考虑线缆中存在的分布电容对数据脉冲信号在跳变时造成延时和变形的影响。其等效电路原理见图3。一般线芯的内阻远小于上拉电阻,决定延时量的是上拉电阻与分布电容乘积。在上拉电阻一定的情况下,线缆越长,其分布电容越大,对数据脉冲信号影响也就越大。电缆的材料、结构、工艺等不同,其存在的分布电容指标亦不同,良好的同轴线缆分布电容一般在60 pF/m以下,而扁平排线相邻线芯间的分布电容在300pF/m左右。
用记忆示波器在连接10m长RVV3×0.5mm2型线缆的传感器上观察到的数字波形见图4(上拉电阻为5kΩ)。从图4中可看出,在t 1时刻主机将数据线拉低,在t 2时刻才能被DS18B20识别为低电平,延迟了3μs。在t 3时刻主机释放数据线,在上拉电阻的作用下,在t 4时刻才上升为被DS18B20识别的高电平,延迟了3μs。从t 2到t 4时刻,对DS18B20来说,是近19μs低电平。因此,在采用较长线缆时,如对传感器读写时刻把握不准确的话,会因使对读写的数据信号产生时延变形而不符合DS18B20对读写时序的要求,使对其读写操作失败。在选用较长数据线缆时,还应考虑抗干扰的问题,因此建议尽量采用双绞线或带屏蔽的双绞线作传感器的数据线缆。[page]
换位理解DSl8B20传感器对读写时序的要求
图2是对DS18B20传感器读写时序在主机处的波形图,如果是在DS18B20处的话,其波形图应如图5所示。考虑实际长短数据线的影响,对读写时序的要求理解为:对DSl8B20 写数据时,主机产生读时间片。当主机把I/O数据线在7μs时间内从高逻辑电平拉至低逻辑电平时,维持时间最少1μs就产生写时间片。如写入0,则应维持低电平45~60μs以上,如写入1,应在第8μs后释放数据线,在7μs 时间内拉到为逻辑高电压, 并维持45~60μs以上。写时间片必须有最短为60μs的持续期,在各写周期之间必须有最短为1μs的恢复时间。从DS18B20 读数据时,主机产生读时间片。主机在7μs时间内把数据线从逻辑高电平拉至低电平,产生读时间片。数据线必须保持在逻辑低电平至少1μs;来自DS18B20的输出数据在读时间片下降沿之后15μs有效。因此,在产生读时间片8μs后主机必应把I/O 数据线释放,由上拉电阻将数据线拉回至逻辑高电平,主机在15μs末期对数据线采样,如果线为高电平,就读为1,如果线为低电平,便读为0。读时间片的最短持续期限为60μs,各个读时间片之间必须有最短为1μs的恢复时间。在考虑到线缆对波形的延迟和DS18B20传感器发送数据表现的典型时间,在实际操作中,建议将主机对数据线的采样滞后5~9μs,可提高正确读取DS18B20的可靠性。
对DS18B20的读写程序探讨
经过上面的分析和了解后,参见图1,对接在P1.0口上的DS18B20传感器读写子程序进行修改,分别见“写子程序”和“读子程序”。将修改后的对DS18B20传感器读写子程序移入主程序并写入89C51单片机,对用RVV3×0.5mm2型线缆为传感器连线,用1~50m传感器连线,在高、低温环境条件下进行了试验验证,温控仪工作正常,稳定可靠。题图为我公司温控仪的照片。
关键字:DS18B20 读写时序 连接距离
引用地址:
精确把握DS18B20读写时序延长连接距离
推荐阅读最新更新时间:2024-03-16 14:00
#51单片机#DS18B20硬件原理以及通信的工作时序
DS18B20的硬件原理——温度存储器 DS18B20的温度测量范围:-55~+125°C。 如上图所示,DS18B20温度存储器一共有两个字节。LSB低字节,MSB高字节。Msb字节高位,Lsb字节低位。图中的S表示的是符号位。 通过编程,DS18B20可实现最高12位的温度存储器。以补码的格式存储在寄存器中。 结合下面寄存器温度对应存储数值的表格,理解DS18B20温度存储器。 ps:二进制数最低位变化1,代表温度变化0.0625°C。 DS18B20与单片机通信 单片机可通过1-Wire协议与DS18B20通信,读取温度 1-Wire总线的硬件接口简单,时序复杂。 下面可根据DS18B20工作协议过程,了解其
[单片机]
PIC16F877A例程---DS18B20
#include pic.h #include pic1687x.h __CONFIG(0x3F32); //芯片配置字 #define LCDRS RB2 #define LCDRW RB1 #define LCDE RB0 #define LCDDATA PORTD #define DS18B20 RE0 #define TRIS_B20 TRISE0 void LCD1602_INIT(void); void WRITE_LCD_CMD (char cmd); void WRITE_LCD_DATA (char data);
[单片机]
DS18B20的原理与应用
DS18B20的特点: DS18B20 单线数字温度传感器,即 一线器件 ,其具有独特的优点: ( 1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 ( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85 C 范围内,精度为 0.5 C 。 ( 3 )在使用中不需要任何外围元件。 ( 4 )持多点组网功能 多个 DS18B20 可以并联在
[单片机]
ZDS2022示波器百集实操视频之76:DS18B20协议解码
大家好,DS18B20作为一种数字温度传感器,其接口所遵循的数字传输协议即所谓的DS18B20协议,它是一种单总线协议,抗干扰能力强,精度高,适合恶劣环境的现场温度测量。ZDS2022示波器毫无疑问地将其加入了免费开放的21种协议触发与解码行列! 如何进行DS18B20协议解码操作呢?按下【Decode】键,将解码类型设为DS18B20,开启协议触发,在示波器前面板上的触发控制区内按下【Auto/Normal】键,将触发方式设为普通触发,按下协议参数软键,可对该协议的总线设置和触发模式进行相关设置,信源选择通道1,ZDS2022示波器的DS18B20协议支持4种温度分辨率,可以选择12位、11位、10位和9位,我们选择12位,
[测试测量]
stm32实用篇6:HAL库 DS18B20 驱动
DS18B20是很常用的温度传感器,精度很高,测试结果如下: 整个驱动程序基本是根据时序写的。要注意的地方有两个: 1 读数据的时间 15us,这个值要实际测试,跟自己实现的延时函数效率有关,我使用的是10us,这个值如果设置的不合理,会直接导致整个数据读取出错; 2 建议使用DS18B20_GetTemp_SkipRom函数,不推荐使用设备号相关的那个读取函数,不太稳定; HAL库驱动程序源码: bsp_ds18b20.c /** ****************************************************************************** * @
[单片机]
STM32 Cubemax(三)——时序读写完成称重传感器+HX711的使用
前言 因为在一个项目中使用到了称重传感器,在此记录一下其使用方法还有一些需要注意的地方。 首先介绍一下使用的传感器 HX711——一款专用于电子秤的A/D转换芯片 称重传感器(使用的这一款量程200KG) 一、接线 买到传感器后,可以看到后面尾巴引出了5条线 **其中黄线在单片机处理里面是不需要的,不需要接。 ** 如果大家买的是我上图的那一款HX711,那么可以直接按照上面的英文指示接线。 照着颜色接就完事了,RED接红线,BLK接黑线。 但还有几款HX711上面没有这个颜色提示,那也没有关系。 一般如下 接完了HX711和称重传感器,下一步就是接HX711和单片机 这里 DAT和CLK为自己
[单片机]
温度DS18b20与PIC单片机通讯程序
ORG PIC54 GOTO MAIN ORG 0 ;---------------------- ;---------------------------- DELAY22 MOVLW D'200' ; DELAY 2*250=500mS MOVWF COUNT1 DE32 MOVLW D'250' ; 8*250=2mS MOVWF COUNT2 DE42 NOP ; 1+2+1=5uS DECFSZ COUNT2,1 GOTO DE42 DECFSZ
[单片机]
基于CC2430和DS18B20的无线测温系统设计
目前,很多场合的测温系统采用的还是有线测温设备,由温度传感器、分线器、测温机和监控机等组成,各部件之间采用电缆连接进行数据传输。这种系统布线复杂、维护困难、成本高,可采用无线方案解决这些问题。无线测温系统是一种集温度信号采集、大容量存储、无线射频发送、LED(或LCD)动态显示、控制与通信等功能于一体的新型系统。 本文从低功耗、小体积、使用简单等方面考虑,基于射频SoC CC2430和数字温度传感器DS18B20设计了一个无线测温系统,整个系统由多个无线节点和1个基站组成。无线节点工作在各个测温地点,进行温度数据采集和无线发送。基站与多个节点进行无线通信,并通过数码管将数据显示出来,同时可以通过RS-232串口将数据发送给
[测试测量]