首页 > 编程知识 正文

mlx90614红外测温传感器,MLX90615SSG-DAA红外温度传感器

时间:2023-05-03 14:58:11 阅读:240339 作者:1766

所使用的硬件是MLX90614型号的红外测温模块,如图,

首先要有模块的数据手册,这个可以去淘宝找,,,

如下图,是红外模块存储的温度数据的地址,我们的目的就是通过读取对应的地址从而获得温度数据。

(Ta:环境温度;Tobj1:物体温度)

想要与红外芯片进行通信获取温度数据,那么首先要写好读、写数据的代码,,,

如图,我们要按照时序图先写好起始位、结束位、收、发一位数据的代码。具体的延时时间限制去找数据手册看。

/*发送一个位*/void MLX90614_SDA_send_bit(u8 bit_out){if(bit_out == 1)MLX90614_SDA_out = 1;elseMLX90614_SDA_out = 0;Delay_us(5);MLX90614_SCL = 1;Delay_us(10);MLX90614_SCL = 0;Delay_us(4);}/**接收一个位**/ u8 MLX90614_SDA_receive_bit(){u8 bit_in = 0;MLX90614_SDA_out = 1;MLX90614_SCL = 1;Delay_us(10);if(MLX90614_SDA_in)bit_in = 1;elsebit_in = 0;MLX90614_SCL = 0;Delay_us(4);return bit_in;}

把收、发一位的函数写好后再编写收、发一个字节的函数,,,大概内容就是循坏八次这样。

写好收发一个字节的函数后可以开始根据下图给出的读取数据的格式来获取温度数据。

如下图,这是收、发数据包的格式。

Slave Address是MLX90614的识别地址,当一个系统中只有一个mlx90614时,该地址默认为00h。

Command是命令,共有四种模式分别为访问RAM、访问EEPROM、读取标示符、进入SLEEP模式。这里我用的是访问RAM即存储温度数据的存储器。访问RAM的命令为000x xxxx,xxxxx代表要读取/写入的内存地址的低五位。

MLX90614_SDA_Start(); //Slave address 单个MLX90614时地址为0x00 地址+wrif(MLX90614_SDA_send(0x00) == 1) //有应答 return 0;//发送命令if(MLX90614_SDA_send(0x07) == 1)return 0;//-----------MLX90614_SDA_Start(); //Srif(MLX90614_SDA_send(0x01) == 1)return 0;//读Tobj1低八位并发送应答value_L = MLX90614_SDA_receive();//读Tobj1高八位并发送应答 value_H = MLX90614_SDA_receive();//读PEC出错数据包并发送应答 PEC = MLX90614_SDA_receive();MLX90614_SDA_Stop();

最后,读取到Tobj1中的数据之后对数据进行计算使之变成可直接阅读的温度值,

最后实现的效果图及其原理图

 

源码:https://download.csdn.net/download/qq_38994972/12475640

 

(注:若有错误的地方还请指正)

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。