怎样使用Keyes L298N驱动双极步进电机,keyes

步骤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

相关推荐

最新

相关文章