提示:本文内容仅供学习参考。Author: Jonnie Walker 


前言

           你好! 本文将为你介绍TMP1075数字温度传感器的基本使用与测试过程。首先是传感器基本特征参数及应用场景。后面逐步进行传感器测试并打印数据。好了,那我们开始吧!


一、TMP1075是什么?

        TMP1075 是德州仪器(TI)推出的一款高精度、低功耗数字温度传感器,适用于多种嵌入式系统和物联网应用。图1是本次使用的传感器模块。

 图1

以下是其关键特性及详细信息的整理:

  1. 高精度测量

    • 精度:±0.25°C(典型值,-55°C至+125°C),±1°C(最大值,-40°C至+110°C),±2°C(最大值,-55°C至+125°C)。

    • 分辨率:12位数字输出(0.0625°C/位)。

  2. 宽工作电压与低功耗

    • 电压范围:1.62V至5.5V,兼容电池供电设备。温度与电源无关。

    • 功耗:

      • 连续模式:2.7µA(典型值)。

      • 关断模式:0.37µA(典型值)。

      • 单次转换模式:支持按需测量后自动休眠,进一步降低平均功耗。

  3. 灵活的接口与配置

    • 通信接口:I2C/SMBus兼容,支持标准(100kHz)和快速(400kHz)模式。注:可兼容I3C混合快速模式总线。

    • 地址配置:通过AD0/AD1/AD2引脚可设置不同I2C地址(默认0x48),允许单总线连接多个传感器。支持高达32个I2C地址。

  4. 可编程功能

    • 转换速率:用户可调(15ms至4秒),平衡响应速度与功耗。

    • 警报输出:支持温度阈值设定,通过ALERT引脚触发中断,阈值寄存器可编程。

    • 软件:与业界通用LM75和TMP75兼容。

  5. 封装与尺寸

    • 提供 WSON-6(2mm×2mm) 和 DSBGA-6(1.25mm×1.35mm) 超小封装,适合空间敏感设计。

应用场景:

             1.物联网设备:如智能家居传感器、环境监测节点。

             2.便携医疗设备:体温计、可穿戴健康监测。

             3.工业系统:电机/PCB温度监控、HVAC控制。

             4.消费电子:手机、平板电脑热管理。

二、测试步骤

1.硬件

    下面是本次测试使用的硬件部分。

图2   

图3 

图3是tmp1075数字温度传感器的原理图。A0,A1,A2,是地址选择引脚,这里全部接地默认 地址。

根据下表内容连接我们硬件电路:

TMP1075引脚 ESP32-C6引脚
VCC 3.3V 
GND GND
SDA IO6 (SDA)
SCL IO7 (SCL)
ALERT NC
AD0/AD1 NC

注意:TMP1075默认I2C地址为 0x48(AD0/AD1悬空)。

      

2.软件

    硬件准备好后,开始上我们的软件了,将下面代码进行编译,然后下载到硬件电路:

提示:本次开发环境为ArduinoIDE2.0版本,并且你要更新ESP32最新V3.0固件包如图4:

 图4

才能使用ESP32C6开发版,其实本次测试不一定使用ESP32-C6用C3,S3  等都是可以的,只需要改一下程序中IIC初始化硬件引脚部分代码就可以了!

/**
 * @file tmp1075_T1.ino
 * @author Jonnie Walker ite
 * @brief  TMP1075+ESP32-C6_Test
 * @version 0.1
 * @date 2025-05-20
 * 
 * @copyright Copyright (c) 2025
 * 
 * --------------------------------------------------/
 * 
 * 
 * 
 * 
 */

#include <Wire.h>

// TMP1075 I2C address (default 0x48, AD0/AD1 adjustable)
#define TMP1075_ADDR 0x48

void setup() {
  Serial.begin(115200);
 // Wire.begin();
  Wire.begin(6, 7); // SDA, SCL
  delay(100);   // Wait for the sensor to stabilize

// Optional: Configure the TMP1075 working mode (default continuous conversion, no additional configuration required)
// Configuration example: Single conversion mode + 12-bit resolution
  Wire.beginTransmission(TMP1075_ADDR);
  Wire.write(0x01);       // Point to the configuration register (0x01)
  Wire.write(0xA0);       // Single mode (BIT7=1), 12-bit resolution (BIT5-6=00)
  Wire.write(0x00);       // Default alarm polarity/mode
  Wire.endTransmission();
}

void loop() {
  float temperature = readTemp();
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" °C");
  delay(1000); //Read once per second
}


// Read the temperature function
float readTemp() {
 // Trigger a single conversion (if configured to single mode)
  Wire.beginTransmission(TMP1075_ADDR);
  Wire.write(0x01);      // Points to the configuration register
  Wire.write(0xA0 | 0x01); // Maintain the configuration and trigger a single conversion (BIT0=1)
  Wire.endTransmission();

 // Wait for conversion to complete (about 15ms 12bit)
  delay(20);

// Read temperature data (2 bytes)
  Wire.beginTransmission(TMP1075_ADDR);
  Wire.write(0x00);       // Point to the temperature register (0x00)
  Wire.endTransmission(false); // Maintain the I2C connection
  Wire.requestFrom(TMP1075_ADDR, 2);

  if (Wire.available() >= 2) {
    int16_t rawData = (Wire.read() << 8) | Wire.read();
    return (rawData >> 4) * 0.0625; // 12-bit conversion formula
  }
  return -999; // Reading failed
}

程序中我们没有使用ALERT中断报警功能!现在我们可以通过串口工具观察数据输出情况如下图:

 图5

      

从图5中我们可以看到输出的温度数据,这里输出的是原始数据没有经过处理,可能与真实环境温度有差别!你可以通过一些算法处理这些数据实其达到真实环境温度。


总结

        经过本次测试你应该对TMP1075有一点了解了吧!通过硬件到软件来讲TMP1075数字温度计的数据读取过程。可能内容会错过你需要的数据!抱歉!也非常感谢你能看到这里,你的点赞是我的动力。iTEM 

Thanks♪(・ω・)ノ

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐