发布时间:2023-04-25 18:00:30 人气:
AMG8833热成像stm32
概述:
AMG8833是一款8x8像素红外热像传感器芯片,可以用于非接触式的温度测量,适用于人类或移动物体。现在,有很多热成像的应用在人类生活当中,如热成像拍照、红外热成像摄像机等。本文主要介绍如何在STM32系列控制板上对AMG8833进行驱动,实现温度测量、热成像拍照等功能。
一、硬件平台介绍
1.1 硬件平台选用
本次研究使用的硬件平台是基于STM32开发的板子。因为STM32系列的处理器主频高、运行速度快、内存较大等特点,是实现热成像应用较为理想的开发板。
2.2 硬件连接介绍
图1. 热成像模块与STM32F103C8T6连接示意图
二、软件开发
3.1 软件平台
芯片厂商和商家都会提供开发相关的SDK、API等,这些API是对硬件进行操作的函数库。这里我们选择在Arduino平台上进行开发,因为Arduino提供了非常完整的API库和开源应用实例供用户参考使用,并且兼容STM32开发板。
3.2 软件开发
本次软件开发涉及到的主要功能有
①对AMG8833的IIC总线访问
②对AMG8833的内部寄存器进行地址映射及寄存器读写
③温度数据合成
④热成像数据读取
⑤热成像图像显示
其中,涉及到IIC访问、寄存器读写、温度数据合成等操作都需要使用到硬件驱动。这里我们使用标准库提供的函数来实现硬件驱动逻辑。
三、代码实现
4.1 IIC驱动
函数实现
```C
IIC_Start(void)
IIC_Stop(void)
IIC_SendByte(unsigned char SendByte)
IIC_ReadByte(unsigned char address)
```
4.2 AMG8833驱动
4.2.1 IIC设备地址宏定义
```C
define AMG8833_ADDR 0x69
```
4.2.2 AMG8833 内部寄存器地址宏定义
```C
define Power_Register 0x00
define Reset_Register 0x01
define FPSC_Register 0x02
define Interrupt_Register 0x03
define Status_Register 0x04
define Thermistor_Register_H 0x0E
define Thermistor_Register_L 0x0F
define Pixel_Register_First 0x80
```
4.2.3 读寄存器函数实现
函数实现
```C
AMG8833_Read(void)
```
4.3 显示驱动
4.3.1 SSD1306驱动
SSD1306是一种针对128x64和128x32 OLED显示驱动芯片,它可以通过IIC/SPI总线与MCU连接,同时也支持多种显示模式,例如水平、垂直和IDI模式。因此,我们在此使用SSD1306作为显示设备。
4.3.2 SSD1306函数库
SSD1306函数库是目前非常流行的一种OLED驱动函数库,该函数库主要用于将数据流从MCU发送到OLED屏幕,实现图像、图标和文本的高速更新。
4.4 完整代码
完整代码可以访问Github仓库: https://github.com/your-repo
四、结果与分析
本次实验实现了基于STM32平台的AMG8833热成像应用。通过对AMG8833的驱动和SSD1306的显示,能够快速实现热成像图像的采集和显示。同时,通过调整多种功能参数,可以得到更多的实际应用效果。
五、结论
在本次实验中,我们成功地使用STM32开发板实现了基于AMG8833的热成像应用,展示了在普通嵌入式开发板之上进行热成像实验的可能性。本次实验的成功实现,以期鼓励更多的开发者参与到嵌入式热成像领域的工作之中,提高嵌入式开发的水平。
TAG标签:热成像 stm32 iic