STM32/GD32驱动步进电机芯片TM2160

07-06 1185阅读

文章目录

  • 官方概要
  • 简单介绍
    • 整体架构流程

      官方概要

      TMC2160是一款带SPI接口的大功率步进电机驱动IC。它具有业界最先进的步进电机驱动器,具有简单的步进/方向接口。采用外部晶体管,可实现高动态、高转矩驱动。基于TRINAMICs先进的spreadCycle和stealthChop切割机,驱动器确保绝对无噪音运行,并结合最高效率和最佳电机扭矩。高集成度,高能效和小尺寸使小型化和可扩展系统具有成本效益的解决方案。完全兼容的TMC5160提供了一个额外的运动控制器,使步进电机控制更加容易。

      STM32/GD32驱动步进电机芯片TM2160

      简单介绍

      两种模式,简单步进和步进模式

      与TM5160类似,5160有中文手册,可参考,

      TMC2160相比于TM5160

      模式只有两种

      模式 1:脉冲和方向驱动器

      像 TMC4361 这样的外部高性能 S-ramp 运动控制器或 CPU 产生与系统内其他部件(如电机) 同步的脉冲和方向信号。TMC5160 控制电流和运动模式,并反馈电机状态。 microPlyer 自动平滑运动。SD_MODE 接高电平使能此模式(SD_MODE=1,SPI_MODE=1)。在该模式下,用户通过 SPI 接口来配置 TMC5160 的寄存器。TMC5160 的功能和 DRV8825 类似,外界通过脉冲和方向引脚来控制步进电机运动。

      模式 2:简单的步进和方向驱动器

      TMC5160 根据步进和方向信号控制电机。microPlyer自动平滑运动,配置由硬件引脚完成。 静止保持电流控制由TMC 5160完成。可选的反馈信号作为错误检测和同步标志的输出。 SPI_MODE 接地,SD_MODE 接高电平使能此模式(SD_MODE=1,SPI_MODE=0)。在该模式下,SPI 接口失能,TMC5160 的工作状态由 CFG 引脚配置。TMC5160 可以完全独立工作,不需要接 CPU。

      大体概括,一个是脉冲控制,配置由主控SPI配置,另一个就是指通过脉冲和方向引脚发PWM波控制。

      STM32/GD32驱动步进电机芯片TM2160

      本文 STM32或者GD32配置使用第二种。

      整体架构流程

      实际上程序十分简单,只需要配置一个方向信号和PWM脉冲即可

      思路十分简单,可以不参考代码自己配置

      1首先配置选择TM2150模式,配置控制芯片的IO口

      2配置PWM输出,定时器中断模式或者只是PWM输出都可以

      3使能,控制电机旋转

      void TMC2160_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);      
      } 
      

      PWM输出配置TMC2160

      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;
              }
          }
      } 
      
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]