SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Chinese)

This Tutorial is Retired!

This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.

Pages
Contributors: D___Run___
Favorited Favorite 1

实验 9:读取温度传感器

简介

温度传感器正如其字面意思一样 – 用于测量环境温度的传感器。在本实验中,您将从温度传感器读取原始的 0-1023 值,计算实际温度,然后通过串行监视器打印出来。不知道什么是串行监视器?请完成本实验以进行了解!

所需部件

您需要以下部件:

  • 1x 实验电路板
  • 1x Arduino 101 或 Genuino 101 开发板
  • 3x 跳线
  • 1x TMP36 温度传感器

没有 SIK?

如果您要执行本实验,但又没有 SIK,那么我们建议您使用这些部件:

Breadboard - Self-Adhesive (White)

Breadboard - Self-Adhesive (White)

PRT-12002
$5.50
48
Jumper Wires - Connected 6" (M/M, 20 pack)

Jumper Wires - Connected 6" (M/M, 20 pack)

PRT-12795
$2.10
2
Temperature Sensor - TMP36

Temperature Sensor - TMP36

SEN-10988
$1.60
18

您还需要一个 Arduino 101 Genuino 101 开发板。

Arduino 101

DEV-13787
9 Retired

Genuino 101

DEV-13984
Retired

TMP36 温度传感器简介

替换文本

TMP36 是低压摄氏度精度温度传感器。它可提供与摄氏温度成线性比例的电压输出。而且无需任何外部校准即可提供以下典型精确性:+25°C 时为 ±1°C,处于 −40°C 到 +125°C 温度范围时为 ±2°C。输出电压可以方便地使用比例系数 10 mV/°C 转换为温度。

如果您查看上面带有文本的平面,则中央针脚是信号针脚;左侧针脚是电源电压(在本教程是 3.3V),而右侧针脚接地。

专业提示:TMP36 的外观十分类似于晶体管。可将一点指甲油滴在 TMP36 顶部,以便易于发现。

硬件接线

是否准备好开始对每个部件进行接线?请查看下面的接线图以了解如何连接每个部件。

请特别注意组件用于指示如何在实验电路板上放置它的标记。极化组件只能按一个方向连接到电路。

请注意:温度传感器只能按一个方向连接到电路。请参阅下文以了解温度传感器 - TMP36 的针脚输出。

实验的接线图

替换文本

难以看清电路?单击接线图可放大查看。

打开草图

在计算机上打开 Arduino IDE 软件。采用 Arduino 语言进行编码可控制电路。通过访问您先前下载并置于“示例”文件夹中的“101 SIK 指南代码”,来打开用于电路 9 的代码。

要打开该代码,请转到:文件 > 示例 > 101 SIK 指南代码 > Circuit_09

还可以将以下代码复制并粘贴到 Arduino IDE 中。点击“上传”,然后查看发生的情况!

language:cpp
/*
SparkFun Inventor's Kit
Example sketch 07

TEMPERATURE SENSOR

  Use the "serial monitor" window to read a temperature sensor.

This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.

*/

//analog input pin constant
const int tempPin = 0;

//raw reading variable
int tempVal;

//voltage variable
float volts;

//final temperature variables
float tempC;
float tempF;

void setup()
{
  // start the serial port at 9600 baud
  Serial.begin(9600);
}

void loop()
{
 //read the temp sensor and store it in tempVal
 tempVal = analogRead(tempPin);

 //print out the 10 value from analogRead
 Serial.print("TempVal = ");
 Serial.print(tempVal);

 //print a spacer  
 Serial.print(" **** ");

 //converting that reading to voltage by multiplying the reading by 3.3V (voltage of       //the 101 board)
 volts = tempVal * 3.3;
 volts /= 1023.0;

 //print out the raw voltage over the serial port
 Serial.print("volts: ");
 Serial.print(volts, 3);

 //print out divider
 Serial.print(" **** ");

 //calculate temperature celsius from voltage
 //equation found on the sensor spec.
 tempC = (volts - 0.5) * 100 ;

// print the celcius temperature over the serial port
Serial.print(" degrees C: ");
Serial.print(tempC);

//print spacer
 Serial.print(" **** ");

// Convert from celcius to fahrenheit
tempF = (tempC * 9.0 / 5.0) + 32.0;

//print the fahrenheit temperature over the serial port
Serial.print(" degrees F: ");
Serial.println(tempF);

//wait a bit before taking another reading
delay(1000);
}

要注意的代码

Serial.begin(9600);

使用串行监视器之前,您必须调用 Serial.begin() 以对它进行初始化。9600 是“波特率”或通信速度。两个设备相互通信时,两者必须设置为相同速度。

Serial.print(tempC);

Serial.print() 命令非常智能。它可以打印出您可向它传递的几乎任何内容,包括所有类型的变量、带引号的文本(又称为“字符串”)等。请参阅 http://arduino.cc/en/serial/print 以了解详细信息。

Serial.println(tempF);

Serial.print() 会在相同行上打印所有内容。

Serial.println() 会移动到下一行。通过将这两个命令结合使用,您可以创建易于阅读的文本和数据打印输出。

应看到的情况

您应能够在 Arduino IDE 中的串行监视器上读取温度传感器所检测到的温度。如果它未运行,请确保正确装配了电路以及验证了代码并将它上传到开发板,或查看“故障诊断”部分。

您在 Arduino IDE 的串行监视器上应看到的示例:

TempVal = 223 **** 伏:0.719 **** 摄氏度:21.94 **** 华氏度:71.48

TempVal = 224 **** 伏:0.723 **** 摄氏度:22.26 **** 华氏度:72.06

TempVal = 224 **** 伏:0.723 **** 摄氏度:22.26 **** 华氏度:72.06

TempVal = 224 **** 伏:0.723 **** 摄氏度:22.26 **** 华氏度:72.06

TempVal = 224 **** 伏:0.723 **** 摄氏度:22.26 **** 华氏度:72.06

TempVal = 224 **** 伏:0.723 **** 摄氏度:22.26 **** 华氏度:72.06

TempVal = 223 **** 伏:0.719 **** 摄氏度:21.94 **** 华氏度:71.48

TempVal = 223 **** 伏:0.719 **** 摄氏度:21.94 **** 华氏度:71.48

替换文本

故障诊断

似乎没有任何情况发生

此程序无法向外指示它是否在运行。要查看结果,必须打开 Arduino IDE 的串行监视器(按照上一页的说明执行)。

显示的数据无意义

发生这种情况的原因是,串行监视器在采用与预期不同的速度接收数据。要修复此问题,请单击显示“*** 波特率”的下拉框,将它更改为“9600 波特率”。

温度值未变化

尝试用手指捏住传感器以加热它,或将一个冰袋压在传感器上以冷却它。

温度传感器非常热!

您将它接反了!立即拔下 Arduino,让传感器冷却,然后仔细检查接线。如果您处理速度足够快,则传感器可能尚未损坏,仍可运行。