风筝
发表于: 2017-4-26 12:51:37 | 显示全部楼层

temperature-logger-finished-768x576.jpg


在本项目中,我们将使用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


Arduino-Temperature-logger.png


工作原理

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


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


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


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


时间设定代码

  1. #include <DS3231.h>

  2. DS3231  rtc(SDA, SCL);




  3. void setup()

  4. {  

  5.   rtc.begin();

  6.    rtc.setDOW(WEDNESDAY);     

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

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

  9. }




  10. void loop()

  11. {

  12. }
复制代码

代码

  1. #include <SD.h>

  2. #include <SPI.h>

  3. #include <DS3231.h>

  4. File data_file;

  5. DS3231  rtc(SDA, SCL);




  6. const int lm35_pin = A0;

  7. int temperature;  

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




  9. void setup() {

  10.   Serial.begin(9600);

  11.   rtc.begin();  

  12.   pinMode(lm35_pin, INPUT);

  13.   pinMode(chip_select_pin, OUTPUT);

  14.   if (SD.begin())

  15.   {

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

  17.   } else

  18.   {

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

  20.     return;

  21.   }

  22.    

  23. }




  24. void loop() {

  25.   temperature = analogRead(lm35_pin);

  26.   temperature = (temperature*500)/1023;

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

  28.   if (data_file) {   

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

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

  31.     Serial.print(",");

  32.     data_file.print(",");   

  33.     Serial.println(temperature);

  34.     data_file.println(temperature);

  35.     data_file.close();

  36.   }

  37.   

  38.   else {

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

  40.   }

  41.   delay(3000);

  42. }
复制代码

代码说明

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

  1. #include <SD.h>

  2. #include <SPI.h>

  3. #include <DS3231.h>

  4. File data_file;

  5. DS3231  rtc(SDA, SCL);
复制代码

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

  1. if (SD.begin())

  2.   {

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

  4.   } else

  5.   {

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

  7.     return;

  8.   }
复制代码

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

  1. temperature = analogRead(lm35_pin);

  2.   temperature = (temperature*500)/1023;

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

  4.   if (data_file) {   

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

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

  7.     Serial.print(",");

  8.     data_file.print(",");   

  9.     Serial.println(temperature);

  10.     data_file.println(temperature);

  11.     data_file.close();
复制代码

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


如何在Excel中制作图表

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


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


Temperature-logging-chart.png

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1487



手机版|

GMT+8, 2024-10-9 06:17 , Processed in 0.077079 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

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