0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用STM32简单控制TMC5160驱动步进电机

尘埃等闲 来源:尘埃等闲 作者:尘埃等闲 2022-09-03 18:54 次阅读
poYBAGMTMm6AcdwyAAfxKLwYj9U002.png

首先先来了解一下TMC5160的3种工作模式

TMC5160通过两个引脚来控制它的工作模式:SD_MODE和SPI_MODE。

1、当SD_MODE接地,SPI_MODE拉高,TMC5160即工作在模式1(SPI控制模式)。在该模式下,用户通过SPI接口来设置TMC5160的寄存器

TMC5160使用自己的梯形曲线发生器来控制步进电机转动,用户需要设置:开始运动速度VSTART、第一段折线末速度V1、最大速度VMAX、停止速度VSTOP、第一段折线的加速度A1、第二段折线加速度AMAX、第四段折线的减速度DMAX、第五段折线的减速度D1。把上面的参数设置好,再设置工作模式:速度模式和位置模式。最后再设置目标位置。

如果是速度模式运行,不需要设置目标位置,电机就会开始转动。如果是位置模式,则需要设置目标位置,且目标位置与电机当前位置值不同电机才会转动。下图中的红线是电机的实际速度,不管是速度模式还是位置模式,电机的运行过程会按照下图来进行。

pYYBAGMTMm6AOtS5AAH1UnCuk3c803.png

2、当SD_MODE接高电平,SPI_MODE拉高,TMC5160工作在模式2(SPI+S/D)。在该模式下,用户通过SPI接口来设置TMC5160的寄存器。TMC5160的功能和DRV8825类似,外界通过脉冲和方向引脚来控制步进电机运动。

3、当SD_MODE接高电平,SPI_MODE接地,TMC5160工作在模式3(S/D独立模式)。在该模式下,SPI接口失能,TMC5160的工作状态由CFG引脚配置,外界通过脉冲和方向引脚来控制步进电机运动。TMC5160可以完全独立工作,不需要接CPU

目前是实现电机的简单转动,下面将用模式三来控制电机。

该模式下不需要通过SPI通讯,配置相关GPIO引脚和发送频率一定的正弦波即可。TMC5160的GPIO和STM32的引脚对应如下表:

poYBAGMTMm-AUOxAAABMFdpW2XY717.png

先将SD_MODE接地,SPI_MODE拉高(PB1=1,PB=0),进入独立模式。

其它引脚的参数可以参考TMC5160数据手册根据自己的需求进行设置。初始化程序如下:

void TMC5160_Init3(void)                 //模式三独立模式
{
    GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_GPIOB_CLK_ENABLE();                   //开启GPIOB时钟
    __HAL_RCC_GPIOA_CLK_ENABLE();                   //开启GPIOA时钟
      
    GPIO_Initure.Pin=GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8;                                
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;    //高速
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);

    GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;                       
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;    //高速
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
      
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6|GPIO_PIN_5,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);      
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14|GPIO_PIN_13|GPIO_PIN_12|GPIO_PIN_1,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_15|GPIO_PIN_2|GPIO_PIN_0,GPIO_PIN_RESET);      
}

然后PA8需要输出PWM方波,方波的频率决定电机转动速度,可以用PWM通道的方式搞定,也可以用定时器中断来做,这边采用定时器中断的方法,

例如,STM32F103的时钟频率为72M,分频设为72,装载值设为500,每0.5ms中断一次,PA8电平取反,1KHZ的方波就完成了。频率可以改变。程序如下:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim==(&TIM3_Handler))
    {
        COUNT++;
        A8=~A8;

        if(COUNT>=6400)
        {
            //HAL_NVIC_DisableIRQ(TIM3_IRQn);
            LED=1;                  //转一圈,停2s后继续
            delay_ms(2000);
            LED=0;
            COUNT=0;
        }
    }
}

实现的功能是让电机转1圈后停2s后继续。

采用四相电机,脉冲数控制电机转多少,电机步距角位1.8°,一个脉冲转1.8°,200个脉冲一圈,采用16细分,那么一圈就需要3200个脉冲。

电机转动的速度就由脉冲频率决定,可以根据细分及脉冲频率来换算电机实际转速。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机控制
    +关注

    关注

    3462

    文章

    1693

    浏览量

    264210
  • STM32
    +关注

    关注

    2238

    文章

    10662

    浏览量

    348402
  • 步进电机
    +关注

    关注

    149

    文章

    2920

    浏览量

    145984
收藏 人收藏

    评论

    相关推荐

    TMC5160 步进电机驱动控制芯片trinamic

    亮点与特色:驱控一体(集成了控制器、预驱动器),外扩功率管;超静音、防抖动、不丢步、防过冲;力矩随速度动态调整;电流随负载控制(节能75%)概况与特性:TMC5160将强大的
    发表于 03-28 10:56

    关于TMC5160步进电机驱动芯片的知识点,不看肯定后悔

    关于TMC5160步进电机驱动芯片的知识点,不看肯定后悔
    发表于 11-02 06:59

    如何去实现TMC5160步进电机简单转动呢

    TMC5160步进电机有哪几种模式呢?如何去实现TMC5160步进电机
    发表于 12-20 07:48

    如何利用STM32实现TMC5160步进电机简单转动?

    TMC5160具有哪几种工作模式?如何利用STM32实现TMC5160步进电机简单转动?
    发表于 02-28 09:07

    电机驱控芯片:TMC5160介绍与使用

    *附件:STM32+TMC5160.rar介绍TMC5160 是带串行通信接口的高功率步进 电机控制驱动
    发表于 09-02 10:52

    使用STM32简单控制TMC5160驱动步进电机

    ,SPI接口失能,TMC5160的工作状态由CFG引脚配置,外界通过脉冲和方向引脚来控制步进电机运动。TMC5160可以完全独立工作,不需要
    发表于 09-03 19:02

    在RT-Thread系统中使用TMC5160步进电机驱动

    我参加了ART-Pi扩展板设计的活动,做了一个TMC5160步进电机驱动的扩展板,并PR了一个TMC5160
    发表于 10-24 16:34

    如何使用TMC5160步进电机驱动芯片开发笔记-1

    部件(如电机)同步的脉冲和方向信号。TMC5160 控制电流和运动模式,并反馈电机状态。microPlyer 自动平滑运动。SD _ MODE 接高电平使能此模式。模式3 :
    发表于 02-04 17:59

    STM32控制TMC5160步进电机控制驱动芯片代码

    STM32控制TMC5160步进电机控制驱动芯片的代
    发表于 09-22 07:31

    静音步进电机驱动控制芯片TMC5160资料

    本文档内容介绍了基于静音步进电机驱动控制芯片TMC5160资料,供参考
    发表于 02-27 10:35 117次下载

    使用STM32控制TMC5160步进电机控制驱动芯片的代码和电路图及工程文件

    本文档的主要内容详细介绍的是使用STM32控制TMC5160步进电机控制
    发表于 10-08 08:00 591次下载
    使用<b class='flag-5'>STM32</b><b class='flag-5'>控制</b><b class='flag-5'>TMC5160</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b><b class='flag-5'>驱动</b>芯片的代码和电路图及工程文件

    电机驱动TMC5160详解

    TMC5160 是带步进/方向接口和串行通信接口(SPI) 的高功率步进电机控制驱动芯片,将实现
    发表于 03-16 14:07 11次下载
    <b class='flag-5'>电机</b><b class='flag-5'>驱动</b><b class='flag-5'>TMC5160</b>详解

    TMC5160步进电机驱动芯片简析

    去分析 ,不涉及过多电子方面;5.按照章节,挑选重点,做个笔记; 0.目录 TMC5160 是…的 步进电机控制驱动芯片 ,将实现自动目标定
    发表于 03-16 10:40 2次下载
    <b class='flag-5'>TMC5160</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>芯片简析

    步进驱动方案-TMC5160TMC2160的使用 

    来设置TMC5160的寄存器。TMC5160使用自己的梯形曲线发生器来控制步进电机转动,用户需要设置:开始运动速度VSTART、第一段折线末
    的头像 发表于 06-07 17:29 1572次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>驱动</b>方案-<b class='flag-5'>TMC5160</b>和<b class='flag-5'>TMC</b>2160的使用 

    TMC5160步进电机驱动控制芯片工作原则

    整定之后,可以接近伺服的效果。TMC5160运动控制驱动芯片是CPU和大功率步进电机之间的智能功率接口器件。所有
    的头像 发表于 10-27 16:19 876次阅读
    <b class='flag-5'>TMC5160</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b><b class='flag-5'>控制</b>芯片工作原则