Arduino爱好者

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

[经验] 【Arduino】108种传感器系列实验(39)---18B20温度传感器模块

[复制链接]
 楼主| 发表于 2020-1-11 19:01 | 显示全部楼层
本帖最后由 eagler8 于 2020-1-12 11:09 编辑
tigerzq 发表于 2020-1-6 22:45
这个图用什么画的呀?


90.jpg
 楼主| 发表于 2020-1-12 11:01 | 显示全部楼层
tigerzq 发表于 2020-1-6 22:45
这个图用什么画的呀?

是用国产编程软件Linkboy,仿真编程的
 楼主| 发表于 2020-1-12 11:05 | 显示全部楼层
tigerzq 发表于 2020-1-6 22:47
看到例程中的代码不需要第7行的。

是高光这一行吗?

20200112110340068.jpg

麻烦说明解释一下,谢谢老师
 楼主| 发表于 2020-1-12 11:22 | 显示全部楼层
tigerzq 发表于 2020-1-8 14:04
引脚怎么连接的呢?

只要对应接脚就行

[mw_shl_code=arduino,true]#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);[/mw_shl_code]

这里是D3端
 楼主| 发表于 2020-1-12 11:29 | 显示全部楼层
本帖最后由 eagler8 于 2020-1-12 11:31 编辑
tigerzq 发表于 2020-1-8 14:08
不知道为啥,一直显示这个,程序就是楼主的,谁能给指出问题吗?换两个传感器也一样
引脚:
电源正负没问 ...

当时实验中,用了三种不同的编程方式,交叉验证,确定可行的
1、图形化编程(使用Mind+)----手摸18B20,温度马上升高

12.jpg
13.jpg




 楼主| 发表于 2020-1-12 11:33 | 显示全部楼层
tigerzq 发表于 2020-1-8 14:08
不知道为啥,一直显示这个,程序就是楼主的,谁能给指出问题吗?换两个传感器也一样
引脚:
电源正负没问 ...

2、仿真编程(使用Linkboy)----手摸18B20,温度升的更高


14.jpg

15.jpg
 楼主| 发表于 2020-1-12 11:37 | 显示全部楼层
tigerzq 发表于 2020-1-8 14:08
不知道为啥,一直显示这个,程序就是楼主的,谁能给指出问题吗?换两个传感器也一样
引脚:
电源正负没问 ...

3、代码编程----
[mw_shl_code=arduino,true]/*
【Arduino】37种传感器模块系列实验(39)
实验三十九:DS18B20单总线数字温度传感器模块
*/

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  sensors.begin();
}

void loop(void)
{
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures();
  Serial.println("DONE");

  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  
  delay(500);
}[/mw_shl_code]

11-.jpg




发表于 2020-1-12 19:27 | 显示全部楼层
eagler8 发表于 2020-1-12 11:05
是高光这一行吗?

老师不敢当,接触Arduino不多,手里面几个传感器准备一个一个测试一下,结果这个就有问题了。从网上下载的例程如下:这个例子里面只用了一个库文件#include <OneWire.h>
/* DS18S20 Temperature chip i/o
*/
OneWire ds(10); // on pin 10
void setup(void) {
// initialize inputs/outputs
// start serial port
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte data[12];
byte addr[8];
int Temp;
if ( !ds.search(addr)) {
ÿ//Serial.print("No more addresses.\n");
ÿds.reset_search();
ÿreturn;
}
Serial.print("R="); //R=28 Not sure what this is
for( i = 0; i < 8; i++) {
Serial.print(addr, HEX);
Serial.print(" ");
}
if ( OneWire::crc8( addr, 7) != addr[7]) {
ÿSerial.print("CRC is not valid!\n");
ÿreturn;
}
if ( addr[0] != 0x28) {
ÿSerial.print("Device is not a DS18S20 family device.\n");
ÿreturn;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);ÿ // start conversion, with parasite power on at the end
delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE);ÿ // Read Scratchpad
Serial.print("P=");
Serial.print(present,HEX);
Serial.print(" ");
for ( i = 0; i < 9; i++) {ÿ // we need 9 bytes
data = ds.read();


 楼主| 发表于 2020-1-13 07:22 | 显示全部楼层
tigerzq 发表于 2020-1-12 19:27
老师不敢当,接触Arduino不多,手里面几个传感器准备一个一个测试一下,结果这个就有问题了。从网上下载的 ...

早上好,有问题是正常的,电脑不同、环境不同、硬件来路不同,相关的学习经验也不一样。对一个新的传感器,一是建议先用简单的程序来实验,二是尽量用库自带的示例
发表于 2020-3-22 22:15 | 显示全部楼层
tigerzq 发表于 2020-1-8 14:08
不知道为啥,一直显示这个,程序就是楼主的,谁能给指出问题吗?换两个传感器也一样
引脚:
电源正负没问 ...

我也遇到你这个问题了,而且我解决了
你应该是用的单独的传感器,不是楼主的传感器模块。你连接电路的时候没有给2管脚(总线管脚)连接了上拉电阻,如果不接上拉电阻DS18B20也是不能正常工作的。上拉电阻理论值是5KΩ,一般标准电阻中没有5KΩ,用4.7KΩ的也行,然后接到5v上。楼主的传感器模块应该是总线管脚已经焊接集成了了上拉电阻,所以没问题。 搜狗截图20200322221507.jpg
这个是Proteus中给的示例。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino爱好者

GMT+8, 2022-12-9 00:12 , Processed in 0.075004 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表