这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
ocrobot:alpha:ds18b20:main [2017/10/03 09:49] – 弘毅 | ocrobot:alpha:ds18b20:main [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== ALPHA DS18B20 ====== | ||
+ | 经过I2C接口转换的标准防水型DS18B20温度传感器 | ||
+ | ===== 特点 ===== | ||
+ | ===== 参数 ===== | ||
+ | DS18B20 | ||
+ | |||
+ | |||
+ | 支持读取温度 | ||
+ | |||
+ | 支持读取设备唯一ID | ||
+ | ===== 特点 ===== | ||
+ | DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: | ||
+ | |||
+ | ( 1 )采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 | ||
+ | |||
+ | ( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C范围内,精度为 ± 0.5°C 。 | ||
+ | |||
+ | ( 3 )在使用中不需要任何外围元件。 | ||
+ | |||
+ | ( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 | ||
+ | |||
+ | ( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。 | ||
+ | |||
+ | ( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。 | ||
+ | |||
+ | ( 7 ) 负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 | ||
+ | |||
+ | ( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 | ||
+ | DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。 | ||
+ | ===== 参考图片 ===== | ||
+ | {{: | ||
+ | ===== 示例程序 ===== | ||
+ | 需使用OCROBOT_APLHA_DS18B20_Module库 | ||
+ | |||
+ | github: | ||
+ | |||
+ | |||
+ | 例程: | ||
+ | |||
+ | <code cpp> | ||
+ | #include " | ||
+ | DS18B20 ds(0x01); | ||
+ | void setup() | ||
+ | { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | float Temperature = ds.readTemperature(); | ||
+ | Serial.println(Temperature); | ||
+ | byte ID[8]; | ||
+ | ds.readID(ID); | ||
+ | for(byte num = 0; | ||
+ | { | ||
+ | Serial.print(ID[num]); | ||
+ | Serial.print("," | ||
+ | } | ||
+ | Serial.println(); | ||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====修改设备地址===== | ||
+ | 本设备默认地址为**1** 十六进制:**0x01**,如需自定义I2C地址,首先准备如下程序 | ||
+ | <code cpp> | ||
+ | #include < | ||
+ | / | ||
+ | byte I2CAddr = 10; // | ||
+ | / | ||
+ | void setup() { | ||
+ | Wire.begin(); | ||
+ | Serial.begin(9600); | ||
+ | |||
+ | Wire.beginTransmission(1); | ||
+ | Wire.write(200); | ||
+ | Wire.write(I2CAddr); | ||
+ | Wire.endTransmission(); | ||
+ | | ||
+ | Serial.println(" | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // put your main code here, to run repeatedly: | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | 自行修改程序中需要写入的地址,程序显示OK后,如下图拨动开关,断电后即可, | ||
+ | <WRAP lift round tip 60%> | ||
+ | 请注意:以上程序必须在I2C地址有效情况下才能正确写入,建议写入时保证开关在默认地址位置。 | ||
+ | |||
+ | 并且任何时候改变开关位置,请重新上电使其生效 | ||
+ | </ | ||
+ | |||
+ | ==== 拨动开关示意图 ==== | ||
+ | {{: | ||
+ | {{: | ||
+ | ===== 下载 ===== | ||
+ | **数据手册:** | ||
+ | |||
+ | **原理图:** | ||
+ | {{ : |