Arduino 第十一章:LM35 温度传感器
一、LM35 简介
LM35 是美国国家半导体公司(现德州仪器)生产的一款精密集成电路温度传感器。与基于热力学原理的传统温度传感器不同,LM35 能直接将温度转换为电压输出,且输出电压与摄氏温度呈线性比例关系,无需额外的校准即可提供高精度的温度测量。它具有精度高、线性度好、成本低、使用方便等优点,在温度测量和控制系统中应用广泛。
二、工作原理(根据不同温度传感器修改计算方式)
LM35 基于半导体的物理特性工作。半导体材料的带隙电压会随温度变化,LM35 内部电路利用这一特性,将温度变化转化为电压输出。其输出电压与摄氏温度成线性关系,比例系数为 10mV/℃,即温度每升高 1℃,输出电压增加 10mV。例如,在 25℃时,LM35 的输出电压为 250mV(25×10mV) 。
三、硬件连接
(一)所需材料
- Arduino 开发板(如 Arduino Uno)
- LM35 温度传感器
- 杜邦线若干
(二)引脚说明
LM35 通常有三个引脚:
- VCC:电源正极,接 +5V。
- GND:电源负极,接地。
- Vout:温度电压输出端。
(三)连接方式
将 LM35 的 VCC 引脚连接到 Arduino 的 5V 引脚,为传感器供电;GND 引脚连接到 Arduino 的 GND 引脚;Vout 引脚连接到 Arduino 的一个模拟输入引脚,这里选择 A0 引脚。
(四)连接图
+5V (Arduino)
|
|
[VCC] (LM35)
[Vout] ---- A0 (Arduino)
[GND] ---- GND (Arduino)
四、代码实现
(一)使用 Arduino IDE 编程
// 定义 LM35 连接的模拟引脚
const int lm35Pin = A0;
void setup() {
// 初始化串口通信,波特率为 9600
Serial.begin(9600);
}
void loop() {
// 读取模拟引脚的值
int sensorValue = analogRead(lm35Pin);
// 将模拟值转换为电压(Arduino 模拟输入范围 0 - 1023 对应 0 - 5V)
float voltage = sensorValue * (5.0 / 1023.0);
// 根据 LM35 特性(10mV/℃)将电压转换为温度(℃)
float temperatureC = voltage / 0.01;
// 打印温度值到串口监视器
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
// 延时 1 秒
delay(1000);
}
(二)代码解释
- 变量定义:
const int lm35Pin = A0;
:定义 LM35 的输出连接到 Arduino 的 A0 模拟引脚。
setup()
函数:Serial.begin(9600);
:初始化串口通信,设置波特率为 9600,用于将温度数据发送到计算机的串口监视器。
loop()
函数:int sensorValue = analogRead(lm35Pin);
:使用analogRead()
函数读取 A0 引脚的模拟值,范围是 0 - 1023。float voltage = sensorValue * (5.0 / 1023.0);
:将模拟值转换为对应的电压值,因为 Arduino 的模拟输入 0 - 1023 对应 0 - 5V。float temperatureC = voltage / 0.01;
:根据 LM35 输出电压与温度的线性关系(10mV/℃),将电压转换为摄氏温度。Serial.print()
和Serial.println()
:将温度值输出到串口监视器。delay(1000);
:延时 1 秒,避免频繁读取数据。
五、应用拓展
(一)温度显示
可以将读取到的温度值通过液晶显示器(如 16x2 LCD)显示出来。结合之前学过的液晶显示器知识,在代码中添加相应的显示控制部分。
(二)温度报警
设置一个温度阈值,当测量的温度超过或低于该阈值时,触发报警装置,如点亮 LED 灯或触发蜂鸣器。
(三)数据记录
将温度数据存储到 SD 卡或通过无线模块发送到远程服务器,实现数据的长期记录和分析。
六、注意事项
- 电源稳定:为保证测量精度,要确保给 LM35 提供稳定的 5V 电源。不稳定的电源可能导致输出电压波动,影响温度测量结果。
- 引脚连接:连接时要仔细确认引脚对应关系,避免接错导致传感器无法正常工作。
- 环境影响:传感器周围的环境因素,如热辐射、气流等,可能会对测量结果产生一定影响。应尽量将传感器放置在通风良好、无明显热源或冷源干扰的位置。