文章目录
MLX90614
MLX90614d
电源电压为 3.3V
,直接输出 16
位数字信号,可与单片机直接相连进行通信。传感器有“休眠”的功能,可以让电流消耗低于 2m A
,满足手持设备长时间使用的需求。对物体的温度测量范围可以达到-70~+380℃
,在动物体温30~50℃
这一温度范围内,它的测量精度可以达到正负 0.5℃
。
下面对于 MLX90614
传感器的结构、存储器、采集温度原理等进行介绍。
MLX90614 管脚介绍
MLX90614
采用TO-39
封装,将红外芯片和信号处理芯片集成在金属封装中,传感器探头体积小于 1cm
立方,具备四个引脚。分别是 VSS
、SCL
、SDA
、VDD
。
各个管脚功能如下表所示:
引脚名 | 功能 |
---|---|
VSS | 接地,且连接外部金属封装 |
SCL/Vz | SMBus总线协议的串行时钟信号输入,或接5.7V稳压二极管以实现高电压(8~16V)电源应用 |
PWM/SDA | 数字信号输入/输出,正常情况是PWM 方式输出测量温度,SMBus 模式下自动配置为开漏NMOS |
VDD | 外部电源输入 |
MLX90614 结构原理
MLX90614
由于集成了低噪声放大器、17
位模数转换器和强大的数字信号处理芯片 MLX90302
,使得高精度和高分辨率的温度计得以实现。其结构框图如
MLX90614 由 MLX81101 红外热电堆传感器和 MLX90302信号处理芯片(包含稳压电路、低噪声放大器、A/D 转换器、DSP 单元、脉宽调制电路及逻辑控制电路)构成。
其工作原理为:红外热电堆传感器输出的温度信号经过内部低噪声、低失调的运算放大器(OPA
)放大后经过 A/D
转换器(ADC
)转换为 17
位数字信号通过可编程 FIR
及 IIR
低通数字滤波器(即 DSP
)处理后输出,输出结果存储在其内部 RAM
存储单元中。作为标准制式的MLX90614
具有两个红外传感器,因此可同时测出所对应的环境温度Ta
和物体温度To
,两个温度分辨率都为0.01℃
。并且Ta
和To
既可通过 SMBus
读取 RAM
单元(分辨率 0.02℃
,固定范围)输出,也可通过 PWM
数字模式输出(10
位分辨率,范围可配置)。由于变电所测温温度范围与 MLX90614
出厂时校准的温度范围符合,因此可直接采用 SMBus
方式进行温度数据Ta
和To
的读取输出。
MLX90614存储器介绍
MLX90614
中有两个存储器,分别为E2PROM
和RAM
。下面分别对两者进行介绍。
MLX90614
中共有 32
个字长为 16
位的E2PROM
存储单元,其地址为000H~01FH
。E2PROM
中所有的寄存器都是可以通过 SMBus
进行读取,但只有部分寄存器是可以进行改写的。可改写部分如表所示。
名称 | 功能 | 地址 |
---|---|---|
Tomax | 测量物体温度上限设定 | 000H |
Tomin | 测量物体温度下限设定 | 001H |
PWMCTRL | PWM 控制 | 002H |
Ta范围 | 环境温度范围 | 003H |
发射率校准系数 | ε范围(0.1~1) | 004H |
Config Register1 | 配置寄存器 | 005H |
SMBus 地址 | 器件地址设定 | 00EH |
- Tomax和Tomin是设定的测量物体温度上、下限, Ta范围即环境温度范围。其测量温度上限计算方法为
Tomax=100×(To MAX+273.15)
将计算后的数据写入寄存器地址即可。例如:若设定温度上限为 80℃
,则将计算后的数值 89F3H
写入E2PROM
的 000H
单元。温度下限计算方法与上限计算方法一样,将计算结果写入 001H
单元即可。
由于 MLX90614
工作流程最后输出的环境温度Ta
和物体温度To
是以 16
位0.01℃
分辨率存储在 RAM
中,而 PWM
输出是 10
位的,因此需要对传输温度数据进行缩放。基于此原因E2PROM
设置三个单元存储预设的温度范围。其中两个分别为Tomax
和Tomin
,另一个存储Ta
,其高 8
位存储Tamax
,低 8
位存储Tamin
。这样To
的输出范围可以编程为 0.01 ℃
的精度,而对应的Ta
输出范围可编程为 0.64℃
的精度。
-
PWM
控制用来对MLX90614
中的放大器、DSP
单元、PWM
控制器等进行设置。因此其与Tomax
、Tomin
、Ta
范围一样是设定PWM
输出方式的。 -
发射率校准系数即被测物体的发射率,出厂时以默认ε=1.0即 1.0=0×FFFF;ε的数值可在 0.1 至 1 之间改变。
-
00EH
单元用来存储设定器件的地址,默认地址为5AH
。当多个MLX90614
器件位于同一系统中时,可向该单元写入不同数据以便识别和寻址,期最多允许127
个MLX90614
器件链接在一条SMBus
总线上。
接下来介绍 MLX90614
中的RAM
。
MLX90614
中总共有 32
个 17
位的 RAM
存储单元,用户不能通过 RAM
来写入数据,只能读取 RAM
中的部分存储单元读取 16
位存储数据。其采集的环境温度数据保存在地址 006H
存储单元中,采集的被测物体温度数据存储在007H
存储单元中。因此运用存储在 RAM
地址中的数据,通过公式的计算,可以得到环境温度Ta
及被测物体温度数据To
。
Ta=RAM(006H)×0.02-273.15
To=RAM(007H)×0.02-273.15
MLX90614 SMBus 协议及数据传输时序介绍
MLX90614
数据输出方式分为两种:一种为 PWM
输出,另一种为 SMBus
输出。因此将简单介绍 SMBus
输出方式。
SMBus
是一种二线串行协议,对应引脚为 SDA
和 SCL
,SDA
为数字输入输出功能,SCL
为数字输入,用作通信时钟信号。当 MLX90614
接入系统以 SMBus
作为输出方式时,其作为从器件工作,其数据通讯格式如图
SMBus数据读取的格式
SMBus数据写入的格式
上两图中阴影部分表示数据传输方向是从器件到主器件,空白部分则是主器件到从器件。
- 其中 S 为起始位(1b);
- Slave Address 为器件地址(7b);
- Wr 为写标志(1b,0 表示写);
- A 为应答位(1b);
- Command 为命令字节(8b)由命令决定是读和写E2PROM和 RAM(因为 RAM 是只读的,因此只能向E2PROM某些单元写入数据)
- Sr 为重复起始位(1b);
- Rd 为读标志(1b,1 表示读);
- PEC 为出错数据包(8b);
- P 为停止位(1b)。
其数据传输时序如图 所示。
MLX90614 SMBus
时钟最大频率为100k Hz
,最低为10k Hz
,SDA
的数据必须在SCL
为低时改变。因此由图可知起始后,SCL
变为低电平0
,延时300ns
后,将16
位数据分两次传输,每次传送1
个字节,2
个字节中间的第9
个时钟为应答时钟,每个字节都是按照先高位(MSB
)、后低位(LSB
)的传输格式进行数据传输。
MLX90614 子程序设计
收发字节子程序
MLX90614
发送和接收数据的单位是字节,发送数据时是按位发送,发送八次就发送了一个字节,也就是一个单位。之后看 MCU
有无返回信号,若 MCU
给传感器应答信号,则如上继续发送下一个字节。若没有应答信号,则尝试反复发送这个字节,直到接收到应答。若重复多次始终无应答,则结束数据发送。接收数据时,同样按位发送,每 8
位就是一个单位,然后给一个应答信号,继续接收下一个字节。
读取 MLX90614 实时数据程序
从 90614
读出的是高 8
位和低 8
位的16
位数字信号。数据是存在传感器 RAM
地址 007h
单元中的,存储的是数据 RAM(7h)
,也就是Ta
,Ta
的值在0×27AD
到0×7FFF
之间,表示的温度范围是-70.01℃
到+382.19℃
。
最后我们一起交流学习把