Funpack4-3 - 使用TMC4361A和TMC2160进行步进电机控制
该项目使用了TMC2160和TMC4361,实现了一个步进电机驱动的设计,它的主要功能为:实现步进电机定速旋转、指定角度旋转、指定圈数旋转、正反转切换的功能。
标签
Funpack活动
步进电机
TMC4361
TMC2160
qqlovolpp
更新2026-02-10
35

一、项目描述

本项目完成了任务一的要求,基于 TMC4361A-BOB 与 TMC2160-BOB 两款评估板卡搭建步进电机控制系统。其中,TMC4361A 作为运动控制芯片,负责生成高精度的位置、速度和加减速指令;TMC2160 作为驱动芯片,接收来自 TMC4361A 的 STEP/DIR 信号,并驱动步进电机运行。通过两者的协同工作,系统实现了多种基本运动控制功能,包括:电机定速连续旋转、按指定角度精确转动、设定圈的自动运行,以及通过软件指令灵活切换正转与反转方向。所有功能均通过主控 MCU 发送指令触发,并在实际测试中验证了动作的准确性和响应的可靠性。

二、硬件介绍

1、步进电机运动控制器:TMC4361A

TMC4361A 是一款适用于实验室自动化、3D打印、扫描仪及其他自动化设备应用的步进电机运动控制器,支持S形斜坡(S-shaped ramps)。该器件可作为梯形(trapezoidal)和高级六点斜坡(SixPoint™ ramp)发生器使用。此外,TMC4361A 采用 ADI Trinamic 的 DcStep™、闭环控制(closed loop control)和 ChopSync™ 技术驱动。该器件的设计工作电压为 3.3V。TMC4361A 提供 SPI 控制器和 SPI、S/D 驱动程序接口,同时支持A/B/N增量式、SPI及SSI编码器接口。


TMC4361A 板卡图.png

2、高功率步进电机栅极驱动器:TMC2160

TMC2160 是一款具有 SPI 接口的高功率步进电机栅极驱动器 IC。它采用业界最先进的步进电机驱动技术,并支持简易的步进/方向(Step/Dir)接口。通过外部晶体管,可实现高动态、高扭矩驱动。基于 ADI Trinamic 精密的 SpreadCycle™ 和 StealthChop™ 斩波器技术,该驱动器可确保绝对无噪音的运行,同时兼备最高效率和最佳电机扭矩。其高集成度、高能效及小尺寸,使小型化和可扩展的系统成为可能,从而提供具有成本效益的解决方案。

3、同时使用了一个42步进电机和N32L406作为主控MCU,通过SPI与TMC4361A进行通信。

image.png

三、硬件连接

TMC4361的接口特性如图

image.png

本项目中,使用如下的连接方式进行驱动。MCU 通过 SPI 接口分别与 TMC4361A 建立通信连接。系统上电后,MCU 首先完成对 TMC4361A 运动控制器和 TMC2160 驱动芯片的初始化配置,包括设置运行模式、电流参数、微步分辨率以及接口时序等关键寄存器。初始化完成后,MCU 将目标控制参数写入 TMC4361A 的对应寄存器。随后,TMC4361A 自主生成所需的 STEP 和 DIR 信号,并直接控制 TMC2160 驱动步进电机运动,无需 MCU 持续干预。这种架构充分发挥了 TMC4361A 的独立运动规划能力,减轻了主控负担,同时提升了运动控制的实时性与精度。

image.png

对于TMC2106-BOB具体连接实物图如下,其中VS用于电机电源和内部逻辑供电,A1,A2,B1,B2用于连接步进电机,VCC_IO连接到用于所有数字引脚的 3.3V 至 5V IO 供电电压,并指定使用spi模式。CSN,SCK,SDI,SDO这些SPI接口连接TMC4361。STEP,和DIR步进和方向引脚同样连接到TMC4361.

对于TMC4361A-BOB,其中VCC用于供电,CLK连接MCU引脚用于给TMC4361提供时钟信号,CSN,SCK,SDI,SDO这些SPI接口用于与MCU通信,CSN_DRV,SCK_DRV,SDI_DRV,SDO_DRV这些SPI接口用于与TMC2160通信,STPOUT,DIROUT用于输出步进和方向信号给TMC2160。

三、软件介绍

由上一节中的图可知,MCU通过SPI接口对TMC4361和TMC2160进行初始化和控制,程序运行流程如下图

image.png

1、初始化SPI和时钟输出

根据不同的MCU有自己的实现方法。

    tmc_clk_gen();
    user_h_spi_init();

2,、初始化TMC4361和TMC2160

TMC4361和TMC2160有相同的数据报结构,如下图

image.png

  • 配置TMC4361的0x04寄存器,设置SPI输出模式
  • 通过写TMC4361的0x6d和0x6c寄存器,配置TMC2160
  • 对于TMC2160需配置运行电流和保持电流,斩波模式等
  • 配置TMC4361运行模式和最大速度等

具体初始化代码如下

void tmc_commto4361(void)
{
//4361​
    tmc_spi_write(0x04,0x4440128D); //SPI模式
    //2160
    tmc_spi_write(0x6d,0xec );
    tmc_spi_write(0x6c,0x004140C5 );
    delay_us(5);
    tmc_spi_write(0x6d,0x90 );
    tmc_spi_write(0x6c,0x00070803 );
    delay_us(5);
    tmc_spi_write(0x6d,0x91 );
    tmc_spi_write(0x6c,0x0000000A );
    delay_us(5);
    tmc_spi_write(0x6d,0x80 );
    tmc_spi_write(0x6c,0x00000004 );
    delay_us(5);
    tmc_spi_write(0x6d,0x93 );
    tmc_spi_write(0x6c,0x00000000 );
    delay_us(5);
    //4361
    tmc_spi_write(0x20,0x00000000); //模式
    tmc_spi_write(0x24,0x00000000); //VMAX,24+8​
}

3.发送控制指令

配置斜坡生成器寄存器0x20,0x24,目标寄存器和比较寄存器0x37等完成运动控制

代码如下

        case 1:     //定速正转
            tmc_spi_write(0x20,0x00000000); //模式
            tmc_spi_write(0x24,0x02000000); //VMAX,24+8
            break;
        case 2:     //定速正转
            tmc_spi_write(0x20,0x00000000); //模式
            tmc_spi_write(0x24,0x01000000); //VMAX,24+8
            break;
        case 3:     //定速反转
            tmc_spi_write(0x24,0xfe000000); //VMAX,24+8
            break;
        case 4:     //定位模式
            tmc_spi_write(0x24,0x00000000); //VMAX,24+8
            tmc_spi_write(0x20,0x00000004); //模式
            tmc_spi_write(0x21,0x00000000); //当前位置
            tmc_spi_write(0x37,0x00000000); //目标位置
            tmc_spi_write(0x24,0x02000000); //VMAX,24+8
            break;
        case 5:
            tmc_spi_write(0x37,51200); //转一圈
            break;
        case 6:
            tmc_spi_write(0x37,25600); //转半圈
            break;
        case 7:
            tmc_spi_write(0x37,12800); //90°
            break;
        case 8:
            tmc_spi_write(0x24,0x02500000); //VMAX,24+8
            tmc_spi_write(0x37,12800+51200*3); //转3圈
            break;
        case 9:
            tmc_spi_write(0x37,12800+51200); //反转2圈
            break;

四、功能展示

通过TMC4361步进电机运动控制器和TMC步进电机栅极驱动器实现了步进电机的定速连续旋转、按指定角度精确转动、设定圈的自动运行,以及通过软件指令灵活切换正转与反转方向。

展示内容见上方视频。

五、心得体会

通过参与这个基于 TMC4361A-BOB 与 TMC2160-BOB 搭建步进电机控制系统的项目,我收获颇丰。在硬件搭建方面,深入了解了 TMC4361A 运动控制芯片和 TMC2160 驱动芯片的特性与协同工作方式,学习了步进电机控制的原理。软件编程过程中,对 SPI 通信协议有了更深入的理解,学会了如何通过代码精确配置芯片寄存器,完成各种运动控制指令的发送。从最初对芯片功能的模糊认知,到最终成功实现电机的定速旋转、精确角度转动等功能,这个过程不仅提升了我的动手实践能力和问题解决能力。感谢硬禾和得捷此次的活动。
















附件下载
tmc_motor.zip
项目代码
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号