我们从2011年坚守至今,只想做纯粹的技术论坛,请不要发布和技术无关的话题。  本站有两万多份高大上的PCB和原理图下载,每日更新中,欢迎常回来看看

 找回密码
 立即注册
搜索
查看: 2189|回复: 4

[技术文章] DIY一个Arduino温度数据记录仪

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:192
  • 打卡月天数:0
  • 打卡总奖励:612
  • 最近打卡:2026-08-19 18:26:30

9571

主题

5772

回帖

7万

积分

三级逆天

积分
78283

终身成就奖特殊贡献奖原创先锋奖金点子奖优秀斑竹奖宣传大使奖

发表于 2018-4-12 09:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我们将使用Arduino开发板制作一个温度数据记录仪,该设备从温度传感器LM35获取温度值,并从DS3231实时时钟模块获取时间。

在本项目中,我们将使用Arduino开发板制作一个温度数据记录仪,该设备从温度传感器LM35获取温度值,并从DS3231实时时钟模块获取时间。然后我们将使用mini SD卡模块将这些值存储在SD卡文件中。之后,我们从PC访问该文件,并在Microsoft Excel中创建这些数值的图表。

所需组件

该项目所需的组件如下

● Arduino Uno开发板

● DS3231实时时钟模块

● mini SD卡模块

● LM35温度传感器

● 连接导线

● 面包板
电路原理图

Arduino开发板与DS3231时钟模块的连接方式如下所示

● DS3231的GND连接到Arduino的GND

● DS3231的VCC连接到Arduino的5V引脚

● DS3231的SDA连接到Arduino上的A4

● DS3231的SCL连接到Arduino的A5
Arduino开发板与SD卡模块的连接方式如下所示

● mini SD卡模块的CS连接到Arduino的数字引脚10

● mini SD卡模块的SCK连接到Arduino的数字插针13

● mini SD卡模块的MOSI连接到Arduino的数字引脚11

● mini SD卡模块的MISO连接到Arduino的数字引脚12

● Mini SD卡模块的VCC连接到Arduino的数字5V

● Mini SD卡模块的GND连接到Arduino的数字GND
Arduino开发板与LM35温度传感器的连接方式如下所示

● LM35的VCC引脚连接到Arduino的5V引脚

● LM35的OUT引脚连接到Arduino的A0

● LM35的GND引脚连接到Arduino的GND
014ednc20180411

工作原理

LM35温度传感器以模拟方式输出信号。我们需要使用ADC转换此输出,以便能够测量温度。 Arduino开发板内置了一个ADC,通过它可以将LM35的输出转换成温度值。

DS3231时钟模块通过I2C通信连接到Arduino。因此,我们只需要将DS3213上的SCL和SDA引脚与Arduino连接,模块就会开始通信。该模块有一个独立的电池,使得其在即使它没有Arduino供电时也能正常运行。

然后使用SD卡模块将温度和时间存储在SD卡中。 SD卡模块将打开SD卡并在里面存储数据。之后,我们在PC上打开该文件,并且在Microsoft Excel中使用这些值生成一个图表。

注意:如果您是第一次使用DS3231模块,则必须先设置时间和数据。要实现这一点,请根据您的时间更改代码中的时间和日期,并上传以下代码:

时间设定代码

#include <DS3231.h>

DS3231 rtc(SDA, SCL);

void setup()

{

rtc.begin();

rtc.setDOW(WEDNESDAY);

rtc.setTime(12, 0, 0);

rtc.setDate(1, 1, 2014);

}

void loop()

{

}

代码

#include <SD.h>

#include <SPI.h>

#include <DS3231.h>

File data_file;

DS3231 rtc(SDA, SCL);

const int lm35_pin = A0;

int temperature;

int chip_select_pin = 10; //pin 53 for arduino mega 2560

void setup() {

Serial.begin(9600);

rtc.begin();

pinMode(lm35_pin, INPUT);

pinMode(chip_select_pin, OUTPUT);

if (SD.begin())

{

Serial.println("Initialization Successful. Ready to use");
} else

{

Serial.println("Initialization failed. Check your pin connections or change your SD card");

return;
}

}

void loop() {

temperature = analogRead(lm35_pin);

temperature = (temperature*500)/1023;

data_file = SD.open("test.txt", FILE_WRITE);

if (data_file) {

Serial.print(rtc.getTimeStr());
data_file.print(rtc.getTimeStr());

Serial.print(",");

data_file.print(",");   

Serial.println(temperature);

data_file.println(temperature);

data_file.close();
}

else {

Serial.println("error opening your SD card file. Try again");
}

delay(3000);

}

代码说明

首先,我们包含了mini SD卡模块和DS3231时钟模块所需的库文件。 SD卡模块通过SPI通信连接到Arduino,因此我们包含了SPI库。 之后,我们初始化两个变量以便使用库函数。

#include <SD.h>

#include <SPI.h>

#include <DS3231.h>

File data_file;

DS3231 rtc(SDA, SCL);

在设置函数中,我们开始与SD卡模块进行通信。 如果一切正常,Arduino将在串行监视器上打印输出“Initialization Successful. Ready to use“,否则将打印输出”Initialization failed. Check your pin connections or change your SD card“。

if (SD.begin())

{

Serial.println("Initialization Successful. Ready to use");
} else

{

Serial.println("Initialization failed. Check your pin connections or change your SD card");

return;
}

LM35温度传感器以模拟形式输出信号,因此首先需要将该模拟输出转换为温度。 然后我们打开SD卡文件“test.txt”。 如果没有该名称的文件,那么Arduino将会创建它。 打开文件后,Arduino将打印输出时间和温度。

temperature = analogRead(lm35_pin);

temperature = (temperature*500)/1023;

data_file = SD.open("test.txt", FILE_WRITE);

if (data_file) {

Serial.print(rtc.getTimeStr());

data_file.print(rtc.getTimeStr());

Serial.print(",");

data_file.print(",");   

Serial.println(temperature);

data_file.println(temperature);

data_file.close();
注意:您要选择的文件名必须为8.3格式。 8.3格式的文件名可以类似“data345.txt”,其中“data345”是8个字符串,“.txt”是3个字符的扩展名。 您不能使用比此格式更长的文件名。 如果您是第一次使用该SD卡,建议在使用SD卡之前进行格式化。

如何在Excel中制作图表

要在excel中制作一个图表,打开Microsoft excel并转到数据菜单,点击'从文本'按钮并选择SD卡文件。 然后选择分隔符,然后单击下一步,之后选择逗号并完成向导。

现在,选择所有的数据,然后转到插入菜单,点击'折线图'。 这将会为我们创建出一个图表。

2

主题

287

回帖

570

积分

1元学习PADS(3期)

积分
570

终身成就奖原创先锋奖

QQ
发表于 2018-4-13 08:29 | 显示全部楼层
回复

使用道具 举报

12

主题

129

回帖

460

积分

二级逆天

积分
460

社区居民社区明星终身成就奖宣传大使奖

QQ
发表于 2018-5-16 17:02 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:初入少年
  • 打卡总天数:7
  • 打卡月天数:0
  • 打卡总奖励:26
  • 最近打卡:2025-11-10 15:56:06

29

主题

1127

回帖

1568

积分

二级逆天

积分
1568

终身成就奖特殊贡献奖原创先锋奖

发表于 2022-9-4 08:31 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:411
  • 打卡月天数:0
  • 打卡总奖励:1413
  • 最近打卡:2026-01-05 09:53:12

0

主题

1071

回帖

5085

积分

二级逆天

积分
5085

社区居民终身成就奖特殊贡献奖原创先锋奖

QQ
发表于 2023-11-7 08:07 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表