中级
20 分钟

汽车级多通道半桥驱动器,支持独立、顺序或并行驱动模式

本项目展示了通过结合H-Bridge 18 Click和Curiosity PIC32 MZ EF获得的汽车级多通道半桥驱动器解决方案的参考设计

H-Bridge 18 Click with Curiosity PIC32 MZ EF

已发布 2月 21, 2025

点击板

H-Bridge 18 Click

开发板

Curiosity PIC32 MZ EF

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFM100

控制多个直流电机和步进电机,非常适用于 HVAC 系统、LED 照明和电磁阀驱动

A

A

硬件概览

它是如何工作的?

H-Bridge 18 Click 基于德州仪器的 DRV8904-Q1,这是一款汽车级多通道半桥驱动器,专为精确控制有刷直流(BDC)电机和步进电机而设计,并提供高级诊断和保护功能。DRV8904-Q1 支持独立、顺序或并行电机驱动模式,每个半桥可持续输出 1A 电流(并联输出时最大可达 6A)。其架构允许对电机运动进行全面控制,包括前进、后退、自由滑行和制动操作,以确保在苛刻环境下的可靠性能。由于其多功能特性,H-Bridge 18 Click 非常适用于各种汽车、工业和消费电子应用,例如 HVAC 挡板控制、LED 照明、多电机系统和电磁阀驱动,这些场景对精确控制和系统保护至关重要。该 Click 板通过标准 16 位 SPI 接口与主 MCU 进行通信,支持高达 5MHz 的运行速度,

并具备菊链支持,以便集成到复杂系统中。其主要特点之一是集成了八个可编程 PWM 发生器,可在电机运行期间精确限制电流或实现可控的 LED 调光。DRV8904-Q1 还内置多种诊断和保护机制,以提高系统可靠性,包括实时故障监测和报告,确保能够立即检测和响应短路、欠压或过热等问题。此外,该设备具有低电流开路检测(OLD)模式,即使在负载电流极低时也能准确识别开路状态,并支持被动 OLD 模式用于离线故障检测。H-Bridge 18 Click 通过外部电源供电,连接至 VM 端子,推荐工作电压范围为 4.5V 至 32V。除了 SPI 接口,该 Click 板还包括专用控制引脚,以增强电源管理和故障监测能力。SLP 引脚可在低电平时使设备进入低功耗睡眠模式,而设置为高

电平时可使驱动器正常运行。此外,FLT 引脚作为故障指示信号,在检测到错误情况时向系统发出警报。为了提供清晰的视觉反馈,该板集成了相应的 LED 指示灯,包括黄色 SLEEP LED 指示设备处于低功耗模式,以及红色 FAULT LED 指示检测到的故障状态,以确保实时状态监测并提高系统可靠性。除了负载连接端子外,该板还包括四个专用的测试点挂钩,可用于监测和诊断连接的负载状态。该 Click 板可通过 VCC SEL 跳线选择 3.3V 或 5V 逻辑电压,以便 3.3V 和 5V 兼容的 MCU 能够正确使用通信线路。此外,该 Click 板配备了包含易于使用的函数和示例代码的库,可用作进一步开发的参考。

H-Bridge 18 Click hardware overview image

功能概述

开发板

Curiosity PIC32 MZ EF 开发板是一个完全集成的 32 位开发平台,特点是高性能的 PIC32MZ EF 系列(PIC32MZ2048EFM),该系列具有 2MB Flash、512KB RAM、集成的浮点单元(FPU)、加密加速器和出色的连接选项。它包括一个集成的程序员和调试器,无需额外硬件。用户可以通过 MIKROE 

mikroBUS™ Click™ 适配器板扩展功能,通过 Microchip PHY 女儿板添加以太网连接功能,使用 Microchip 扩展板添加 WiFi 连接能力,并通过 Microchip 音频女儿板添加音频输入和输出功能。这些板完全集成到 PIC32 强大的软件框架 MPLAB Harmony 中,该框架提供了一个灵活且模块化的接口

来应用开发、一套丰富的互操作软件堆栈(TCP-IP、USB)和易于使用的功能。Curiosity PIC32 MZ EF 开发板提供了扩展能力,使其成为连接性、物联网和通用应用中快速原型设计的绝佳选择。

Curiosity PIC32MZ EF double side image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

你完善了我!

配件

直流齿轮电机 - 430RPM (3-6V) 是电机和齿轮箱的全合一组合,通过添加齿轮,电机速度降低,同时输出扭矩增加。这款齿轮电机配备了正齿轮箱,成为了低扭矩和低速度需求应用的高度可靠解决方案。对于齿轮电机来说,最关键的参数是速度、扭矩和效率。在这种情况下,空载速度为 520RPM,最大效率下的速度为 430RPM,电流为 60mA,扭矩为 50g.cm。该电机额定工作电压范围为 3-6V,支持顺时针/逆时针旋转方向,是许多最初由有刷直流电机执行的功能的理想解决方案,如机器人、医疗设备、电动门锁等。

H-Bridge 18 Click accessories 1 image

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
ID SEL
RA9
RST
SPI Select / ID COMM
RPD4
CS
SPI Clock
RPD1
SCK
SPI Data OUT
RPD14
MISO
SPI Data IN
RPD3
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
Sleep Mode Control
RPE8
PWM
Fault Indicator
RF13
INT
NC
NC
TX
NC
NC
RX
NC
NC
SCL
NC
NC
SDA
Power Supply
5V
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

H-Bridge 18 Click Schematic schematic

一步一步来

项目组装

Curiosity PIC32MZ EF front image hardware assembly

从选择您的开发板和Click板™开始。以Curiosity PIC32 MZ EF作为您的开发板开始。

Curiosity PIC32MZ EF front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
GNSS2 Click complete accessories setup image hardware assembly
Curiosity PIC32 MZ EF MB 1 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
Curiosity PIC32 MZ EF 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”替换为要显示的参数。

软件支持

库描述

H-Bridge 18 Click 演示应用程序使用 NECTO Studio开发,确保与 mikroSDK 的开源库和工具兼容。该演示设计为即插即用,可与所有具有 mikroBUS™ 插座的 开发板、入门板和 mikromedia 板完全兼容,用于快速实现和测试。

示例描述
本示例演示 H-Bridge 18 Click 的操作,该 Click 板™ 通过 H 桥驱动器 控制 两个直流电机。应用程序初始化 Click 板,并交替切换不同的电机状态,包括 前进、后退、自由滑行(coast)和制动(braking),以展示双向电机控制能力。

关键功能:

  • hbridge18_cfg_setup - 初始化 Click 配置结构为默认值。

  • hbridge18_init - 初始化所有必要的引脚和外设,以支持该 Click 板™ 的正常运行。

  • hbridge18_default_cfg - 执行 Click 板™ 的默认配置。

  • hbridge18_enable_device - 通过设置 SLEEP 引脚为高电平启用 H-Bridge 18 设备。

  • hbridge18_disable_device - 通过设置 SLEEP 引脚为低电平禁用 H-Bridge 18 设备。

  • hbridge18_set_motor_state - 设置选定电机的状态,包括 自由滑行(coast)、前进(forward)、后退(reverse)、低侧制动(brake low-side)和高侧制动(brake high-side)。

应用初始化
初始化日志记录器和 H-Bridge 18 Click,配置电机驱动器为默认设置,为正常运行做好准备。

应用任务
按顺序切换电机状态,展示不同的控制功能。电机按顺序执行 前进、后退、自由滑行和制动,并不断循环运行。

开源

代码示例

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

/*!
 * @file main.c
 * @brief H-Bridge 18 Click example
 *
 * # Description
 * This example demonstrates the operation of the H-Bridge 18 Click board, which
 * provides control over two DC motors using an H-Bridge driver. The application
 * initializes the board and alternates between different motor states, including
 * forward, reverse, coast, and braking, to demonstrate bidirectional motor control.
 *
 * The demo application is composed of two sections:
 *
 * ## Application Init
 * Initializes the logger and the H-Bridge 18 Click board. Configures the motor driver
 * to the default settings, preparing it for operation.
 *
 * ## Application Task
 * Alternates motor states in a sequence to demonstrate different control functionalities.
 * The motors are set to move forward and reverse, followed by coasting and braking,
 * repeating the cycle continuously.
 *
 * @note
 * Ensure proper power supply (4.5V-32V, depending on motor specifications) and motor
 * connections (motor 0: O1-O2; motor 1: O3-O4) before running the example.
 *
 * @author Stefan Filipovic
 *
 */

#include "board.h"
#include "log.h"
#include "hbridge18.h"

static hbridge18_t hbridge18;
static log_t logger;

void application_init ( void )
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    hbridge18_cfg_t hbridge18_cfg;  /**< Click config object. */

    /** 
     * 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.
    hbridge18_cfg_setup( &hbridge18_cfg );
    HBRIDGE18_MAP_MIKROBUS( hbridge18_cfg, MIKROBUS_1 );
    if ( SPI_MASTER_ERROR == hbridge18_init( &hbridge18, &hbridge18_cfg ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( HBRIDGE18_ERROR == hbridge18_default_cfg ( &hbridge18 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
    
    log_info( &logger, " Application Task " );
}

void application_task ( void )
{
    log_printf( &logger, " Motor 0: Forward\r\n" );
    log_printf( &logger, " Motor 1: Reverse\r\n\n" );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_0, HBRIDGE18_MOTOR_STATE_FORWARD );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_1, HBRIDGE18_MOTOR_STATE_REVERSE );
    Delay_ms ( 1000 );
    Delay_ms ( 1000 );
    log_printf( &logger, " Motor 0: Coast\r\n" );
    log_printf( &logger, " Motor 1: Brake LS\r\n\n" );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_0, HBRIDGE18_MOTOR_STATE_COAST );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_1, HBRIDGE18_MOTOR_STATE_BRAKE_LS );
    Delay_ms ( 1000 );
    Delay_ms ( 1000 );
    log_printf( &logger, " Motor 0: Reverse\r\n" );
    log_printf( &logger, " Motor 1: Forward\r\n\n" );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_0, HBRIDGE18_MOTOR_STATE_REVERSE );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_1, HBRIDGE18_MOTOR_STATE_FORWARD );
    Delay_ms ( 1000 );
    Delay_ms ( 1000 );
    log_printf( &logger, " Motor 0: Brake HS\r\n" );
    log_printf( &logger, " Motor 1: Coast\r\n\n" );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_0, HBRIDGE18_MOTOR_STATE_BRAKE_HS );
    hbridge18_set_motor_state ( &hbridge18, HBRIDGE18_MOTOR_1, HBRIDGE18_MOTOR_STATE_COAST );
    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

额外支持

资源

喜欢这个项目吗?

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