D1 R32 – ESP32+Arduino CNC Shield控制步进电机

陈拓 2023/04/01-2023/04/05

1. 简介

在《Arduino Uno开发板+电机驱动扩展版CNC Shield V3.0硬件说明》

https://blog.youkuaiyun.com/chentuo2000/article/details/129851439?spm=1001.2014.3001.5501

一文中我们介绍了CNC Shield V3.0的引脚功能以及和Arduino Uno开发板引脚位置的对应关系。在此基础上,本文我们讲述用D1 R32 – ESP32+Arduino CNC Shield通过A4988步进电机驱动模块控制NEMA17步进电机。

这种步进电机和驱动器的组合适用于许多需要位置控制的应用,如3D打印机、CNC机床、机器人、自动化机床等。

D1 R32 – ESP32+Arduino CNC Shield是一套低成本的组合,特别适合个人DIY。

2. 所需组件及介绍

2.1 ESP32开发板D1 R32

  • D1 R32 – ESP32引脚图

  • D1 R32 – ESP32电路图

这是一块与Arduino UNO开发板外型相似的ESP32开发版。

2.2 Arduino CNC Shield V3.00

这是一块Arduino CNC扩展板,CNC是计算机数字控制(Computerized Numerical Control )的英文缩写。

这块CNC扩展板可以支持A4988、DRV8825等步进电机驱动模块。

重要注意事项!!!

CNC扩展板上右侧上拉A4988 EN引脚的10K电阻必须拆掉,因为EN引脚通过D1 R32 – ESP32开发板连接到ESP32的GPIO12引脚,而GPIO12在启动时必须为低电平。

Arduino CNC扩展板可用于驱动3D打印机、机械臂或机器人系统中的NEMA17电机(俗称42步进电机,因为1.7英寸约等于42mm)。

  • D1 R32 – ESP32开发板 + Arduino CNC Shield V3.00 + A4988组合

2.3 NEMA 17 步进电机

NEMA 17(42)步进电机有多种型号,有不同的功率,它们的安装面都是一样的,不同的是长度,长度越长功率越大,所需的驱动电流也越大。常见的长度有23mm、33mm、38mm、40mm、47mm等。

2.4 用于电机供电的外部12V电源

3. D1 R32 – ESP32开发板引脚与Arduino CNC Shield V00引脚的对应

  • 引脚的对应

Arduino Uno  CNC Shield         D1 R32 - ESP32

D0                  RX                       RX0

D1                  TX                        TX0

D2                  X-STEP                IO26

D3                  Y-STEP                IO25

D4                  Z-STEP                IO17

D5                  X-DIR                   IO16

D6                  Y-DIR                    IO27

D7                  Z-DIR                    IO14

D8                  EN                         IO12 拆掉CNC板子上的10K上拉电阻

D9                  X-、X+                  IO13

D10                Y-、Y+                   IO05

D11                Z-、Z+                   IO23

D12               A-STEP、SpinEn   IO19

D13               A-DIR、SpinDir      IO18

D14                Abort                      IO02

D15                Hold                       IO04

D16                Resume                 IO36

D17                CoolEn                   IO34

D18                SDA                        IO38

D19                SCL                        IO39

  • Arduino UNO参照

4. 软件开发环境

参考《Arduino CLI命令行ESP32开发环境搭建(Linux Ubuntu操作系统)》

https://blog.youkuaiyun.com/chentuo2000/article/details/129472612?spm=1001.2014.3001.5501

5. 测试

5.1 接线

5.2 创建新的sketch

详细操作步骤请看:

https://blog.youkuaiyun.com/chentuo2000/article/details/129472612?spm=1001.2014.3001.5501

  • 进入Arduino CLI目录

cd ~/bin

  • 创建新的sketch

arduino-cli sketch new cnc_a4988

5.3 编写测试代码

  • 进入sketch目录

cd cnc_a4988

  • 编写代码

nano cnc_a4988.ino

const int DIR = 16;
const int STEP = 26;
const int  steps_per_rev = 200;

void setup() {
  Serial.begin(115200);
  pinMode(STEP, OUTPUT);
  pinMode(DIR, OUTPUT);
}

void loop() {
  digitalWrite(DIR, HIGH);
  Serial.println("Spinning Clockwise...");

  for(int i = 0; i<steps_per_rev; i++)
  {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(2000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(2000);
  }
  delay(1000);

  digitalWrite(DIR, LOW);
  Serial.println("Spinning Anti-Clockwise...");

  for(int i = 0; i<steps_per_rev; i++)
  {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(1000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);
}

代码详细说明见:

https://microcontrollerslab.com/stepper-motor-a4988-driver-module-esp32/

  • 编译

arduino-cli compile -besp32:esp32:esp32 cnc_a4988.ino

  • 烧写

arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32:UploadSpeed=115200 cnc_a4988.ino

电机已经动了。

  • 串口查看

arduino-cli monitor -p /dev/ttyUSB0 -c baudrate=115200

参考文档

  1. Stepper Motors and Arduino – The Ultimate Guide
    https://howtomechatronics.com/tutorials/arduino/stepper-motors-and-arduino-the-ultimate-guide/
  2. Control Stepper Motor with A4988 Driver Module and ESP32
    https://microcontrollerslab.com/stepper-motor-a4988-driver-module-esp32/

### 使用 ESP32 控制 CNC 设备 #### 选择合适的硬件和软件组合 为了有效控制 CNC 设备,建议采用 Wemos D1 R32 ESP32 Arduino 开发板配合 CNC Shield v3 控制板。这种配置不仅提供了足够的处理能力,还简化了与步进电机和其他外设的连接[^1]。 #### 安装必要的库文件和支持包 确保安装了支持 ESP32 的最新版本 Arduino IDE 和相关库。对于 GRBL_ESP32 版本的选择,推荐从官方仓库获取最新的稳定分支并按照说明完成编译部署工作[^2]。 #### 编写初始化设置代码 下面是一段简单的初始化代码片段,展示了如何启动基于 ESP32 的 GRBL 系统: ```cpp #include "grbl.h" void setup() { // 初始化GRBL核心模块 grbl_init(); // 设置默认参数(可选) system_set_start_up_line(0); } void loop() { serial_handle(); // 处理串行命令输入 } ``` 这段代码负责调用 `grbl_init()` 函数来准备整个控制系统,并通过 `serial_handle()` 来监听来自上位机或其他源发送过来的 G-code 命令。 #### 实现基本运动指令解析 为了让 ESP32 能够理解并执行标准的G-code语法,需要依赖于已经集成好的 GRBL 解析器。用户只需向串口缓冲区中写入有效的 G-code 字符串即可触发相应的动作。例如移动 X轴 到位置 10mm 可以这样操作: ```cpp Serial.println("G90"); // 绝对定位模式 Serial.println("G0 X10 F500");// 移动X=10, 进给率F=500 ``` 以上两行分别设置了绝对坐标系以及指定了具体的线性插补路径。 #### 添加无线通信功能 (可选) 如果希望进一步增强系统的灵活性,则可以考虑加入蓝牙 SPP 协议的支持。这允许远程设备如智能手机或平板电脑直接发送控制信号至 ESP32。具体实现方式参见其他资料介绍[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨之清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值