1. DS18B20温度传感器与单总线协议基础
DS18B20是Dallas半导体(现Maxim Integrated)推出的一款数字温度传感器,采用独特的单总线(1-Wire)通信协议。与传统的I2C或SPI接口传感器不同,单总线器件仅需一根数据线即可实现双向通信,这大大简化了硬件连接,特别适合分布式温度监测系统。
1.1 单总线通信机制解析
单总线协议的核心在于严格的时序控制。所有通信都由主机(此处为FPGA)发起,通过特定的时间槽(time slot)实现数据读写。关键时序参数包括:
- 复位脉冲:主机拉低总线480μs以上,然后释放,等待DS18B20的应答脉冲
- 写时隙:写"1"需保持总线高电平,写"0"需拉低总线60-120μs
- 读时隙:主机发起读时隙后,必须在15μs内采样总线状态
实际调试中发现,时序偏差超过±10%就可能导致通信失败,因此FPGA内部需要精确的时钟分频
1.2 DS18B20的ROM命令与功能命令
每个DS18B20都有唯一的64位ROM编码,但在单器件系统中可以跳过ROM检测。典型操作流程包含:
- 初始化(复位+存在脉冲)
- 发送ROM命令(如0xCC跳过ROM)
- 发送功能命令(如0x44启动温度转换)
- 等待转换完成(典型750ms@12位分辨率)
- 再次初始化后读取暂存器(命令0xBE)
温度数据以16位补码形式存储,其中:
- 低字节为温度小数部分(LSB=0.0625℃)
- 高字节为温度整数部分(最高位为符号位)
2. 多传感器系统的硬件设计要点
2.1 总线拓扑与上拉电阻配置
当连接多个DS18B20时,推荐采用星型拓扑而非链式连接。每个传感器的DQ引脚应并联到总线,并确保:
- 总线长度不超过50米(建议<20米)
- 使用4.7kΩ上拉电阻(多器件时可适当减小阻值)
- 总线远离电源线等噪声源
实测案例:在10米CAT5e网线连接3个DS18B20的系统中,将上拉电阻从4.7kΩ调整为3.3kΩ后,通信稳定性显著提升。
2.2 电源模式选择
DS18B20支持两种供电模式:
- 寄生电源模式:通过总线偷电,节省电源线但转换时总线必须保持高电平
- 外部供电模式:需要额外VDD连接,但允许总线在转换期间进行其他操
