广告

DIY一个Arduino温度数据记录仪

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

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

所需组件

该项目所需的组件如下mITednc

● Arduino Uno开发板

● DS3231实时时钟模块

● mini SD卡模块

● LM35温度传感器

● 连接导线

● 面包板

电路原理图

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

● DS3231的GND连接到Arduino的GND

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

● DS3231的SDA连接到Arduino上的A4

● DS3231的SCL连接到Arduino的A5

Arduino开发板与SD卡模块的连接方式如下所示mITednc

● 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温度传感器的连接方式如下所示mITednc

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

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

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

014ednc20180411mITednc

工作原理

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

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

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

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

时间设定代码

include

DS3231 rtc(SDA, SCL);mITednc

void setup()mITednc

{ mITednc

rtc.begin();mITednc

rtc.setDOW(WEDNESDAY); mITednc

rtc.setTime(12, 0, 0); mITednc

rtc.setDate(1, 1, 2014); mITednc

}mITednc

void loop()mITednc

{mITednc

}mITednc

代码

include

include

include

File data_file;mITednc

DS3231 rtc(SDA, SCL);mITednc

const int lm35_pin = A0; mITednc

int temperature; mITednc

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

void setup() {mITednc

Serial.begin(9600);mITednc

rtc.begin(); mITednc

pinMode(lm35_pin, INPUT);mITednc

pinMode(chip_select_pin, OUTPUT);mITednc

if (SD.begin())mITednc

{mITednc

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

} elsemITednc

{mITednc

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

return;

}mITednc

}mITednc

void loop() {mITednc

temperature = analogRead(lm35_pin);mITednc

temperature = (temperature*500)/1023;mITednc

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

if (data_file) {mITednc

Serial.print(rtc.getTimeStr());

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

Serial.print(",");

data_file.print(",");    

Serial.println(temperature);

data_file.println(temperature);

data_file.close();

}mITednc

else {mITednc

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

}mITednc

delay(3000);mITednc

}mITednc

代码说明

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

include

include

include

File data_file;mITednc

DS3231 rtc(SDA, SCL);mITednc

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

if (SD.begin())mITednc

{mITednc

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

} elsemITednc

{mITednc

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

return;

}mITednc

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

temperature = analogRead(lm35_pin);mITednc

temperature = (temperature*500)/1023;mITednc

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

if (data_file) {mITednc

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卡之前进行格式化。mITednc

如何在Excel中制作图表

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

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

(原文发表于ASPENCORE旗下EDN姐妹社区面包板博客,参考链接:https://mbb.eet-china.com/blog/3862649-204089.htmlmITednc

20160630000123mITednc

本文为EDN电子技术设计 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
您可能感兴趣的文章
  • 面向高效、快速瞬态响应的汽车和工业用品的直通升压控 LTC7804可简化升压变换器的设计,同时不会对其先进的性能产生不利影响。LTC7804的主要特性为:低静态电流、单输出同步整流、高达40V的宽输入电压范围(输出电压可达36V)、展频(SSFM)以及适用于高效、低电磁干扰PassThru操作的内部充电泵。
  • 二极管在跌落测试后发生短路,故障原因是? 电源中一颗特定的二极管在经过装置的机械跌落测试(drop test)后发生了短路故障,这种情况一而再地反复发生...机械冲击似乎是引发故障的原因...
  • 如何设计逐次逼近型模数转换器的驱动电路 通常工程师在设计SAR ADC时,通常需要注意以下三个方面:ADC前端驱动设计、参考电压设计、数字信号输出部分设计。本文将介绍ADC的前端驱动所需注意的一些要素。
  • 使用多路复用器在伺服驱动控制模块中优化保护和精度特 在设计可靠的伺服驱动控制模块时,精度和保护特性对于确保可靠运行至关重要。如果在设计过程中没有重视这些特性,可能会导致读数错误或者模数转换器(ADC)或微控制器损坏,从而降低系统效率或导致停机。
  • 解密RF信号链——第2部分:基本构建模块 分立式和集成式组件是构成各个应用领域的RF信号链的基础功能性构建模块。在本系列文章的第一部分,我们讨论了用于表征系统的主要特性和性能指标。然而,为了达到期望的性能,RF系统工程师还必须对各类RF器件有充分的了解,RF器件的选择将决定最终应用中完整RF信号链的整体性能。第2部分将概述典型RF信号链中使用的不同器件的主要类型。
  • 用于信号和数据处理电路的低噪声、高电流、紧凑型DC-D 现场可编程门阵列(FPGA)、片上系统(SoC)和微处理器等数据处理IC不断扩大在电信、网络、工业、汽车、航空电子和国防系统领域的应用。这些系统的一个共同点是处理能力不断提高,导致原始功率需求相应增加。设计人员很清楚高功率处理器的热管理问题,但可能不会考虑电源的热管理问题。与晶体管封装处理器本身类似,当低内核电压需要高电流时,热问题在最差情况下不可避免——这是所有数据处理系统的总体电源趋势。
相关推荐
    广告
    近期热点
    广告
    广告
    广告
    可能感兴趣的话题
    广告
    向右滑动:上一篇 向左滑动:下一篇 我知道了