玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介绍X-CTR100控制器控制步进电机,实现步进电机精确转速控制。
原理
如上图所示,步进电机系统一般包括控制器、驱动器和步进电机三部分。
步进电机
步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(或步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时也可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达调速的目的。因此在需要准确定位或调速控制时均可考虑使用步进电机。
步进电机根据尺寸进行分类,常用小型步进电机有42、57型号。
本文使用42型四线步进电机接口及参数
本文选用电机参数
步进电机种类、参数众多,详细说明请查阅本文参考资料文件夹内容。
驱动器
上图为常用步进电机驱动器,其中DRV8825和A4988为小型步进电机驱动器,驱动电流较小,常用于打印机、3D打印机、雕刻机等设备,支持的3d打印机有Prusa Mendel,ultimaker,printbot,makerbot等
TB6600为大功率驱动器,驱动电流更大,常用于大型设备。
驱动器虽然外形参数各异,驱动方法类似,一般包括EN(使能)、DIR(方向)、PLUS(脉冲)三个控制角。
本文以DRV8825为例进行说明。A4988与DRV8825引脚兼容,性能稍弱,详见下表。
参考:https://reprap.org/wiki/A4988_vs_DRV8825_Chinese_Stepper_Driver_Boards
DRV8825 是德州仪器 (TI) 为打印机、 扫描仪和其他自动化设备设计的集成电机驱动芯片。 它集成了 2 个 H 桥电路, 以及片上 1/32 微步进分度器, 可以驱动一个双极型电机,或两个直流有刷电机。 输入电压范围 8.2~45V, 可以提供 1.75A 的有效电流, 并可承受 2.5A的峰值电流(在 24 V、 25° C 的应用环境下 )。低至 0.2Ω 的导通电阻, 保证了芯片良好的热特性。 另外, 还集成了快速响应的短路、 过热、欠压及交叉传导保护功能电路, 能够检测故障状况, 并迅速切断 H 桥, 从而为电机和驱动芯片提供保护
DRV8825相对4988 特点优势:
1、最大电流2.5A。
2、最高支持32细分。
3、4层PCB板,散热性能更好。
4、芯片内阻更小,发热更低,散热性更好。
DRV8825特点:
1、适合驱动8.2V~45V 2.5A以下的步进电机;
2、只有简单的步进和方向控制接口;
3、六个不同的步进模式:全、半、1/4、1/8、1/16、1/32;
4、可调电位器可以调节最大电流输出,从而获得更高的步进率;
5、自动电流衰减模式检测/选择;
6、过热关闭电路、欠压锁定、交叉电流保护;
7、接地短路保护和加载短路保护
DRV8825模块原理图:
DRV8825接线示意图
细分设置
电流调节
Rs电阻值市面上一般是0.1 欧(R100),对应的是驱动模块上面S1 S2电阻。这里是0.1欧姆(标号R100=0.1欧)。
但市面DRV8825驱动模块这个Vref出厂基本都是调到1.6V这样算下来,电流I=3.2。这也是很多人用DRV8825驱动模块发烫,电机发烫原因,这样很容易损坏电机和驱动模块。
所以拿到手第一时间把这个Vref参考电压调小到0.5V左右再根据电机参数微调。
Vref电压:电位器金属旋钮到GND的电压。可以通过调节电位器改变。
常见问题
1)DRV8825驱动板可以驱动57电机吗?
4988可以驱动的电机跟尺寸关系不大,主要与工作电流有关,理论上电流小于2A的步进电机都是可以驱动的,不论是42还是57电机。
2)可以驱动多大的电流?
如果DRV8825芯片上没有加散热片,电流最好在1.5以下。如果加散热片,电流可以达到2.5A。
3)步进电机的连接方式是什么?
正如DRV8825板子背面所标识的,连接方式是依次连接步进电机的1B-1A-2A-2B,或者反向为2B-2A-1A-1B,或者1A-1B-2B-2A,其它的方式一次类推。如果你的电机线是标准的红蓝绿黑的颜色,可以按照颜色连接为:红-蓝-绿-黑,或相反:黑-绿-蓝-红。
4)接上电机后,电机不能正常运行,在左右抖动,是什么原因?
电机出现抖动一般有两个原因,一是缺相:可能是DRV8825板子没有焊接好或因为外力导致DRV8825的输出端某一相断开,造成电机缺相从而抖动。也有可能是步进电机接线只用一相没有连接好;而是两相接错:如果步进电机没有按照正确的顺序进行连接,电机也会出现抖动的情况,请按照问题3进行正确的连接
5)电机丢步如何解决?
相电流的大小跟步进电机的扭力有直接关系,如果感觉你的步进电机扭力不足、丢步,可以加大4988板子的电流配置。驱动板是通过一个小的电位器来实现对输出电流的配置的。可以通过用万用表测量电位器中间管脚的电位。电位和电流的关系满足下面的公式:Vref = I_TripMax= Vref/(5*Rs)(模块的Rs电阻为R100).也就是如果你想配置电机工作电流为1A,则电位应该配置在0.5V
6)DRV8825可以驱动两相六线或两相无线的电机吗?
可以,两相连线按照问题3连接,将中间抽头悬空即可。
7)电机停止转动时会有滋滋的电流声。
首先说明的是这是正常现象。步进电机的特点是走特定的角度而不是一直转,所以步进电机都有一个参数,步距角。如果通过细分,可以最小走步距角/细分数的角度,比如步距角为1.8度的步进电机,采用16细分,最小可以走的角度是1.8/16=0.1125度。但由于这个角度非常小,并且不一定在电机物理所在的位置(1.8度为一个物理位置),所以步进电机停止时也需要通电,从而保证电机不会自动跳到物理步距角上。因为这个特性使得步进电机在静止时会有电流声,这属于正常现象,不用担心。
X-SOFT软件生态,X-API文件如下。
参考自【开源&分享】蒙尘子 http://www.3dprinter-diy.com/forum.php?mod=viewthread&tid=1330
高级说明
步进电机主要参数
① 步进电机的相数:是指电机内部的线圈组数,目前常用的有两相、三相、五相步进电机。
② 拍数:完成一个磁场周期性变化所需脉冲数或导电状态,用m表示,或指电机转过一个齿距角所需脉冲数。
③ 保持转矩:是指步进电机通电但没有转动时,定子锁住转子的力矩。
④ 步距角:对应一个脉冲信号,电机转子转过的角位移。
⑤ 定位转矩:电机在不通电状态下,电机转子自身的锁定力矩。
⑥ 失步:电机运转时运转的步数,不等于理论上的步数。
⑦ 失调角:转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。
⑧ 运行矩频特性:电机在某种测试条件下测得运行中输出力矩与频率关系的曲线 。
步进电机的特点
① 一般步进电机的精度为步距角的3-5%,且不累积;
② 步进电机外表允许的最高温度取决于不同电机磁性材料的退磁点;
③ 步进电机的力矩会随转速的升高而下降( U=E+L(di/dt)+I*R),矩频特性曲线
④ 空载启动频率:即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
步进电机的起步速度一般在10~100RPM,伺服电机的起步速度一般在100~300RPM。根据电机大小和负载情况而定,大电机一般对应较低的起步速度。
⑤ 低频振动特性:步进电动机以连续的步距状态边移动边重复运转。其步距状态的移动会产生1 步距响应。
电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然。步进电机低速转动时振动和噪声大是其固有的缺点,克服两相混合式步进电机在低速运转时的振
动和噪声方法:
a. 通过改变减速比等机械传动避开共振区;
b. 采用带有细分功能的驱动器;
c. 换成步距角更小的步进电机;
d. 选用电感较大的电机
e. 换成交流伺服电机,几乎可以完全克服震动和噪声,但成本高;
f. 采用小电流、低电压来驱动。
g. 在电机轴上加磁性阻尼器;
例程
本例程实现X-CTR100控制器对步进电机精确转速控制。
由于步进电机特性,很难直接设置高转速,一般需要加减速过程,本例程包括了步进电机加减速运行。
另外还包括零转速和关闭使能状态下的力矩情况。
硬件说明
硬件资源:
- 串口UART1
- DRV8825驱动器,转接板(自备)
- 42步进电机
- 12V电源(3A)
硬件连接:
使用MicroUSB数据线连接X-CTR100 COM接口。
步进电机控制接口
STEP——PE9(RP接口)
DIR——PE4(RP接口)
EN——PE5(RP接口)
5V——5V(RP接口)
GND——GND(RP接口)
供电接口
12V外接供电电源连接到VIN1或VIN2,驱动器电源也连接至VIN1或VIN2,注意正负极。
步进电机连接转接板,如下图。
软件生态
X-SOFT软件生态,X-API文件如下。
ax_step.c——X-CTR100 步进电机操作源文件
ax_step.h——X-CTR100 步进电机操作头文件
X-API接口函数如下:
void AX_STEP_Init(void); //STEP 步进电机初始化 void AX_STEP_SetEnable(uint8_t en); //STEP 步进电机使能控制 void AX_STEP_SetSpeed(int16_t speed); //STEP 步进电机转速控制 |
控制方法采用硬件定时器TIM1实现,通过在定时器中断中修改ARR周期,实现频率控制,通过CCR1实现50%占空比控制。
速度控制AX_STEP_SetSpeed()接口函数实现。
/** * @简 述 STEP 步进电机转速控制 * @参 数 speed:电机转速,脉冲频率,单位20Hz,即1为20Hz,100为2000Hz,范围±5000 * 实际电机转速,与电机步距角,细分设置相关,例如1.8°电机,32细分,转动一圈需要200x32个脉冲。 * @返回值 无 */ void AX_STEP_SetSpeed(int16_t speed) { if (speed > 0) { //设置方向 GPIO_SetBits(GPIOE, GPIO_Pin_4);
//计算速度 step_period = 50000 / speed; //20hz = 1S/
//初始化定时器 TIM1->ARR = step_period - 1; TIM1->CCR1 = step_period >> 1;//周期的一半 TIM_CtrlPWMOutputs(TIM1, ENABLE); //MOE 主输出使能 TIM_Cmd(TIM1, ENABLE); } else if (speed < 0) { //设置方向 GPIO_ResetBits(GPIOE, GPIO_Pin_4);
//计算速度 step_period = 50000 / (-speed);
//初始化定时器 TIM1->ARR = step_period - 1; TIM1->CCR1 = step_period >> 1;//周期的一半 TIM_CtrlPWMOutputs(TIM1, ENABLE); //MOE 主输出使能 TIM_Cmd(TIM1, ENABLE); } else { TIM_CtrlPWMOutputs(TIM1, DISABLE); TIM_Cmd(TIM1, DISABLE); } } |
软件说明
主程序,实现步进电机变速正转、变速反转、和停止,串口有提示信息输出,主程序代码如下。
int main(void) { int16_t i;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 步进电机控制例程***\r\n\r\n");
//模块初始化及配置 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); AX_STEP_Init(); //初始化步进电机 AX_STEP_SetEnable(1);
while (1) { printf("*步进电机正方向转动测试\r\n\r\n"); //加速 for (i = 0; i <= 2000; i += 2) { AX_STEP_SetSpeed(i); AX_Delayms(2); } //恒速 AX_Delayms(3000); //减速 for (i = i; i >= 0; i -= 2) { AX_STEP_SetSpeed(i); AX_Delayms(2); } AX_Delayms(1000);
printf("*步进电机反方向转动测试\r\n\r\n"); //加速 for (i = 0; i <= 2000; i += 2) { AX_STEP_SetSpeed(-i); AX_Delayms(2); } //恒速 AX_Delayms(3000); //减速 for (i = i; i >= 0; i -= 2) { AX_STEP_SetSpeed(-i); AX_Delayms(2); } AX_Delayms(1000);
printf("*步进电机零转速和关闭使能测试\r\n"); printf("*零转速,有维持力矩\r\n"); AX_Delayms(3000); printf("*关闭使能,无维持力矩\r\n\r\n"); AX_STEP_SetEnable(0); AX_Delayms(3000); AX_STEP_SetEnable(1);
} } |
实现效果
打开X-Assistant软件,可以看到电机运行提示信息,DRV8825调节至32细分。
电机首先加速正转,后恒速运行,后减速到停止;再次电机反转,后恒速,后停止。
然后电机停止转动,此时保持维持力矩;最后关闭使能,维持力矩消失,电流减小。
总结
本文实现了X-CTR100控制器控制步进电机精确转动,实际步进电机系统因项目不同差异较大。
有些步进电机系统的控制远远比该例程复杂,一般包括精确位置闭环控制,相应速度控制,S曲线控制等。
本文采用基础框架是步进电机通用编程框架,复杂功能可以根据项目需要在此基础上添加。
参考
http://www.3dprinter-diy.com/forum.php?mod=viewthread&tid=1330
https://reprap.org/wiki/A4988_vs_DRV8825_Chinese_Stepper_Driver_Boards
雷赛科技·步进电机及驱动器知识讲座