构建NodeMCU电机驱动器扩展板的方法

控制/MCU

1878人已加入

描述

  在开发机器人项目时,电机是整个项目中最重要的部分之一,并且总是需要多个电机。但是微控制器板的 GPIO 引脚不允许您提取电机所需的电流量。这就是使用电机驱动器 IC 的原因。您可以通过使用一些电子元件来构建电机驱动器电路,或者您可以构建一个几乎现成的解决方案,即电机驱动器屏蔽。

  在这个 DIY 教程中,我们将构建一个 NodeMCU Motor Driver Shield 来驱动直流电机。此电机驱动器扩展板包括一个 L293D 电机驱动器 IC、一个用于打开/关闭电源的 6 针开关、一个用于调节 5V 电压的 LM7805 稳压器,以及一些用于传感器、继电器等的额外针脚。

  NodeMCU 电机护罩所需的组件:

  节点单片机

  L293D电机驱动IC

  7805稳压器

  电容器(1×0.1µf、1×0.33µf、1×10µf)

  1× 220 Ω 电阻器

  16针IC底座

  2×螺丝端子

  1× LED

  1× DC 电源插孔母头

  NodeMCU 电机驱动器屏蔽电路图

  L293D Motor Driver Shield的完整原理图如下所示。原理图是使用 EasyEDA 绘制的。

L293D

  此电机驱动器扩展板由 L293D 电机驱动器 IC、用于打开/关闭电源的 6 针开关和用于调节 5V 的 LM7805 稳压器组成。它可以控制两个直流电机。NodeMCU 数字引脚 D3 和 D4 连接到左电机,数字引脚 D5 和 D6 连接到右电机。此外,此屏蔽板还具有用于传感器、继电器或其他设备的额外插头引脚。

  为 NodeMCU 电机驱动器屏蔽制造 PCB

  原理图完成后,我们可以继续布置 PCB。您可以使用您选择的任何 PCB 软件来设计 PCB。我们已经使用 EasyEDA 为这个项目制造 PCB。您可以通过从“层”窗口中选择层来查看 PCB 的任何层(Top、Bottom、Topsilk、bottomsilk 等)。除此之外,您还可以获得 PCB 的 3D 模型视图,了解它在制造后的外观。下面是 Pi Motor Driver HAT PCB 顶层和底层的 3D 模型视图。

L293D

  组装NodeMCU 电机驱动器屏蔽 PCB

  板子的顶层和底层如下图所示:

L293D

  在确保轨道和脚印正确之后。我继续组装PCB。完全焊接的电路板如下图所示:

L293D

NodeMCU电机驱动代码说明

在这个项目中,我们正在对 NodeMCU 进行编程,以在两秒的时间间隔内同时驱动正向、反向、向左和向右方向的两个直流电机。完整的代码在文档末尾给出。在这里,我们将解释代码的一些重要部分。

通过定义连接电机引脚的引脚开始代码。在这里,我将电机 A 的输入 1 连接到 D3,输入 2 连接到 D4,电机 B 的输入 1 连接到 D5,输入 2 连接到 D6。

 

常量 int inputPin1 = D3;   
常量 int inputPin2 = D4;   
常量 int inputPin3 = D5;  
常量 int inputPin4 = D6;

 

在setup() 函数中,将电机 A 和电机 B 的所有四个引脚定义为输出。

 

无效设置()
{
    pinMode(inputPin1, OUTPUT);
    pinMode(输入Pin2,输出);
    pinMode(inputPin3, OUTPUT);
    pinMode(inputPin4, OUTPUT);
}

 

  接下来,在loop()函数内部,在两秒的时间间隔内同时驱动两个直流电机正向、反向、向左和向右方向。下表显示了电机方向的输入引脚状态组合:

L293D

 无效循环()

 

{
    //向前
    数字写入(输入引脚1,高);
    数字写入(输入引脚2,低);
    数字写入(输入引脚3,高);
    数字写入(输入引脚4,低);
    延迟(2000);
    //剩下
    数字写入(输入引脚1,低);
    数字写入(输入引脚2,低);
    数字写入(输入引脚3,高);
    数字写入(输入引脚4,低);
    延迟(2000);
    //正确的
    数字写入(输入引脚1,高);
    数字写入(输入引脚2,低);
    数字写入(inputPin3,低);
    数字写入(输入引脚4,低);
    延迟(2000);
    //撤销
    数字写入(输入引脚1,低);
    数字写入(输入引脚2,高);
    数字写入(inputPin3,低);
    digitalWrite(inputPin4, HIGH);
    延迟(2000);
    //停止
    数字写入(输入引脚1,低);
    数字写入(输入引脚2,低);
    数字写入(inputPin3,低);
    数字写入(输入引脚4,低);
    延迟(2000);
}  

 

  测试 NodeMCU 电机驱动器屏蔽

  完成 PCB 组装后,将代码上传到 NodeMCU,然后将 L293D IC 和 NodeMCU 安装在驱动器屏蔽上。如果一切顺利,连接到 NodeMCU 的直流电机将每两秒同时向左、前、右和反向移动。

L293D

//电机A
常量 int inputPin1 = D3;
常量 int inputPin2 = D4;
//电机B
常量 int inputPin3 = D5;
常量 int inputPin4 = D6;
无效设置()
{
pinMode(inputPin1, OUTPUT);
pinMode(输入Pin2,输出);
pinMode(inputPin3, OUTPUT);
pinMode(inputPin4, OUTPUT);
}
无效循环()
{
//向前
数字写入(输入引脚1,高);
数字写入(输入引脚2,低);
数字写入(输入引脚3,高);
数字写入(输入引脚4,低);
延迟(2000);
//剩下
数字写入(输入引脚1,低);
数字写入(输入引脚2,低);
数字写入(输入引脚3,高);
数字写入(输入引脚4,低);
延迟(2000);
//正确的
数字写入(输入引脚1,高);
数字写入(输入引脚2,低);
数字写入(inputPin3,低);
数字写入(输入引脚4,低);
延迟(2000);
//撤销
数字写入(输入引脚1,低);
数字写入(输入引脚2,高);
数字写入(inputPin3,低);
digitalWrite(inputPin4, HIGH);
延迟(2000);
//停止
数字写入(输入引脚1,低);
数字写入(输入引脚2,低);
数字写入(inputPin3,低);
数字写入(输入引脚4,低);
延迟(2000);
}

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

全部0条评论

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

×
20
完善资料,
赚取积分