初学者
10 分钟

使用BH1900NUX和PIC32MZ2048EFH100保持对温度波动的掌控

您可以信赖的温度解决方案

Thermo 13 Click with Flip&Click PIC32MZ

已发布 6月 25, 2024

点击板

Thermo 13 Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

了解我们的温度测量解决方案如何帮助您解决温度挑战并提升您的竞争优势。

A

A

硬件概览

它是如何工作的?

Thermo 13 Click 基于 BH1900NUX,这是一款具有 2 线接口的高精度温度传感器 IC,来自 ROHM 半导体公司。 Click board™ 本身组件数量相对较少,因为大部分测量电路已经集成在 BH1900NUX 传感器中。 I2C 兼容的串行接口线与 INT 引脚(也可以在开漏配置中工作)通过板载电阻上拉。 2 线线路被引导到 mikroBUS™ 的相应 I2C 线路(SCK 和 SDA),而传感器 IC 的 ALERT 引脚被引导到 mikroBUS™ 的 INT 引脚。 传感器 IC 使用 I2C 兼容的通信接口。 有五个寄存器,用于设置高低温限值、用于中断事件的温度滞后、用于存储所有工作参数的配置寄存器、保存采样温度数据的只读寄存器等。 有关所有寄存器的更多信息,请参见 BH1900NUX 数据表。 但是,提供的库包含简化 Thermo 13 Click 使用的功能。 包含的应用示例展示了它们的功能,可以用作自定义设计的参考。 热传感器的模拟信号由内部 ADC 转换器采样。 由于高分辨率 

ADC,步长可以小至 0.0625°C。 INT 引脚用于在主 MCU 上触发中断事件。 该引脚具有可编程极性:可以通过设置配置寄存器中的 POL 位将其设置为 HIGH 逻辑电平或 LOW 逻辑电平。 由于 Click board™ 具有上拉电阻,建议将极性设置为使断言状态将引脚驱动到 LOW 逻辑电平。 采用特殊机制减少误触发 ALERT。 该机制包括在温度限制超出时的循环排队。 ALERT 引脚可以设置为以两种不同的模式工作:比较器模式和恒温器模式。 在比较器模式下,每当温度限制被超出时,该引脚将被触发。 INT 引脚保持断言状态,直到温度降至滞后水平以下。 两个值都设置在相应的温度寄存器(限制和滞后)中。 这种模式对于类似恒温器的应用很有用:在过热的情况下,它可以用于关闭系统电源,或者在温度足够低时关闭冷却风扇。 如果设置为在恒温器模式下工作,当温度超过高限值寄存器中的值时,INT 引脚将保持断言状态。 当温度降至滞后水平以下

时,INT 引脚将被清除。 这种模式用于在主 MCU 上触发中断,当生成中断事件时,主 MCU 应读取传感器。 设备可以设置为在几种不同的电源模式下工作。 它可以设置为连续采样温度测量,可以设置为关闭模式。 关闭模式消耗最少的电量,使除通信部分外的所有内部部分都断电。 这允许较低的功耗。 Click board™ 本身的设计是减少其他组件的热辐射,这可能会影响传感器的环境温度读数。 板载 SMD 跳线标记为 VCC SEL,允许电压选择以与 3.3V 和 5V MCU 接口。 Thermo 13 Click 支持 I2C 通信接口,使其可以与各种不同的 MCU 一起使用。 从属 I2C 地址可以通过 SMD 跳线配置,标记为 A0、A1 和 A2。 它们用于设置 I2C 地址的后三位。 该 Click Board™ 设计为只能在高达 3.3V 的逻辑电平下操作。 在使用 5V MCU 操作 Click board™ 之前,应进行适当的逻辑电压电平转换。

Thermo 13 Click hardware overview image

功能概述

开发板

Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创

新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调

节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Flip&Click PIC32MZ double image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
NC
NC
PWM
Interrupt
RD9
INT
NC
NC
TX
NC
NC
RX
I2C Clock
RA2
SCL
I2C Data
RA3
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

Thermo 13 Click Schematic schematic

一步一步来

项目组装

Flip&Click PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Flip&Click PIC32MZ作为您的开发板开始。

Flip&Click PIC32MZ front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
Board mapper by product7 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Flip&Click PIC32MZ MCU step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

软件支持

库描述

该库包含 这个库包含了Thermo 13 Click 驱动程序的 API。

关键函数:

  • thermo13_set_temp_limit - 设置温度限制寄存器

  • thermo13_get_temp_limit - 获取温度寄存器

  • thermo13_get_ambient_temperature_data - 环境温度数据

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*!
 * \file 
 * \brief Thermo13 Click example
 * 
 * # Description
 * The application measures temperature
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * Initializes the driver init, configures the module and
 * reads the temperature Limit LOW/HIGH values that are set.
 * 
 * ## Application Task  
 * Reads ambient temperature data and this data logs to USBUART every 1500ms.
 *
 * \author MikroE Team
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "thermo13.h"

// ------------------------------------------------------------------ VARIABLES

static thermo13_t thermo13;
static log_t logger;

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( void )
{
    log_cfg_t log_cfg;
    thermo13_cfg_t cfg;
    
    float temp_limit_low;
    float temp_limit_high;

    /** 
     * 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

    thermo13_cfg_setup( &cfg );
    THERMO13_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    thermo13_init( &thermo13, &cfg );

    // Configuration 
   
    thermo13_configuration( &thermo13, THERMO13_CFG_CONTINUOUS_MEASUREMENT |
                            THERMO13_CFG_FAULT_QUEUE_1 |
                            THERMO13_CFG_ALERT_ACTIVE_HIGH |
                            THERMO13_CFG_INTERRUPT_IS_ACTIVE |
                            THERMO13_CFG_WAIT_TIME_X16 );

        
    // Temperature Register
   
    log_printf( &logger, " --- Temperature register data --- \r\n \r\n" );

    temp_limit_low = thermo13_get_temp_limit ( &thermo13, THERMO13_REG_TEMPERATURE_LIMIT_LOW );
    log_printf( &logger, " --- Temp - Limit LOW : %.2f C \r\n ", temp_limit_low );

    temp_limit_high = thermo13_get_temp_limit ( &thermo13, THERMO13_REG_TEMPERATURE_LIMIT_HIGH );
    log_printf( &logger, " --- Temp - Limit HIGH :  %.2f C \r\n \r\n  ", temp_limit_high );
    
    log_printf( &logger, " --- Ambient temperature measurement --- \r\n " );

}

void application_task ( void )
{
    float temperature;

    temperature = thermo13_get_ambient_temperature_data ( &thermo13, THERMO13_TEMP_IN_CELSIUS );
    log_printf( &logger, "** temperature %.2f ** \r\n", temperature );
    log_printf( &logger, " ----------------------------\r\n" );
    Delay_ms ( 1000 );
    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

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。