# 1、项目功能介绍
红外热成像仪,用来显示电路板温度成像、设备温度成像等。
平时工作的时候会遇到如下场景:
1、新焊接好的板子,通电后发现电流异常,需要看下板子上哪里发热异常。
2、需要监控某个器件(比如三极管、MOS)的温度,以防过热烧掉。
3、测量温升。
因此需要一个红外热像仪,可是网上看了一下都要2000左右了,虽然分辨率很高,可是我并不需要那么好的性能,于是干脆自己做一个。AMG8833的红外像素点是8x8的,感觉太低了,于是选用了32x24像素点的MLX90640,淘宝价格172元,再加上单片机和液晶屏,这样300元以内就能搞定了。
完成后工作时的样子:
![image.png](//image.lceda.cn/pullimage/T7673DGlsiBwMoR2l9GXurPfus0ClsDAK9KTHOsY.png)
具有如下功能:
1、锂电池供电,USB口充电。
2、内置16M SPI flash,一张红外图片大小150K,因此可以保存109张图片。
3、SPI Flash做虚拟U盘。USB口接电脑就可以直接查看、复制保存的图片。
![image.png](//image.lceda.cn/pullimage/dfkVzfHM31KgVg5qQI16i1yFbdbdk5LMDRszUtaa.png)
![image.png](//image.lceda.cn/pullimage/fTPnPnJGQRYmOTUuyD0Xi67tfw1DJsK9aJn6otTd.png)
# 2、项目属性
首次公开,完全原创。
# 3、开源协议
GPL3.0开源协议。
# 4、硬件部分
总体原理图如下:
![image.png](//image.lceda.cn/pullimage/r4okieBwOjTRtINyzGnXFC4l8dAtQ4XRj3hFrjwn.png)
1、电源部分
![image.png](//image.lceda.cn/pullimage/vrxImKmLFz22DPcZyvzDq5IcHXkUCVH3QYwrRluL.png)
当USB口没有连接,由锂电池供电。当USB口连接,由USB供电,同时通过TP4057给锂电池充电。
2、屏幕和SPI Flash
![image.png](//image.lceda.cn/pullimage/UDL026pwndATFfeZto2SqaJEP1eJAWhy79RyVh9k.png)
屏幕采用3.5英寸、320x240分辨率的。SPI Flash采用芯天下的XT25F128B,16MB。
3、MLX90640和AD按键。
![image.png](//image.lceda.cn/pullimage/P7qIsDo5f9IrdY5oGvl99Sr2baU940c0sL0pvvWf.png)
MLX90640采用模拟IIC驱动,3个按键使用ADC读取,因为IO口用完了。
4、MCU
![image.png](//image.lceda.cn/pullimage/Qbb2J0eDCwe2Ulbw8L79OkrNsl9zkpZpnzAlyaZA.png)
单片机使用GD32F103C8T6。
6、外壳选择
![image.png](//image.lceda.cn/pullimage/55wylbbG4jQRVjncNIb0FvAkz1xlurWZVmeg32eh.png)
外壳使用淘宝现成的。
![image.png](//image.lceda.cn/pullimage/kr4mwGCFK1i3MyxTwj8ouLYH4ILO9ABmtHBVCFYI.png)
空间还是很宽裕的。
7、PCB
![image.png](//image.lceda.cn/pullimage/gJCQYHLpiBhMz3QhFpZpqjzkj6GA1oVzmRnR8KQ2.png)
![image.png](//image.lceda.cn/pullimage/vYtFuN1FZFIxomG4gjNmC0YqYDYOuVjCenzdMtrj.png)
# 5、软件部分
1、软件处理框图
![image.png](//image.lceda.cn/pullimage/lhbKU9Px0vyELpSQWw11wYBJv2GA5uEDvcHOuZHd.png)
2、移植MLX90640官方API库
从github上获取官方提供的API库:[https://github.com/melexis/mlx90640-library](https://github.com/melexis/mlx90640-library)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1fccb5dd5c7e48be82154f63833f913f.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/dc1be1fbb1c34087ab556fb13765de1d.png)
把API库中的IIC驱动修改成自己的完成移植。
3、图像插值
调用API库中的函数就可以读取32x24个红外像素点,可是屏幕是320x240的,因此需要把原始图片插值放大后显示到屏幕上。
由于GD32的运算能力不是很强,因此选择了计算量比较小的双线性内插值算法。
![在这里插入图片描述](https://img-blog.csdnimg.cn/929de7767328455cb287292084c46e4c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FsZXhjZWw=,size_16,color_FFFFFF,t_70)
在X方向上进行两次线性插值计算
![在这里插入图片描述](https://img-blog.csdnimg.cn/1bc8cf4d51b4495cb8d79485a7fb32ca.png)
然后在Y方向上进行一次插值计算:
![在这里插入图片描述](https://img-blog.csdnimg.cn/dbb659ff2f60444faa68d88b14ec6bfb.png)
经过插补后的图像效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb9d89ea058d494f8c97f2665b9f96b4.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FsZXhjZWw=,size_16,color_FFFFFF,t_70)
4、温度值转颜色
现在把32x24像素点放大了10倍,得到了320x240像素点,但是这些像素点还都是-40度到300度的温度值,要怎么转换成彩色来显示呢?
其实都已经有转换规范了,而且还有很多种方案:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a6f91965f77f4a74b5d1ea2938c8b1dc.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FsZXhjZWw=,size_16,color_FFFFFF,t_70)
温度转颜色的方法:
首先假设温度范围的上下限并将实际的温度数据转换为 0~255 之间的数值
\
使用转换后的数值代入下面的伪彩编码计算函数,生成伪彩色
![image.png](//image.lceda.cn/pullimage/2fZCUgwHe2RAltFycUM36zqRiSrnfBhc8zJ1xdrM.png)
其他颜色转换方法在我的博客去看:[https://blog.csdn.net/qlexcel/article/details/119421679](https://blog.csdn.net/qlexcel/article/details/119421679)。
5、移植Fatfs文件系统和GD32的USB程序
把文件系统的驱动读写函数和USB的读写函数匹配上即可。
![image.png](//image.lceda.cn/pullimage/oweUPlsZiGmFNoMca9QdYLkgLiuduZh4bG384EiF.png)
# 6、BOM清单
![image.png](//image.lceda.cn/pullimage/jYmIYdu4l69cMs5k76GBOMHTqAIYKxlCUO2GYIP2.png)
# 7、大赛LOGO验证
![image.png](//image.lceda.cn/pullimage/0vu0RPxvI6rxuReWXw2V7Q8y8n2Lu2ExPVdEtfU2.png)
# 8、演示您的项目并录制成视频上传
![image.png](//image.lceda.cn/pullimage/ICcaxxcMaQ2DuDODLv8hvvPgIMZnn1vbg1v7NNUg.png)
![image.png](//image.lceda.cn/pullimage/OVSOhi0107EbPZS9Ayc7p60Nt3WDBxUFChtDBQJr.png)
![image.png](//image.lceda.cn/pullimage/2FZoeX1K12s0Y0FGYZLAODYL1jxpbQ8HHNloy1FA.png)
87
171
收藏到专辑