初学者
10 分钟

使用DRV8245P和STM32F031K6实现高性能直流电机控制

单全桥或独立半桥驱动器

DC Motor 29 Click with Nucleo 32 with STM32F031K6 MCU

已发布 10月 01, 2024

点击板

DC Motor 29 Click

开发板

Nucleo 32 with STM32F031K6 MCU

编译器

NECTO Studio

微控制器单元

STM32F031K6

简化在各种汽车应用中控制直流电机的过程,确保它们在多种功能中平稳可靠地运行。

A

A

硬件概览

它是如何工作的?

DC Motor 29 Click 基于 DRV8245P,这是一款来自德州仪器的汽车级 H 桥驱动器,具有集成电流检测和诊断功能。该驱动器工作电压范围为 4.5V 到 35V,支持各种电机和负载的宽范围输出电流。它集成了 N 沟道 H 桥、电荷泵调节器、带调节的高边电流检测、电流比例输出和保护电路。H 桥输出功率级可以在不同的控制模式下运行,这允许您通过螺丝端子驱动单个双向有刷直流电机或两个单向有刷直流电机。该驱动器提供电压监测、负载诊断以及过流和过温保护功

能。DC Motor 29 Click 使用标准 4 线 SPI 串行接口与主机 MCU 通信。来自德州仪器的 TXS0104 是一个 4 位双向电压电平转换器,用于逻辑电平转换。驱动器负载电流模拟反馈可通过 IP 引脚获得。用于桥操作的控制器输入 1 可通过 IN1 引脚获得。来自 NXP 的 8 位 I/O 端口 PCA9538 提供了从电机驱动器到主机 MCU 的附加功能,并可以通过 RST 引脚复位。它提供了用于桥操作的控制器输入 2 的输入。这两个控制器输入允许您使用不同的控制方案。模式方案可以随时通

过软件更改。I/O 端口还允许您禁用电机驱动器。故障条件也通过此 IC 进行监控。如果发生故障情况,主机 MCU 将通过 FLT 引脚被断言。I/O 端口的 I2C 地址可以通过 ADDR SEL 跳线选择。此 Click board™ 可以通过 VCC SEL 跳线选择 3.3V 或 5V 逻辑电压级别进行操作。这样,具有 3.3V 和 5V 功能的 MCU 都可以正确使用通信线。另外,此 Click board™ 配有包含易于使用功能和示例代码的库,可作为进一步开发的参考。

DC Motor 29 Click hardware overview image

功能概述

开发板

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),使其成为开发人员的多功能工具。

Nucleo 32 with STM32F031K6 MCU double side image

微控制器概述 

MCU卡片 / MCU

default

建筑

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板™结合,应用于即将开展的项目中。

Click Shield for Nucleo-32 accessories 1 image

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

DC Motor 29 Click accessories image

使用的MCU引脚

mikroBUS™映射器

Load Analog Feedback
PA0
AN
Reset / ID SEL
PA11
RST
SPI Select / ID COMM
PA4
CS
SPI Clock
PB3
SCK
SPI Data OUT
PB4
MISO
SPI Data IN
PB5
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
Controller Input
PA8
PWM
Fault Interrupt
PA12
INT
NC
NC
TX
NC
NC
RX
I2C Clock
PB6
SCL
I2C Data
PB7
SDA
Power Supply
5V
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

DC Motor 29 Click Schematic schematic

一步一步来

项目组装

Click Shield for Nucleo-144 front image hardware assembly

从选择您的开发板和Click板™开始。以Nucleo 32 with STM32F031K6 MCU作为您的开发板开始。

Click Shield for Nucleo-144 front image hardware assembly
Nucleo 144 with STM32L4A6ZG MCU front image hardware assembly
Stepper 22 Click front image hardware assembly
Prog-cut hardware assembly
Stepper 22 Click complete accessories setup image hardware assembly
Nucleo-32 with STM32 MCU Access MB 1 - 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
STM32 M4 Clicker HA MCU/Select 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”替换为要显示的参数。

软件支持

库描述

该库包含 DC Motor 29 Click 驱动程序的 API。

关键功能:

  • dcmotor29_register_write - DC Motor 29 数据寄存器写入功能。

  • dcmotor29_port_expander_read - DC Motor 29 端口扩展器读取寄存器功能。

  • dcmotor29_drive_motor - DC Motor 29 驱动电机功能。

开源

代码示例

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

/*!
 * @file main.c
 * @brief DC Motor 29 Click example
 *
 * # Description
 * This example demonstrates the use of the DC Motor 29 Click board by driving the 
 * motor in both directions with braking and coasting in between.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * Initializes the driver and performs the click default configuration.
 *
 * ## Application Task
 * Drives the motor in both directions with coasting and braking in between, every sate is lasting 5 seconds.
 *
 * @author Stefan Ilic
 *
 */

#include "board.h"
#include "log.h"
#include "dcmotor29.h"

static dcmotor29_t dcmotor29;
static log_t logger;

void application_init ( void )
{
    log_cfg_t log_cfg;  /**< Logger config object. */
    dcmotor29_cfg_t dcmotor29_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.
    dcmotor29_cfg_setup( &dcmotor29_cfg );
    DCMOTOR29_MAP_MIKROBUS( dcmotor29_cfg, MIKROBUS_1 );
    if ( SPI_MASTER_ERROR == dcmotor29_init( &dcmotor29, &dcmotor29_cfg ) )
    {
        log_error( &logger, " Communication init." );
        for ( ; ; );
    }
    
    if ( DCMOTOR29_ERROR == dcmotor29_default_cfg ( &dcmotor29 ) )
    {
        log_error( &logger, " Default configuration." );
        for ( ; ; );
    }
       
    log_info( &logger, " Application Task " );
}

void application_task ( void )
{
    dcmotor29_drive_motor( &dcmotor29, DCMOTOR29_DRIVE_MOTOR_CW );
    log_printf( &logger, " Driving motor Clockwise \r\n" );
    Delay_ms( 5000 );
    
    dcmotor29_drive_motor( &dcmotor29, DCMOTOR29_DRIVE_MOTOR_BRAKE );
    log_printf( &logger, " Brake is on \r\n" );
    Delay_ms( 5000 );
    
    dcmotor29_drive_motor( &dcmotor29, DCMOTOR29_DRIVE_MOTOR_CCW );
    log_printf( &logger, " Driving motor counter-clockwise \r\n" );
    Delay_ms( 5000 );
    
    dcmotor29_drive_motor( &dcmotor29, DCMOTOR29_DRIVE_MOTOR_COASTING );
    log_printf( &logger, " Driving motor Coasting \r\n" );
    Delay_ms( 5000 );
}

void main ( void )
{
    application_init( );

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

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

额外支持

资源

喜欢这个项目吗?

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