使用我们的频率到电压解决方案,自信地导航信号分析世界,提供无与伦比的精确性,将频率数据捕获并转换为电压信号。
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 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成
ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源
指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。

微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
32
硅供应商
STMicroelectronics
引脚数
32
RAM (字节)
4096
你完善了我!
配件
Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
这个库包含了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
额外支持
资源
类别:测量

































