DS18B20是一种数字温度传感器,具有单总线通信接口,这意味着它可以利用单根数据线与其他设备进行通信,同时还能够提供数字化温度读数。这种传感器常用于多点温度检测系统,尤其适用于需要在多个位置同时测量温度的场合。DS18B20的每个器件都配备了一个独特的48位序列号,这个序列号用于在同一条数据线上区分和识别不同的DS18B20器件。
在51系列单片机上实现多路DS18B20温度检测时,可以通过将多个DS18B20器件连接到单片机的同一数据线上,并使用它们各自的序列号来分别寻址和控制每个传感器。然而,连接在同一总线上的DS18B20数量不宜超过8个,这是为了避免驱动困难和确保通信的可靠性。总线长度也不能太长,因为总线长度过长会影响信号的质量和稳定度。
尽管多路连接DS18B20具有节约单片机I/O引脚的优势,但也有许多缺点。例如,必须使用ROM匹配方法来识别每个传感器,这会导致控制效率降低,编程变得复杂。此外,如果总线上的任何一个DS18B20发生故障,例如短路,将影响到整个总线上的所有器件,导致系统无法正常工作。同时,故障点的查找和维修也会变得困难。并且,DS18B20不支持即插即用,更换器件需要重新编程,这给售后服务带来不便。
鉴于上述局限性,推荐的做法是为每个DS18B20单独分配一个I/O引脚,这样可以减少因为总线共享而带来的问题。如今,单片机的I/O引脚成本较低,例如具有40个I/O引脚的STC89C52单片机价格低廉,因此使用单总线节约引脚的做法已不再具有显著优势。
如果单片机的I/O引脚数量仍然不足以支持所有温度测试点,可以采用多片单片机配合网络的方式,例如使用MAX232或MAX485通信芯片来组成网络,将各个点的温度信息汇集到中央控制机。使用485总线时,通信距离可以达到1200米,并且半双工多机串口通信的编程相对简单。单个DS18B20占用一个I/O引脚,并使用51单片机进行读写,是一种已广泛应用并成熟的方案。这种方法能够实现高精度的温度测量,包括零下的温度,并且可以很容易地通过数码管显示出来。
对于多个DS18B20分别使用不同引脚的电路设计,虽然电路本身并不复杂,但编程会相对困难。通常针对每个DS18B20单独编写程序,这会涉及到51单片机的位操作指令,例如CLRDQ和SETBDQ,这些指令都是直接寻址。但是,可以通过字节操作指令简化这一过程,减少编程工作量。例如,通过对特定I/O口赋值特定的字节,即可实现对应引脚的DS18B20的复位和置位操作。
电路设计中还可以选择不同的数据输出方式。现场显示可以使用LCD1602显示器和串行扩展芯片595或164来实现。串口通信则可以选用MAX232或485芯片。LCD1602显示屏的显示区域较小,因此在显示多路温度数据时,可能需要分屏显示。而通过串口传输温度数据则允许将数据发送到远程终端,便于监控和记录。
在实际应用中,也可以将LCD显示部分设计成可分离的PCB板,并通过接插件的方式与主电路板连接。在需要显示温度时,可以简单地将显示部分插入主板,实现现场显示。如果不需要现场显示,则可以在单片机的P3.0和P3.1引脚上连接电平转换芯片,将温度数据通过串口传输出去。
DS18B20的多路温度检测方案,在精确控制和信息收集方面提供了灵活性和便利性,但由于其自身存在一些局限性,设计者需要根据实际应用场景灵活选择最合适的连接方式和设计方案,以确保系统的稳定性和可靠性。