[RK3399][Android7.1]红外传感器模块介绍 - MLX90614介绍

MLX90614

MLX90614d电源电压为 3.3V ,直接输出 16位数字信号,可与单片机直接相连进行通信。传感器有“休眠”的功能,可以让电流消耗低于 2m A,满足手持设备长时间使用的需求。对物体的温度测量范围可以达到-70~+380℃,在动物体温30~50℃这一温度范围内,它的测量精度可以达到正负 0.5℃

下面对于 MLX90614 传感器的结构、存储器、采集温度原理等进行介绍。

MLX90614 管脚介绍

在这里插入图片描述
MLX90614 采用TO-39 封装,将红外芯片和信号处理芯片集成在金属封装中,传感器探头体积小于 1cm立方,具备四个引脚。分别是 VSSSCLSDAVDD

各个管脚功能如下表所示:

引脚名 功能
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 位数字信号通过可编程 FIRIIR 低通数字滤波器(即 DSP)处理后输出,输出结果存储在其内部 RAM 存储单元中。作为标准制式的MLX90614 具有两个红外传感器,因此可同时测出所对应的环境温度Ta和物体温度To,两个温度分辨率都为0.01℃。并且TaTo既可通过 SMBus 读取 RAM 单元(分辨率 0.02℃,固定范围)输出,也可通过 PWM数字模式输出(10 位分辨率,范围可配置)。由于变电所测温温度范围与 MLX90614 出厂时校准的温度范围符合,因此可直接采用 SMBus 方式进行温度数据TaTo的读取输出。

MLX90614存储器介绍

MLX90614中有两个存储器,分别为E2PROMRAM。下面分别对两者进行介绍。
MLX90614 中共有 32个字长为 16 位的E2PROM存储单元,其地址为000H~01FHE2PROM中所有的寄存器都是可以通过 SMBus 进行读取,但只有部分寄存器是可以进行改写的。可改写部分如表所示。

名称 功能 地址
Tomax 测量物体温度上限设定 000H
Tomin 测量物体温度下限设定 001H
PWMCTRL PWM 控制 002H
Ta范围 环境温度范围 003H
发射率校准系数 ε范围(0.1~1) 004H
Config Register1 配置寄存器 005H
SMBus 地址 器件地址设定 00EH
  1. Tomax和Tomin是设定的测量物体温度上、下限, Ta范围即环境温度范围。其测量温度上限计算方法为
    Tomax=100×(To MAX+273.15)

将计算后的数据写入寄存器地址即可。例如:若设定温度上限为 80℃,则将计算后的数值 89F3H 写入E2PROM000H 单元。温度下限计算方法与上限计算方法一样,将计算结果写入 001H 单元即可。

由于 MLX90614工作流程最后输出的环境温度Ta和物体温度To是以 160.01℃分辨率存储在 RAM 中,而 PWM 输出是 10 位的,因此需要对传输温度数据进行缩放。基于此原因E2PROM设置三个单元存储预设的温度范围。其中两个分别为TomaxTomin,另一个存储Ta,其高 8 位存储Tamax,低 8 位存储Tamin。这样To的输出范围可以编程为 0.01 ℃的精度,而对应的Ta输出范围可编程为 0.64℃的精度。

  1. PWM 控制用来对MLX90614 中的放大器、DSP 单元、PWM控制器等进行设置。因此其与TomaxTominTa范围一样是设定 PWM 输出方式的。

  2. 发射率校准系数即被测物体的发射率,出厂时以默认ε=1.0即 1.0=0×FFFF;ε的数值可在 0.1 至 1 之间改变。

  3. 00EH 单元用来存储设定器件的地址,默认地址为 5AH。当多个MLX90614器件位于同一系统中时,可向该单元写入不同数据以便识别和寻址,期最多允许 127MLX90614 器件链接在一条 SMBus 总线上。

接下来介绍 MLX90614 中的RAM

MLX90614中总共有 3217 位的 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 是一种二线串行协议,对应引脚为 SDASCLSDA 为数字输入输出功能,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 HzSDA 的数据必须在 SCL 为低时改变。因此由图可知起始后,SCL变为低电平 0,延时 300ns后,将 16 位数据分两次传输,每次传送1 个字节,2 个字节中间的第 9 个时钟为应答时钟,每个字节都是按照先高位(MSB)、后低位(LSB)的传输格式进行数据传输。

MLX90614 子程序设计

收发字节子程序

MLX90614 发送和接收数据的单位是字节,发送数据时是按位发送,发送八次就发送了一个字节,也就是一个单位。之后看 MCU 有无返回信号,若 MCU 给传感器应答信号,则如上继续发送下一个字节。若没有应答信号,则尝试反复发送这个字节,直到接收到应答。若重复多次始终无应答,则结束数据发送。接收数据时,同样按位发送,每 8 位就是一个单位,然后给一个应答信号,继续接收下一个字节。

在这里插入图片描述

读取 MLX90614 实时数据程序

在这里插入图片描述
90614 读出的是高 8 位和低 8 位的16 位数字信号。数据是存在传感器 RAM地址 007h 单元中的,存储的是数据 RAM(7h),也就是TaTa的值在0×27AD0×7FFF 之间,表示的温度范围是-70.01℃+382.19℃

最后我们一起交流学习把
在这里插入图片描述

发布了295 篇原创文章 · 获赞 99 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/104694323