【U034】如何驱动42步进电机
作者:机器谱
概述 Arduino控制 与传感器配合 |
1. 工作原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以实现对步进电机的转向、速度和旋转角度的控制。配合以直线运动执行机构或齿轮箱装置,可以实现更加复杂、精密的线性运动控制要求。步进电机一般由前后端盖、轴承、中心轴、转子铁芯、定子铁芯、定子组件、波纹垫圈、螺钉等部分构成。步进电机也叫步进器,它利用电磁学原理,将电能转换为机械能,是由缠绕在电机定子齿槽上的线圈驱动的。通常情况下,一根绕成圈状的金属丝叫做螺线管,而在电机中,绕在定子齿槽上的金属丝则叫做绕组、线圈、或相。
因此可以通过步进电机驱动器根据外来的控制脉冲和方向信号,通过其内部的逻辑电路,控制步进电机的绕组以一定的时序正向或反向通电,使得电机正向/反向旋转,或者锁定。
步进电机以一个固定的步距角转动,就像时钟内的秒针,这个角度称为基本步距角。
2. 简单的脉冲信号控制
需高精度定位的系统如下图所示,控制器发出的脉冲信号可以准确地控制步进电机的转动角度和速度。
概述
什么是脉冲信号?
脉冲信号是一个电压反复在ON 和OFF 之间改变的电信号。
每个ON/OFF周期被记为一个脉冲。单个脉冲信号指令使电机出力轴转动一步。
对应电压ON和OFF情况下的信号电平被分别称为“H”和“L”。
转动距离与脉冲数成比例关系
步进电机的转动距离正比于施加到驱动器上的脉冲信号数(脉冲数)。
步进电机转动(电机出力轴转动角度)和脉冲数的关系如下图所示:
转速与脉冲频率成比例关系
步进电机的转速与施加到驱动器上的脉冲信号频率成比例关系。
电机的转速[r/min] 与脉冲频率[Hz] 的关系如下(整步模式):
3. 步进电机的特性
42步进电机具有较高的定位精度、卓越的控制性能和稳定可靠的运行特性,因此广泛应用于各种机械设备的运动控制系统中。
42步进电机的特点在于其具有4个相,每个相的相位差为90度,一步为一个相的激励,每个步进电机能够产生精确的步进运动,这使其非常适合用于需要准确控制运动的应用。
在机械设备的控制中,42步进电机可以通过控制电流的方式,精确地控制电机的运动速度和运动方向。42步进电机在机械设备的运动控制中有着广泛的应用,例如数控机床、纺织机械、印刷机、绕线机、激光加工机、智能家居等等。在这些应用中,42步进电机可以提供高精度、高速度和高可靠性的运动控制。42步进电机的优点不仅在于其高精度的控制性能,还在于其低噪声、低振动和低功率消耗等方面。同时42步进电机具有结构简单、使用方便和易于维护的特点,可以为机械设备的运动控制提供可靠的保障。
在实际的应用中,42步进电机的性能和稳定性取决于其所使用的驱动器和控制器。因此在选择42步进电机时,需要根据实际需求选择合适的驱动器和控制器,以充分发挥42步进电机的优势。总之,42步进电机以其高精度、卓越的控制性能和稳定可靠的运行特性,在机械设备的运动控制中发挥着重要的作用。通过选择合适的驱动器和控制器,可以充分发挥42步进电机的优势,为机械设备的运动控制提供可靠的保障,实现高效、精准的运动控制。
4. 步进电机使用的注意事项
① 步进电机应用于低速场合--每分钟转速不超过1000转(0.9度时6666PPS),最好在1000-3000PPS(0.9度)间使用,可通过减速装置使其在此间工作,此时电机工作效率高,噪音低;
② 步进电机最好不使用整步状态,整步状态时振动大;
③ 电机在较高速或大惯量负载时,一般不在工作速度起动,而采用逐渐升频提速,电机不容易失步,二可以减少噪音同时可以提高停止的定位精度;
④ 高精度时,应通过机械减速、提高电机速度,或采用高细分数的驱动器来解决;
⑤ 电机不应在振动区内工作,如若必须可通过改变电压、电流或加一些阻尼来解决。
5. 步进电机实物图
6. 参考资料
[1] 步进电机基本结构和工作原理_旋转步进电机,鸣志官网,2019年3月22日[2] 使用步进电机应注意的九个方面,昌晖仪表网,2020年9月7日
Arduino控制
1. 功能说明
本文示例将实现驱动42步进电机正转反转的功能。
2. 电子硬件
在这个示例中,我们采用了以下硬件来驱动步进电机,请大家参考:
主控板 | |
扩展板 | |
电池 | 7.4V锂电池 |
其它 | 步进电机×1,步进电机连接线×1 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-31 https://www.robotway.com/ ------------------------------*/ #define EN 8 //步进电机使能端,低电平有效 #define Y_DIR 6 //y轴 步进电机方向控制 #define Y_STP 3 //y轴 步进控制 //函数:step 功能:控制步进电机方向,步数。 //参数:dir 方向控制, dirPin对应步进电机的DIR引脚,stepperPin 对应步进电机的step引脚, steps 步进的步数 //无返回值 void step(boolean dir, byte dirPin, byte stepperPin, int steps) { digitalWrite(dirPin, dir); delay(50); for (int i = 0; i < steps; i++) { digitalWrite(stepperPin, HIGH); delayMicroseconds(800); //调试步进电机速度函数 digitalWrite(stepperPin, LOW); delayMicroseconds(800); //调试步进电机速度函数 } } void setup() { // put your setup code here, to run once: pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop() { // put your main code here, to run repeatedly: step(false, Y_DIR, Y_STP, 200); //y轴电机 反转1圈,200步为一圈 delay(1000); step(true, Y_DIR, Y_STP, 200); //y轴电机 正转1圈,200步为一圈 delay(1000); } |
电路连接:
① 将SH-ST步进电机扩展板堆叠到Basra主控板上,注意步进电机的芯片贴好散热片;
② 将11.1V动力电池通过电源导线接到SH-ST步进电机扩展板DC电源头位置【注意关闭SH-ST步进电机扩展板的电源开关】
③ 将步进电机连接到SH-ST步进电机扩展板的(Y-MTR)接口上(步进电机线为排线,插反不会烧毁,只会反转,这点和直流电机类似)。
3. 功能实现
编程环境:Arduino 1.8.19
下面提供一个实现步进电机方向控制和转动圈数控制的参考例程(manto_test2.ino),实验效果可参考演示视频。
4. 步进电机的使用案例
5. 资料清单
序号 | 内容 |
1 | 程序源代码 |
【整体打包】-【U034】如何驱动42步进电机-Arduino控制-资料附件.zip | 2.88KB | 下载3次 | 下载 |
与传感器配合
1. 功能说明
本文示例将实现开机时步进电机正转;触发传感器时步进电机停止转动。除非重新开机,否则步进电机将一直处于停止状态。
2. 电子硬件
主控板 | |
扩展板 | |
传感器 | |
电池 | 7.4V锂电池 |
其它 | 步进电机×1、步进电机连接线×1 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-08-25 https://www.robotway.com/ ----------------------------------------------------------------------------------*/
void setup() { delay(1000);Serial.begin(9600); step_init(); //步进电机初始化 buttom_init(); //开关量传感器引脚初始化 }
void loop() { int buttom_value = readButtom(); //获取开关量传感器状态
if( buttom_value == 0 ) //如果开关量传感器触发,程序进入死循环 { while(1) { Serial.println("Nothing to do"); delay(1000); } }
else //如果开关量传感器没有触发,步进电机一直转动 { forward(10); //步进电机正转 //back(10); //步进电机反转 } } |
电路连接
① 将BigFish扩展板堆叠到Basra主控板上,然后将SH-ST步进电机扩展板堆叠到BigFish扩展板上,注意步进电机的芯片贴好散热片。
② 将步进电机连接到SH-ST步进电机扩展板的(Y-MTR)接口上(步进电机线为排线,插反不会烧毁,只会反转,这点和直流电机类似)。
③ 将触须传感器连接到BigFish扩展板的A0端口。
3. 功能实现
编程环境:Arduino 1.8.19
下面提供一个参考程序(step_buttom.ino):
4. 资料清单
序号 | 内容 |
1 | 程序源代码 |
【整体打包】-【U034】如何驱动42步进电机-与传感器配合-资料附件.rar | 2.98KB | 下载1次 | 下载 |
|