本文主要介绍ds18b20温度传感器工作原理,DS18B20 的工作原理,可以从物理世界到数字信号的转化过程来理解。它内部并没有采用我们常见的模数转换器(ADC),而是用了一种精巧的“脉冲计数”方式来测量温度。
为了让你更清晰地理解,我们可以把这个过程拆解为两个部分:硬件上它是如何测量温度的,以及最终读到的数据代表什么意思。
第一部分:它是如何“感知”温度的?—— 脉冲计数法
你可以把 DS18B20 的内部想象成一个精密的“秒表”车间,有两个关键部件在协同工作:
两个特性不同的振荡器:
低温度系数振荡器:就像一个节拍极其稳定的节拍器。它受温度影响极小,负责产生频率固定的脉冲,作为整个测量的时间基准。
高温度系数振荡器:像一个对温度非常敏感的脉冲发生器。温度越高,它产生脉冲的频率就越快;温度越低,频率就越慢。
两个相互配合的计数器:
计数器1:初始时,芯片会根据一个基准温度(通常是-55℃)给计数器1预设一个初始值。然后,稳定的节拍器(低温度系数振荡器)每发出一个脉冲,计数器1就减1。当它减到0时,就向温度寄存器报告:“我数完了一次!” 同时,计数器1会自动重新加载初始值,开始下一轮计数。
计数器2:它负责控制整个测量的总时长。敏感的振荡器(高温度系数振荡器)产生的脉冲会送给计数器2。当计数器2从初始值减到0时,它就会发出指令,停止整个测量过程。
温度值的诞生:
在整个测量过程中,每当计数器1完成一次从初始值减到0的循环,温度寄存器的值就会增加1。这个过程会一直持续,直到计数器2减到0才停止。
最终,温度寄存器里累加的值,就代表了当前的温度。温度越高,高温度系数振荡器跑得越快,计数器2就减得越快,留给计数器1的计数时间就越短,但这背后更精细的算法确保了最终累加的值能与温度精确对应。
一个小小的“补丁”——斜率累加器
由于高温度系数振荡器的频率变化并非完美的线性关系,DS18B20内部还有一个“斜率累加器”电路。它就像一个智能校准器,会根据温度实时微调计数器1每次重新加载的初始值,从而补偿非线性误差,保证测量的准确性。
一个形象的比喻:这就像用两个跑步的人来测量距离。一个人(计数器1)以固定速度短距离往返跑,每跑完一趟就插一面旗(温度值+1)。另一个人(计数器2)以变速跑(速度受温度影响)来决定总共跑多长时间。最终插下的旗子总数,就代表了“温度”这个距离。
第二部分:读到的数据怎么理解?—— 16位数字输出
当测量结束后,DS18B20会通过单总线把结果送出来。这个结果是一个16位的数字,你需要知道如何“翻译”它。
数据格式:这16位数据以二进制补码的形式存储。
高5位(Bit 15 ~ Bit 11):这是符号位。如果这5位都是 0,表示温度为正;如果都是 1,则表示温度为负。
低11位(Bit 10 ~ Bit 0):这是温度数据的绝对值。其中,高7位是整数部分,低4位是小数部分。
转换公式:无论正负,你都可以用同一个公式来计算实际温度:实际温度 = (读取的16位二进制补码数据) × 0.0625 °C。
这里的 0.0625°C (即 1/16) 是传感器在12位分辨率下的最小分辨率。
举个栗子:
如果你从传感器读到的数据是 07 D0(十六进制),转换成十进制是 2000,那么实际温度 = 2000 × 0.0625 = 125°C。
如果你读到的数据是 FC 90(十六进制),这是一个负数。先把它转换成十进制是 -880,那么实际温度 = -880 × 0.0625 = -55°C。
总的来说,DS18B20就是用这种独特的脉冲计数法,将物理世界的温度,巧妙转化成了我们可以直接读取的数字信号。
小结:以上就是ds18b20温度传感器工作原理,希望对各位电子元器件买家有帮助,了解更多电子元器件知识内容。
热门跟贴