LM75A 温度传感器的 Arduino 代码
在本教程中,我们将学习如何使用 LM75A 温度传感器与 Arduino 一起测量摄氏度和华氏度的温度。LM75A 传感器通过 I2C 协议进行通信,使其易于与 Arduino 板集成。在本教程结束时,您将拥有一个每秒显示温度读数的工作设置。

为了充分利用本教程,我建议观看相关的视频,其中提供了有关设置和代码实现的视觉指导(视频中的时间为20:29)。
硬件解析
LM75A温度传感器是一种数字传感器,能够高精度地测量环境温度。它通过I2C通信协议进行操作,允许多个传感器连接到同一总线上。该传感器具有过温关机功能,可以在不使用时节省电能。
该传感器通常可以作为独立芯片或PCB模块提供。模块包括与Arduino通信所需的重要引脚,如VCC、GND、SDA和SCL。在使用该传感器时,确保连接正确并选择正确的I2C地址进行通信是很重要的。
数据表详情
| 制造商 | NXP / 德州仪器 |
|---|---|
| 零件号码 | LM75A |
| 逻辑/IO电压 | 2.7伏到5.5伏 |
| 供电电压 | 2.7 V 到 5.5 V |
| 输出电流(每通道) | 3 毫安 |
| 峰值电流(每通道) | 10 毫安 |
| PWM频率指导 | N/A |
| 输入逻辑阈值 | 0.3 VCC(高),0.2 VCC(低) |
| 电压降 / R导通电阻(DS(on))/饱和度 | 0.5 V 最大 |
| 热限制 | -55 °C 至 +125 °C |
| 包裹 | SOIC-8 / TSSOP |
| 备注 / 变体 | 可在不同的I2C地址中使用 |
- 确保在您的代码中设置正确的I2C地址。
- 在必要时,在SDA和SCL线上使用上拉电阻。
- 用稳定电压(2.7 V 至 5.5 V)为传感器供电。
- 监测过热情况;传感器的工作温度最高可达 125 °C。
- 在安装过程中,请轻柔地处理传感器,以避免损坏。
接线说明

要将LM75A温度传感器连接到您的Arduino,请首先将传感器的接地引脚连接到Arduino的接地引脚。接下来,将传感器的VCC引脚连接到Arduino的5V引脚。对于I2C通信,将传感器的SDA引脚(通常标记为绿色)连接到Arduino的A4引脚,并将SCL引脚(通常标记为蓝色)连接到A5引脚。如果您使用的是不同的Arduino型号,请确保连接到正确的I2C引脚;例如,在Arduino Mega上,SDA连接到引脚20,SCL连接到引脚21。
如果您将LM75A作为裸芯片而不是模块使用,请确保正确连接相应的引脚:第1引脚连接到A4(SDA),第2引脚连接到A5(SCL),第4引脚连接到地,第8引脚连接到VCC。其余引脚则不连接。此设置确保传感器可以与Arduino正常通信。
代码示例与演练
以下代码初始化LM75A传感器并每秒读取一次温度。这段代码中的关键标识符是lm75a_sensor这是LM75A类的一个实例。该实例用于从传感器获取温度读数。
LM75A lm75a_sensor(false, false, false);该行创建了LM75A类的一个实例,传递表示A0、A1和A2引脚状态的参数。默认状态可以设置为false如果这些引脚没有被使用。
在setup()我们以9600波特率初始化串行通信,这对于在串行监视器上显示温度读数至关重要。
void setup(void) {
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
}这个代码片段设置了串行监视器,让我们能够查看每秒打印的温度读数。
在这个loop()我们获取以摄氏度表示的温度并检查是否存在任何错误。如果温度有效,我们将其与华氏温度等值一起打印。
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}这段代码演示了如何处理温度读数,并将其以摄氏度和华氏度的形式打印到串口监视器。它包括对无效读数的错误处理。
要查看完整代码,请查看文章下方的加载部分。
演示 / 期待什么
一旦完成布线并将代码上传到你的Arduino,你应该能在串口监视器上每秒看到温度读数。你可以通过触摸传感器或使用热风枪来测试传感器的响应性,应该会观察到读数相应变化。在连接传感器时要小心极性反转,因为这可能会损坏模块。
/*
* \brief Show temperature in degrees Celsius and Fahrenheit every second
*
* \author Quentin Comte-Gaz <quentin@comte-gaz.com>
* \date 8 July 2016
* \license MIT License (contact me if too restrictive)
* \copyright Copyright (c) 2016 Quentin Comte-Gaz
* \version 1.0
*
* Video instruction by Ahmad Shamshiri on July 10, 2018 at 20:29 for Robojax.com
* in Ajax, Ontario, Canada
* Watch the video instruction for this code: https://youtu.be/2gmkubeHUXw
For this sketch you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5
*/
#include <LM75A.h>
// Create I2C LM75A instance
LM75A lm75a_sensor(false, //A0 LM75A pin state
false, //A1 LM75A pin state
false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"
void setup(void)
{
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
Serial.println("Temperatures will be displayed every second:");
}
void loop()
{
// Robojax.com LM75A Test
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}
delay(1000);
}
资源与参考
尚无可用资源。
文件📁
Fritzing 文件
-
LM75 温度传感器
Temperature Sensor - LM75.fzpz0.01 MB