中级
30 分钟

使用LM96080和ATmega644P监控和调节各种硬件组件的性能

您的系统守护者

HW Monitor Click with EasyAVR v7

已发布 6月 24, 2024

点击板

HW Monitor Click

开发板

EasyAVR v7

编译器

NECTO Studio

微控制器单元

ATmega644P

确保您的嵌入式解决方案的稳定性和性能。

A

A

硬件概览

它是如何工作的?

HW Monitor Click基于LM96080,这是一款来自德州仪器的系统硬件监控器,用于各种嵌入式系统的电源、温度和风扇监控。LM96080提供七个模拟输入,分布在板子顶部标记为IN0到IN6的端子上,此外还包括一个温度传感器、一个三角积分ADC、两个风扇速度计数器、看门狗寄存器和多种输入输出,集成在一个芯片中。它不断将模拟输入转换为10位分辨率,LSB为2.5mV,输入范围为0到2.56V。模拟输入旨在连接到典型通信基础设施系统中的多个电源。此Click板™通过标准I2C 2线接口与MCU通信,以读取数据和配置设置,最高频率为400kHz。LM96080在I2C线上包含一个模拟滤波器,提高了抗噪性,并支持SDA和SCL引脚上的超时复位功能,防止I2C总线锁定。此外,LM96080允许使用标记为ADDR SEL的SMD跳线选择其I2C从设备地址的最低有效位(LSB)。LM96080特别适

合与线性和数字温度传感器接口,如LM73、LM75、LM56、LM57、LM26、LM27、LM26LV或通过未填充头上的BTI引脚连接其他LM96080。温度可以转换为9位或12位补码字,分辨率分别为0.5°C或0.0625°C LSB。在同一个头上,除了BTI引脚外,还有一个GPI引脚,除了作为通用输入引脚外,还可以用作机箱入侵检测输入。机箱入侵输入设计为接受来自外部电路的高电平信号,例如当计算机盖子被移除时。该板的另一个附加功能是标记为FAN1和FAN2的风扇输入,可以编程为接受高电平或低电平风扇故障指示器或转速信号。风扇输入测量来自风扇的转速脉冲周期,为低速风扇提供更高的计数。全刻度风扇计数为255(8位计数器),代表停止或慢速风扇。基于153的计数,标称速度可编程为1100至8800 RPM。还包括信号调理电路以适应缓慢的上升和下降时间。最后一个头包含外部中断输入

INT IN、用于外部目的的主复位RST OUT和单个电源开关引脚GPO。INT IN有效低中断提供了一种通过LM96080将其他设备的中断连接到主机的方法,RST_OUT用于向连接到该线的设备提供主复位,而GPO引脚是一个有效低的NMOS开漏输出,用于驱动外部电源PMOS进行软件电源控制,或用于控制冷却风扇的电源。LM96080还具有连接到mikroBUS™插座的RST引脚的通用复位信号,以复位LM96080,以及连接到mikroBUS™插座的INT引脚的附加中断信号,当发生外部中断(如INT_OUT)、温度传感器中断或机箱检测事件时,发出中断信号。此Click板™可以通过VCC SEL跳线选择使用3.3V或5V逻辑电压水平,这样3.3V和5V的MCU都能正确使用通信线。此外,该Click板™配备了包含易于使用功能和示例代码的库,可用作进一步开发的参考。

HW Monitor Click hardware overview image

功能概述

开发板

EasyAVR v7 是第七代AVR开发板,专为快速开发嵌入式应用的需求而设计。它支持广泛的16位AVR微控制器,来自Microchip,并具有一系列独特功能,如强大的板载mikroProg程序员和通过USB的在线电路调试器。开发板布局合理,设计周到,使得最终用户可以在一个地方找到所有必要的元素,如开关、按钮、指示灯、连接器等。EasyAVR v7 通过每个端口的四种不同连接器,比以往更高效地连接附件板、传感器和自定义电子产品。EasyAVR v7 开发板的每个部分

都包含了使同一板块运行最高效的必要组件。一个集成的mikroProg,一个快速的USB 2.0程序员,带有mikroICD硬件在线电路调试器,提供许多有价值的编 程/调试选项和与Mikroe软件环境的无缝集成。除此之外,它还包括一个干净且调节过的开发板电源供应模块。它可以使用广泛的外部电源,包括外部12V电源供应,7-12V交流或9-15V直流通过DC连接器/螺丝端子,以及通过USB Type-B(USB-B)连接器的电源。通信选项如USB-UART和RS-232也包括在内,与

广受好评的mikroBUS™标准、三种显示选项(7段、图形和基于字符的LCD)和几种不同的DIP插座一起,覆盖了广泛的16位AVR MCU。EasyAVR v7 是Mikroe快速开发生态系统的一个组成部分。它由Mikroe软件工具原生支持,得益于大量不同的Click板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作和开发的许多方面。

EasyAVR v7 horizontal image

微控制器概述 

MCU卡片 / MCU

建筑

AVR

MCU 内存 (KB)

64

硅供应商

Microchip

引脚数

40

RAM (字节)

4096

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
Reset
PA6
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
PD2
INT
NC
NC
TX
NC
NC
RX
I2C Clock
PC0
SCL
I2C Data
PC1
SDA
Power Supply
5V
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

HW Monitor Click Schematic schematic

一步一步来

项目组装

EasyAVR v7 front image hardware assembly

从选择您的开发板和Click板™开始。以EasyAVR v7作为您的开发板开始。

EasyAVR v7 front image hardware assembly
GNSS2 Click front image hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
EasyAVR v7 Access DIP MB 1 - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
NECTO Compiler Selection Step Image hardware assembly
NECTO Output Selection Step Image hardware assembly
Necto image step 6 hardware assembly
Necto DIP image step 7 hardware assembly
EasyPIC PRO v7a Display Selection Necto Step hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Necto PreFlash Image hardware assembly

实时跟踪您的结果

应用程序输出

此款Click板可通过两种方式进行接口连接和监控:

  • Application Output - 在调试模式下,使用“Application Output”窗口进行实时数据监控。按照本教程正确设置它。

软件支持

库描述

该库包含 HW Monitor Click 驱动程序的 API。

关键功能:

  • hwmonitor_get_analog_inputs - HW Monitor获取模拟输入电压功能。

  • hwmonitor_get_temperature - HW Monitor获取温度功能。

  • hwmonitor_set_config - HW Monitor设置配置功能。

开源

代码示例

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

/*!
 * @file main.c
 * @brief HW Monitor Click example
 *
 * # Description
 * This example demonstrates the use of the HW Monitor Click board™.
 * The demo application monitors analog voltage inputs and local temperature data.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * The initialization of the I2C module, log UART and additional pins.
 * After the driver init, the app executes a default configuration.
 *
 * ## Application Task
 * This example displays the Analog Voltage Inputs (IN0-IN6) [mV] 
 * and Temperature [degree Celsius] data.
 * Results are being sent to the UART Terminal, where you can track their changes.
 *
 * @author Nenad Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "hwmonitor.h"

static hwmonitor_t hwmonitor;
static log_t logger;

void application_init ( void ) 
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    hwmonitor_cfg_t hwmonitor_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.
    hwmonitor_cfg_setup( &hwmonitor_cfg );
    HWMONITOR_MAP_MIKROBUS( hwmonitor_cfg, MIKROBUS_1 );
    if ( I2C_MASTER_ERROR == hwmonitor_init( &hwmonitor, &hwmonitor_cfg ) ) 
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( HWMONITOR_ERROR == hwmonitor_default_cfg ( &hwmonitor ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
    log_printf( &logger, "--------------------------\r\n" );
    Delay_ms( 1000 );
}

void application_task ( void ) 
{
    static float temperature, voltage;
    for ( uint8_t in_pos = 0; in_pos < 7; in_pos++ )
    {
        if ( HWMONITOR_OK == hwmonitor_get_analog_inputs( &hwmonitor, in_pos, &voltage ) )
        {
            log_printf( &logger, "IN %d: %.1f mV\r\n", ( uint16_t ) in_pos, voltage );
            Delay_ms( 100 );
        }
    }
    log_printf( &logger, "- - - - - - - - - - - - - -\r\n" );
    if ( HWMONITOR_OK == hwmonitor_get_temperature ( &hwmonitor, &temperature ) )
    {
        log_printf( &logger, " Temperature: %.3f [deg c]\r\n", temperature );
        Delay_ms( 100 );
    }
    log_printf( &logger, "--------------------------\r\n" );
    Delay_ms( 1000 );
}

void main ( void ) 
{
    application_init( );

    for ( ; ; ) 
    {
        application_task( );
    }
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

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