驴友花雕 发表于 2024-7-23 16:17:25

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

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

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





驴友花雕 发表于 2024-7-26 14:57:07

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

【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号电机运行
}


驴友花雕 发表于 2024-7-25 07:27:43

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

本帖最后由 驴友花雕 于 2024-7-25 07:30 编辑

项目实验之三:使用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号电机运行
}



驴友花雕 发表于 2024-7-25 18:00:37

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

【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);
}


驴友花雕 发表于 2024-7-23 16:24:23

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

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

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



驴友花雕 发表于 2024-7-23 16:36:48

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

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



驴友花雕 发表于 2024-7-23 16:38:42

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

技术规格
品牌: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 克




驴友花雕 发表于 2024-7-23 16:44:57

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

模块电原理图



驴友花雕 发表于 2024-7-23 16:49:06

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

模块端口





驴友花雕 发表于 2024-7-23 16:50:13

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块



驴友花雕 发表于 2024-7-23 16:52:31

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

模块接线图



驴友花雕 发表于 2024-7-23 16:57:12

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

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

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


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

驴友花雕 发表于 2024-7-23 17:00:48

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块


驴友花雕 发表于 2024-7-23 17:07:12

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块




驴友花雕 发表于 2024-7-23 17:09:51

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

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都能助您一臂之力,将创意转化为现实。





驴友花雕 发表于 2024-7-23 17:16:39

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块






驴友花雕 发表于 2024-7-23 17:18:10

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块



驴友花雕 发表于 2024-7-23 17:22:13

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块




驴友花雕 发表于 2024-7-23 17:23:36

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块






驴友花雕 发表于 2024-7-24 16:57:47

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

软件安装

GRBL库安装

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






驴友花雕 发表于 2024-7-24 18:11:28

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

实验模块接线示意图




驴友花雕 发表于 2024-7-24 18:15:03

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

【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);
}


驴友花雕 发表于 2024-7-24 20:21:04

【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块

实验记录视频

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

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


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



驴友花雕 发表于 2024-7-24 20:24:18

【花雕学编程】项目实验之一:CNC Shield 驱动步进电机...

实验场景图


页: [1] 2 3
查看完整版本: 【花雕学编程】Arduino动手做(224)---CNC Shield V3 拓展模块