如何使用L298N双电机控制器模块和Arduino控制DC和步进电机

电子说

1.3w人已加入

描述

步骤1:了解L298模块连接

步进电机

首先,我们将遍历所有连接,然后说明如何控制直流电动机,然后是步进电动机。此时,请检查L298N H桥模块上的连接。

考虑图像–将数字与图像下方的列表匹配:

DC电动机1“ +”或步进电动机A +

DC电动机1“-”或步进电动机A-

12V跳线–如果使用的电源电压大于12V DC,则将其移除。这样可以为板载5V稳压器供电。

在此处连接电动机电源电压,最大35V DC。如果》 12V DC

GND

如果有12V跳线,则移除5V输出,非常适合为Arduino(

直流电动机1启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出。

IN1

IN2

IN3

IN4

直流电动机2启用跳线。使用步进电机时,将其保留在原位。连接到用于直流电动机速度控制的PWM输出

直流电动机2“ +”或步进电动机B +

直流电动机2 “-”或步进电动机B-

步骤2:控制直流电动机

到使用L298N H桥模块控制一两个直流电动机非常容易。首先将每个电动机连接到L298N模块上的A和B连接。

如果您为机器人(例如)使用两个电机,请确保两个输入的电机极性相同。否则,当您同时将两个电动机都设置为正转而将其设置为倒退时,可能需要交换它们!

下一步,连接电源-将正极连接至模块上的引脚4,将负极/GND连接至引脚5。如果您提供的电压最高为12V,则可以保留12V跳线(上图中的点3),并且模块上的引脚6可以提供5V电压。

可以将其馈送到Arduino的5V引脚,以从电动机的电源为其供电。别忘了将Arduino GND连接到模块上的引脚5,以完成电路。现在,您将在Arduino上需要六个数字输出引脚,其中两个需要是PWM(脉冲宽度调制)引脚。

PWM引脚在引脚编号旁边由波浪号(〜)表示,例如在Arduino Uno的数字引脚图像中。

最后,将Arduino数字输出引脚连接到驱动程序模块。在我们的示例中,我们有两个直流电动机,因此数字引脚D9,D8,D7和D6将分别连接到引脚IN1,IN2,IN3和IN4。然后将D10连接到模块插针7(先卸下跳线),然后将D5连接到模块插针12(同样要卸下跳线)。

通过向驱动器发送HIGH或LOW信号来控制电动机的方向每个马达(或通道)。例如,对于电动机一,从IN1到HIGH的高电平和向IN2发出LOW的低电平将使它在一个方向上旋转,而到HIGH和LOW的低电平将使它在另一个方向上旋转。

但是,直到将HIGH设置为启用引脚(电机1为7,电机2为12)后,电机才会转动。并且它们可以通过低电平连接到同一引脚来关闭。但是,如果需要控制电动机的速度,则可以通过来自连接到使能引脚的数字引脚的PWM信号来解决这一问题。

这就是我们对直流电动机演示草图所做的工作。如上所述,连接了两个直流电动机和一个Arduino Uno,以及一个外部电源。然后输入并上传以下草图:

// connect motor controller pins to Arduino digital pins

// motor one

int enA = 10;

int in1 = 9;

int in2 = 8;

// motor two

int enB = 5;

int in3 = 7;

int in4 = 6;

void setup()

{

// set all the motor control pins to outputs

pinMode(enA, OUTPUT);

pinMode(enB, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void demoOne()

{

// this function will run the motors in both directions at a fixed speed

// turn on motor A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enA, 200);

// turn on motor B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// set speed to 200 out of possible range 0~255

analogWrite(enB, 200);

delay(2000);

// now change motor directions

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(2000);

// now turn off motors

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void demoTwo()

{

// this function will run the motors across the range of possible speeds

// note that maximum speed is determined by the motor itself and the operating voltage

// the PWM values sent by analogWrite() are fractions of the maximum speed possible

// by your hardware

// turn on motors

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// accelerate from zero to maximum speed

for (int i = 0; i 《 256; i++)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// decelerate from maximum speed to zero

for (int i = 255; i 》= 0; --i)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// now turn off motors

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void loop()

{

demoOne();

delay(1000);

demoTwo();

delay(1000);

}

那么该草图中发生了什么?在函数demoOne()中,我们打开电动机并以200的PWM值运行它们。这不是速度值,而是一次施加200/255的时间量的功率。

然后片刻之后,电动机反向运行(请参阅如何更改digitalWrite()函数中的HIGH和LOW?)。为了了解您的硬件可能的速度范围,我们在函数demoTwo()中遍历了整个PWM范围,这将打开电动机,并且它们通过零至255的PWM值运行,并通过两个for循环返回零。 。

最后,这是在此页面的视频中进行的演示–使用我们的破旧的坦克底盘和两个直流电动机。

第3步:使用Arduino控制步进电动机和L298N

步进电机可能看起来很复杂,但事实并非如此。在此示例中,我们控制一个典型的NEMA-17步进电机,该电机具有四根电线,如该步骤中的图像所示。

每转200步,并且可以60 RPM的速度运行。如果您还没有电动机的步进和速度值,请立即查找,并在草图中使用它。

成功进行步进电动机控制的关键是识别电线-即一个是哪个。您将需要确定A +,A-,B +和B-线。在我们的示例电动机中,它们是红色,绿色,黄色和蓝色。现在,让我们完成接线。

将来自步进电机的A +,A-,B +和B-线分别连接到模块连接1、2、13和14。将L298N模块随附的跳线放置在模块点7和12上的线对上。然后根据需要将电源连接到点4(正)和点5(负/GND)。

再次,如果您的步进电机的电源低于12V,则将跳线安装到模块的第3点,为您的Arduino提供整洁的5V电源。接下来,将L298N模块引脚IN1,IN2,IN3和IN4分别连接到Arduino数字引脚D8,D9,D10和D11。

最后,如果从模块中获取5V电压,则将Arduino GND连接至模块上的点5,将Arduino 5V连接至点6。借助Arduino IDE随附的Stepper Arduino库作为标准,从草图控制步进电机非常简单。

要演示您的电动机,只需加载Stepper库中随附的stepper_oneRevolution草图。要找到它,请在Arduino IDE中单击“文件”》“示例”》“步进器”菜单。

最后,检查草图中

const int stepsPerRevolution = 200;的值并将200更改为步进电机的每转步数,以及在以下行中预设为60 RPM的速度:myStepper.setSpeed(60);

现在,您可以保存和上传草图,这会将步进电机发送大约一转,然后再回来。这可以通过功能

myStepper.step(stepsPerRevolution); // for clockwise

myStepper.step(-stepsPerRevolution); // for anti-clockwise

实现。最后,在此步骤的视频中快速展示了我们的测试硬件。

责任编辑:wv 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分