L298N:用于Arduino的电机控制模块

l298n

有许多模块可用于Arduino或由制造商在DIY项目中使用。 如果是 L298N是控制电机的模块。 有了它们,您可以使用简单的代码来 对我们的Arduino开发板进行编程 并能够以简单且可控的方式控制直流电动机。 通常,这种类型的模块更多地用于机器人技术或使用电机的执行器中,尽管它可以用于多种应用。

我们已经输入了您需要的所有信息 ESP模块,带有ESP8266芯片,一 允许扩展容量的模块 Arduino开发板和其他项目,以便它们具有WiFi连接。 这些模块不仅可以单独使用,还可以将它们组合在一起。 例如,ESP8266可用于我们的原型和L298N,通过它们我们可以通过Internet或无线方式获得可控制的电动机。

L298N和数据表简介:

L298N引脚排列

尽管使用Arduino也可以使用机器人技术中众所周知的步进电机,但在这种情况下,通常更常见的是使用控制器或 直流电动机驱动器。 您可以在制造商的数据表中获取有关L298芯片和模块的信息,例如 STMicroelectronics从此链接。 如果您想查看特定模块的数据表,而不仅仅是芯片,则可以下载该模块的其他PDF文件。 汉森泰克 L298N.

但是从广义上讲,L298N是一种H桥型驱动器,它可以控制直流电动机的速度和旋转方向。 多亏了2,它也可以轻松地与步进电机一起使用 H桥 实现。 也就是说,在H处有一个电桥,这意味着它由4个晶体管构成,这些晶体管将使电流的方向反转,从而使电动机的转子可以按我们想要的一个方向或另一个方向旋转。 与仅允许您通过仅控制电源电压值来控制转速(RPM)的控制器相比,这是一个优势。

L298N可以与各种 电压,从3v到35v, 强度为2A。 这才是真正决定电机性能或转速的因素。 必须考虑到,模块消耗的电子设备通常消耗3v左右的电压,因此电动机向我们提供的电源所接收到的功率总是少3v。 如图中所示,这是一个有点高的消耗,实际上它具有需要散热器的高功率元件。

为了控制速度,在这种情况下,您可以做一些与LM35相反的操作,而不是在输出端获得一定的电压并将其转换为度,而是相反。 我们向驱动器提供较低或较高的电压,以获得 更快或更慢的转弯。 此外,只要我们为驱动器提供至少298v的电压,L5N模块还允许Arduino板以12v供电。

与Arduino集成

Arduino的L298n的电路图

那里 可以使用此模块的大量项目。 实际上,您可以简单地想象一下您可以使用它做的所有事情并开始工作。 例如,一个简单的示例是控制两个直流电动机,如上图中用Fritzing绘制的图所示。

在使用L298N之前,我们必须牢记模块或Vin的输入。 支持3v至35v之间的电压 并且我们还必须将其连接到地面或GND,如分别使用红色和黑色电缆的图像所示。 一旦连接到电源,下一步就是将一个或多个电动机同时接受控制以进行控制。 这很简单,您只需要将电动机的两个端子连接到每侧都有模块的连接接线片即可。

现在可能是最复杂的,是连接模块连接或 正确固定到Arduino的针脚。 请记住,如果模块的跳线或调节器桥已关闭,即打开,则模块的电压调节器已激活,并且有一个5v输出可用于为Arduino板供电。 另一方面,如果卸下跳线,则会停用调节器,并且需要独立为Arduino供电。 眼睛! 由于跳线只能设置为12v的电压,因此,除此以外,还必须将其卸下,以免损坏模块...

你会感激的 每个电机有3个连接。 标记为IN1至IN4的是控制电动机A和B的电动机。如果由于只需要一台电动机而没有连接一台电动机,则不必将它们全部都放入。 每个电动机在这些连接的每一侧的跳线为ENA和ENB,即激活电动机A和B,如果我们希望两个电动机都工作,则必须存在该跳线。

电机A (对于B来说是相同的),我们必须连接IN1和IN2以控制旋转方向。 如果IN1处于高电平而IN2处于低电平,则电动机沿一个方向旋转,如果它们处于LOW和HIGH,则电动机沿另一个方向旋转。 要控制旋转速度,您必须移除INA或INB跳线,并使用将其连接到Arduino PWM的引脚,以便如果将其设置为0到255之间的值,则分别获得较低或较高的速度。

恩CUANTO一个 在Arduino IDE中进行编程也很容易。 例如,代码为:

<pre>// Motor A
int ENA = 10;
int IN1 = 9;
int IN2 = 8;

// Motor B
int ENB = 5;
int IN3 = 7;
int IN4 = 6;

void setup ()
{
 // Declaramos todos los pines como salidas
 pinMode (ENA, OUTPUT);
 pinMode (ENB, OUTPUT);
 pinMode (IN1, OUTPUT);
 pinMode (IN2, OUTPUT);
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
}
//Mover los motores a pleno rendimiento (255), si quieres bajar la velocidad puedes reducir el valor hasta la mínima que son 0 (parados)</pre>
<pre>//Para mover los motores en sentido de giro contrario, cambia IN1 a LOW e IN2 a HIGH

void Adelante ()
{
 //Direccion motor A
 digitalWrite (IN1, HIGH);
 digitalWrite (IN2, LOW);
 analogWrite (ENA, 255); //Velocidad motor A
 //Direccion motor B
 digitalWrite (IN3, HIGH);
 digitalWrite (IN4, LOW);
 analogWrite (ENB, 255); //Velocidad motor B
}</pre>

成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。