中级
30 分钟

使用TB6575FNG和PIC32MZ2048EFH100释放无刷电机的潜力

无缝运动,无限动力

Brushless Click with Flip&Click PIC32MZ

已发布 6月 24, 2024

点击板

Brushless Click

开发板

Flip&Click PIC32MZ

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFH100

用可靠高效的运动控制技术赋能机器人、无人机和自动化应用。

A

A

硬件概览

它是如何工作的?

Brushless Click基于Toshiba Semiconductor的TB6575FNG,这是一款用于三相全波无刷直流(BLDC)电机的PWM无传感器控制器。它基于PWM斩波驱动。在接收到模拟电压命令输入后,转子被对准到已知位置,然后以强制换相模式启动旋转,从而获取背电动势。为了在无传感器驱动下驱动无刷直流电机,基于背电动势感测生成一个自然换相的PWM信号。当每个相电压(包括背电动势)的极性信号应用到位置信号输入时,这个自然换相PWM信号会自动从强制换相PWM信号切换过来。板载两种类型的MOSFET芯片分别开关输出的ON和OFF。这控制了施加在电机上的电压水平,确定了电机轴的速度和旋转。它们是Si4497,一种P通道30V MOSFET,

和Si4154,一种N通道40V MOSFET,均来自Vishay。Brushless click理论上可以输出更高的电流;但在这种情况下,MOSFET芯片必须用外部散热器冷却。要连接外部直流电源,有一个VBAT螺钉端子。标有BLDC(GND、U、V、W)的螺钉端子是用于连接外部电机的相。作为TB6575FNG的位置传感输入,这个Click板使用的是LM2903,来自STMicroelectronics的低功率双电压比较器。为了感测,该比较器使用所有电机驱动器输出的电压。作为占空比控制输入,这个Click板使用的是MCP6281,一款来自Microchip的轨到轨运算放大器。这个OpAmp作为输入使用mikroBUS™插座的PWM信号。Brushless Click仅使用PWM信号作为与主机MCU的连

接,通过mikroBUS™插座提供信号到电机驱动器的WAVE位置感测输入。旋转速度感测输出通过mikroBUS™插座的INT引脚进行监控。要设置旋转方向,您可以在DIR引脚上使用逻辑高和低状态,高表示反向,低表示正向旋转。通过电阻分压器,VSN引脚可以监测电池电压。位置检测与IC生成的PWM信号同步。当IC用于高速电机时,可能会出现相对于PWM频率的位置检测误差。检测在PWM信号的下降沿执行。当引脚电压超过参考电压时,将识别错误。这个Click板™只能使用5V逻辑电压电平进行操作。在使用具有不同逻辑电平的MCU之前,板必须执行适当的逻辑电压电平转换。它配备了一个包含函数和示例代码的库,可作为进一步开发的参考。

Brushless Click hardware overview image

功能概述

开发板

Flip&Click PIC32MZ 是一款紧凑型开发板,设计为一套完整的解决方案,它将 Click 板™的灵活性带给您喜爱的微控制器,使其成为实现您想法的完美入门套件。它配备了一款板载 32 位 PIC32MZ 微控制器,Microchip 的 PIC32MZ2048EFH100,四个 mikroBUS™ 插槽用于 Click 板™连接,两个 USB 连接器,LED 指示灯,按钮,调试器/程序员连接器,以及两个与 Arduino-UNO 引脚兼容的头部。得益于创

新的制造技术,它允许您快速构建具有独特功能和特性的小工具。Flip&Click PIC32MZ 开发套件的每个部分都包含了使同一板块运行最高效的必要组件。此外,还可以选择 Flip&Click PIC32MZ 的编程方式,使用 chipKIT 引导程序(Arduino 风格的开发环境)或我们的 USB HID 引导程序,使用 mikroC、mikroBasic 和 mikroPascal for PIC32。该套件包括一个通过 USB 类型-C(USB-C)连接器的干净且调

节过的电源供应模块。所有 mikroBUS™ 本身支持的 通信方法都在这块板上,包括已经建立良好的 mikroBUS™ 插槽、用户可配置的按钮和 LED 指示灯。Flip&Click PIC32MZ 开发套件允许您在几分钟内创建新的应用程序。它由 Mikroe 软件工具原生支持,得益于大量不同的 Click 板™(超过一千块板),其数量每天都在增长,它涵盖了原型制作的许多方面。

Flip&Click PIC32MZ double image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

你完善了我!

配件

配备霍尔传感器的无刷直流(BLDC)电机代表了42BLF电机系列的高性能电机。这款电机采用星形配置,霍尔效应角为120°,确保了精确可靠的性能。具有47mm的紧凑电机长度和仅0.29kg的轻量设计,这款BLDC电机被设计用来满足您的需求。在额定电压24VDC和4000 ± 10% RPM的速度范围内无缝运行,这款电机提供持续可靠的动力。它在-20到+50°C的正常操作温度范围内表现出色,以1.9A的额定电流保持高效率。此外,这款产品与所有需要带霍尔传感器的无刷Click板以及需要BLDC电机的板件无缝集成。

Brushless Click accessories image

使用的MCU引脚

mikroBUS™映射器

Battery Voltage Sense
RB11
AN
Direction Control
RE2
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
NC
NC
3.3V
Ground
GND
GND
PWM Control
RC14
PWM
Interrupt
RD9
INT
NC
NC
TX
NC
NC
RX
NC
NC
SCL
NC
NC
SDA
Power Supply
5V
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

Brushless Click Schematic schematic

一步一步来

项目组装

Flip&Click PIC32MZ front image hardware assembly

从选择您的开发板和Click板™开始。以Flip&Click PIC32MZ作为您的开发板开始。

Flip&Click PIC32MZ front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
Flip&Click PIC32MZ MB1 Access - upright/background hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Flip&Click PIC32MZ MCU step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

实时跟踪您的结果

应用程序输出

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”替换为要显示的参数。

软件支持

库描述

这个库包含了Brushless Click驱动程序的API。

关键函数:

  • brushless_spin_clockwise - 这个函数将电机的旋转方向设置为顺时针方向

  • brushless_spin_counter_clockwise - 这个函数将电机的旋转方向设置为逆时针方向

  • brushless_read_rotation_speed_sensor_output - 这个函数读取INT引脚的数字输入

开源

代码示例

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

/*!
 * \file 
 * \brief Brushless Click example
 * 
 * # Description
 * This example showcases how to initialize and use the Brushless click. 
 * The click has a brushless motor driver which controls the work 
 * of the motor through the BLDC terminal. 
 * In order for this example to work a motor and a power supply are needed. 
 *
 * The demo application is composed of two sections :
 * 
 * ## Application Init 
 * This function initializes and configures the logger and click modules.
 * 
 * ## Application Task  
 * This is an example that demonstrates the use of a Brushless Click board.
 * Brushless Click communicates with the register via the PWM interface.
 * It shows moving in the left direction from slow to fast speed
 * and from fast to slow speed.
 * Results are being sent to the Usart Terminal where you can track their changes.
 * 
 * \author Nikola Peric
 *
 */
// ------------------------------------------------------------------- INCLUDES

#include "board.h"
#include "log.h"
#include "brushless.h"

// ------------------------------------------------------------------ VARIABLES

static brushless_t brushless;
static log_t logger;
uint8_t brushless_direction = 1;

// ------------------------------------------------------ APPLICATION FUNCTIONS

void application_init ( )
{
    log_cfg_t log_cfg;
    brushless_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 ----" );
    Delay_ms( 100 );

    //  Click initialization.
    brushless_cfg_setup( &cfg );
    BRUSHLESS_MAP_MIKROBUS( cfg, MIKROBUS_1 );
    Delay_ms( 100 );
    
    brushless_init( &brushless, &cfg );
    brushless_pwm_start( &brushless );
    log_info( &logger, "---- Application Task ----" );
    Delay_ms( 1000 );
}

void application_task ( )
{    
    static int8_t duty_cnt = 1;
    static int8_t duty_inc = 1;
    float duty = duty_cnt / 10.0;

    if ( brushless_direction == 1 )
    {
        brushless_spin_clockwise ( &brushless );
        log_printf( &logger, "<<<< " );
    }
    else
    {
        brushless_spin_counter_clockwise ( &brushless );
        log_printf( &logger, ">>>> " );
    }

    brushless_set_duty_cycle ( &brushless, duty );
    log_printf( &logger, "Duty: %d%%\r\n", ( uint16_t )( duty_cnt * 10 ) );
    Delay_ms( 500 );

    if ( 10 == duty_cnt ) 
    {
        duty_inc = -1;
    }
    else if ( 0 == duty_cnt ) 
    {
        duty_inc = 1;
                
        if ( brushless_direction == 1 )
        {
            brushless_direction = 0;
        }
        else if ( brushless_direction == 0 )
        {
            brushless_direction = 1;
        }
    }
    duty_cnt += duty_inc;
}

void main ( )
{
    application_init( );

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

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

额外支持

资源

喜欢这个项目吗?

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