一、STM32+TB5128FTG(cubemx配置)驱动步进电机
`cubemx配置+给定参数配置
TB5128是一种采用PWM斩波的两相双极性步进电机驱动器。内置时钟解码器
二、基础配置
1.IF使能功能
低电平CLK模式 高电平串行模式
配置为低电平
2.ENABLE使能功能
低电平CLK模式 高电平串行模式
初始配置为低电平,工作情况下再配置为高电平
3.CW/CCW功能
低电平高电平代表电机方向,如果电机控制方向和你配置的不一致,那么改变高低电平。
4.分辨率配置
MODE0 MODE1 MODE2配置步进电机步长分辨率,详细见表,我配成的是1/64步长
MODE0=0 MODE1=1 MODE2=1
5.扭矩设置
低电平扭矩100% 高电平扭矩50%
,配置为50%
6.CLK沿功能
低电平单沿,高电平双研,配置为高电平
7.STANDBY功能
低电平待机,高电平正常,配置为高电平
基础配置就这些,然后就直接对clk管脚发pwm波,电机就可以旋转,那么接下来就是在cubemx中配置GPIO+PWM输出
三、cubemx配置GPIO和PWM输出
1.时钟树配置
2.PWM输出
3.GPIO配置
四、使能代码
1.基础配置
void tb5128_Init()
{
//enable motor dir
HAL_GPIO_WritePin(Motor_DIR_GPIO_Port,Motor_DIR_Pin,GPIO_PIN_SET);//CCW1 1瞬时针0逆时针 //方向
HAL_GPIO_WritePin(MODE0_GPIO_Port,MODE0_Pin,GPIO_PIN_RESET);//MODE0
HAL_GPIO_WritePin(MODE1_GPIO_Port,MODE1_Pin,GPIO_PIN_SET);//MODE1 1瞬时针0逆时针
HAL_GPIO_WritePin(MODE2_GPIO_Port,MODE2_Pin,GPIO_PIN_SET);//MODE2 1瞬时针0逆时针
1/64MODE0=0 MODE1=1 MODE2=1
HAL_GPIO_WritePin(Motor_ST_GPIO_Port,Motor_ST_Pin,GPIO_PIN_SET);//0待机 1正常运行
Drive_States1= HAL_GPIO_ReadPin(LO0_GPIO_Port,LO0_Pin);//0待机 1正常运行
Drive_States2= HAL_GPIO_ReadPin(LO1_GPIO_Port,LO1_Pin);//0待机 1正常运行
/*
LD0 高 LD1 高 正常
LD0 高 LD1 低 负载开路
LD0 低 LD1 高 过电流
LD0 低 LD1 低 热关断
*/
HAL_GPIO_WritePin(TORQE_GPIO_Port,TORQE_Pin,GPIO_PIN_RESET);//0扭矩100% 1扭矩50%
HAL_GPIO_WritePin(TORQE_GPIO_Port,TORQE_Pin,GPIO_PIN_RESET);//0扭矩100% 1扭矩50%
HAL_GPIO_WritePin(TORQE_GPIO_Port,TORQE_Pin,GPIO_PIN_RESET);//0扭矩100% 1扭矩50%
/*
GAIN_SEL=L,放大5倍;GEDG_SEL=L,单边沿触发;
IF_SEL=L,CLK模式;_IRS_SEL设定采样模式:
RS_SEL=H,外部电阻采样。RS_SEL=L,ACDS模式采样。;
GAIN_SEL=H,放大10倍EDG_SEL=H,双边沿触发;
IF_SEL=H,串行模式
*/
}
2.使能和pwm输出
tb5128_Init();
HAL_GPIO_WritePin(Motor_EN_GPIO_Port,Motor_EN_Pin,GPIO_PIN_SET)//1正常0高阻
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); //����Ϊ1khz PWM ����Ӧ���Ƕ���