DS18B20数字温度传感器工作原理详解

本文目录一览

ds18b20怎么样工作的原理是什么

DS1 8 B2 0是使用单线通信协议的数字温度传感器,允许通过单个总线传输数据。
DS1 8 B2 0使用热敏电阻来测量温度。
热敏电阻是一种特殊的电阻,其阻力随温度而变化。
DS1 8 B2 0内还有一个温度传感器,可测量内部温度并将其转换为数字信号。
如果DS1 8 B2 0连接到电源,则它会自动执行温度测量并将结果存储在内部内存中。
结果通过单线协议转发到微控制器或其他系统。
DS1 8 B2 0支持多个在一条线上运行的传感器。
这是由唯一的6 4 位标识代码区别的。
其他功能:工作温度范围:-5 5 至 +1 2 5 °C摄氏摄氏度高精度:±0.5 °C支持多个温度范围(9 -1 2 位)的低功耗。
备用电流约为1 UA。
1 线协议是一种简单,低成本的单线通信协议,可在微控制器和传感器之间进行数据传输。
通信过程:微控制器将温度转换命令发送到总线,并请求DS1 8 B2 0进行温度测量。
接收命令后,DS1 8 B2 0执行温度测量并将结果存储在其内部内存中。
MicroController发送一个数据读取命令,并请求将存储在DS1 8 B2 0中的温度数据发送到微控制器。
接收命令后,DS1 8 B2 0将通过总线上的存储温度数据发送到微控制器。
在微控制器接收到温度数据后,它通过软件转换将其转换为物理单位温度值。
DS1 8 B2 0还具有很高的精度和灵敏度特征,可用于各种温度监测和控制场景。
DS1 8 B2 0可以以两种方式运行:轮询模式和中断模式。
轮询模式:微控制器定期请求传感器以获取电流温度值。
此方法简单易用,但消耗了更多的CPU资源。
中断模式:微控制器等待DS1 8 B2 0中断信号。
DS1 8 B2 0完成温度测量并保存结果后,发出中断信号以通知微控制器。
此方法减少了CPU资源消耗。
DS1 8 B2 0还支持在同一总线上操作的多个传感器,使您可以使用ROM操作识别和选择不同的传感器。
DS1 8 B2 0是一个非常受欢迎的温度传感器,易于使用,低功耗,准确性高,多功能,并且具有许多现成的库。
DS1 8 B2 0可通过各种微控制器和微控制器(例如Arduino,RaspberryPi,STM3 2 和PIC)使用。
在使用DS1 8 B2 0之前,您必须在微控制器或微控制器上配置单线通信接口。
一线接口可以以串行或并行方式实现。
在许多情况下,您需要使用特定的库来访问DS1 8 B2 0。
DS1 8 B2 0可以为读取温度值提供易于使用的接口。
该库为阅读温度值,配置,操作传感器等提供了许多功能。
例如,要使用Arduino读取DS1 8 B2 0的温度值,必须首先将DS1 8 B2 0连接到Arduino板,然后使用OneWire和Dalast Mapper库来实现通信和操纵。
代码大致是这样的:`c ++#包括#include // datawireisconnedtopin2 ontopin2 onthearduino#defineone_wire_bus2 // setupaoNewireinStancetoceToceMunicationWithanyWiredevices(notjustmaxim/dallastemperatus) voidSetup(){serial.begin(9 6 00); // startUpthelibrarysensors.begin();} voidloop(){//callsensors.requesttemperatures() sensors.getTempcByIndex(0); // printThetemperature ontheresialmonitorserial.print(gemertis :); serial.print(tempc); serial.println(Celsius);延迟(1 000);}`应注意,DS1 8 B2 0的引脚连接可能因供应商而异。
通常,您需要检查数据表以了解如何连接。

ds18b20负数小数怎么换算

0.5 摄氏度由1 000表示,因此1 度摄氏摄氏度为1 0000。
显示[4 ] = TEM&0x0F时;它获得了最后四位数字,除以1 0000(1 6 )的大小为00000000000000000000000000000000001 所示,只需将它们均匀地分为小数,1 /1 6 = 0.06 2 5 ,这就是为什么许多人使用0.6 2 5 DSI8 B2 0在接收到温度转换后开始进行转换。
转换后的温度值存储在临时高速度存储器的字节0中,以两个签名的1 6 位扩展名称的形式。
微控制器可以通过单线接口读取这些数据。
阅读时,下部在前面,上尖在后面。
数据格式以0.06 2 5 /LSB的形式表达。
温度值的格式显示在表2 .2 .1 中,其中“ s”是标志的位,并计算了相应的温度:当符号s = 0位时,咬合位直接转换为十进制,获得的温度值为正温度值;当s = 1 时,测得的温度低于零,而DS1 8 B2 0可论到温度补充的值,并且必须倒入下8 位(LSBYTE)并成为原始代码。
因此,计算小数值和获得的温度值是负温度值。

使用psensor实时监控Linux系统温度的方法

如果系统的硬件性能不足,则在玩游戏或运行具有高配置要求的其他软件时,系统会更快地加热系统,并且硬件可以燃烧。
因此,有必要实时监视系统温度。
PSENSOR是系统温度的良好监视工具。
以下编辑器将向您介绍如何使用PSENSOR监视Linux中的系统温度。
Linux下方有许多用法级工具,可以检查和监视不同系统组件的温度。
例如,LM传感器可能会从硬件设置传感器中接收信息,以监视温度,电压,水分和风扇;和HDTEMP,可以通过阅读S.M.A.R.T.测量温度参数;今天,我们将介绍PSENSOR,这是一个前端图形接口温度,可以在视觉上显示多个硬件设备(例如CPU,NVIDIA/ATI/ATI/AMD图形卡和硬盘)的温度。
然后,我将描述如何设置一个PSENSOR来监视CPU和硬盘驱动器的温度。
在Linux桌面系统中安装PSENSOR以使用PSENSOR来视觉显示系统温度,该数据是根据LM传感器和HDTEMP等其他工具获得的数据。
因此,您需要与PSENSOR同时安装这两个工具。
在Debian或Ubuntu中安装PSENSOR:$ SUDOOAPT-GETTALLM-SESSORSHDDDDDDDDDDDDDDDDDTDDTDTDTEMPPSENOR UBUNTU还可以通过PPA Depot安装最新版本的PSENSOR:$ sudoadd-opt-optositorypypta:$ sudoy:$ sudoy:$ sudoy:$ sudoy:$ sudoy allgcccgtk3 -develgconf2 -devellm_sensorsorsorsdvelCppCheckLibatasmart-devellibcurl-deviljson-deviljson-c-devellibmicrohttpd-deevelop2 manlibnotify2 manlibnotify-develli-develli-develli bgtop2 bgtop2 -develmake $ //wpitchhoune.net/psensor/files/psensor-0.8 .0.3 .3 .tar.gz $ tarxvfvzpsensor-0.8 .3 .3 .3 .tar.gz $ cdpssssor-0.8 .8 .0.3 $。
/configure $ make $ sudomake安装在此处,由于需要GTK3 库支持,因此PSENSOR可能与配备GNOME2 桌面配备的CentOS或Rhel6 不兼容。
在启动PSENSOR之前,在Linux中配置PSENSOR,您必须配置LM_SENSORS和HDTEMP。
LM_SENSOR的配置运行以下命令以配置LM_SENSORS,并为每个项目选择“是”。
$ sudosensor检测器此命令将检测和检测硬件中内置的传感器(包括CPU,存储控制器,I/O芯片),然后自动确定需要加载系统中的哪个驱动程序模块并监视温度。
传感器部分完成后,添加检测到的驱动程序模块I /ETC配置,以便可以在运行时自动加载它们。
在Debian或Ubuntu下,检测到的驱动器模块将添加到 /etc /模块中。
在Fedora期间,将驱动程序信息添加到/etc/sysconfig/lm_sersors。
然后继续加载所需的模块,如下:ubuntu:$ sudoServiceModule-iit-toolsstart debian:$ sudo/etc/int.d/init.d/kodstart start Fedora $ sudoserviceelm_sensorm_sensorstart hdtetemp配置您还需要启动HDTEMP。
运行以下命令以启动HDTEMP作为恶魔。
切记用系统的硬盘驱动器替换“/dev/sda”。
$ sudohddddddemp-d/deva/sda使用PSENSOR监视系统温度。
要启动一个PSENSOR来监视温度,您只需运行:$ PSENSOR PSENSOR窗口将显示可用的传感器列表,并可视化传感器中读取的温度。
您可以启用或禁用任何传感器。
此外,您可以为每个传感器设置一个警报级别,以便在传感器温度超过一定阈值时通知您。
PSENSOR使用的标准温度单元为“摄氏度”。
最新版本(0.7 -0.8 )支持摄氏和华氏度之间的温度单位的转换。
如果您使用的版本较旧(例如0.6 .x),并且不支持温度单位的转换Ubuntu用户通过PPA存储安装了最新版本的PSENSOR,Debian用户可以通过源代码安装它。
以上是对使用PSENSOR监视Linux系统温度的方法的介绍,此外,本文引入了PSENSOR,还以不同版本的Linux的详细方法介绍了本文。

18B20测温时读取到的温度数据怎么转换!

org0000h;微控制器的内存分配详细信息! temean_lequ2 9 h;低8 位tuerma_heck 2 8 h用于存储阅读温度;高8 位Flag1 equ3 8 h用于存储阅读温度;已检测到DS1 8 B2 0标志位a_bitqu2 0h;数字管B_BITQU2 1 H的单数存储记忆状态;数字管的十分可消化存储记忆状态;温度性能,在这里,我们考虑使用网站提供的两导数数字管以显示温度;显示范围为00至9 9 度,显示精度为1 度;由于在1 2 位转换过程中每个位的准确性为0.06 2 5 度,因此我们不需要小数点性能,因此我们可以少4 位2 9 H;低4 位的2 8 h位在2 9 h 4 位中转移到高度,因此接收一个新字节,该字节是实际温度的;转换温度的方法非常简单,不需要它繁殖0.06 2 5 系数:lcallget_temper;致电芦苇温度sabarutin mova,2 9 hmovc,4 0h;将2 8 h中最低位移转移到crrcamovc,4 1 hrrcamovc,4 2 hrrcamovc,4 3 hrrcamov2 9 h,alcalldisplay;数字管显示Sabarutin JNBFLAG1 ,MM1 CLRP1 .0SJMPMAINMEM1 :SETBP1 .0SJMPMAININIT_1 8 2 0:致电SETBP2 .2 ;这是DS1 8 B2 0的初始重置。
初始化亚鲁蛋白NOPCLRP2 .2 MOVR1 ,#3 主机5 3 7 微秒TSR1 :MOVR0,#1 07 DJNZR0,$ DJNZR1 ,TSR1 SETBP2 .2 发送一个较低的脉冲,并带有TSR1 SetBP2 .2 延迟的延迟。
然后数据线绘制nopnopmovr0,#2 5 HTSR2 :JNBP2 .2 ,绘制TSR3 ;等待DS1 8 B2 0 DJNZR0对TSR2 LJMPTSR4 反应;延迟TSR3 :setBflag1 ;设置标志位,表明DS1 8 2 0具有LJMPTSR5 TSR4 :CLRFLAG1 ;清晰的标志位,表明在DS1 8 2 0 ljmptsr7 tsr5 中:movr0,#7 0tsr6 :djnzr 0,tsr6 ;定时顺序需要延迟TSR7 持续时间TSR7 :SETBP2 .2 RETGETTT_TEMPER:SETBP2 .2 ;转换温度值阅读lcallinit_1 8 2 0; RESET DS1 8 B2 0JBFLAG1 ,TSS2 RET;确定DS1 8 2 0是否存在?如果不存在DS1 8 B2 0,则TSS2 :MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1 8 2 0MOVA,#4 4 H;发行温度转换命令lcallwrite_1 8 2 0lcalldisplay;在这里,通过调用subrutin,等待到广告转换的结尾,在7 5 0微秒的lcallinit _1 8 2 0中获得1 2 位来获得时间的显示;在准备温度之前,请重置MOVA,#0CCH;留下rom匹配的lcallWrite_1 8 2 0Mova,#0BEH;阅读温度命令lcallwrite_1 8 2 0lcallrad_1 8 2 0; 3 5 h/3 6 HretWrite_1 8 2 0:将阅读温度数据保存在M OVR2 中,#8 $ setBp2 .2 nopdjnzr2 ,wr1 setbp2 .2 retr ead_1 8 2 00:movr4 ,#2 ;阅读DS1 8 B2 0程序,读取来自DS1 8 B2 0的两个字节的温度数据,读取DS1 8 B2 0的高温和低温位。
低位存储在2 9 h(verte_l)中,高位存储在2 8 h(temment_h)re00:movr2 ,#8 中; Overall 8 bits data are RE01 : clrcSetbp2 .2 nopnopnopnopnopnopnopnopnopnopsetbp2 .2 movr3 ,#8 re1 0: djnzr3 , re1 0movc, p2 .2 movr3 ,#2 1 r2 0:#2 1 r2 0: DJNZR3 , DJNZRRRCADJR3 2 , re2 01 mov @R1 , ADECR1 DJNZR4 ,RE00RETDISPLAY:MOVA,2 9 H;性能sabarutin将十六进制的数字转换为十进制MOVB,#1 0中的2 9 h;决定/1 0 =十进制Divabmovb_bit,a; Amova_bit的十个位,b; bmovdptr中的单个位,#numtab; Table Lookup Movr0,#4 DPL1 ,#2 5 0,#4 DPL1 ; Digit Movca,@a+dptr;查找单一问题7 代码movp0,a;发送单位数7 代码CLRP2 .6 ;打开单位数字显示ACALLD1 MS;参见1 MSSetBp2 .6 Mova,B_BIT;取十个数字Movca,@a+dptr; 7 级MOVP0,请参阅A; 7 日期代码CLRP2 .7 ;开放十个导电性能ACALLD1 MS;执行1 MSSetBP2 .7 DJNZR1 ,DPOP; 1 00完全循环DJNZR0,DPL1 ; 4 1 00-满环速率1 MS:MOVR7 ,#8 0; 1 MS延迟djnzr7 ,$ retnumtab:db0c0h,0f9 h,0a4 h,0b0h,09 9 h,09 2 h,08 2 h,08 2 h,0f8 H08 0H,09 0H;实验板上的7 导导数字管0到9 个数字;结束;

若采用多点测温,单片机如何识别ds18b20?

当使用微控制器读取连接到同一行的温度传感器DS1 8 B2 0时,首先需要获取每个DS1 8 B2 0的ROM的序列号。
ROM序列号的读者为0x3 3 初始化DS1 8 B2 0之后,将其发送给0x3 3 命令(请注意,在阅读序列号时,只能连接一个1 8 b2 0的1 8 b2 0)。
DS1 8 B2 0将返回6 4 位序列号,每个1 8 B2 0的序列号是唯一的。
收到所有序列号1 8 B2 0后,这些序列号以前可以存储在程序中以进行后续识别。
当识别特定的1 8 B2 0时,ROM 0x5 5 的合格团队将进入公共汽车,然后发送目标1 8 B2 0的数量。
因此,只有1 8 B2 0的目标才能响应微控制器的说明。
应当指出的是,在开始温度转换之前,首先将0xcc命令发送到1 8 B2 0(跳过ROM补偿),以便轮胎上的所有1 8 B2 0都可以获得命令,然后发送0x4 4 开始的温度命令。
实际上,无论它是启动温度转换团队还是读取数据温度命令,0xcc(肤色ROM匹配)还是0x5 5 (ROM匹配)都应首先发送。
在发送团队之前,接收器实际上是由接收器表示的,这可以是全部1 8 B2 0或确定的。
为了自动检测1 8 B2 0的序列号,该操作相对复杂。
相关方法和命令可以在数据表中找到,但是建议直接在程序中直接检测序列号并将其存储在程序中,从而有助于操作。