• 【ESP8266与ESP12E 电机拓展板握手】


    1. 前言

    在这里插入图片描述
    ESP12E Motor Shield 是一块扩展板,允许 Amica ESP8266 NodeMCU (V2) 驱动两个直流电机或一个步进电机。我们已经了解了如何使用 H 桥驱动直流电机,这在使用简单 IC 时可能需要大量接线。对于嵌入式应用程序,如 Willy 机器人,您必须并行驱动多个电机。有用于此目的的护罩,可以简化组装。

    ESP12E Motor Shield 是兼容 ESP12E Dev Kit 和 NodeMCU 的一款大电流电机驱动模块。模块采用叠插式线路板设计,可以直接接入 ESP12E Dev Kit 或者NodeMCU Lua 模块。
    模块采用意法半导体公司生产的优秀大功率电机专用驱动全桥芯片 L293DD,可直接驱动 2 路直流电机或者 1 路步进电机,驱动电流最大可以达到 1.2A。电路图布局合理、贴片封装、安装十分方便。
    模块使用 ESP12E Dev Kit 的 IO 口作为控制端口,内部配置逻辑芯片完成电机IC 驱动,因此仅仅占用控制板 D1、D2、D3、D4 四个端口,分别作为 PWMA(电机 A 转速)、PWMB(电机 B 转速)、DA(电机 A 方向)、DB(电机 B 方向)功能。
    模块同时引出 VIN、3.3V、DIO、AIO、SDIO、UART、SPI、RST、EN 等多个引
    脚,可以方便地接入各种传感器(温湿度、蜂鸣器、照明、继电器等)。
    模块采用人性化设计方案,使用电源按钮开关,用户可以方便地进行电源开关。

    2. 材料

    电脑
    NodeMCU ESP8266 阿米卡 (V2)
    USB 数据线 A 公头/B 公头
    遮蔽电机 ESP12E
    直流电机 x2 或步进电机 x1

    3. 工作原理

    ESP12E Motor Shield 使用 L293D 双 H 桥。它允许以 5 至 36V 的标称电压和 600mA 的电流驱动电机的方向和速度,使用外部电压源时高达 1.2A:
    此屏蔽允许您使用:

    3.1 板载功能

    • 最多两个直流电机或一个双极步进电机
    • 模拟传感器
    • GPIO
    • I2C、SPI 和 UART 总线
      在这里插入图片描述

    3.2 引脚接口定义图

    在这里插入图片描述

    3.3 产品技术规格

    电源输入:
     电机电源(VM):4.5V~36V,可单独供电;
     控制电源(VIN):4.5V~9V(10VMAX),可单独供电;
     模块提供短路子(短路 VM 和 VIN),可以方便地使用一路电源(必
    须 4.5V~9V)同时完成电机的驱动与控制;
     逻辑工作电流 Iss:≤60mA(Vi=L),≤22mA(Vi=H);
     驱动部分工作电流 Io:≤1.2A;
     最大耗散功率:4W(T=90℃)
     控制信号输入电平:高电平:2.3V≤VIH≤VIN;低电平:-0.3V≤VIL≤1.5V
     工作温度:-25℃~+125℃
     驱动形式:双路大功率 H 桥驱动
     ESP12E Dev Kit 控制端口:D1,D3(A 电机);D2,D4(B 电机)
     模块重量:约 20g

    4. 方案

    与 NodeMCU ESP8266 Amica 板兼容,扩展板直接放在微控制器上。电机的电源连接到 VM/GND 接线盒,电路板的电源连接到 VIN/GND 接线盒。如果电机的电源与 NodeMCU 的电源相同(<10V 最大值),则可以使用桥连接 VIN 和 VM 引脚。电机连接到接线端子 A+、A-、B+、B-。

    • D1、D3(电机 A/步进器 1,2)
    • D2、D4(电机 B / 步进电机 3,4)
    • 可用输入 A0
    • GPIO disponibles sur les broches 0 à 8

    在屏蔽的情况下,连接是预定义的。查看组件的技术文档以了解如何使用它。
    电机连接详见下图。

    4.1 普通马达接线图

    在这里插入图片描述

    注意板载和电机供电时需要跳帽短接VIN和VM

    4.2 42步进电机接线图

    在这里插入图片描述

    5. 相关代码

    5.1 直流电机的管理代码

    要与 ESP12E Motor Shield 交互,我们不使用特定的库。您始终可以创建自己的库来简化代码。

    /*
     		Board pin | NodeMCU GPIO | 	Arduino IDE
     					A- 										1 												5 or D1
     					A+ 										3 												0 or D3
     					B- 										2 												4 or D2
     					B+ 										4 												2 or D4
    */
    const int pwmMotorA = D1;
    const int pwmMotorB = D2;
    const int dirMotorA = D3;
    const int dirMotorB = D4;
    int motorSpeed = 500;
    void setup() {
    	Serial.begin(115200);
    	Serial.println();
    	pinMode(pwmMotorA , OUTPUT);
    	pinMode(pwmMotorB, OUTPUT);
    	pinMode(dirMotorA, OUTPUT);
    	pinMode(dirMotorB, OUTPUT);
    	Serial.println("Motor SHield 12E Initialized");
    	delay(5000);
    }
    void loop() {
    	Serial.println("Activate A");
    	digitalWrite(pwmMotorA, motorSpeed);
    	digitalWrite(dirMotorA, LOW);
    	delay(1500);
    	Serial.println("Reverse A");
    	digitalWrite(dirMotorA, HIGH);
    	delay(1500);
    	Serial.println("Stop A");
    	digitalWrite(pwmMotorA, 0);
    	digitalWrite(dirMotorA, LOW);
    	delay(3000);
    	Serial.println("Activate B");
    	digitalWrite(pwmMotorB, motorSpeed);
    	digitalWrite(dirMotorB, LOW);
    	delay(1500);
    	Serial.println("Reverse B");
    	digitalWrite(dirMotorB, HIGH);
    	delay(1500);
    	Serial.println("Stop B");
    	digitalWrite(pwmMotorB, 0);
    	digitalWrite(dirMotorB, LOW);
    	delay(3000);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    5.2 步进电机管理代码

    要驱动步进电机,必须以精确的顺​​序激活电机线圈。此序列在 nextStep() 函数中进行了描述。

    const int pwmMotorA = D1;
    const int pwmMotorB = D2;
    const int dirMotorA = D3;
    const int dirMotorB = D4;
    int delayBtwnStep = 3;
    void setup() {
    	Serial.begin ( 115200 );
    	Serial.println();
    	pinMode(pwmMotorA, OUTPUT);
    	pinMode(pwmMotorB, OUTPUT);
    	pinMode(dirMotorA, OUTPUT);
    	pinMode(dirMotorB, OUTPUT);
    	Serial.println("Motor SHield 12E Initialized");
    }
    void loop() {
    	stepperRotate(10, 0);
    	delay(500);
    	stepperRotate(10, 1);
    	delay(500);
    }
    void stepperRotate(int nbStep, int dirStep) {
    	for (int i = 0; i <= nbStep; i++) {
    			if (dirStep == 0) { 	// sens horaire
    					nextStep(i % 4);
    			}
    			if (dirStep == 1) { 	// sens antihoraire
    					nextStep(3 - (i % 4));
    			}
    			delay(delayBtwnStep);
    	}
    }
    void nextStep(int index) {
    	if (index == 0) {
    			digitalWrite(pwmMotorA, true);
    			digitalWrite(pwmMotorB, false);
    			digitalWrite(dirMotorA, true);
    			digitalWrite(dirMotorB, false);
    	}
    	if (index == 1) {
    			digitalWrite(pwmMotorA, false);
    			digitalWrite(pwmMotorB, true);
    			digitalWrite(dirMotorA, true);
    			digitalWrite(dirMotorB, false);
    	}
    	if (index == 2) {
    			digitalWrite(pwmMotorA, false);
    			digitalWrite(pwmMotorB, true);
    			digitalWrite(dirMotorA, false);
    			digitalWrite(dirMotorB, true);
    	}
    	if (index == 3) {
    			digitalWrite(pwmMotorA, true);
    			digitalWrite(pwmMotorB, false);
    			digitalWrite(dirMotorA, false);
    			digitalWrite(dirMotorB, true);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

    6. 应用

    通过 WiFi 连接控制像 Willy 这样的两轮机器人

    7. 来源

    使用 Arduino 编程 NodeMCU ESP8266
    L293D模块的数据表

  • 相关阅读:
    分布式合集
    SpringBoot整合RabbitMQ,实现单机抢票系统
    CP AUTOSAR标准之COM(AUTOSAR_CP_SWS_COM)(更新中……)
    【基于Thread多线程+随机数(Random)+java版本JDBC手动提交事务+EasyExcel读取excel文件,向数据库生成百万级别模拟数据】
    设置GridView单选
    Android AlarmManager定时器设置
    【学习总结】NoSQL重点归纳
    C++模板编程(10)---更深入的基础技术:模板参数(Template Parameter)
    如何在Python中使用十进制模块
    《动手学深度学习 Pytorch版》 9.8 束搜索
  • 原文地址:https://blog.csdn.net/vor234/article/details/127952117