当前位置: 首页>资讯 >

当前聚焦:基于STM32物联网开发板(3)--红外测温MLX90614

来源: wang123a | 时间: 2023-05-11 09:15:02 |

1.MLX90614简介

MX90614是一款由迈来芯公司提供的低成本,无接触温度计。输出数据和物体温度呈线性比例,具有高精度和高分辨率。TO-39金属封装里同时集成了红外感应热电堆探测器芯片MLX81101(温度是通过PTC或是PTAT元件测量)和信号处理专用集成芯片MLX90302,专门用于处理红外传感器输出信号。用以阻碍可见光和近红外光辐射的光学滤波器(可传播长波)集成在封装内提供对环境和日光的免疫。滤波器的波长通带为5.5到14μm。由于集成了低噪声放大器、17位模数转换器和强大的数字信号处理芯片 MLX90302,使得高精度和高分辨度的温度计得以实现。一个附加的片上温度传感器用来测量芯片的温度。测量完两个传感器的输出后,对应的环境温度和物体温度被计算出。计算所得物体温度和环境温度存储在MLX90302的RAM单元,温度分辨率为0.01℃,并可通过两线 SMBus(系统管理总线)兼容协议接口(IIC与之兼容)(0.02℃分辨率)或是10位PWM(脉宽调制)输出模式输出。MLX90614出厂温度范围都进行过校准,传感器测量的温度为视场里所有物体温度的平均值。

MLX90614 系列模块是一组通用的红外测温模块。 在出厂前该模块已进行校验及线性化,具有非接触、体积小、精度高,成本低等优点。被测目标温度和环境温度能通过单通道输出,并有两种输出接口,适合于汽车空调、室内暖气、家用电器、手持设备以及医疗设备应用等。

MLX90614的出厂校准温度范围很广:环境温度-40 ~ 125 ˚C,物体温度-70 ~ 382.2 ˚C。传感器测量的温度为视场里所有物体温度的平均值。MLX90614 室温下的标准精度为±0.5ºC。医疗应用版本的传感器可在人体温度范围内达到±0.1ºC 的精度。


(资料图)

硬件接口:

引脚

说明

SCL

I2C时钟线

SDA

I2C数据线

VDD

电源3.3~5V

VSS

数字地GND

2 工作原理

MLX90614是由内部状态机控制物体温度和环境温度的测量和计算,进行温度后处理,并将结果通过PWM或是SMBus模式输出。ASSP支持两个IR传感器。 (MLX90614xAx只有一个IR传感器) IR传感器的输出通过增益可编程的低噪声低失调电压放大器放大,经过Sigma Delta调制器转换为单一比特流并反馈给 DSP做后续的处理。信号通过可编程的(用 EEPROM实现)FIR和IIR低通滤波器以进一步减低输入信号的带宽从而达到所需的噪声特性和刷新率。IIR滤波器的输出为测量结果并存于内部RAM中,其中三个单元可被用到:一个是片内温度传感器(片上PTAT或PTC),其余两个为IR传感器。基于以上测量结果,计算出对应的环境温度Ta和物体温度To,两个温度分辨率都为0.01℃。Ta和 To可通过两种方式读取:通过两线接口读取RAM单元,(0.02℃分辨率,固定范围)或者通过 PWM 数字模式输出。(10位分辨率,范围可配置)测量周期的最后一步为:测量所得Ta和To被重新调节为PWM所需的输出分辨率,并且该数据存在PWM 状态机的寄存器中,状态机可以产生固定频率和一定占空比来表示测量的数据。

3. 通讯协议

单片机与MLX90614红外测温模块之间通信的方式是“类IIC”通信,意思就是通信方式跟IIC通信方式很像但又不是IIC,它有另外一个名字叫做SMBus。SMBus (System Management Bus)是1995年由 intel公司提出的一种高效同步串行总线,SMBus只有两根信号线:双向数据线和时钟信号线,容许CPU与各种外围接口器件以串行方式进行通信、交换信息,既可以提高传输速度也可以减小器件的资源占用,另外即使在没有SMBus 接口的单片机上也可利用软件进行模拟。。MLX90614 SMBus时钟的最大频率为100KHz,最小为 10KHz。

S 是起始信号,Sr是重发起始信号。Rd读使能,Wr写使能。A是应答,0为应答1为非应答(发送数据和读取数据都需要应答)。P 是停止信号。PEC是CRC-8的多项式 a X8+X2+X1+1。每个字节的最高有效位首先传送。

3.1 起始信号和停止信号

//发送起始信号//时钟为高电平时,数据由高电平变为低电平。static void I2C1_Start(void){I2C1_SDAout_Mode();//输出模式    I2C1_SDAout(1);I2C1_SCL(1);Delay_Us(2);I2C1_SDAout(0);Delay_Us(2);I2C1_SCL(0);//方便后续数据收发    Delay_Us(1);}//停止信号//时钟线为高电平时,数据线由低变高。static void I2C1_Stop(void){I2C1_SDAout_Mode();//输出模式I2C1_SCL(0);I2C1_SDAout(0);Delay_Us(5);I2C1_SCL(1);Delay_Us(5);I2C1_SDAout(1);}

3.2 数据传输时序

时钟线为高时读取数据。应答信号本身就是一位数据。(1)获取应答示例

//获取应答信号static u8 I2C1_Wait_Ack(void){u8 cnt=0;I2C1_SDAIN_Mode();//配置为输入模式I2C1_SDAout(1);I2C1_SCL(0);//告诉从机,主机需要获取数据Delay_Us(5);I2C1_SCL(1);//从机数据发送完成,主机开始读取数据while(I2C1_SDAin){cnt++;Delay_Us(5);if(cnt>=100)return 1;}Delay_Us(5);I2C1_SCL(0);//方便下一次数据收发return 0;}

(2)读取一字节数据示例

//读取一个字节数据static u8 I2C1_Read_Byte(void){u8 i=0;u8 data=0;I2C1_SDAIN_Mode();//配置为输入模式for(i=0;i<8;i++){I2C1_SCL(0);//告诉从机,主机需要获取数据Delay_Us(5);I2C1_SCL(1);//开始读取数据data<<=1;//默认收到0if(I2C1_SDAin)data|=0x01;Delay_Us(5);}I2C1_SCL(0);return data;}

时钟线为低电平时发送数据。应答信号本身就是一位数据。(3)发送应答示例

/***********发送应答信号******************************形参:u8 ack -- 0应答,1非应答*****************************************************/static void I2C1_SendAck(u8 ack){I2C1_SDAout_Mode();//输出模式I2C1_SCL(0);//告诉从机,主机开始发送数据  if(ack&0x01)  {    I2C1_SDAout(1);  }  else I2C1_SDAout(0);Delay_Us(5);I2C1_SCL(1);//告诉从机,主机数据发送完成//方便下一次数据收发Delay_Us(5);I2C1_SCL(0);}

(4)发送一字节数据示例

//发送一个字节数据static void I2C1_Send_Byte(u8 data){u8 i=0;I2C1_SDAout_Mode();//输出模式for(i=0;i<8;i++){I2C1_SCL(0);//告诉从机,主机开始发送数据if(data&0x80)I2C1_SDAout(1);else I2C1_SDAout(0);Delay_Us(5);I2C1_SCL(1);//主机数据发送完成data<<=1;Delay_Us(5);}I2C1_SCL(0);//方便下一次数据收发}

3.3 读取温度数据示例

对该模块操作主要是看懂几个图。模块里有EEPROM和RAM两块,EEPROM里只有限定数目的地址是允许客户改写的。整个 EEPROM可通过SMBus接口读和写。

RAM中不能写入数据,只能进行读取,并且只有有限数目是客户感兴趣的。

TA是环境温度地址,Tobj1是物体温度低8位,Tobj2是物体温度高8位。读取数据流程如下:设备地址为0x0

①发送起始信号-->②设备地址+写使能(0x0)+获取应答-->③发送读取温度命令(0x07)+获取应答-->④发送起始信号-->⑤设备地址+读使能(0x1)+获取应答-->⑥读取温度低8位+发送应答-->⑦读取温度高8位+发送应答-->⑧发送停止信号;

//读内存uint16_t MLX906_ReadMemory(void){    uint8_t Pec,PecReg,ErrorCounter;    uint8_t TempL=0;    uint8_t TempH=0;    uint8_t arr[6];    ErrorCounter=0;    do    {        ErrorCounter++;        if(ErrorCounter==10)        {            return 0;        }                    I2C1_Start();//起始信号        I2C1_Send_Byte(0x00);//发送MLX90614地址        I2C1_Wait_Ack();        I2C1_Send_Byte(0x07);//发送读MLX90614 RAM地址        I2C1_Wait_Ack();        I2C1_Start();//重新启动        I2C1_Send_Byte(0x01);//发送数据采集命令        I2C1_Wait_Ack();        TempL=I2C1_Read_Byte();//读取地位数据        I2C1_SendAck(0);        TempH=I2C1_Read_Byte();//读取高位数据        I2C1_SendAck(0);        Pec=I2C1_Read_Byte();//读取校验位        I2C1_SendAck(0);        I2C1_Stop();//停止信号        arr[5]= 0x00;        arr[4]= 0x07;        arr[3]= 0x01;        arr[2]= TempL;        arr[1]= TempH;        arr[0]= 0;        PecReg=CRC_Calculation(arr);//计算CRC校验    }while(PecReg!=Pec);    return (uint16_t)((TempH<<8)|TempL);}

2.2.4 CRC-8的多项式X8+X2+X1+1计算示例

//crc校验uint8_t CRC_Calculation(uint8_t pec[]){    uint8_t crc[6];//存放多项式    uint8_t BitPosition = 47;    uint8_t shift;    uint8_t i,j,temp;    do    {        crc[5]=0;        crc[4]=0;        crc[3]=0;        crc[2]=0;        crc[1]=0x01;        crc[0]=0x07;        BitPosition = 47;        shift = 0;        i=5;        j=0;        while((pec[i]&(0x80>>j))==0 && i>0)        {            BitPosition--;            if(j<7)            {                j++;            }            else            {                j= 0x00;                i--;            }        }        shift= BitPosition-8;        while(shift)        {            for(i=5;i<0xFF;i--)            {                if((crc[i-1]&0x80)&&(i>0))                {                    temp=1;                }                else                {                    temp=0;                }                crc[i]<<=1;                crc[i]+=temp;            }            shift--;        }        for(i=0;i<=5;i++)        {            pec[i]^=crc[i];        }    }while(BitPosition>8);    return pec[0];}

3.5 温度转换示例

环境温度Ta

传感器芯片温度是通过PTC或是PTAT元件测量的,传感器所有的状态和数据处理都是在片内进行的,处理好的线性传感器温度Ta存于芯片内存里。计算好的温度输出分辨率为 0.02 ˚C,传感器的出厂校准范围为40…+125 ˚C。在RAM单元地址006h中,2DE4h对应-38.2 ˚C (线性输出最低限度) ,4DC4h (19908d)对应 125 ˚C。通过下式将RAM内容转换为实际的Ta温度,结果是开尔文为单位。

环境温度:

Ta[°K]=Targe*0.02;

物体温度:

To[°K]=Targe*0.02;

转换为摄氏度计算方法为:

Temp=Targe*0.02-273.5;

//读温度float MLX906_Read_Temp(void){    return (float )MLX906_ReadMemory()*0.02-273.15;}

关键词:

 

热文推荐

当前聚焦:基于STM32物联网开发板(3)--红外测温MLX90614

MX90614是一款由迈来芯公司提供的低成本,无接触温度计。输出数据和物体温度呈线性比例,具有高精度和高分

2023-05-11

丹佛斯全球制冷研发测试中心在天津武清投用 焦点资讯

天津2023年5月10日 美通社 --全球领先的能效解决方案供应商丹佛斯宣布其位于天津武清的全球制冷研发测试中

2023-05-11

多只FOF修改业绩比较基准 基金管理人关注行业景气提升主线

近段时间,多家基金公司密集发布公告,宣布修改旗下部分基金的业绩比较基准,其中便包含了多只FOF产品。展

2023-05-11

楚天科技(300358):5月10日北向资金减持2.37万股 每日热点

5月10日北向资金减持2 37万股楚天科技。近5个交易日中,获北向资金减持的有4天,累计净减持13 86万股。近20

2023-05-11

华为发布最强高端旗舰手表,旗下爆款功能盘点-环球快看

近日,华为在德国慕尼黑举行了P60系列及旗舰产品发布会,除了P60Pro、MateX3手机之外,华为还全球首发了华

2023-05-11

全球快播:《踢球者》:阿森纳中场扎卡的妻子想要一家人一起回...

《踢球者》:阿森纳中场扎卡的妻子想要一家人一起回德国的门兴,那是两人相遇的地方,因此这可能会推动他重

2023-05-11

热讯:晶盛机电(300316):5月10日北向资金减持18.89万股

5月10日北向资金减持18 89万股晶盛机电。近5个交易日中,获北向资金减持的有4天,累计净减持213 37万股。近

2023-05-11

每日热文:残余孔隙水压力_关于残余孔隙水压力简述

1、残余孔隙水压力是指在往返剪切作用下饱和土中由塑性体变势引起的一时不可恢复的孔隙水压力。2、残余孔隙

2023-05-11

天天观焦点:华为手机微信文件夹储存在什么位置_手机微信文件夹储存在什么位置

1、1 电脑打开微信,点击左下角的三条横线。2、2 出现选项,点击【设置】。3、3 在设置界面,点击【通用设置】

2023-05-10

揉肚子顺时针还是逆时针通畅_揉肚子顺时针还是逆时针

1、逆时针好,下面具体说明一下:中医顺时针是泻,逆时针是补;西医解剖学中人体腹部右侧是升结肠,左边是

2023-05-10

我国数控机床产业规模或超4000亿元!国产高端数控机床市场占有率稳步提升

(央视财经《正点财经》)数控机床是由系统程序控制的自动化机床,相比传统机床,可以加工出更复杂、精密的

2023-05-10

每日热闻!岳阳林纸:拟定增募资不超25亿元

岳阳林纸公告,公司拟向特定对象发行A股股票,募资不超25亿元,扣除发行费用后的募资净额将用于岳阳林纸提

2023-05-10

世界资讯:岳阳林纸:拟定增募资不超过25亿元

南方财经5月10日电,岳阳林纸公告,拟定增募资不超过25亿元,用于岳阳林纸提质升级综合技改项目一期年产45

2023-05-10

港股10日跌0.53% 收报19762.2点|环球新视野

港股10日跌0 53%收报19762 2点---香港恒生指数10日跌105 38点,跌幅0 53%,收报19762 2点。全日主板成交988 03亿港元。

2023-05-10

人工智能应用安全问题再上头条:AI聊天机器人成诈骗新手段|今日热议

近日,一份来自安全公司ThreatIntelligence的报告指出,黑客们正在利用人们对AI聊天机器人的兴趣,侵入人

2023-05-10

咸安:初夏时节,石榴花绽放街头

盛春浅夏的五月初,咸安区双泉社区泉源路,石榴花沿路而开,喜庆的“中国红”成为城市一道靓丽的风景线,象

2023-05-10

5月10日8时38分四川宜宾发生3.6级地震(震源深度8千米)

中国地震台网正式测定:05月10日08时38分在四川宜宾市兴文县(北纬28 11度,东经105 09度)发生3 6级地震,

2023-05-10

hts code编码是什么_hts code是什么意思 天天快看

1、就相当于一个货物的条形码,HSCODE就是海关编码(商品编码),主要是用于报关(报关单有项是需要填的)

2023-05-10

20岁的淘宝除了淘宝村、双11,还带来了什么?|时讯

在淘宝什么都能买到?

2023-05-10

世界观热点:迪曼达胸针属于什么档次_迪曼达

1、光缆附挂机的一代是只能用镀锌铁丝的,二代只能用覆膜铁丝,三代是镀锌铁丝和覆膜铁丝都可以用。2、四带

2023-05-10