步进电机按步驱动

步进电机按步驱动(pwm)

步进电机按步驱动(pwm)基础知识准备材料实操接线1.当步进电机的接线标签缺失时如何分辨AB相2.主板与驱动器连接3.代码部分重点!后记

基础知识

1.步进电机的基本知识

[CSDN]< 一文搞懂步进电机特性、原理及驱动器设计_不脱发的程序猿-CSDN博客>

2.PWM基础知识

[CSDN]< PWM原理 PWM频率与占空比详解Z小旋-CSDN博客pwm>

准备材料

1.两项步进电机

2.步进电机驱动器(pwm)ZD-M57P

3.主控板(stm32407)

实操

接线

1.当步进电机的接线标签缺失时如何分辨AB相

方法一:

当你拥有电表时:将电表掰到声响档。选取一根接到电笔一端,再用另一电笔依次连接剩余三条线,直到有声响发出。则这两条为一相,另两条为另一相。

方法二:

无电表时,选一条线。将剩余三条线依次和第一条线连接,掰电机轴。若可以掰动,则不是同一相;若需要很大力气掰动,则为同一相。

[bilibili][两相步进电机AB两相如何判断呢?教你两招,没有万用表也可以判断_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1D7411572A?from=search&seid=9760569830225109946&spm_id_from=333.337.0.0)

注意,只要分辨好相位就可以驱动电机,无需分辨AB,+-相

2.主板与驱动器连接

这里我选用的是时代超群的驱动器ZD-M57P

这里稍微介绍一下接线

  • V+:给驱动器供电,根据不同驱动器选不同电压

  • GND:接地

  • COM:参考电压,这里可以看驱动器说明书选择共阴或共阳

  • DIR:直连IO口,将GPIO输出拉高拉低便可以决定电机的转动方向

  • STP:接PWM输出口

  • EN:看电机和说明书选择接线与否,我这里不接

3.代码部分

重点!

假设你已能供用pwm驱动电机了,实际上这里只需要知道一个函数

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim){
        if(htim == &htim3)
    {
     }
}

pwm中断回调函数:官方是这么解释的

/**
  * @brief  PWM Pulse finished callback in non-blocking mode
  * @param  htim TIM handle
  * @retval None
  */
__weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(htim);

  /* NOTE : This function should not be modified, when the callback is needed,
            the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file
   */
}
 

其实就是每输出一个脉冲就会到这执行一下。

当然要调用这个函数之前还得将pwm中断打开

HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_4); 

相信很多人已经知道接下来要怎么操作了,我将我拙劣的代码展示,作为参考

int angle_pitch = 0;
int dir_pitch = 1;

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim3)
	{
		if(angle_pitch <10000)
		{
				angle_pitch++;
		}
	 	 else
	  	{					
				dir_pitch = -dir_pitch;
				angle_pitch = 0;
			}
			
	}
}

如果是还不知道如何驱动电机的小伙伴,建议可以先参考别的博客。

如果有必要的话后续会更新。

后记

  • 其实关键的部分就是那个pwm中断回调函数,在stm32hal库中有提供

  • 如果是标准库,也可以用中断回调函数模拟pwm,并进行计数。有需要后续再更新

  • 其实,这种计步方法还是伪计步,存在丢步的风险,但是一般来说,环境稳定情况下,还是很准的。如果有需要,可以上编码器。

P.S:最后的最后:这是本人第一次写博客,有问题请包含并指出。希望能帮助大家。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值