1. 特性
在不超载的情况下电机的转速和停止位置只取决于脉冲信号的频率和数量;并且步进电机的脉冲与步进旋转的角度成正比,脉冲的频率与步进的转速成正比。
2. 细分的原理
通过改变定子的电流比例,改变转子在一个整步中的不同位置,可以将一个整步分成多个小步来运行。在上图中就是一个整步分成了 4 步来跑,从(a)~(d)是 A 相的电流逐渐减小,B 相电流逐渐增大的过程,如果驱动器的细分能力很强,可以将其分成 32 细分、64 细分等;这不仅提高了步进电机旋转的顺畅度而且提高了每步的精度。
3.控制电机方式
分别为:使用 GPIO 延时模拟脉冲控制、使用 GPIO 中断模拟脉冲控制、使用 PWM 输出比较和使用 PWM 控制匀速旋转。
3.1定时器输出比较
翻转模式
当定时器的比较数值达到后,就会产生中断,进入到这个定时器比较中断,中断中主要用于获取当前的计数值与设定下一次进入中断的时间。
/**
* @brief 定时器比较中断 翻转模式
* 输出占空比为50%的PWM
*/
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
{
__IO uint16_t count;
/* 获取当前计数 */
count=__HAL_TIM_GET_COUNTER(htim); /* 设置比较数值 */
__HAL_TIM_SET_COMPARE(htim, MOTOR_PUL_CHANNEL_x, count + OC_Pulse_num);
}
附录1
连续按下按键,改变方向
/**
* @brief 连续按下按键,改变方向
*/
int i = 0; `
if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON ) `
{ /* 改变方向 */ `
dir_val=(++i % 2) ? CW : CCW;
MOTOR_DIR(dir_val);
}