步进电机介绍 |
关于28BYJ-48步进电机 |
Arduino通过stepper库控制步进电机示例 |
Stepper库函数 |
请注意:本页面主要针对Arduino通过Stepper库控制28BYJ-48步进电机。如您需要了解如何使用Arduino控制NEMA双极性步进电机,请参考太极创客网站的“Arduino驱动NEMA双极性步进电机”页面。
步进电机介绍
想要了解如何使用Arduino控制步进电机,首先要了解步进电机的基本工作原理与结构。我们太极创客团队针对Arduino驱动电机这一主题专门制作了一系列视频教程。希望对您有所帮助。您可以点击这里进入点击专项教程目录页面。
关于28BYJ-48步进电机
在这里我们将着重介绍如何使用Arduino驱动十分常见的28BYJ-48步进电机。
-
28BYJ-48步进电机(单极性)
28BYJ-48步进电机工作原理介绍:
如果您想要更深入的了解28BYJ-48步进电机的工作原理,请参考28BYJ-48步进电机工作原理页面。
如需购买此产品,请前往太极创客淘宝网店:
https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.3c621debRBDl5t&ft=t&id=642150991809
请注意:本页面主要针对Arduino通过Stepper库控制28BYJ-48步进电机。如您需要了解如何使用Arduino控制如下图所示的NEMA双极性步进电机,请参考太极创客网站的“Arduino驱动NEMA双极性步进电机”页面。
Arduino通过stepper库控制步进电机示例
示例1.Arduino控制28BYJ-48 单极性步进电机(需要ULN2003驱动板)
请根据以上电路连接说明将Arduino与ULN2003电机驱动板以及28BYJ-48步进电机进行电路连接。对于驱动28BYJ-48步进电机,最常用的方法是使用ULN2003驱动板。换句话说,28BYJ-48步进电机和ULN2003驱动板已经成为一对默认组合。
还有一点需要特别说明。我们强烈建议您在用Arduino驱动28BYJ-48步进电机时,为ULN电机驱动板单独配上一个电源。这一点正如上图所示,ULN2003驱动板的电源是由一个独立的+5V电源所提供的,如果用Arduino开发板的+5V电源直接为ULN2003驱动板供电的方法短时间测试是可以的,但是不要在长时间使用Arduino为ULN2003驱动板进行供电。
当一切就绪后,您就可以将以下示例程序上传给Arduino了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
/* Arduino控制28BYJ-48步进电机测试程序 by 太极创客(www.taichi-maker.com) 本示例程序旨在演示如何通过Arduino控制28BYJ-48步进电机。 如需获得本示例程序详细电路信息以及如何使用Arduino控制电机的更多知识,请参考太极创客网站: http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/stepper-library/ */ //本示例程序使用Stepper库 #include <Stepper.h> // 定义电机控制用常量 // 电机内部输出轴旋转一周步数 const int STEPS_PER_ROTOR_REV = 32; // 减速比 const int GEAR_REDUCTION = 64; /* * 转子旋转一周需要走32步。转子每旋转一周,电机输出轴只旋转1/64周。 * (电机内部配有多个减速齿轮,这些齿轮会的作用是让转子每旋转一周, * 输出轴只旋转1/64周。) * 因此电机输出轴旋转一周则需要转子走32X64=2048步,即以下常量定义。 */ // 电机外部输出轴旋转一周步数 (2048) const float STEPS_PER_OUT_REV = STEPS_PER_ROTOR_REV * GEAR_REDUCTION; // 定义电机控制用变量 // 电机旋转步数 int StepsRequired; // 建立步进电机对象 // 定义电机控制引脚以及电机基本信息。 // 电机控制引脚为 8,9,10,11 // 以上引脚依次连接在ULN2003 驱动板 In1, In2, In3, In4 Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 10, 9, 11); void setup() { //setup函数内无内容 } void loop() { // 极慢转动4步用于观察ULN2003电机驱动板LED变化 steppermotor.setSpeed(1); StepsRequired = 4; steppermotor.step(StepsRequired); delay(1000); // 慢速顺时针旋转一圈 StepsRequired = STEPS_PER_OUT_REV; steppermotor.setSpeed(500); steppermotor.step(StepsRequired); delay(1000); // 快速逆时针旋转一圈 StepsRequired = - STEPS_PER_OUT_REV; steppermotor.setSpeed(800); steppermotor.step(StepsRequired); delay(2000); } |
通过以上示例中您将看到,首先步进电机将以非常慢的速度旋转,这么做的目的是为了便于您观察UNL2003驱动板上LED变化与电机运动之间的关系。接下来电机将以较为缓慢的速度顺时针旋转半圈然后会以较快的速度逆时针旋转半圈。您可以通过调整“setSpeed” 的参数来改变电机的旋转速度。