实现超高精度双极步进电机控制,支持 1/256 微步进和强大的 5A 全量程输出
A
A
硬件概览
它是如何工作的?
Stepper 25 Click 基于德州仪器(Texas Instruments)的 DRV8452 电机驱动器 IC,专为精确控制双极步进电机而设计。DRV8452 集成了两个 N 沟道功率 MOSFET H 桥、电流检测电阻、高级电流调节系统和微步进索引器于一体。该高度集成的解决方案支持宽电压输入范围(4.5V 至 55V),最大输出电流可达 5A 全量程(或 3.5A RMS),在高功率应用中仍能保持稳定性能。得益于 DRV8452 的强大能力,Stepper 25 Click 非常适用于广泛应用场景,包括纺织及缝纫机、工厂自动化系统、机器人平台、诊断设备、多功能打印机,以及基于 PLC、DCS 和 PAC 的系统。对于需要高功率和高精度运动控制的复杂项目工程师和开发者来说,这是一个灵活可靠的解决方案。DRV8452 的一大亮点是其 自动扭矩(auto-torque)功能,可根据电机负载动态调整输出电流,提升系统整体效率,同时大幅减少运行过程中的功耗。板载 VREF 微调电位器 使得用户能够根据负载需求精细调整电机电流。此外,板上还配备 ENABLE 开
关,用于控制输出通道的激活:当设置为 0 时,所有输出关闭;当设置为 1 时,输出使能,准备运行。Stepper 25 Click 通过标准 4 线 SPI 接口 与主控 MCU 通信,可精确配置 DRV8452 并优化其自动扭矩算法,以适应各种电机应用需求。它还支持 堵转检测功能,可在电机卡死或达到行程终点时通知系统,保障安全运行。为降低能耗,设备提供 静止节能模式,在电机保持位置时最小化功耗。DRV8452 集成的 电流感应架构 通过电流镜像与内部 MOSFET,省去了对外部感应电阻的需求。同时,通过 STP 和 DIR 引脚,主控 MCU 可控制电机的方向与步进频率。其内建的 微步进索引器 支持从全步、半步到高达 1/256 微步进 的多种分辨率,实现极其平滑且精准的运动控制。更高的微步进级别可有效降低电机噪音,并提升运动流畅性。自动微步插值模式 可将低频输入信号转换为高分辨率步进信号,进一步提升电流调节质量,并降低运行噪音。为实现精确电流调节,DRV8452 提供多种衰减模式,包括 慢衰减、混合衰减和快衰减,
同时具备智能自适应的 Smart Tune 衰减模式,可根据供电电压、电机速度或老化变化自动优化电流控制。其中,Smart Tune Ripple Control 使用可变关断时间波纹电流方案来减少绕组电流失真;Smart Tune Dynamic Decay 则结合固定关断时间与动态快衰减百分比,进一步提升性能。此外,还有专为静止和低速运行设计的 Silent Step 衰减模式,实现极为安静的运行效果。Stepper 25 Click 还带有两个额外控制引脚:FLT 和 SLP。FLT 用于指示故障状态(如过流或热关断),SLP 控制器件的电源模式——逻辑高电平表示正常运行,逻辑低电平表示进入低功耗睡眠模式。这两个引脚配有红色 LED 指示灯(分别标记为 FAULT 和 SLEEP),为用户提供清晰的状态可视化,便于系统监测与调试。该 Click 板支持 3.3V 和 5V 逻辑电平,可通过 VCC SEL 跳线 进行切换,兼容不同类型的主控 MCU。此外,Stepper 25 Click 随附 功能库与示例代码,便于开发者快速上手并作为后续开发参考。
功能概述
开发板
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 开发板提供了扩展能力,使其成为连接性、物联网和通用应用中快速原型设计的绝佳选择。
微控制器概述
MCU卡片 / MCU

建筑
PIC32
MCU 内存 (KB)
2048
硅供应商
Microchip
引脚数
100
RAM (字节)
524288
你完善了我!
配件
17HD40005-22B 步进电机是一款双相混合电机,具有高扭矩、高速度和低噪音性能。它配有一根 1 米长的电线,连接端有可选端口,并带有热缩管以防止缠绕。电机的 D 形轴长为 22mm。该电机采用斩波波恒流驱动,具有双相 4 线激励模式,可实现正反转。电源顺序按照 AB-BC-CD-DA 顺序排列,从轴端看为顺时针方向。其额定电流为 1.3A DC,额定电压为 2.4V,步进角为 1.8°,绝缘等级为 B。此步进电机非常适用于需要精确运动控制和可靠性的应用。

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

软件支持
库描述
Stepper 25 Click 演示应用程序使用 NECTO Studio开发,确保与 mikroSDK 的开源库和工具兼容。该演示设计为即插即用,可与所有具有 mikroBUS™ 插座的 开发板、入门板和 mikromedia 板完全兼容,用于快速实现和测试。
示例描述
此示例演示了 Stepper 25 Click 板的使用,用于控制双极步进电机的运行。应用程序初始化板卡,并执行不同的步进模式、方向和速度,以展示电机的精确控制能力。
关键功能:
stepper25_cfg_setup
- 初始化 Click 配置结构为默认初始值。stepper25_init
- 初始化该 Click 板所需的所有引脚和外设。stepper25_default_cfg
- 执行 Stepper 25 Click 的默认配置函数。stepper25_set_direction
- 通过设置 DIR 引脚的逻辑状态来设定电机旋转方向。stepper25_set_step_mode
- 设置 Stepper 25 设备的步进模式(微步级别)。stepper25_drive_motor
- 以选定速度驱动电机运行指定步数。
应用初始化
初始化日志记录器和 Stepper 25 Click 板,使用默认设置配置电机驱动器,使其准备好进行步进电机控制。
应用任务
以不同的步进模式和方向驱动步进电机,采用不同的速度。在每种模式下,电机完成预设数量的步进,并在顺时针(CW)和逆时针(CCW)方向之间切换,使用不同的步进分辨率。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief Stepper 25 Click example
*
* # Description
* This example demonstrates the operation of the Stepper 25 Click board,
* which is used to control a bipolar stepper motor. The application initializes
* the board and executes different step modes, directions, and speeds to
* showcase precise motor control.
*
* The demo application is composed of two sections:
*
* ## Application Init
* Initializes the logger and Stepper 25 Click board. Configures the motor driver
* with default settings, preparing it for stepper motor control.
*
* ## Application Task
* Moves the stepper motor in different step modes and directions at varying speeds.
* The motor completes a predefined number of steps in each mode, switching between
* clockwise (CW) and counterclockwise (CCW) directions with different step resolutions.
*
* @note
* Ensure proper power supply and motor connections before running the example.
*
* @author Stefan Filipovic
*
*/
#include "board.h"
#include "log.h"
#include "stepper25.h"
static stepper25_t stepper25;
static log_t logger;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
stepper25_cfg_t stepper25_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.
stepper25_cfg_setup( &stepper25_cfg );
STEPPER25_MAP_MIKROBUS( stepper25_cfg, MIKROBUS_1 );
if ( SPI_MASTER_ERROR == stepper25_init( &stepper25, &stepper25_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( STEPPER25_ERROR == stepper25_default_cfg ( &stepper25 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
log_printf ( &logger, " Step mode: 1/16\r\n" );
log_printf ( &logger, " Direction: CW\r\n" );
log_printf ( &logger, " Steps: 1600\r\n" );
log_printf ( &logger, " Speed: Medium\r\n\n" );
stepper25_set_direction ( &stepper25, STEPPER25_DIR_CW );
stepper25_set_step_mode ( &stepper25, STEPPER25_STEP_MODE_1_OVER_16 );
stepper25_drive_motor ( &stepper25, 1600, STEPPER25_SPEED_MEDIUM );
Delay_ms ( 1000 );
log_printf ( &logger, " Step mode: 1/8\r\n" );
log_printf ( &logger, " Direction: CCW\r\n" );
log_printf ( &logger, " Steps: 1600\r\n" );
log_printf ( &logger, " Speed: Fast\r\n\n" );
stepper25_set_direction ( &stepper25, STEPPER25_DIR_CCW );
stepper25_set_step_mode ( &stepper25, STEPPER25_STEP_MODE_1_OVER_8 );
stepper25_drive_motor ( &stepper25, 1600, STEPPER25_SPEED_FAST );
Delay_ms ( 1000 );
log_printf ( &logger, " Step mode: 1/4\r\n" );
log_printf ( &logger, " Direction: CW\r\n" );
log_printf ( &logger, " Steps: 400\r\n" );
log_printf ( &logger, " Speed: Slow\r\n\n" );
stepper25_set_direction ( &stepper25, STEPPER25_DIR_CW );
stepper25_set_step_mode ( &stepper25, STEPPER25_STEP_MODE_QUARTER );
stepper25_drive_motor ( &stepper25, 400, STEPPER25_SPEED_SLOW );
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
额外支持
资源
类别:步进电机