怎样使用Keyes L298N驱动双极步进电机,keyes 2024-04-12 05:38:06 0 0 步骤1:物料清单 一个5V Bi -极性步进电机。您可以在未使用的旧软盘驱动器中找到一个。 A Keyes L298N电动机驱动器。或任何其他兼容或类似的L298N模块驱动程序。 Arduino Uno R3或兼容版本。在这里,我使用Sparkfun RedBoard。 一些跳线。 万用表。 步骤2:Stepper:工作原理 四线制步进电机的内部示意图如上图一所示。尽管第二张图片向我们展示了步进电机的内部工作原理,以使其顺时针或逆时针运动。我们要做的就是以正确的顺序给线圈通电。 在上面的运动图中: (在浏览器中最佳查看) 《表边框=“ 1” cellpadding =“ 3”》 顺时针 学位YX〜Y〜X 2250011 3150 《第》 1 10 451100 1351001 《表边框=“ 1” cellpadding =“ 3”》 逆时针 度 Y X 〜Y 〜X 225 0 0 1 1 135 1 0 0 1 45 1 1 0 0 《第》 315 0 1 1 0 我们如何找出成对的导线(X和〜X; Y和〜Y)?因为我们要对线圈进行源或沉,以产生所需的磁场来移动电动机。使用万用表并将其设置为欧姆表,我们正在测量电缆之间的电阻。 当我测量引脚1和引脚3时,读数为12.6欧姆。当我测量引脚2和引脚4时也是如此。在连接引脚时会有一个电阻。我们还可以将万用表设置为“连续性检查”。 当我测量引脚1时引脚2在左侧显示“ 1”,表示“超出范围”。当我测量引脚2和引脚3时,也会发生同样的事情。这意味着它们没有连接。 您可以尝试访问此页面,以获取有关步进电机操作原理的更多详细信息。它具有一些GIF动画以及完整的步进度和引脚状态表,以使您更好地理解。 步骤3:接线 从Keyes L298N模块到Arduino Uno的电线: (在浏览器中最佳浏览) 颜色键L298NArduino Uno 橙色ENAPin 7 黄色IN1Pin〜6 绿色IN2Pin〜5 蓝色IN3Pin〜10 PurpleIN4Pin〜9 灰色ENBPin 8 黑色GNDGND 白色+ 5VVin 步进销1 和销3 到Keyes L298N Motor A 。 将步进 pin 2 和 pin 4 连接到Keyes L298N Motor B 。 电池+ 至Keyes L298N VMS 。 电池-至Keyes L298N GND 。 第4步:Arduino草图 /* * Driving a 5V stepper motor using Keyes L298N Dual Motor Driver; * Chienline @2015; */ const int ENA = 7; const int IN1 = 6; const int IN2 = 5; const int ENB = 8; const int IN4 = 9; const int IN3 = 10; const int ledPin = 13; void setup() { pinMode(ENA,OUTPUT); pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(ENB,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); pinMode(ledPin,OUTPUT); digitalWrite(ledPin, LOW); //delay is used to control the speed, the lower the faster. //reverse(step,delay); reverse(80,20); //forward(step,delay); forward(80,20); } void loop() { } void reverse(int i, int j) { // set both motors ON digitalWrite(ENA, HIGH); digitalWrite(ENB, HIGH); while (1) { digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i 《 1) break; } // set both motors OFF digitalWrite(ENA, LOW); digitalWrite(ENB, LOW); } // end reverse() void forward(int i, int j) { // Set both motors ON digitalWrite(ENA, HIGH); digitalWrite(ENB, HIGH); while (1) { digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 0); digitalWrite(IN4, 1); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 1); digitalWrite(IN2, 0); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i 《 1) break; digitalWrite(IN1, 0); digitalWrite(IN2, 1); digitalWrite(IN3, 1); digitalWrite(IN4, 0); delay(j); i--; if (i 《 1) break; } // set both motors OFF digitalWrite(ENA, LOW); digitalWrite(ENB, LOW); } // end forward() 责任编辑:wv 收藏(0)