2019-4-10 10:43:24 [显示全部楼层]
3508浏览
查看: 3508|回复: 3

[进阶] DS18B20单总线配置

[复制链接]
单总线即one-wire总线,是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。

因此我们可以只用一个数字接口,连接多个温度传感器。



在这个教程中,我们将使用dfrobot出的DS18B20防水温度传感器套件,一块UNO板,以及跳线若干。
库文件需要用到OneWire。

DS18B20单总线配置图1
单总线协议简介(The 1-Wire Protocol)
每一个单总线设备都有一个独一无二的”ROM”地址,包含了一个8-bit family code,48-bit serial number和一个8-bit CRC。 CRC (cyclic redundancy check)循环冗余检查, 用于验证数据完整性。
[mw_shl_code=c,true]  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }[/mw_shl_code]

如上面代码所示,地址的首位,用于确定设备的类型,我们这次用到的温度传感器就是DS18B20,所以得到的地址的第一位为0x28(hex)。Arduino作为主设备,连接的传感器作为从设备。在DS18B20防水温度传感器套件中的转接器已经包含了上拉电阻,因此并不需要外接电了。
DS18B20单总线配置图2DS18B20单总线配置图3

下图为连接图,一块UNO板,两个DS18B20温度传感器,在面包板上进行连接。接在UNO的D2口。
首先我们可以,用一个Address finder来测试一下是否正确的连接了。打开串口监视器,我们可以得到两个设备的ROM地址。这个地址也可以直接使用。在OneWire的库文件中,有一个crc8(address, 7)函数可以直接调用,用于计算CRC的值。
DS18B20单总线配置图4DS18B20单总线配置图5

读取数据:
读取单总线设备需要几个步骤。不同的设备有不同的能力。这次用的DS18B20可以读取和报告温度,而DS2438可以读取电压,电流和温度。

[mw_shl_code=c,true]while (bus.search(address))[/mw_shl_code]

bus.search 执行搜索,如果这个函数返回一个’1’, 则表示他找到找到了下一个设备, 你可以通过address来检索ROM。如果没有其他设备会返回0。可以用OneWire::reset_search() 函数来重置搜索。

[mw_shl_code=c,true]      bus.reset();
      bus.select(address);

      bus.write(0x44, 1);[/mw_shl_code]


选择ROM地址,在此之前要先reset. 下图为DS18B20的指令表。Bus.write(0x44,1)表示执行一个conversation 操作。 bus 是一个OneWire 类的一个实例。当这个指令Bus.write(0x44,1)输入后,设备会读取内部的ADC, 当这个步骤完成后,他会复制数据到暂存器(scratchpad)中。
DS18B20单总线配置图6

数据被复制到暂存器后,可以被读取。暂存器可以在任何时候被读取,并不需要conversion 指令。

[mw_shl_code=c,true]      byte present = bus.reset();
      bus.select(address);
      bus.write(0xBE); // Read Scratchpad
[/mw_shl_code]


bus.write(0xBE); //读取暂存器中的数据


下面截图是得到的数据,前面是传感器Rom的地址,后面是测得的温度。
DS18B20单总线配置图7

One_wire_address_finder.zip

453 Bytes, 下载次数: 60

18B20_one_wire2.0.zip

651 Bytes, 下载次数: 82

gada888  版主

发表于 2019-4-14 09:36:07

感谢提供这么详细的教程
回复

使用道具 举报

gada888  版主

发表于 2019-4-14 09:36:17

感谢提供这么详细的教程
回复

使用道具 举报

20060606  高级技匠

发表于 2020-8-8 06:15:48

超级感谢,我正需要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail