ds18b20 数字温度传感器 DS18B20温度传感器介绍
DS18B20温度传感器介绍
来源:百问网_嵌入式Linux wiki_jz2440 新1期视频维基教程 (视频文字版)
作者:韦东山
本文字数:1322,阅读时长:2分钟
比DHT11温湿度传感器精度高很多
DS18B20只通过一条数据线传输数据,既要控制器发送数据给芯片,又要通过芯片发送数据给控制器,所以这个是双向传输数据的
怎么在一个引脚上实现数据的双向传输 : 参考这视频的第19分钟之后的内容: 第19课_第001节_I2C协议与EEPROM
检测温度,我们需要一个主控芯片
如果有多个温度传感器,则需要一个主控制器去管理它们,通过发送命令传输数据,每个设备都会有固化在芯片内部的64bit ID的ROM来用于区分不同的设备
如果主控制器想访问设备,必须发送命令,这个命令中带有ID返回值
怎么访问指定的DS18B20
0 发出低脉冲,提醒准备工作: initialization1 发出ID命令:ROM Command2 发出功能命令: Function Command a转换温度 b读温度,读数据每次操作,都要重重上述过程
内部框图
TEMPERATURE SENSOR温度ADC
SCRATCHPAD实际上是一个9 byte的内存 9byte的说明如下图所示
温度值会保存在9byte内存中的 BYTE0 和 BYTE1 也就是当我们发出一个温度值的命令之后,还需要发送一个读内存的命令才能把温度值读取出来
最后一位是CRC校验码,通过前8位的数据和最后一位的校验码比较 64位数据中有8位是校验码,
怎么采样温度?
1 初始化2 ROM命令3 FunctionCommand 设置某些值,比如转换温度4等待完成5 init6 R om cmd7 Function Command 读RAM中的值关于EEPROM寄存器 前面两个字节可以用来设置用户自己的目的,也可以用来设置Th Tl 寄存器 Th Tl 寄存器就是用来设置警报,温度的上限或者下限,当温度超过某个值时它会发出警报 所谓警报只不过是在DS18B20中设置状态而已,并不能主动通知主芯片 主芯片可以发出某些命令来确定哪些芯片发出了警报 配置寄存器,用于设置精度,精度越高转换时间越长
EEPROM使用
1 上电EEPROM自动放入RAM用于控制精度这些
2 写EEPROMa 发出命令先写RAM
b从RAM转到EEPROM
3 读出EEPROM的值a EEPROM值保存到RAM
b 发出命令读RAM
关于ROM命令和功能命令整理成一个表格
信号传输
1怎么initialization(初始化) 2 怎么发数据,怎么发出1bit怎么发出bit0
怎么发出bit1
3怎么读数据==>怎么读1bit怎么判读读到0
怎么判断读到1
初始化时序
一开始是高电平,想要开始传输信号,必须要拉低至少480us释放总线 经过15~60us之后 DS18B20会把这条线拉低60~240us
2 怎么发数据,怎么发出1bit
怎么发出bit0怎么发出bit1写数据时序
不论是写0还是写1时序都是大于60us 写0拉低总线维持60us以上 写1时,信号线拉低1us时间,提醒要写数据了,然后回高,写1位之间的时间间隔1us
读数据时序 也是由主机发起 提醒脉冲大于1us,主机马上释放总线 在15us之内读信号,一个读周期至少是60us,每位的间隔也是1us
DS18B20提供了编程图
供电方式
「新品首发」STM32MP157开发板火爆预售!首批仅300套
Arduino教程┃五分钟全面了解DS18B20模拟防水温度传感器「图文」
前言
防水温度传感器是一个模拟输入模块,它的型号为:DS18B20(中间有详细视频讲解)。
图1:DS18B20模拟防水温度传感器
一、课前准备
学习本节课请准备Arduino UNO主板1块、扩展板1块、防水温度传感器1个、USB方口数据线1根、Mixly(米思齐,V0.998)。
图2:课前需要准备的物品及编程软件
二、模拟防水温度传感器简介
DS18B20防水温度传感器支持“单总线”接口(1-Wire),测量温度范围为-55~125,在-10~85范围内,精度为±0.5。现场温度直接以“单总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的现场温度测量。在Arduino中,它需要连接一个上拉电阻才能使用。
图3 终端传感器适配器
终端传感器适配器的出现就是为了解决刚说的上拉电阻问题,它分别在A&B、A&C之间增加了一个10k电阻,这样当传感器必须有上拉或下拉电阻时,就不需要再连接一个附加电阻,提供简单和稳定的连接。简单的说就是,这个终端提供了一个更容易的方法来连接开关或任何需要上拉/下拉电阻的模块到类似于Arduino UNO主板这样的微控制器。
三、模拟防水温度传感器外形尺寸
温度传感器
钢管:6*50mm
引线长度:1m
终端传感器适配器
终端传感器适配器:
尺寸:22x34mm
螺丝安装孔:两个M3
四、模拟防水温度传感器电气特性
输入电压:3-5.5V DC(直流电源)
感温范围:-55℃~+125℃(引线最高只能承受85度左右)
转换精度:9位~12位A/D
五、模拟防水温度传感器接口说明
把防水温度传感器连接到 终端传感器适配器
请注意颜色区分
黑色 负极 连接 C
红色 正极 连接 B
黄色 数字信号 连接 A
再把 终端传感器 连接到扩展板2号数字管脚或A2号模拟管脚(这个传感器很特殊)。
这个传感器很特殊,数字、模拟都可以获取温度值
黑色 负极 连接 G
红色 正极 连接 V
绿色 信号 连接 S
注意:正负极不能反接,会烧坏传感器。
六、获取模拟防水温度传感器返回值
由于AS-Block只有LM35温度传感器,没有集成DS18B20模块,再加上这个传感器的代码比较复制,所以本节课,我们只使用米思齐来调试。具体获取方法请点击观看视频:温度传感器视频介绍。
七、模拟防水温度传感器使用注意事项
DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
1) 较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
2) 在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
3) 连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
4) 在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。
测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。
八、模拟防水温度传感器知识拓展
1、onewire(单总线)
onewire(单总线)是DALLAS公司推出的外围串行扩展总线技术总线,顾名思义,它是采用一根信号线进行通信,既传输时钟信号又传输数据,而且能够进行双向通信,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。常用到单总线的器件,一般是稳定传感器、EEPROM、唯一序列号芯片等,如DS18B20、DS2431。
在使用单总线时,往往很少CPU会提供硬件单总线,几乎都是根据单总线标准的时序图,通过普通IO翻转模拟实现单总线。而在模式实现时序图的过程中,需要根据CPU时钟频率等条件进行时序时间计算,如果更换CPU后,需要重新计算时序时间,如果时序代码和器件外设控制代码集成在一起,则代码改动比较大。或者同一CPU需要模拟多根单总线时,传统的“复制”方式使得程序显得累赘,还增加ROM占用空间。因此,可以利用“函数指针”的方式,将时序部分抽象出来,达到“复用”代码的效果。
2、上拉电阻、下拉电阻
在数字逻辑电路中,一个信号不是0,就是1。正是因为这样,数字电路的设计才简单,可靠。通常,用电压5v(或者接近5V)代表 on 开状态,代表高电平,对应状态 1。用电压0v (或者接近0v)代表off关状态,代表低电平,对应状态0。有些开发板是基于3,3V的,因此使用3.3V作为高电平。如果一个线路中的电压处于不确定的状态(例如一个引脚不和任何其它回路连通时),那我们就说它的电压是浮动的,他会随着时间不断变化,跳动,而且很容易受到外界环境的影响。处于这种不确定状态的电路会被随机解释为高或者低电平。这种现象也叫电子噪声。然而程序必须是严格准确的,所以电路的设计一定要避免线路电压处于浮动状态。我们可以使用上拉电阻或者下拉电阻将电路的电压在任何时候都保持在确定的状态下,这就是上拉电阻和下拉电阻的作用。
下拉电阻作用:将一个未知的电平拉低到稳定的低电平状态。
上拉电阻作用:将一个未知的电平拉高到稳定的高电平状态。
九、结束语
初始化工作室重点关注“乐高、Scratch、Arduino的学习与创意以及STEAM教育的实施 ”,如果需要更多相关课程,请“关注 ”我,谢谢。
相关问答
【 DS18B20温度传感器 读出数据的转化问题?a=read_byte();\x05...[最佳回答]乘以256是为了将读过来的数据转换成十进制数,再乘以25,然后在返回值里又左移了2,相当于(b*256+a)*0.0625*100!这段程序应该没有判断正负的语句!你多...
DS18B20 做 温度传感器 ,89S52单片机,通过无线模块(NRF89S52)...[最佳回答]分块调试。18B20读取温度后从UART发给计算机看是否正确?发给1602显示是否正确?24L01收发是否正确?
DS18B20温度传感器 如何与单片机相连接_汽配人问答[最佳回答]1、DS18B20温度传感器与单片机的一个IO口连接。2、温度传感器(temperaturetransducer)是指能感受温度并转换成可用输出信号的传感器。温度传感器...
超声波测距用什么 温度传感器 较常用的_作业帮[回答]DS-18B20数字温度传感器Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器.一线总线独特而且经济的特...
车上的 温度传感器 有哪些 车上的温度传感器的作用 - 汽车维修...[回答]温度传感器是利用物质各种物理性质随温度变化的规律把温度转换为电量的传感器。温度传感器是温度测量仪表的核心部分,品种繁多。按测量方式可分为接...
DS18B20温度传感器 与单片机间的通信线(延长线)可以多长 - 17...50-100用5V供电没没问题,只接一支DS18B20最远可以达到500m,18B20单线传输抗干扰能力本来就不高,线最长就几厘米,不管你用什么线延长都没有用的。长...
用一个 DS18B20传感器 和一个单片机最小系统和四位共阳极数码...51单片机开发板使用例程,你找找,里面有一百个C的程序,有一个是关于这个的。这个挺简单的,网上搜搜一大把DS18B20的程序。我有。
DS 是汽车上什么 传感器 ?DS18B20温度传感器有两种供电方式:一是寄生电源方式,二是VDD电源引脚供电方式。寄生电源方式即DS18B20温度传感器不需要通过电源供电,而是当I/O、VDD电源引...
温度传感器DS18B20 和单片机AT89C51,怎么焊接啊,电路图也看不...18B20的1脚接电源,2脚接51的第12脚(P3。2中断0),3脚接地有用(0)回复bik2011DS18B20是最简单的电路,没什么难的吧。有用(0)回复qxt000DS18B2...
跪求指点 DS18B20 程序?一个温控系统的 温度传感器 部分?结构如...[最佳回答]希望能帮到你有问题可以探讨下#include#include#definedataP0#defineucharunsignedchar#defineuintunsigned...