LM75 温度传感器使用
芯片简介
LM75 是一款低功耗、易于使用的数字温度传感器,支持 I2C 接口通信。它能够测量芯片本身的温度,输出分辨率为 0.5°C,同时支持可编程温度阈值和报警功能。该芯片适用于环境温度监测、热保护系统等应用场景。
点击快速跳转到快速上手步骤{#explained}
1. 芯片基本特性
- 测量范围:-55°C 至 +125°C
- 分辨率:0.5°C(9 位数据格式)
- 通信接口:I2C(支持标准模式和快速模式)
- 电源电压:+2.7V 至 +5.5V
- 功耗:
- 正常模式:300µA
- 关机模式:4µA
- 报警输出(OS 输出):
- 开漏输出,需外部上拉电阻。
- 可配置为 比较器模式 或 中断模式。
- 支持可编程故障队列,防止误触发。
- 可编程温度阈值:
- TOS(超限报警温度)
- THYST(滞回温度)
2. I2C 通信特性
- 从设备地址:
- 地址为 7 位,由固定的高 4 位(
1001)和 3 位可配置的硬件地址(A2, A1, A0)组成。 - 地址范围:
1001 A2 A1 A0。 - 支持读/写操作。
- 地址为 7 位,由固定的高 4 位(
- 寄存器功能:
| 寄存器名称 | 地址(hex) | 上电默认值 | 功能 | 读/写 |
|---|---|---|---|---|
| Temperature | 00 | 0000 0000 | 当前温度,只读寄存器 | Read only |
| Configuration | 01 | 00 | 配置寄存器,设置芯片工作模式 | R/W |
| THYST | 02 | 4B(75°C) | 滞回温度寄存器 | R/W |
| TOS | 03 | 50(80°C) | 超限温度寄存器 | R/W |
3. 配置寄存器(Configuration Register)
配置寄存器用于设置芯片的工作模式和功能。寄存器位的定义如下:
| 位 | 功能 | 说明 |
|---|---|---|
| D7–D5 | 保留位 | 必须设置为 0 |
| D4–D3 | Fault Queue | 设置触发 OS 输出所需的连续故障次数(见下表)。 |
| D2 | OS Polarity | 设置 OS 输出极性:0 为低电平有效,1 为高电平有效。 |
| D1 | Comparator/Interrupt | 设置 OS 工作模式:0 为比较器模式,1 为中断模式。 |
| D0 | Shutdown | 设置芯片工作状态:0 为正常模式,1 为关机模式(降低功耗)。 |
Fault Queue 设置(D4–D3 位):
| D4 | D3 | 故障次数 |
|---|---|---|
| 0 | 0 | 1(默认值) |
| 0 | 1 | 2 |
| 1 | 0 | 4 |
| 1 | 1 | 6 |
4. 温度数据格式
- 温度数据存储在 Temperature 寄存器(地址
0x00)中,长度为 16 位。 - 数据格式:
- 9 位有效数据(Bits D15–D7)。
- D15:符号位(
0为正温度,1为负温度)。 - D7:最低有效位,表示 0.5°C。
- D6–D0:无效位(忽略)。
| UPPER BYTE | D15 (Sign bit) | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 (LSB 0.5°C) | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Description | Sign bit (1 = Negative, 0 = Positive) | MSB 64°C | 32°C | 16°C | 8°C | 4°C | 2°C | 1°C | LSB 0.5°C | X | X | X | X | X | X | X |
X = Don’t care
5. OS 输出功能
- 输出类型:开漏输出(需外部上拉电阻)。
- 工作模式:
- 比较器模式:
- 温度 > TOS 时,OS 输出触发。
- 温度 < THYST 时,OS 输出复位。
- 中断模式:
- 温度 > TOS 或 < THYST 时,OS 输出触发。
- 必须通过一次读取操作复位 OS 输出。
- 比较器模式:
6. 快速使用步骤
点击跳转回详解
- 作为一个简单的IIC温度传感器,LM75的使用非常简单,所以很适合作为IIC功能的验证器件。
- IIC 器件的使用无非就以下几个方面
- 连线
- 器件地址
- 寄存器地址
- 初始化
- 读取温度
下面就围绕着这几个方面逐一讲解。
6.1 连线
- 我使用的是如下搭载了LM75的模块,有5个引脚,其中一个是OS引脚
- 要实现最简单的温度读取功能,只需要接其中4个引脚就够了VCC(2.7V-5.5V)、GND、SCL、SDA

6.2 器件地址
- I2C 器件地址结构:
- I2C 的器件地址通常由 高 7 位器件地址 和 最低 1 位读写位 组成:
- 读操作:最低位为
1。 - 写操作:最低位为
0。
- 读操作:最低位为
- I2C 的器件地址通常由 高 7 位器件地址 和 最低 1 位读写位 组成:
- LM75 的器件地址:
- 固定部分:高 4 位为
1001。 - 可配置部分:低 3 位由硬件地址引脚
A2, A1, A0决定。 - 通常情况下,硬件地址引脚配置为
000。 - 如下图,使用焊锡进行跳线即可

- 固定部分:高 4 位为
- 完整地址:
- 当硬件地址为
A2 = 0, A1 = 0, A0 = 0时,7 位器件地址为:1001000。 - 根据 I2C 地址规则:
- 写操作地址:
1001 0000(十六进制为0x90)。 - 读操作地址:
1001 0001(十六进制为0x91)。
- 写操作地址:
- 当硬件地址为
6.3 寄存器地址
最简单的使用只需要关注两个寄存器地址
- 配置寄存器(用于芯片初始化)
- 温度寄存器(用于温度读取)
6.4 初始化
- 读取温度前,首先需要进行初始化。
- 往配置寄存器0x01处,写入0x00即可
- 初始化成功后,该模块会亮灯
# 设置器件地址
device_address = 0x90
# 写入配置寄存器
iic_write_byte(device_address, register=0x01, data=0x00)
6.5 读取温度
- 读取0x00温度寄存器处的数据,LM75会首先传输温度的高字节的高位
- 由于低7位数据无效,读取出的原始数据直接右移 7 位即可
- 右移 7 位后,由于最低位表示的是 0.5℃的分辨率,所以还要除以2才得到真实的温度数据
# 设置器件地址
device_address = 0x90
# 读取温度寄存器
raw_temperature = iic_read_byte(device_address + 1, register=0x00)
# 数据处理
temperature = (raw_temperature >> 7) / 2.0
留下评论