本次驱动较常见的42步进电机,就是比较标准的那种电机,应该是有一定代表性的,基本可以应付一些大学生比赛什么的了
这里用的两个电机如下所示
1、驱动器介绍
本次实验我用的如下,驱动模块是DRV8825,和淘宝上比较多见的A4988基本差不多,接口上基本可以混用的。
这里店家其实只是做了一个转接板,转接板借口描述如下所示
DRV8825模块的接口描述我也提供下,如下所示
步进电机接口处我已经用红线圈出来了,因此根据步进电机的特性(上一篇文章已经讲过)
- 找到短路的两个接口
- 把短路的接口分别接到1A,2A,1B,2B接口上,注意是对应的接上
关于控制引脚的说明:
引脚 | 功能 |
---|---|
EN | 使能,低电平有效 |
DIR | 转动方向控制 |
STEP | 控制脉冲方向 |
2、PWM方波直接驱动
从上面我们就可以知道,控制电机其实就是控制这个脉冲,因此我们配置占空比为50%的脉冲就行了,首先配置PWM输出
下面配置另外两个引脚
编写驱动函数
之后将程序下载到开发板就可以看到数据了
我们可以用逻辑分析仪来捕获下脉冲信号
3、PWM+DMA精准控制
上面我们已经看到了,直接使用PWM输出方波的方式是可以控制步进电机运转的,但也仅仅是运转而已,目前面临的问题就在于:
- 运转次数不定
- 无法准确运行
因此我们就可以用PMW_DMA的方式,来精准控制我们输出的PWM方波的数量
使能DMA
开始DMA输出PWM
但是这里有个问题,就是它没有开循环模式的话,也会一直循环发送,所以我们要手动终止
下载到开发板之前我们先用逻辑分析仪来测试下,因为我们准备了500了,比较多,这里就不统计数量了
将程序下载到开发板
4、补充说明
- 驱动器上有个电流调节旋钮,有时候出了问题这是一个排查的方向
- 这里步进电机不转的时候一定要关掉EN,就是把EN拉高,不然电机和驱动都会很烫甚至烧掉