使用 L293D 电机驱动器扩展板和 Arduino 控制直流、步进和伺服

使用 L293D 电机驱动器扩展板和 Arduino 控制直流、步进和伺服

将直流电机、步进电机和伺服电机与 L293D 扩展板和 Arduino 连接的教程

如果您打算构建自己的机器人,则需要控制各种电机,例如直流电机、步进电机和伺服系统,没有比 L293D 电机驱动器扩展板更好的选择了。它能够控制所有这些电机;不需要额外的模块。

L293D 电机驱动器扩展板具有各种低到中等复杂度项目所需的所有功能。它可以控制:

l293d 屏蔽支持电机

硬件概述

驱动芯片组

该扩展板的大脑是两个 L293D 电机驱动器和一个 74HC595 移位寄存器。

l293d电机驱动板芯片组

L293D是一款双通道H桥电机驱动器,可以控制两个直流电机或单个步进电机。由于该扩展板包含两个此类电机驱动器,因此它最多可以控制四个直流电机或两个步进电机。

另一方面,74HC595移位寄存器将Arduino的四个数字引脚扩展到两个L293D芯片的八个方向控制引脚。

电机电源连接

        支持 4.5 至 25 伏的电机电压范围。该电源可以与 Arduino 共享或单独使用。为了在两者之间进行选择,在两端电源连接器附近提供了一个标记为 PWR 的特殊跳线。缺省时这个跳线是短接状态,也就是说扩展板给开发板提供电源。但是要注意L293D支持高达25伏特的输入电压,如果给它接入高于12伏特的电压时要断开pwr跳线,然后单独给开发板提供电源。

        另外L293D会产生1.5伏的压降,所以如果希望给6伏的电机供电时,至少要提供7.5伏的电压。

L293D电机驱动屏蔽电源

移除跳线后,电机电源将与 Arduino 断开,从而使电机与 Arduino 物理隔离。但在这种情况下,您必须为标有 EXT_PWR 的两端电源连接器提供单独的电机电源。

警告:

在跳线就位时向 EXT_PWR 两端电源连接器供电将使两个电源短路,可能会损坏电机以及 Arduino!

直流电机连接

两个 L293D IC 的输出通道均通过两个标记为 M1、M2、M3 和 M4 的 5 针螺丝端子延伸至屏蔽边缘。这些端子可连接总共四个工作电压为 4.5 – 25V 的直流电机。

l293d 电机驱动器屏蔽直流电机连接

模块上的每个通道可为直流电机提供高达 600 mA(1.2A 峰值)的电流。然而,提供给电机的电流量取决于电机电源的容量。

步进电机连接

您还可以将两个步进电机连接到输出端子。一个步进电机连接到M1-M2,另一个连接到M3-M4。

l293d电机驱动器屏蔽步进电机连接

如果您有 5 线单极步进电机,请将中心抽头线连接到中心接地端子。

伺服电机连接

该扩展板将 16 位 PWM 输出线引至两个 3 针接头连接器,您可以使用它们连接两个伺服电机。

l293d电机驱动器屏蔽伺服电机连接

不幸的是,伺服电机直接由 Arduino 的 5V 电源供电,这通常是一个坏主意。这样做可能会导致 Arduino 的板载 5V 稳压器过热,并且还会在 5V 电源上引入电噪声。从好的方面来说,它在这些电源引脚上有一个 100uF 的电容器,这有点帮助。

所以,如果你想使用这个功能,只能使用像SG90这样的小型舵机。

l293d 电机驱动器屏蔽复位 LED 电阻阵列原型

包括一个下拉电阻器阵列,可在加电期间保持电机关闭。

板载LED指示电机电源工作正常。如果它不亮,电机将不会运行。

RESET按钮只不过是Arduino的重置按钮。它已被带到顶部以便于访问。

右下角提供了 6 个模拟引脚(A0 至 A5)以及 5V 和接地连接。您可以使用标头填充它们,使它们可用于连接各种传感器。

Arduino 到屏蔽引脚的连接

对于直流和步进电机控制,扩展板使用引脚 D3、D4、D5、D6、D7、D8、D11 和 D12。

D9和D10用于控制伺服电机。D10 连接到舵机 1,而 D9 连接到舵机 2。

请注意,扩展板不使用 D2 或 D13 引脚,但是可以先使用原型板再使用驱动板,即可使用这两个引脚,或者自己动手加焊两根针。

安装 AFMotor 库

要与扩展板通信,我们必须首先安装 AFMotor.h 库。这将使我们能够通过简单的命令控制直流电机、步进电机和伺服电机。

要安装库,请导航到Sketch > Include Library > Manage Libraries...等待库管理器下载库索引并更新已安装库的列表。

Arduino 库安装 - 在 Arduino IDE 中选择“管理库”

输入'motorshield'来过滤您的搜索。查找AdafruitAdafruit Motor Shield 库(V1 固件)。单击该条目,然后选择安装。

安装 AFMotor 库

实验 1 – 使用 L293D 屏蔽驱动直流电机

现在我们已经了解了有关扩展板的所有知识,我们可以开始将其连接到 Arduino!

接线

首先将电机护罩安装在 Arduino 顶部。

接下来,连接电机电源。在我们的实验中,我们使用直流变速箱电机,也称为“TT”电机,常见于两轮驱动机器人中。它们的额定电压为 3 至 12V。因此,我们将外部9V电源连接到EXT_PWR端子。

最后,将电机连接到 M1、M2、M3 或 M4 端子之一。我们将其连接到 M4。

将直流电机接线至 L293D 电机扩展板和 Arduino

Arduino代码

下面的草图将向您展示如何使用 L293D 电机驱动器扩展板控制直流电机的速度和旋转方向,并且可以作为更多实际实验和项目的基础。

该草图使直流电机沿一个方向加速,然后减速停止。一转后,电机反转其旋转方向并重复该过程。
L293D可以同时驱动四个电机,如果使用AFMotor.h库,那么就需要单独为每一个电机建立一个实例。
                                AF_DCMotor motor1(1);
                                AF_DCMotor motor2(2);
                                AF_DCMotor motor3(3);
                                AF_DCMotor motor4(4);
我们在这里建立了4个AF_DCMotor的实例,来分别对应四个电机。当然也如果使用motor1来驱动第四个电机,就可以写成:AF_DCMotor motor1(4)。利用这四个变量就可以控制电机的运动了。

下面的代码,只使用了一个变量,驱动了一个电机。只是测试使用的程序。

#include <AFMotor.h>

AF_DCMotor motor(4);//驱动连接在m4

void setup() 
{
	//Set initial speed of the motor & stop
	motor.setSpeed(200);
	motor.run(RELEASE);
}

void loop() 
{
	uint8_t i;

	// Turn on motor
	motor.run(FORWARD);
	
	// Accelerate from zero to maximum speed
	for (i=0; i<255; i++) 
	{
		motor.setSpeed(i);  
		delay(10);
	}
	
	// Decelerate from maximum speed to zero
	for (i=255; i!=0; i--) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Now change motor direction
	motor.run(BACKWARD);
	
	// Accelerate from zero to maximum speed
	for (i=0; i<255; i++) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Decelerate from maximum speed to zero
	for (i=255; i!=0; i--) 
	{
		motor.setSpeed(i);  
		delay(10);
	}

	// Now turn off motor
	motor.run(RELEASE);
	delay(1000);
}

代码说明:

该草图首先包含 AFMotor.h 库。

第二行AF_DCMotor motor(motorPort#)创建一个库对象。此处,您必须指定电机所连接的电机端口号。为端口 M1 写入 1,为端口 M2 写入 2,依此类推。

如果要将多个电机连接到屏蔽,请为每个电机创建一个单独的对象。例如,以下代码片段创建两个 AFmotor 对象。

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

在代码的设置和循环部分,我们只需调用下面列出的两个函数来控制电机的速度和方向。

  • setSpeed(speed)功能控制电机的速度。范围speed从 0 到 255,其中 0 表示关闭,255 表示全油门。在程序中,您可以随时更改速度。
  • run(cmd)功能控制电机的旋转方向。以下是有效值cmd
    • 向前– 向前旋转电机。
    • 向后– 向后旋转电机。
    • RELEASE(释放) ——这会停止电机,相当于setSpeed(0)。由于电机缺乏动态制动,电机可能需要一些时间才能停止旋转。

实验 2 – 使用 L293D 屏蔽驱动步进电机

我们的下一个实验将涉及将步进电机连接到 L293D 扩展板。首先将电机护罩安装在 Arduino 顶部。

28BYJ-48 单极步进器接线

28BYJ-48 单极步进电机的额定电压为 5V,每转提供 48 步。因此,将外部 5V 电源连接到 EXT_PWR 端子。

最后,将电机连接到步进电机端子 M1-M2(端口#1)或 M3-M4(端口#2)。我们将其连接到 M3-M4。

将单极步进电机连接至 L293D 电机扩展板和 Arduino

将单极步进电机连接至 L293D 电机扩展板和 Arduino

NEMA 17 双极步进器的接线

NEMA 17 双极步进电机的额定电压为 12V,每转可提供 200 步。因此,需要将外部 12V 电源连接到 EXT_PWR 端子。

不要忘记拆下 PWR 跳线

最后,将电机连接到步进电机端子 M1-M2(端口#1)或 M3-M4(端口#2)。我们将其连接到 M3-M4。

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值