现在自己在做红外成像仪的越来越多了,两年前有个井下机电设备运行状态的科研项目,当时使用了AMG8833(8*8像素)。前段时间因为公司生产电路板测试需要,打算买一台红外成像仪测量电路板发热是否正常,商用的价格还是有些小贵的,无意中发现了MLX90640这个东西,32*24像素,768个测温点,基本上可以成像用了,于是决定自己做一个成像仪。经过半个月的时间,开发基本完成,本文是开发过程的笔记和注意事项,分享出来共同进步。
现在都智能手机、信息化、人工智能了,能不能用MLX90640做个能和手机连接成像的红外模块呢,那样的话测试、存储岂不是很方便。说做就做,马上行动。
MLX90640有两个型号,A型和B型,各拍了一个,在等待物流的过程中索性先做些准备工作,也科普一下红外成像是怎么回事。
(1)MLX90640数据手册,下载地址是
https://www.melexis.com/-/media/files/documents/datasheets/mlx90640-datasheet-melexis.pdf
(2)MLX90640驱动库和说明文档,下载地址是
https://github.com/melexis/mlx90640-library/archive/master.zip
关于官网下载的两个文件,手册嘛写得很一般,说一点用处也没有也不至于,但看完后觉得大部分是没有意义和不知所以然要写的,但手册不看毕竟是不行的。同时也做了中文翻译,
MLX90640中文手册下载地址为:https://download.csdn.net/download/xulikai/11839464
另一个下载的文件mlx90640-library-master.zip问题比较严重(折腾了我大概一天多时间)。过程不多说了,直接说问题在哪。这个压缩包里有API使用说明、API的C语言源代码以及一组用Excel文件计算完成的参数计算实例,实例的原数据和计算结果都是没有问题的,但我按照API使用说明里的指导调用函数库存里的函数,使用Excel里的原始数据无论如何也得到不正确的结果,后来发现问题出在下载的API函数。
MLX90640_API.h文件里定义了一个结构体类型,里面较为明显的错误有:
uint16_t alpha[768];
int8_t kta[768];
int8_t kv[768];
上面三个变量被定义为整型,但是,Excel计算表里面,这三个数组的值分别显示为0.0000000397885742132、0.00634766、0.43750000的样子,这是整数?其它的不说,Excel和API不是同一个版本或者说不一致是100%的。经过不断找别人用过的API、测试,下面的文件是可用的,同时也做了一份API说明文件的中文翻译。
MLX90640驱动库: https://download.csdn.net/download/xulikai/11839596
MLX90640API中文说明:https://download.csdn.net/download/xulikai/11839272
(1)A型和B型的区别
区别主要有以下几点
视场角不同:A型为110*75°,B型为55*35°,通俗一点讲就是A型是广角,所以镜头矮一些,视野更宽,但对远处物体的捕捉能力更低,B型更适于拍摄稍远的物体。
精度不同:A型的噪声比B型大,所以B型的绝对温度和灵敏度都好一些。
(2)供电电压和数字接口
MLX90640共有4个引脚,两个电源3.3V供电,两个通讯I2C接口,I2C支持最高1MHz的通讯速率(实际测试发现1.2MHz也是可以的,只是偶尔会出错,还是老老实实1MHz吧)。
I2C完全是经典的时序,而且通讯速率范围特别宽,从几十赫兹到兆赫兹都通讯正常,所以它的I2C接口程序还是很好写的。
功耗大约是25mA,实测没有问题。
供电必须是3.3V,但I2C的两根引脚可以2.5~5V兼容。
(3)灵敏度、测温范围和精度
MLX90640的测量速率最高可以达到64Hz,但越快的速率时的噪声会越大,导致灵敏度下降,手册上给出的指标是1Hz时可以区分出0.1℃。
测温范围是-40~300℃。
测温精度和成像的区域有关,靠近中间位置是±0.5~1.0℃,最外侧4个角是±2.0℃,其它区域约是±1.0℃。
还有就是传感器上电后有个热平衡时间,大约是5分钟,未达到热平衡时精度会差一些。
(4)坏点
手册里特别提到了每个MLX90640传感器可能存在最多4个不能使用或者精度达不到要求的像素,这也许和传感器的生产工艺有关吧,坏点都会在出厂时记录到传感器的EEPROM里,实际使用时记得要读取一下并且在成像时特殊处理这种可能存在的像素点数据。
在后面的实际测试过程中,并没有发现坏点的存在,可能运气比较好。
在官方的API库里,坏点和未达到精度要求的点是不做区分的,都是同样的处理方法(用相邻的好的点做平均值做为坏点的值)。
MLX90640开发笔记(一)概述及开发资料准备
MLX90640开发笔记(二)API移植-I2C和关键接口函数
MLX90640开发笔记(三)工作流程和操作MLX90640的一般步骤
MLX90640开发笔记(四)损坏和不良像素的处理
MLX90640开发笔记(五)阵列插值处理-多项式插值由32*24像素到512*384像素
MLX90640开发笔记(六)红外图像伪彩色编码
MLX90640开发笔记(七)小结-注意事项
MLX90640开发笔记(八)扩展知识-辐射率、灵敏度、精度、探测距离
MLX90640开发笔记(九)EEPROM、RAM、寄存器说明
MLX90640开发笔记(十)成果展示-红眼睛相机