0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带有2个DS18B20和采样率控制的Arduino数据记录器的制作教程

454398 来源:wv 2019-10-15 14:39 次阅读

步骤1:材料

1.- Arduino UNO

2.-数据记录器护罩

3.- 2个温度传感器DS18B20

4.-一种线地址查找器实用程序。

5.-面包板,连接器等。

6.-SD或micro SD卡

7.-CR 1220兵器(如果不包含)

8.-达拉斯温度库

9.- Onewire库

第2步:传感器的地址

下载实用程序1有线地址查找器并连接传感器。您必须一一完成。在此示例中,我使用的是正常电源模式,并且将数据连接到arduino的引脚3。

我的引脚

红色= Vcc + 5v

蓝色=数据

黑色= GND

有此页面上有关此传感器的很多信息

解压缩1个有线地址查找器,然后将文件放入保存草图的文件夹中。以我的Windows7为例:

我的文档--- Arduino

然后从arduino IDE打开并运行它

打开----我的文档- --- Arduino ---一个电线地址查找器。pde

您必须复制地址。

请确保您已安装所需的库(Onewire和达拉斯温度)

步骤3:测试传感器

现在您可以连接两个传感器了。这次是引脚2,还是可以在这里更改:

#define ONE_WIRE_BUS_PIN 2//我们正在使用的引脚

每个传感器都有自己的地址。您必须将地址放在这里:

DeviceAddress Probe01 = { 0x28、0xFF,0x56、0xC4、0x01、0x15、0x02、0x72 };//inox2

DeviceAddress Probe02 = { 0x28、0xFF,0xC2、0xD1、0x02、0x15、0x03、0xD9 };//Inox1

在此处更改分辨率:

///将分辨率设置为9位(可以是9到12位。.越低越快)

sensors.setResolution( Probe01,9);

sensors.setResolution(Probe02,9);

如果一切正常,您将在串行监视器中保存数据(参见图片)

步骤4:采样率控制

I假设您知道如何使用数据记录器防护罩。如果不是,请访问我以前的说明。(介绍中的链接)

现在,我们必须使用数据记录器防护罩的RTC。安装它,然后将传感器连接到arduino(Data)的引脚2。

确保您具有所需的库:Wire,OneWire,RTClib,DallasTemperature

诀窍是

所以我们有了:

DateTime now = RTC.now();。//时钟调用

//-----------------一旦我们调用了时钟,我们将比较min和sec并打印---------

if(now.second()== 00){//每分钟采样

如果秒为0,则我们有一个“新”分钟并打印我们想要的内容。有关更多详细信息,请参见我之前的说明(导言中的链接)

以下是串行监视器的示例:每分钟和每10分钟。您可以在图片中看到结果。

步骤5:数据记录器

我们测试了采样率,现在我们使用屏蔽的sd卡记录数据。您必须使用与上一步相同的连接。

警告

-某些屏蔽需要arduino的引脚10作为输出,即使它在工作(记录)。我没有。

//pinMode(10,OUTPUT);//对于某些数据记录器屏蔽。如果需要,请取消注释。

-更改您的CS(chipSelect)的提示。我的是8

const int chipSelect = 8;//您的数据记录器防护罩的CS引脚。也许不是您的!!

-确保您具有与数据记录器防护罩兼容的经过测试/格式化的sd卡。

使事情变得更容易,则可以使用函数“ getTempCByIndex”(摄氏)或getTempFByIndex(华氏度),其中(0)是第一个传感器,(1)是第二个传感器,依此类推。您不需要地址,但必须手动识别传感器。如果只需要一个传感器,则此示例很有用,因此必须使用索引0。请参见示例。

继续“按地址代码”,我向您展示3个示例:每1、10和30分钟。我认为这些示例可以满足您的需求。如果您每小时都需要:

if(now.minute()== 00 && now.second == 00)

{

打印所需内容

}

您可以使用其他具有此结构的传感器来控制采样率。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 采样率
    +关注

    关注

    0

    文章

    62

    浏览量

    16510
  • DS18B20
    +关注

    关注

    10

    文章

    765

    浏览量

    80090
  • 数据记录器
    +关注

    关注

    0

    文章

    51

    浏览量

    12602
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184826
收藏 人收藏

    评论

    相关推荐

    Proteus8.6两DS18B20只一能用why?

    解决:这两DS18B20(12位数据),一DS18S20(9位
    发表于 11-09 06:39

    机智云采用MCU方案采集DS18B20温度,一直无法读取数据怎么解决?

    单片机:STC8A8K64S4A12;ESP8266-01 采用机智云的MCU方案,51单片机的程序是自动生成的,基础功能已经实现,但是一直无法读取DS18B20数据DS18B20控制
    发表于 11-06 07:45

    请问ds18b20的分辨是什么意思?

    ds18b20的分辨是什么意思??
    发表于 11-03 07:42

    DS18B20可以实现并联测温吗?

    分别读取两DS18B20的温度
    发表于 10-24 07:45

    DS18B20采样温度的精度可以达到多少?

    DS18B20采样温度的精度可以达到多少
    发表于 10-12 08:14

    如何使用Nano100来读DS18B20

    : NuTiny-EVB-Nano130-LQFP128 v1.1 MCU与DS18B20到PD.0的DS18B20通信读DS18B20,然后通过串端输出温度,作为浮体类型。DS18B20
    发表于 08-30 08:07

    如何使用Mini51来读DS18B20

    MCU与DS18B20至P5.2进行通信,读DS18B20,然后通过串端输出温度,作为浮体类型。 DS18B20温度分辨为12比特。 港口的轮渡费用为115200美元。 您可以在
    发表于 08-29 07:08

    如何使用Nano100来读DS18B20

    : NuTiny-EVB-Nano130-LQFP128 v1.1 MCU与DS18B20到PD.0的DS18B20通信读DS18B20,然后通过串端输出温度,作为浮体类型。DS18B20
    发表于 08-22 07:54

    使用Mini51来读DS18B20

    MCU与DS18B20至P5.2进行通信,读DS18B20,然后通过串端输出温度,作为浮体类型。 DS18B20温度分辨为12比特。 港口的轮渡费用为115200美元。 您可以在
    发表于 08-22 06:08

    如何使用i2c接口获取温度传感DS18B20数据

    使用i2c接口获取ds18b20数据,并且进行数据处理
    发表于 08-16 07:45

    ds18b20错误输出的原因?

    所以我遇到了一问题。我让 tasmota 在连接了两 DS18B20 的 esp8266 上运行。我在数据和电源之间有通常的 4k7 电阻。我不断收到其中一
    发表于 05-29 08:15

    DS18B20各种时序差异是什么?

    有两不同的 DS18B20 温度传感。一带有 3 英尺长的导线,您可以在水中浮出水面,另一
    发表于 05-25 07:41

    ds18b20获取数据并使用mqtt通过互联网发送,未找到DS18b20是怎么回事?

    我尝试了 Arduino ide,它发送正确但另一问题 - ds18b20 未检测到。所以有什么问题???我考虑过 DS 的问题,但使用 C 代码效果很好。
    发表于 05-23 07:19

    【正点原子STM32精英V2开发板体验】DS18B20温度采集

    输出,用户可以通过一些简单的算法,将数据还原为温度值。其分辨可以达到12位,满足一般情况下对温度采集的需要。与模拟温度传感相比,DS18B20省去了信号调理、A/D转换等通道处理电
    发表于 05-03 19:31

    DS18b20传感读数问题如何解决?

    想扩展它以使用防水 DS18b20 温度探头。使用内置的 C 库,我能够从探头读取温度,但我正在努力解决如何将值传回我的应用程序的其余部分的问题。 本质上,我想定义一函数
    发表于 04-27 07:04