回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(224)---Arduino CNC Shield V3 步进电机拓展模块 简单

头像 驴友花雕 2024.07.23 31 0

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 

实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)

 


b1.jpgb2.jpg

CNC Shield V3.0 是一款多功能扩展板,可让您创建基于 Arduino UNO 控制器(或其模拟)的 CNC 机器(3D 打印机、打标机、雕刻机、铣床、等离子切割机等)。扩展板直接连接到控制器(CNC Shield 插在 Arduino UNO 上)。这种电路板与 A4988、DRV8825 或其类似物的组合可以控制 4 轴(包括设置步进电机的微步进模式)、主轴(主轴激活、主轴方向控制、冷却液供应)以及连接限位开关和控制按钮。要开始运行这样一组电子设备,必须输入GRBL Arduino固件(控制器使用G代码与PC交换信息)。以下软件可用于发送 G 代码:GRBL 控制器、蜡烛、通用 G 代码发送器或类似物。

 

应用:铣床、雕刻机、等离子切割机、打标机、3D打印机、自动化系统等。

 

0000.jpg

模块特征:
A 轴可以复制 X、Y、Z 轴之一或自主工作
兼容 A4988、DRV8825 或同等驱动程序
使用跳线(跳线)安装电机的微步
能够连接外部驱动程序
电路板上有用于连接的焊盘:紧急停止按钮、暂停按钮、继续按钮、返回起始位置的按钮、限位开关、主轴开启、主轴旋转方向和冷却液供应
兼容 GRBL:v0.6b、v0.7d、v0.8c、v0.9g
易用性
紧凑型设计
低成本

 

000-6.jpg

技术规格
品牌:Protoneer
型:CNC扩展板
版本: 3.0
控制轴数:4(X、Y、Z、A)
兼容控制板:Arduino UNO 或同等产品
兼容驱动程序:A4988、5 或同等产品A4988,
微步调整:现在
主轴控制:存在
逻辑器件电源电压:5
电源电压:12-36V
接口:UART、I2C
控制器固件:GRBL:v0.6b、v0.7d、v0.8c、v0.9g
尺寸:68x52.5x18.5 mm
重量: 31 克

 

000-9-.jpg

模块电原理图
 

000-2.jpg

模块端口

000.jpeg
000-.jpg
000-8.jpg
000-10.jpg

模块接线图
 

000-0.jpg

视频:简单易懂的cnc shield V3.0 使用教程(3分35秒)


https://www.bilibili.com/video/BV1P4411F71c/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

 

0.jpg

11.jpg

0-0.jpg

Arduino CNC 电机扩展板概述
CNC是计算机数字控制(Computerized Numerical Control )的英文缩写。顾名思义,Arduino CNC电机扩展板常用于驱动3D打印机、机械臂或机器人系统中的NEMA17电机(俗称42步进电机)。假如您想要用Arduino扩展板来驱动直流电机或28BYJ-48步进电机,推荐使用AFMotor电机扩展板。CNC扩展板可以支持A4988、DRV8825等步进电机驱动板。

 

精心设计的CNC解决方案,采用Arduino CNC Shield V3.0步进电机扩展模块(支持四轴驱动),为您的DIY项目提供无限可能。无论是打造个性化的雕刻机、创新的3D打印机、智能的写字机、艺术化的画蛋机、精密的微型铣钻床、灵活的多轴机械臂,还是多功能的轮式机器人,这款模块都能满足您的需求。

 

它不仅简化了复杂的机械控制过程,更以其卓越的性能和可靠性,成为您创意实现的强大助手。无论是初学者还是资深爱好者,Arduino CNC Shield V3.0都能助您一臂之力,将创意转化为现实。

 

a7.jpg

a1.jpeg

a2.jpg
a5.jpg
a9.jpg

a4.jpg
a6.jpg

0-1.jpg
03.jpg
04.png
06.png
07.jpg

软件安装

GRBL库安装

打开:https://github.com/,搜索:GRBL

 

00.jpg
01.jpg


下载并解压grblmain.zip,放到Arduino IDE安装目录的libraries文件夹中。

 

实验模块接线示意图

 

a1.jpeg
a7.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之一:CNC Shield  驱动一只步进电机Y实现往复旋转

实验开源代码
 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
  项目实验之一:CNC Shield  驱动一只步进电机Y实现往复旋转
*/

//本程序使用AccelStepper库
#include <AccelStepper.h>

// 定义电机控制用常量

// A4988连接Arduino引脚号
// Y方向控制引脚
const int xdirPin = 6;
// Y步进控制引脚
const int xstepPin = 3;
// 全局通用使能控制引脚
const int xenablePin = 8;

//运行步数200(往复旋转一圈)
const int moveSteps = 200;

//建立步进电机对象
AccelStepper stepper1(1, xstepPin, xdirPin);

void setup() {
  // Arduino控制A4988步进引脚为输出模式
  pinMode(xstepPin, OUTPUT);
  // Arduino控制A4988方向引脚为输出模式
  pinMode(xdirPin, OUTPUT);
  // Arduino控制A4988使能引脚为输出模式
  pinMode(xenablePin, OUTPUT);
  // 将使能控制引脚设置为低电平从而让
  digitalWrite(xenablePin, LOW);

  // 电机驱动板进入工作状态

  // 设置电机最大速度300
  stepper1.setMaxSpeed(300.0);
  // 设置电机加速度20.0
  stepper1.setAcceleration(20.0);
}

void loop() {
  // 控制步进电机往复运动
  if ( stepper1.currentPosition() == 0 ) {
    stepper1.moveTo(moveSteps);
  } else if ( stepper1.currentPosition() == moveSteps  ) {
    stepper1.moveTo(0);
  }

  // 控制Y电机运行
  stepper1.run();
  delay(6);
}

实验记录视频

 

【花雕学编程】项目实验之一:CNC Shield  驱动一只步进电机Y实现往复旋转

 

https://www.bilibili.com/video/BV1XCeUeqEFk/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

实验场景图

 

03.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之二:使用CNC Shield 驱动二只步进电机X与Y实现往复旋转

实验开源代码
 

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
  项目实验之二:使用CNC Shield 驱动二只步进电机X与Y实现往复旋转
*/

// 定义引脚
const int StepX = 2;
const int DirX = 5;
const int StepY = 3;
const int DirY = 6;
const int StepZ = 4; //未接入电机
const int DirZ = 7;  //未接入电机

void setup() {
  pinMode(StepX,OUTPUT);
  pinMode(DirX,OUTPUT);
  pinMode(StepY,OUTPUT);
  pinMode(DirY,OUTPUT);
  pinMode(StepZ,OUTPUT);
  pinMode( DirZ,OUTPUT);
}

void loop() {
 digitalWrite(DirX, HIGH); //设置方向,HIGH表示顺时针,LOW表示逆时针
 digitalWrite(DirY, HIGH);
 digitalWrite(DirZ, HIGH);
 
 for(int x = 0; x<200; x++) { //循环200步
  digitalWrite(StepX,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepX,LOW); 
  delayMicroseconds(500);
 }
delay(1000); //延迟1秒

for(int x = 0; x<200; x++) { //循环200步
  digitalWrite(StepY,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepY,LOW); 
  delayMicroseconds(500);
 }
delay(1000); //延迟1秒

for(int x = 0; x<200; x++) { //循环200步
  digitalWrite(StepZ,HIGH);
  delayMicroseconds(500);
  digitalWrite(StepZ,LOW); 
  delayMicroseconds(500);
 }
delay(1); //延迟1秒
}

实验模块接线示意图

 

a2.jpg
a9.jpg

实验场景图

 

05.jpg

实验记录视频

 

【花雕学编程】项目实验之二:使用CNC Shield 驱动二只步进电机X与Y实现往复旋转

 

https://www.bilibili.com/video/BV1DXeDeuEbZ/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之三:使用AccelStepper库驱动三只步进电机X、Y与Z 实现循环各个旋转

 实验模块接线示意图
 

a4.jpg
a6.jpg

项目实验之三:使用AccelStepper库驱动三只步进电机X、Y与Z 实现循环各个旋转

实验开源代码
 

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
  项目实验之三:使用AccelStepper库驱动三只步进电机X、Y与Z 实现往复旋转
*/

//本程序使用AccelStepper库
#include <AccelStepper.h>

// 定义电机控制用常量
const int enablePin = 8;  // 使能控制引脚

const int xdirPin = 5;     // x方向控制引脚
const int xstepPin = 2;    // x步进控制引脚
const int ydirPin = 6;     // y方向控制引脚
const int ystepPin = 3;    // y步进控制引脚
const int zdirPin = 7;     // z方向控制引脚
const int zstepPin = 4;    // z步进控制引脚

const int moveSteps = 300;    //测试电机运行使用的运行步数

AccelStepper stepper1(1, xstepPin, xdirPin); //建立步进电机对象1
AccelStepper stepper2(1, ystepPin, ydirPin); //建立步进电机对象2
AccelStepper stepper3(1, zstepPin, zdirPin); //建立步进电机对象3

void setup() {
  pinMode(xstepPin, OUTPUT);    // Arduino控制A4988x步进引脚为输出模式
  pinMode(xdirPin, OUTPUT);     // Arduino控制A4988x方向引脚为输出模式
  pinMode(ystepPin, OUTPUT);    // Arduino控制A4988y步进引脚为输出模式
  pinMode(ydirPin, OUTPUT);     // Arduino控制A4988y方向引脚为输出模式
  pinMode(zstepPin, OUTPUT);    // Arduino控制A4988z步进引脚为输出模式
  pinMode(zdirPin, OUTPUT);     // Arduino控制A4988z方向引脚为输出模式

  pinMode(enablePin, OUTPUT);  // Arduino控制A4988使能引脚为输出模式
  digitalWrite(enablePin, LOW); // 将使能控制引脚设置为低电平从而让

  // 电机驱动板进入工作状态
  stepper1.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper1.setAcceleration(20.0);  // 设置电机加速度20.0
  stepper2.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper2.setAcceleration(20.0);  // 设置电机加速度20.0
  stepper3.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper3.setAcceleration(20.0);  // 设置电机加速度20.0
}

void loop() {
  // 控制步进电机1往复运动
  if ( stepper1.currentPosition() == 0 ) {
    stepper1.moveTo(moveSteps);
  } else if ( stepper1.currentPosition() == moveSteps  ) {
    stepper1.moveTo(0);
  }

  // 控制步进电机2往复运动
  if ( stepper2.currentPosition() == 0 ) {
    stepper2.moveTo(moveSteps / 2);
  } else if ( stepper2.currentPosition() == moveSteps / 2  ) {
    stepper2.moveTo(0);
  }

  // 控制步进电机3往复运动
  if ( stepper3.currentPosition() == 0 ) {
    stepper3.moveTo(moveSteps / 4);
  } else if ( stepper3.currentPosition() == moveSteps / 4  ) {
    stepper3.moveTo(0);
  }

  stepper1.run();   // 1号电机运行
  stepper2.run();   // 2号电机运行
  stepper3.run();   // 3号电机运行
}

实验记录视频

 

【花雕动手做】实验三:使用AccelStepper库驱动三只步进电机X、Y与Z 实现往复旋转

 

https://www.bilibili.com/video/BV154e9e9ED5/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987


实验场景图

 

04.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之四:无库控制三只步进电机X、Y与Z 实现动态旋转

实验开源代码

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
   项目实验之四:无库控制三只步进电机X、Y与Z 实现动态旋转
*/

// 定义引脚
const int StepX = 2;
const int DirX = 5;
const int StepY = 3;
const int DirY = 6;
const int StepZ = 4;
const int DirZ = 7;

void setup() {
  pinMode(StepX, OUTPUT);
  pinMode(DirX, OUTPUT);
  pinMode(StepY, OUTPUT);
  pinMode(DirY, OUTPUT);
  pinMode(StepZ, OUTPUT);
  pinMode( DirZ, OUTPUT);
}

void loop() {
  //设置方向,HIGH表示顺时针,LOW表示逆时针
  digitalWrite(DirX, HIGH);
  digitalWrite(DirY, HIGH);
  digitalWrite(DirZ, HIGH);

  //循环300步
  for (int x = 0; x < 300; x++) {
    digitalWrite(StepX, HIGH);
    delayMicroseconds(500);
    digitalWrite(StepX, LOW);
    delayMicroseconds(500);
  }
  delay(500); //延迟0.5秒

  //循环300步
  for (int x = 0; x < 300; x++) {
    digitalWrite(StepY, HIGH);
    delayMicroseconds(500);
    digitalWrite(StepY, LOW);
    delayMicroseconds(500);
  }
  delay(500); //延迟0.5秒

  //循环200步
  for (int x = 0; x < 200; x++) {
    digitalWrite(StepZ, HIGH);
    delayMicroseconds(500);
    digitalWrite(StepZ, LOW);
    delayMicroseconds(500);
  }
  delay(500); //延迟0.5秒
}

实验记录视频

 

【花雕动手做】实验之四:无库控制三只步进电机X、Y与Z 实现动态旋转

 

https://www.bilibili.com/video/BV1uzehe7Eca/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

实验场景图

 

07.jpg

使用端口A驱动电机

 

07-.jpg

端口A的两种工作模式
CNC扩展板的端口A比其它三个端口的功能要更丰富一些。但是使用端口A以前,我们必须先进行一些设置工作,因此很多朋友对如何使用该端口有些不知所措。接下来我将解释如何使用和设置CNC扩展板的端口A来控制步进电机。

端口A有两种工作模式。第一种模式是复制X、Y、Z中任意一个端口上的电机运行情况(以下简称复制模式)。第二种模式是独立模式。

所谓复制模式就是端口A所接的电机完全复制其它端口上的电机运行状态。比如我们将端口A设置为复制端口X,那么端口A电机的运行状况将是完全复制端口X上的电机运行状况。注:在复制模式下,端口A电机不受Arduino开发板的程序控制而只是单纯的复制端口X电机运行。

 

07--.jpg

除了复制模式外,端口A也可以独立模式来控制电机。这时端口A上的电机才会根据Arduino的程序控制运行。注意:在独立模式下,端口A上安装的A4988驱动板的step引脚是由Arduino的D12引脚所控制。dir引脚是由Arduino的D13引脚所控制。

设置端口A的工作模式。以上两种模式的设置是通过扩展板上专门用于设置端口A工作模式的一系列插针来完成的,如下图所示。

 

08.jpg

07---.jpg

驱动4个NEMA步进电机(42步进电机)电路连接示意图
 

0-1.jpg
01.jpg
03.jpg
07.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之五:无库控制四只步进电机X、Y、Z与A轴实现动态旋转

实验开源代码
 

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
  项目实验之五:无库控制四只步进电机X、Y、Z与A轴实现动态旋转
*/

#define EN        8
//方向接脚
#define X_DIR     5
#define Y_DIR     6
#define Z_DIR     7
#define A_DIR     13

//步态接脚
#define X_STP     2
#define Y_STP     3
#define Z_STP     4
#define A_STP     12

// 运动周期
int steps = 300;

void setup() {
  // 执行输出
  pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
  pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT);
  pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT);
  pinMode(A_DIR, OUTPUT); pinMode(A_STP, OUTPUT);
  pinMode(EN, OUTPUT);
  digitalWrite(EN, LOW);
}

void loop() {
  for (int i = 0; i < steps; i++) {
    digitalWrite(Y_DIR, HIGH);
    digitalWrite(Y_STP, HIGH);
    delay(1);
    digitalWrite(Y_STP, LOW);
    delay(1);
  }
  for (int i = 0; i < steps; i++) {
    digitalWrite(X_DIR, HIGH);
    digitalWrite(X_STP, HIGH);
    delay(1);
    digitalWrite(X_STP, LOW);
    delay(1);
  }
  for (int i = 0; i < steps; i++) {
    digitalWrite(Z_DIR, HIGH);
    digitalWrite(Z_STP, HIGH);
    delay(1);
    digitalWrite(Z_STP, LOW);
    delay(1);
  }
  for (int i = 0; i < steps; i++) {
    digitalWrite(A_DIR, HIGH);
    digitalWrite(A_STP, HIGH);
    delay(1);
    digitalWrite(A_STP, LOW);
    delay(1);
  }
  delay (1000);
}

实验场景图 

 

10.jpg

实验记录视频

 

【花雕动手做】实验之五:无库控制四只步进电机X、Y、Z与A轴实现动态转动#电子爱好者 #单片机开发 #科技改变生活

 

https://www.bilibili.com/video/BV1NPehe3Emf/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987
 

 

说明:电机控制引脚标识
上图中蓝色方框的引脚名称对应的是蓝色引脚插针,黄色方框中的引脚名称对应的是黄色引脚插针。这些引脚的作用是便于我们使用Arduino开发板以外的开发板来控制CNC扩展板。比如您可以使用树莓派或者ESP32等开发板通过这些备用引脚来控制CNC扩展板。

以下是这组引脚的功能。
Arduino引脚 8 ———————– CNC 扩展板 EN  ( 所有电机驱动板使能引脚/低电平有效 )
Arduino引脚 5 ———————– CNC 扩展板 X.DIR ( X端口方向控制引脚)
Arduino引脚 2 ———————– CNC 扩展板 X.STEP ( X端口步进控制引脚)
Arduino引脚 6 ———————– CNC 扩展板 Y.DIR ( Y端口方向控制引脚)
Arduino引脚 3 ———————– CNC 扩展板 Y.STEP ( Y端口步进控制引脚)
Arduino引脚 7 ———————– CNC 扩展板 Z.DIR ( Z端口方向控制引脚)
Arduino引脚 4 ———————– CNC 扩展板 Z.STEP ( Z端口步进控制引脚)
Arduino引脚 13 ——————— CNC 扩展板 A.DIR ( A端口方向控制引脚)
Arduino引脚 12 ——————— CNC 扩展板 A.STEP ( A端口步进控制引脚)
GND:接地
5V: 所有电机驱动板供电引脚(此引脚与各端口上的A4988 VDD引脚联通)

请注意,当使用非Arduino开发板来控制CNC扩展板时,请不要忘记为这里的5V引脚提供电源。这一操作的目的是为了确保各个A4988端口上的驱动板有电源供应。

 

09.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
 项目实验之六:用AccelStepper库控制四只步进电机X、Y、Z与A轴实现不同的转速

实验开源代码
 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十四:Arduino CNC Shield V3 步进电机拓展模块(驱动四只电机)
  项目实验之六:用AccelStepper库控制四只步进电机X、Y、Z与A轴实现不同的转速
*/

#include <AccelStepper.h>  //使用AccelStepper库

// 定义电机控制用常量
const int enablePin = 8;  // 使能控制引脚

const int xdirPin = 5;     // x方向控制引脚
const int xstepPin = 2;    // x步进控制引脚
const int ydirPin = 6;     // y方向控制引脚
const int ystepPin = 3;    // y步进控制引脚
const int zdirPin = 7;     // z方向控制引脚
const int zstepPin = 4;    // z步进控制引脚
const int adirPin = 13;     // a方向控制引脚
const int astepPin = 12;    // a步进控制引脚

const int moveSteps = 1000;    //测试电机运行使用的运行步数

AccelStepper stepper1(1, xstepPin, xdirPin); //建立步进电机对象1
AccelStepper stepper2(1, ystepPin, ydirPin); //建立步进电机对象2
AccelStepper stepper3(1, zstepPin, zdirPin); //建立步进电机对象3
AccelStepper stepper4(1, astepPin, adirPin); //建立步进电机对象4

void setup() {

  pinMode(xstepPin, OUTPUT);    // Arduino控制A4988x步进引脚为输出模式
  pinMode(xdirPin, OUTPUT);     // Arduino控制A4988x方向引脚为输出模式
  pinMode(ystepPin, OUTPUT);    // Arduino控制A4988y步进引脚为输出模式
  pinMode(ydirPin, OUTPUT);     // Arduino控制A4988y方向引脚为输出模式
  pinMode(zstepPin, OUTPUT);    // Arduino控制A4988z步进引脚为输出模式
  pinMode(zdirPin, OUTPUT);     // Arduino控制A4988z方向引脚为输出模式
  pinMode(astepPin, OUTPUT);    // Arduino控制A4988a步进引脚为输出模式
  pinMode(adirPin, OUTPUT);     // Arduino控制A4988a方向引脚为输出模式

  pinMode(enablePin, OUTPUT);  // Arduino控制A4988使能引脚为输出模式
  digitalWrite(enablePin, LOW); // 将使能控制引脚设置为低电平从而让
  // 电机驱动板进入工作状态

  stepper1.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper1.setAcceleration(20.0);  // 设置电机加速度20.0
  stepper2.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper2.setAcceleration(20.0);  // 设置电机加速度20.0
  stepper3.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper3.setAcceleration(20.0);  // 设置电机加速度20.0
  stepper4.setMaxSpeed(300.0);     // 设置电机最大速度300
  stepper4.setAcceleration(20.0);  // 设置电机加速度20.0
}

void loop() {
  // 控制步进电机1往复运动
  if ( stepper1.currentPosition() == 0 ) {
    stepper1.moveTo(moveSteps);
  } else if ( stepper1.currentPosition() == moveSteps  ) {
    stepper1.moveTo(0);
  }

  // 控制步进电机2往复运动
  if ( stepper2.currentPosition() == 0 ) {
    stepper2.moveTo(moveSteps / 2);
  } else if ( stepper2.currentPosition() == moveSteps / 2  ) {
    stepper2.moveTo(0);
  }

  // 控制步进电机3往复运动
  if ( stepper3.currentPosition() == 0 ) {
    stepper3.moveTo(moveSteps / 4);
  } else if ( stepper3.currentPosition() == moveSteps / 4  ) {
    stepper3.moveTo(0);
  }

  // 控制步进电机4往复运动
  if ( stepper4.currentPosition() == 0 ) {
    stepper4.moveTo(moveSteps / 8);
  } else if ( stepper4.currentPosition() == moveSteps / 8  ) {
    stepper4.moveTo(0);
  }

  stepper1.run();   // 1号电机运行
  stepper2.run();   // 2号电机运行
  stepper3.run();   // 3号电机运行
  stepper4.run();   // 3号电机运行
}

实验记录视频

 

【花雕动手做】实验之六:用AccelStepper库控制四只步进电机X、Y、Z与A轴实现不同的转速

 

https://www.bilibili.com/video/BV1AWeze8E9z/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

实验场景图 

 

11.jpg

评论

user-avatar
icon 他的勋章
    展开更多