搜索代码

LM75A 温度传感器的 Arduino 代码

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。
  • 在安装过程中,请轻柔地处理传感器,以避免损坏。

接线说明

Arduino_wiring_LM75A_bb

要将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,你应该能在串口监视器上每秒看到温度读数。你可以通过触摸传感器或使用热风枪来测试传感器的响应性,应该会观察到读数相应变化。在连接传感器时要小心极性反转,因为这可能会损坏模块。

图像

LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_bb
Arduino_wiring_LM75A_bb
127-Arduino code for an LM75A temperature sensor
语言: C++
/*
 * \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 文件