信赖我们的数字压力测量解决方案,以提高您的运营效率,优化资源并最大化生产力。
A
A
硬件概览
它是如何工作的?
Pressure 9 Click基于Infineon的DPS422,这是一款数字气压传感器。它可用于测量300到1200hPa的绝对压力值。该传感器包含一个高度精确的基于电容的微机电系统(MEMS),以及一个高分辨率的24位Σ-Δ A/D转换器(ADC)。MEMS还具有一组工厂校准参数,存储在其OTP存储器中。这些参数允许进行高精度的压力和温度数据转换,生成以物理单位表示的结果。通过调整过采样比率,开发者可以根据应用需求在精度、速度(输出数据率)和功耗之间找到最佳平衡。MEMS由一组被膜覆盖的管状真空单元组成。施加压力时,单元的电容会成比例地变化。多个真空单元并联连接,以提高灵敏度并减少噪声。单元的电容被测量并转换为电压,该电压由内部24位ADC采样。结果可以通过I2C或SPI接口获取,具体取决于COMM SEL跳线的位置。转换公式会应用于
原始结果值,提供以人类可读格式表示的压力和温度值。Pressure 9 Click支持SPI和I2C通信接口,使其可以与各种不同的MCU一起使用。通过将分组在COM SEL下的SMD跳线移动到适当位置(SPI或I2C),可以选择通信接口。当在I2C模式下运行时,还可以通过SMD跳线配置从I2C地址:标记为ADD SEL的SMD跳线用于设置I2C地址的最低有效位(LSB)。设置为0时,7位I2C从机地址变为0b1110110x;设置为1时,地址变为0b1110111x。最后一位(x)是R/W位。请注意,每个跳线都应移动到相同的位置,否则可能无法与主机MCU通信。DPS422的一个显著特点是具有32个槽的FIFO缓冲区,可以缓冲压力和温度读数。FIFO缓冲区可以用作传入数据的临时存储,减少通过通信总线的数据流量。FIFO缓冲区在编写优化的MCU固件时非常有用。存储在
FIFO缓冲区中的结果的最低有效位(LSB)确定存储的数据是压力还是温度(1表示压力,0表示温度)。FIFO状态寄存器中的一位指示缓冲区是否已满或是否达到水位线。FIFO缓冲区也可以禁用,允许直接从输出寄存器获取数据。压力和热数据以24位二进制补码格式在输出中可用。要将原始数据转换为人类可读格式,主机MCU的固件必须获取校准数据。然后在压力或温度转换公式中使用校准系数。所需的公式可以在DPS422的数据手册中找到。然而,这个Click board™配备了与mikroSDK兼容的函数库,简化了固件开发。开发者可以使用简单的函数调用,执行所有必要的数据转换,返回以人类可读格式表示的压力和热数据。该Click Board™设计为仅使用3.3V逻辑电平。应在使用工作在5V的MCU之前进行适当的逻辑电压电平转换。
功能概述
开发板
EasyPIC v8 是一款专为快速开发嵌入式应用的需求而特别设计的开发板。它支持许多高引脚计数的8位PIC微控制器,来自Microchip,无论它们的引脚数量如何,并且具有一系列独特功能,例如首次集成的调试器/程序员。开发板布局合理,设计周到,使得最终用户可以在一个地方找到所有必要的元素,如开关、按钮、指示灯、连接器等。得益于创新的制造技术,EasyPIC v8 提供了流畅而沉浸式的工作体验,允许在任何情况下、任何地方、任何时候都能访问。
EasyPIC v8 开发板的每个部分都包含了使同一板块运行最高效的必要组件。除了先进的集成CODEGRIP程 序/调试模块,该模块提供许多有价值的编程/调试选项和与Mikroe软件环境的无缝集成外,该板还包括一个干净且调节过的开发板电源供应模块。它可以使用广泛的外部电源,包括电池、外部12V电源供应和通过USB Type-C(USB-C)连接器的电源。通信选项如USB-UART、USB DEVICE和CAN也包括在内,包括 广受好评的mikroBUS™标准、两种显示选项(图形和
基于字符的LCD)和几种不同的DIP插座。这些插座覆盖了从最小的只有八个至四十个引脚的8位PIC MCU的广泛范围。EasyPIC v8 是Mikroe快速开发生态系统的一个组成部分。它由Mikroe软件工具原生支持,得益于大量不同的Click板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作和开发的许多方面。
微控制器概述
MCU卡片 / MCU

建筑
PIC
MCU 内存 (KB)
128
硅供应商
Microchip
引脚数
40
RAM (字节)
3728
使用的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”替换为要显示的参数。

软件支持
库描述
该库包含Pressure 9 Click驱动程序的 API。
关键功能:
pressure9_get_pressure_data
- 获取以毫巴(mBar)为单位的压力数据pressure9_get_temperature_data
- 获取以摄氏度(C)为单位的温度数据pressure9_configuration
- 向配置寄存器写入数据
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief Pressure9 Click example
*
* # Description
* The demo application displays the pressure and temperature
* measurement using Pressure 9 click.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization the driver, test comunication, and performs the click
* default configuration.
*
* ## Application Task
* Reads Temperature data in [C] and Pressure data in [mBar] and this
* data logs to the USB UART every 2 sec.
*
* \author Jovan Stajkovic
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "pressure9.h"
// ------------------------------------------------------------------ VARIABLES
static pressure9_t pressure9;
static log_t logger;
static float temperature;
static float pressure;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
pressure9_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.
pressure9_cfg_setup( &cfg );
PRESSURE9_MAP_MIKROBUS( cfg, MIKROBUS_1 );
pressure9_init( &pressure9, &cfg );
Delay_ms ( 100 );
// Test comunication
uint8_t product_id = 0;
pressure9_generic_read( &pressure9, PRESSURE9_REG_PRODUCT_ID, &product_id, 1 );
if ( PRESSURE9_PRODUCT_ID != product_id )
{
log_error( &logger, "Read product ID." );
for ( ; ; );
}
pressure9_default_cfg( &pressure9 );
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
pressure = pressure9_get_pressure_data( &pressure9 );
log_printf( &logger, " Pressure: %.2f mBar\r\n", pressure );
temperature = pressure9_get_temperature_data( &pressure9 );
log_printf( &logger, " Temperature: %.2f degC\r\n", temperature );
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
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
/*!
* \file
* \brief Pressure9 Click example
*
* # Description
* The demo application displays the pressure and temperature
* measurement using Pressure 9 click.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization the driver, test comunication, and performs the click
* default configuration.
*
* ## Application Task
* Reads Temperature data in [C] and Pressure data in [mBar] and this
* data logs to the USB UART every 2 sec.
*
* \author Jovan Stajkovic
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "pressure9.h"
// ------------------------------------------------------------------ VARIABLES
static pressure9_t pressure9;
static log_t logger;
static float temperature;
static float pressure;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
pressure9_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.
pressure9_cfg_setup( &cfg );
PRESSURE9_MAP_MIKROBUS( cfg, MIKROBUS_1 );
pressure9_init( &pressure9, &cfg );
Delay_ms ( 100 );
// Test comunication
uint8_t product_id = 0;
pressure9_generic_read( &pressure9, PRESSURE9_REG_PRODUCT_ID, &product_id, 1 );
if ( PRESSURE9_PRODUCT_ID != product_id )
{
log_error( &logger, "Read product ID." );
for ( ; ; );
}
pressure9_default_cfg( &pressure9 );
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
pressure = pressure9_get_pressure_data( &pressure9 );
log_printf( &logger, " Pressure: %.2f mBar\r\n", pressure );
temperature = pressure9_get_temperature_data( &pressure9 );
log_printf( &logger, " Temperature: %.2f degC\r\n", temperature );
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
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