基于STM32实现TMC5160步进电机简单转动

TMC5160三种模式

TMC5160有三种模式
模式一:SD_MODE=0,SPI_MODE=1。在该模式下,用户通过SPI接口来设置TMC5160的寄存器配置参数。再设置工作模式:速度模式和位置模式
模式二:SD_MODE=1,SPI_MODE=1。在该模式下,用户通过SPI接口来设TMC5160的寄存器。TMC5160的功能和DRV8825类似,外界通过脉冲和方向引脚来控制步进电机运动
模式三:SD_MODE=1,SPI_MODE=0。在该模式下,SPI接口失能,TMC5160的工作状态由CFG引脚配置。TMC5160可以完全独立工作,不需要接CPU。
为实现电机的简单转动,下面将一下如何实现模式三

程序设计

该模式下不需要通过SPI通讯,配置相关GPIO引脚和发送频率一定的正弦波即可。TMC5160的GPIO和STM32的引脚对应如下表:
在这里插入图片描述
①最重要的一点是一定要将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°,200个脉冲一圈,采用16细分,那么一圈就需要3200个脉冲。
注意:脉冲值可以自己设定,1KHZ只是个举例,但是也不要过大或者过小。

程序下载:添加链接描述

TMC5160中文数据手册https://download.csdn.net/download/u011895157/14141761

基于SPI通信:https://blog.csdn.net/u011895157/article/details/112911769

TMC5160集成步进驱动控制于一体静音驱控芯片外置功率管带有编码器反馈 SPI和Step/Dir接口 单一轴步进电机控制IC集成了MOSFET电机驱动,可提供最高的电压和电流规格在公司的集成步进控制和驱动器产品线。新TMC5160功率管外扩最大驱动电流可达20A,新器件还实现了的最新专利技术Stealchchop静音专利,Spreadcycle无振动运转。 “该TMC5160成功地结合了几个技术创新到一个单一的设备也实现了新的最大的电机电压和支持外部功率管,驱动功率更大 该TMC5160非常适合于实验室,办公室自动化和其它应用中的机械工程接近人类操作。这些环境通常需要严格的噪音限制,因此新的设备是第一个把的专利stealthChop技术,从而降低了噪音和振动,在高扭矩和低速。因此,新TMC5130有一个测得的噪声电平用stealthChop以下时,传统的步进电机驱动IC10分贝。 通过业界标准的SPI或步进/方向接口连接到主机微控制器,该TMC5130执行所有实时位置和速度步进运动的计算,同时其集成的低功耗MOSFET直接驱动步进电机线圈的电流。 该TMC5160实现的专利sixPoint加减速波形,尽量减少斜坡生成配置文件。此配置文件中既加速段和减速段,其最小化运动'加加',并提供更平滑的电动机操作使用两个不同的设置。该sixPoint斜坡曲线还使得电动机转矩更紧密匹配的应用程序的要求,生产速度优化的最大加速度倍。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木白CPP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值