通过我们最先进的热成像技术,体验温度测量和热检测的范式转变,为众多应用提供实时、高分辨率的洞察力。
A
A
硬件概览
它是如何工作的?
IR Grid Click 基于 Melexis 的 MLX90621,这是一款 16x4 IR 阵列传感器。该传感器由两个独立的 IC 组成,封装在 TO39 封装中:一个 IC 是传感器本身,标记为 MLX90670,而第二个 IC 是标记为 24AA02 的 2Kbit EEPROM,用于存储所有补偿和校准参数。这些传感器可以相对于冷结温度测量温度,因此 MLX90621ESF IR 传感器集成了 PTAT(与绝对温度成正比)补偿传感器。IR 传感器阵列以及 PTAT 传感器读数由快速内部 ADC 采样,并存储在 RAM 中,可以通过 I2C 访问。ADC 的分辨率可以在 15 位到 18 位之间编程。传感器 IC 支持 I2C FM+ 模式,传输速率高达 1000 kbps,而 EEPROM IC 支持高达 400 kbps 的快速速率。此 Click 板™ 上使用的 MLX90621ESF-BAD IR 传感器提供 40˚ x 10˚ 视场角(FOV),IR 传感元件排列在 4x16 网格中。每个传感器测量其各自 FOV 中的温度,允许主 MCU 构建热图像或计算成像场景中每个点的温度。测量结果存储在板载 RAM 中。64 个字,每个字 16 位宽,包含 IR
传感器测量结果,一个字包含 PTAT 测量结果。配置寄存器允许配置测量参数。这个 16 位寄存器包含控制传感器 IC 行为的位:刷新率、ADC 分辨率、测量模式(连续或步进模式)、睡眠模式、I2C 模式(FM 或 FM+)、EEPROM 禁用/启用等。它还包含一些标志,例如 POR/BOR(上电复位/棕色掉电复位)指示位和测量进行中位。例如,如果 POR/BOR 位设置为 0,则必须重复初始化,因为校准可能不再有效。EEPROM IC 包含所有必要的校准参数,以及配置寄存器的内容,可以在 POR 周期之间使用。制造商建议在测量前将 EEPROM 内容存储在 MCU 的 RAM 中,特别是在使用更快的刷新率时。操作此传感器时必须遵循特定的工作流程。工作流程包括计算存储在 EEPROM 中的每个元素的补偿参数。这些计算包括环境温度计算、像素偏移计算、像素间灵敏度差异补偿、物体发射率补偿和物体温度计算。MLX90621ESF-BAD IR 传感器的数据表包含这些方程式,它们使用存储在 EEPROM 中的参数。然而,此 Click 板
™ 受库支持,该库包含简化与此传感器一起使用的功能。需要注意的是,传感器测量物体的 IR 发射率,因此预计一些材料由于其低发射率,无法被此传感器准确测量,例如铝。为了更好地理解材料的发射率属性,可以以穿着衣服的人为例:测量的温度将反映衣服的温度,而不是身体本身的温度,已知体温约为 37˚C。应注意不要将 Click 板™ 暴露在冷空气或热空气流中,因为这会导致实际温度的错误读数。此传感器要求传感器封装上的温度保持恒定。MLX90621ESF-BAD IR 传感器使用 2.6V 以获得最佳结果。为了提供 2.6V,此 Click 板™ 配备了 SPX3819,这是一款小型低噪声 LDO,将 mikroBUS™ 的 3.3V 或 5V 转换为所需的 2.6V。输入电压由标记为 VCC SEL 的 SMD 跳线选择。此跳线还选择拉高 I2C 线的电压,允许 3.3V 和 5V MCU 都可以与 Click 板™ 进行接口。除了 I2C 总线线之外,没有使用 mikroBUS™ 的其他线。I2C 总线线被路由到 mikroBUS™ 的相应引脚。
功能概述
开发板
Nucleo-64 搭载 STM32G071RB MCU 提供了一种经济高效且灵活的平台,供开发者探索新想法并原型设计他们的项目。该板利用 STM32 微控制器的多功能性,使用户能够为他们的项目选择最佳的性能与功耗平衡。它配备了 LQFP64 封装的 STM32 微控制器,并包含了如用户 LED(同时作为 ARDUINO® 信号)、用户和复位按钮,以及 32.768kHz 晶体振荡器用于精确的计时操作等基本组件。Nucleo-64 板设计考虑到扩展性和灵活性,它特有的 ARDUINO® Uno
V3 扩展连接器和 ST morpho 扩展引脚头,提供了对 STM32 I/O 的完全访问,以实现全面的项目整合。电源供应选项灵活,支持 ST-LINK USB VBUS 或外部电源,确保在各种开发环境中的适应性。该板还配备了一个具有 USB 重枚举功能的板载 ST-LINK 调试器/编程器,简化了编程和调试过程。此外,该板设计旨在简化高级开发,它的外部 SMPS 为 Vcore 逻辑供电提供高效支持,支持 USB 设备全速或 USB SNK/UFP 全速,并内置加密功能,提升了项目的功效
和安全性。通过外部 SMPS 实验的专用连接器、 用于 ST-LINK 的 USB 连接器以及 MIPI® 调试连接器,提供了更多的硬件接口和实验可能性。开发者将通过 STM32Cube MCU Package 提供的全面免费软件库和示例得到广泛支持。这些,加上与多种集成开发环境(IDE)的兼容性,包括 IAR Embedded Workbench®、MDK-ARM 和 STM32CubeIDE,确保了流畅且高效的开发体验,使用户能够充分利用 Nucleo-64 板在他们的项目中的能力。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
128
硅供应商
STMicroelectronics
引脚数
64
RAM (字节)
36864
你完善了我!
配件
Click Shield for Nucleo-64 配备了两个专有的 mikroBUS™ 插座,使得所有的 Click board™ 设备都可以轻松地与 STM32 Nucleo-64 开发板连接。这样,Mikroe 允许其用户从不断增长的 Click boards™ 范围中添加任何功能,如 WiFi、GSM、GPS、蓝牙、ZigBee、环境传感器、LED、语音识别、电机控制、运动传感器等。您可以使用超过 1537 个 Click boards™,这些 Click boards™ 可以堆叠和集成。STM32 Nucleo-64 开发板基于 64 引脚封装的微控制器,采用 32 位 MCU,配备 ARM Cortex M4 处理器,运行速度为 84MHz,具有 512Kb Flash 和 96KB SRAM,分为两个区域,顶部区域代表 ST-Link/V2 调试器和编程器,而底部区域是一个实际的开发板。通过 USB 连接方便地控制和供电这些板子,以便直接对 Nucleo-64 开发板进行编程和高效调试,其中还需要额外的 USB 线连接到板子上的 USB 迷你接口。大多数 STM32 微控制器引脚都连接到了板子左右边缘的 IO 引脚上,然后连接到两个现有的 mikroBUS™ 插座上。该 Click Shield 还有几个开关,用于选择 mikroBUS™ 插座上模拟信号的逻辑电平和 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换器,使用任何 Click board™,无论 Click board™ 是否在 3.3V 或 5V 逻辑电压电平下运行。一旦将 STM32 Nucleo-64 开发板与我们的 Click Shield for Nucleo-64 连接,您就可以访问数百个工作于 3.3V 或 5V 逻辑电压电平的 Click boards™。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
此库包含用于 IR Grid Click 驱动的 API。
关键功能:
irgrid_measure- 测量温度并将其放置在内部缓冲区中irgrid_get_temperature- 使用计算的温度填充提供的缓冲区irgrid_read_eeprom- 使用 EEPROM 从地址读取功能
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief IRGrid Click example
*
* # Description
* IR Grid Click is a thermal imaging sensor. It has an array of 64 very sensitive factory
* calibrated IR elements (pixels), arranged in 4 rows of 16 pixels, each measuring an
* object temperature up to 300˚C.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes driver init and IR Grid module
*
* ## Application Task
* Reads the temperature of all pixels and creates a pixel temperature matrix that logs
* on usbuart every half of second
*
* @author Mikroe Team
*
*/
#include "board.h"
#include "log.h"
#include "irgrid.h"
static irgrid_t irgrid;
static irgrid_data_t irgrid_data;
static log_t logger;
static float ir_tmp[ 64 ];
static uint8_t i;
static uint8_t rc;
static uint8_t cc;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
irgrid_cfg_t irgrid_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
irgrid_cfg_setup( &irgrid_cfg );
IRGRID_MAP_MIKROBUS( irgrid_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == irgrid_init( &irgrid, &irgrid_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
irgrid_device_init( &irgrid, &irgrid_data, 16 );
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
if ( 1 != irgrid_measure( &irgrid, &irgrid_data ) )
{
irgrid_get_temperature( &irgrid_data, &ir_tmp[ 0 ] );
}
for ( rc = 0; rc < 4; rc++ )
{
for ( cc = 0; cc < 16; cc++ )
{
i = ( cc * 4 ) + rc;
log_printf( &logger, "%.3f ", ir_tmp[ i ] );
}
log_printf( &logger, "\r\n" );
Delay_ms ( 100 );
}
log_printf( &logger, "\r\n" );
log_printf( &logger, "\r\n" );
log_printf( &logger, "\r\n" );
Delay_ms ( 500 );
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:光学

































