使用我们的频率到电压解决方案,自信地导航信号分析世界,提供无与伦比的精确性,将频率数据捕获并转换为电压信号。
A
A
硬件概览
它是如何工作的?
Hz to V Click基于Microchip的TC9400,这是一个电压到频率和频率到电压转换器。它接受频率在1kHz到10kHz范围内的信号,并生成对应于输入频率的直流电压,范围从0.33V到3.3V,响应非常线性。此信号进一步通过运算放大器传递,以便将其缩小到MCU可接受的水平。输入信号可以应用于mikroBUS™的PWM引脚或外部输入端子。输入源可以通过板载开关选择,标记为INPUT SEL。当第一次操作Hz to V click时,需要校准它。该点击器配备有可变电阻,用于微调偏移量。应按照以下步骤校准
设备:将1kHz频率的输入信号应用于输入。应调整偏移量,以便在输出上出现330mV的直流信号。Hz to V click配备了输入信号端子(FREQ IN),用于连接频率在1kHz到10kHz之间的信号。除了此信号输入端子外,还可以选择由主机MCU生成的PWM信号作为输入。INPUT SEL开关可以设置为使用来自mikroBUS™的PWM引脚作为控制电压输入。建议信号幅度不要超过3.3V。输出端子(VOLT OUT)用于输出生成的电压。如前所述,电压水平取决于输入信号频率。这个生成的电压也可以在mikroBUS™的AN引
脚上获得。输出信号通过运算放大器(OPAMP)传递,该运算放大器用作输出缓冲器和输出电压的电压调节级。为了为TC9400和LM318 OPAMP提供12V,Hz to V click采用了MIC2606,一款来自Microchip的升压稳压器构建的升压转换器,工作频率为2MHz。这个IC提供12V,用于从mikroBUS™插座中引出的5V供应TC9400。升压稳压器的EN引脚路由到mikroBUS™的CS引脚,并用于启用升压稳压器的电源输出,有效地启用TC9400本身。EN引脚由板载电阻拉到高逻辑电平(3.3V)。
功能概述
开发板
Nucleo-144开发板搭载STM32F207ZG MCU,为用户提供了一种经济且灵活的方式,通过选择STM32微控制器提供的多种性能和功耗组合,尝试新概念并构建原型。对于兼容的开发板,内部或外部的SMPS在
运行模式下显著降低功耗。该开发板配备ST Zio连接器,扩展了ARDUINO® Uno V3的连接性,以及ST morpho排针,提供了多种专业扩展板的选择,便于扩展Nucleo开放开发平台的功能。STM32 Nucleo-144
开发板不需要单独的探针,因为它集成了ST-LINK调试器/编程器。此外,STM32 Nucleo-144开发板随附了STM32Cube MCU包,提供STM32全面的免费软件库和示例。

微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M3
MCU 内存 (KB)
1024
硅供应商
STMicroelectronics
引脚数
144
RAM (字节)
131072
你完善了我!
配件
Click Shield for Nucleo-144 配备了四个 mikroBUS™ 插座,其中一个采用 Shuttle 连接器形式,允许所有 Click 板™ 设备轻松与 STM32 Nucleo-144 板接口。MIKROE 使用户能够从不断增长的 Click 板™ 系列中添加任何功能,例如 WiFi、GSM、GPS、蓝牙、ZigBee、环境传感器、LED、语音识别、电机控制、运动传感器等。STM32 Nucleo-144 板具有 ARM Cortex-M 微控制器、144个引脚和与 Arduino™ 兼容,为原型设计和创造多样化应用提供了无限可能。这些开发板通过 USB 连接进行控制和供电,方便地编程和高效地调试 Nucleo-144 板,还可以通过连接到板上的 USB mini 端口的额外 USB 线缆。集成的 ST-Link 调试器简化了项目开发,广泛的 I/O 选项和扩展能力激发了创造力。这个 Click Shield 还配有几个开关,用于选择 mikroBUS™ 插座上模拟信号的逻辑电平和选择 mikroBUS™ 插座本身的逻辑电压电平。此外,用户可以利用现有的双向电平转换电压转换器使用任何 Click 板™,无论 Click 板™ 是在 3.3V 还是 5V 逻辑电压水平下运行。一旦您将 STM32 Nucleo-144 板与我们的 Click Shield for Nucleo-144 连接,您就可以使用工作在 3.3V 或 5V 逻辑电压水平的数百种 Click 板™。
使用的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”替换为要显示的参数。

软件支持
库描述
这个库包含了Hz To V Click驱动的API。
关键函数:
hztov_read_voltage
- 读取电压的函数hztov_set_input_frequency
- 更改输出电压的函数
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief HzToV Click example
*
* # Description
* This example demonstrates the use of Hz to V Click board.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the driver and enables the Click board.
*
* ## Application Task
* Sets the PWM frequency then reads the voltage from VO pin and logs all data on USB UART.
*
* @note
* In order to set PWM frequency down to 1 kHz, the user will probably need to
* lower the main MCU clock frequency.
* The output voltage may vary, depending on the offset potentiometer setting on the Click.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "hztov.h"
// ------------------------------------------------------------------ VARIABLES
static hztov_t hztov;
static log_t logger;
static float voltage;
static uint16_t fin;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
hztov_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.
hztov_cfg_setup( &cfg );
HZTOV_MAP_MIKROBUS( cfg, MIKROBUS_1 );
hztov_init( &hztov, &cfg );
hztov_set_enable ( &hztov, HZTOV_ENABLE );
fin = HZTOV_MIN_FREQ;
Delay_ms ( 100 );
}
void application_task ( void )
{
if ( fin > HZTOV_MAX_FREQ )
fin = HZTOV_MIN_FREQ;
hztov_set_input_frequency( &hztov, fin );
Delay_ms ( 1000 );
log_printf( &logger, "Frequency: %u Hz \r\n", fin );
voltage = 0;
for ( uint8_t cnt = 0; cnt < 100; cnt++ )
{
voltage += hztov_read_voltage( &hztov );
}
log_printf( &logger, "Voltage: %.2f V \r\n", voltage / 100.0 );
log_printf( &logger, "-------------------\r\n" );
fin += 1000;
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