轻松测量加速度力,实现对运动和速度变化的监控。
A
A
硬件概览
它是如何工作的?
Accel 5 Click 基于 Bosch Sensortec 的 BMA400,这是一款超低功耗的三轴加速度传感器。该传感器具有许多非常适合物联网应用和可穿戴设备的功能,在性能和功耗之间提供了良好的平衡。其主要特点之一是超低功耗,使其可以用于各种始终开启的低功耗应用。为了进一步提高电池寿命,该传感器还具有睡眠模式,当传感器电流消耗量为几百纳安时,该模式启动。该传感器可以测量 ±2 g、±4 g、±8 g 和 ±16 g 范围内的加速度。它还提供输出数据的低通滤波,范围从 0.48 x ODR(输出数据刷新率)到最大 ODR 频率 800Hz。内部 12 位 A/D 转换器确保可靠和低噪声操作,以保持来自内部 MEMS 的数据干净准确。三种电源模式允许在功耗和性能之间进行定制平衡。扩展的集成中断引擎提供了许多独特的功能,例如自动进入/退出低功耗模式、检测高级动作(如跑步、步行)、步数计数等。在 POR(上电复位)事件后,设备处于睡眠模式。在睡眠模式下,传感器几乎不消耗任何电力(约 300nA),但传感器功能完全暂停。要使用传感器,它必须处于低功耗模式(使用固定的 25Hz 输出数据刷新率)或正常模式。一些选项仅在正常模式下可用,例如步数计数检测、输出
过滤等。正常模式仍然节能,使设备能够在始终开启的低功耗应用中使用。在正常模式下操作时,有两个滤波器可用于数据过滤。滤波器可以应用于输出寄存器、FIFO 引擎,或用于处理中断数据。第一个滤波器可用于获取 12.5Hz 到 800Hz 的数据率,由滤波器寄存器定义,而第二个滤波器提供固定频率 100Hz,叠加 1Hz 频率。输出噪声受 ODR 频率影响。加速度数据以 12 位格式从数据寄存器和内部 1kb 的 FIFO 缓冲区提供。FIFO 缓冲区可用于更复杂的计算或定时读取。仅在正常模式下允许写入 FIFO 缓冲区,而在低功耗模式下也可以读取它。中断引擎促进了整个 FIFO 缓冲区,为多个 FIFO 事件(如溢出事件、水印事件、几乎满事件等)触发中断。BMA400 传感器包含一个集成定时器,可以与中断一起使用,用于自动唤醒或自动断电功能。自动功能是传感器电源管理的一部分。自动模式更改可以设置为在达到指定阈值后加速度中断,或者设置为定时器中断:当定时器到期时,生成中断,并切换电源模式。扩展的中断引擎提供了两层中断。它提供基本中断,包括一些基本功能,例如数据准备中断、FIFO 缓冲区相关中断和唤醒事件中断。基本中断还报告中断溢出事件,
即太多中断竞争,传感器无法处理所有中断。除了基本中断外,中断引擎还提供一些更复杂的高级中断,包括所有活动的检测:单击/双击、步数计数、活动变化、方向变化和两个通用中断。高级中断需要一定的 ODR 速率,并且只能在正常模式下使用,而基本中断提供对事件的更基本控制。高级中断引擎可以使用两个可编程中断引脚。这两个引脚都可以分配任何中断源,并且可以在中断时为低或高,具体取决于适当寄存器中的设置。这两个引脚分别连接到 mikroBUS™ 的 INT 和 PWM 引脚,标记为 IT1 和 IT2。除了加速度 MEMS 和互补的模拟前端电路外,BMA400 传感器还具有集成的温度传感器。它每 160 毫秒更新一次,并以 8 位分辨率采样。热数据始终可用,除非设备处于睡眠模式。Accel 5 Click 提供两种通信接口。它可以使用 I2C 或 SPI。板载 SMD 跳线标记为 SEL COM,允许在两种接口之间切换。请注意,所有跳线必须定位在 I2C 或 SPI 位置。当选择 I2C 接口时,一个额外的 SMD 跳线标记为 I2C ADD,决定 BMA400 I2C 地址的最低有效位。此 Click board™ 仅应与操作在 3.3V 的 MCU 接口。
功能概述
开发板
Arduino UNO 是围绕 ATmega328P 芯片构建的多功能微控制器板。它为各种项目提供了广泛的连接选项,具有 14 个数字输入/输出引脚,其中六个支持 PWM 输出,以及六个模拟输入。其核心组件包括一个 16MHz 的陶瓷谐振器、一个 USB 连接器、一个电
源插孔、一个 ICSP 头和一个复位按钮,提供了为板 子供电和编程所需的一切。UNO 可以通过 USB 连接到计算机,也可以通过 AC-to-DC 适配器或电池供电。作为第一个 USB Arduino 板,它成为 Arduino 平台的基准,"Uno" 符号化其作为系列首款产品的地
位。这个名称选择,意为意大利语中的 "一",是为了 纪念 Arduino Software(IDE)1.0 的推出。最初与 Arduino Software(IDE)版本1.0 同时推出,Uno 自此成为后续 Arduino 发布的基础模型,体现了该平台的演进。
微控制器概述
MCU卡片 / MCU

建筑
AVR
MCU 内存 (KB)
32
硅供应商
Microchip
引脚数
32
RAM (字节)
2048
你完善了我!
配件
Click Shield for Arduino UNO 具有两个专有的 mikroBUS™ 插座,使所有 Click board™ 设备能够轻松与 Arduino UNO 板进行接口连接。Arduino UNO 是一款基于 ATmega328P 的微控制器开发板,为用户提供了一种经济实惠且灵活的方式来测试新概念并构建基于 ATmega328P 微控制器的原型系统,结合了性能、功耗和功能的多种配置选择。Arduino UNO 具有 14 个数字输入/输出引脚(其中 6 个可用作 PWM 输出)、6 个模拟输入、16 MHz 陶瓷谐振器(CSTCE16M0V53-R0)、USB 接口、电源插座、ICSP 头和复位按钮。大多数 ATmega328P 微控制器的引脚都连接到开发板左右两侧的 IO 引脚,然后再连接到两个 mikroBUS™ 插座。这款 Click Shield 还配备了多个开关,可执行各种功能,例如选择 mikroBUS™ 插座上模拟信号的逻辑电平,以及选择 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换电压转换器使用任何 Click board™,无论 Click board™ 运行在 3.3V 还是 5V 逻辑电压电平。一旦将 Arduino UNO 板与 Click Shield for Arduino UNO 连接,用户即可访问数百种 Click board™,并兼容 3.3V 或 5V 逻辑电压电平的设备。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
实时跟踪您的结果
应用程序输出
1. 应用程序输出 - 在调试模式下,“应用程序输出”窗口支持实时数据监控,直接提供执行结果的可视化。请按照提供的教程正确配置环境,以确保数据正确显示。

2. UART 终端 - 使用UART Terminal通过USB to UART converter监视数据传输,实现Click board™与开发系统之间的直接通信。请根据项目需求配置波特率和其他串行设置,以确保正常运行。有关分步设置说明,请参考提供的教程。

3. Plot 输出 - Plot功能提供了一种强大的方式来可视化实时传感器数据,使趋势分析、调试和多个数据点的对比变得更加直观。要正确设置,请按照提供的教程,其中包含使用Plot功能显示Click board™读数的分步示例。在代码中使用Plot功能时,请使用以下函数:plot(insert_graph_name, variable_name);。这是一个通用格式,用户需要将“insert_graph_name”替换为实际图表名称,并将“variable_name”替换为要显示的参数。

软件支持
库描述
此库包含 Accel 5 Click 驱动程序的 API。
关键功能:
accel5_write_byte
- 向寄存器写入一个字节的功能accel5_read_byte
- 从寄存器读取一个字节的功能accel5_read_data
- 从寄存器读取数据的功能
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief Accel5 Click example
*
* # Description
* This application allows linear motion and gravitational force measurements.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes Driver init and settings accelerometer data range and mode.
*
* ## Application Task
* Reads the accel X / Y / Z axis data, every 500 ms.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "accel5.h"
// ------------------------------------------------------------------ VARIABLES
static accel5_t accel5;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
accel5_cfg_t cfg;
/**
* 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.
accel5_cfg_setup( &cfg );
ACCEL5_MAP_MIKROBUS( cfg, MIKROBUS_1 );
if ( accel5_init( &accel5, &cfg ) == ACCEL5_INIT_ERROR )
{
log_info( &logger, "---- Application Error ----" );
for ( ; ; );
}
log_info( &logger, "---- Application Init Done ----\n" );
accel5_soft_reset( &accel5 );
Delay_ms( 500 );
accel5_default_cfg( &accel5, ACCEL5_CFG_0_NORMAL_MODE, ACCEL5_CFG_1_ACC_RANGE_4g );
Delay_ms( 500 );
}
void application_task ( void )
{
int16_t x_axis_data;
int16_t y_axis_data;
int16_t z_axis_data;
// Task implementation.
x_axis_data = accel5_get_axis( &accel5, ACCEL5_X_AXIS );
log_printf ( &logger, " X axis : %d\r\n", x_axis_data );
y_axis_data = accel5_get_axis( &accel5, ACCEL5_Y_AXIS );
log_printf ( &logger, " Y axis : %d\r\n", y_axis_data );
z_axis_data = accel5_get_axis( &accel5, ACCEL5_Z_AXIS );
log_printf ( &logger, " Z axis : %d\r\n\n", z_axis_data );
Delay_ms( 500 );
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END