我们不仅销售产品,我们还传播知识
商品分类

Arduino CNC Shield v3 初探

特殊时期,呆着家里收拾,发现了陈年的Arduino CNC Shield v3。
16年买的中国山寨板,一直放灰到今日

在论坛里也没搜到有关帖子,于是整理至此
这不是一篇具体的应用,只是对于自己初次尝试CNC盾板的一个记录

模块简介
Arduino CNC Shield v3

CNC Shield V3.0可用作雕刻机,3D打印机等的驱动扩展板,板上一共有4路步进电机驱动模块的插槽,可驱动4路不进电机,而每一路步进电机都只需要2个IO口,也就是说,6个IO口就可以很好的管理3个步进电机,使用起来非常的方便,告别传统步进电机操作繁琐。将Arduino CNC Shield V3.0插到Arduino UNO上,并且安装GRBL固件就可以快速DIY一台CNC雕刻机出来。

材料清单

1、Arduino或兼容主控(例如:芒果,带USB下载线)
2、Arduino CNC Shield v3盾板
3、Reprap Stepper Driver 步进电机驱动器 A4988(国产,散热片可选,网上有绿板和红板基本一样,都是1A的)
4、步进电机(工作电流小于1A,受限于A4988)
5、12V开关电源(大于2A,实验用2A带动2个1A步进电机没问题,实际项目需根据硬件配置增大电流容量)
6、DC转接头(便于连接电源和CNC盾板)

实验步骤
1、先将Arduino CNC Shield v3盾板插入Arduino主控,并连接DC转换头(注意电源正负标识)

2、插上1个A4988电机驱动,和1个步进电机。注意接口插头方向!
这里右侧4P排针实际从上到下的顺序是2B、2A、1A、1B,与盾板标注的不符(标注为其他型号)
步进电机的线序要和端子的对上!然后盾板接上12V电源

3、先按照卖家的样例程序测试一下,

#define EN        8       //步进电机使能端,低电平有效
#define X_DIR     5       //X轴 步进电机方向控制
#define Y_DIR     6       //y轴 步进电机方向控制
#define Z_DIR     7       //z轴 步进电机方向控制
#define X_STP     2       //x轴 步进控制
#define Y_STP     3       //y轴 步进控制
#define Z_STP     4       //z轴 步进控制
/*
 //函数:step    功能:控制步进电机方向,步数。
 //参数:dir 方向控制, dirPin对应步进电机的DIR引脚,stepperPin 对应步进电机的step引脚, steps 步进的步数
 //无返回值
 */

void step(boolean dir, byte dirPin, byte stepperPin, int steps)
{
  digitalWrite(dirPin, dir);
  delay(50);
  for (int i = 0; i < steps; i++) {
    digitalWrite(stepperPin, HIGH);
    delayMicroseconds(800);  
    digitalWrite(stepperPin, LOW);
    delayMicroseconds(800);  
  }
}

void setup(){//将步进电机用到的IO管脚设置成输出
  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(EN, OUTPUT);
  digitalWrite(EN, LOW);
}

void loop(){
  step(false, X_DIR, X_STP, 200); //X轴电机 反转1圈,200步为一圈
  step(false, Y_DIR, Y_STP, 200); //y轴电机 反转1圈,200步为一圈
  step(false, Z_DIR, Z_STP, 200); //z轴电机 反转1圈,200步为一圈
  delay(1000);
  step(true, X_DIR, X_STP, 200); //X轴电机 正转1圈,200步为一圈
  step(true, Y_DIR, Y_STP, 200); //y轴电机 正转1圈,200步为一圈
  step(true, Z_DIR, Z_STP, 200); //z轴电机 正转1圈,200步为一圈
  delay(1000);
}

编译和下载成功,但是步进电机纹丝没动。。。。。

好坑。。。经过一系列的排查后,发现USB插座和盾板的焊点短路了。。。
还好没烧板子,用红色胶布做了个隔离,步进电机就转起来了。
然后红色旗子会转来转去,大家脑补一下吧。

我尝试拔掉USB供电,发现不行。因为盾板是独立供电,没有给Arduino供电。盾板的VIN插针是悬空的!
所以最好用两路独立电源分别给主控和盾板供电,也是为了降低干扰。
顺便看了下Arduino自带的步进电机库,发现不支持这个驱动模块,只支持L293一类的驱动

4、然后下载GRBL库,并放入Arduino库文件夹下
..\\arduino-1.0.3\libraries\grblmain

5、打开GRBL样例程序

6、选择UNO和串口,并下载

7、下载GrblController
https://osoyoo.com/driver/GrblController361Setup.exe

8、安装并打开软件GrblController
在Port Name选择之前下载Arduino的端口号,确认波特率选择为9600,点击”Open”连接。
如果与Arduino UNO连接成功,”Open”会变成“Close/Reset”,背景为红色。然后就可以通过面板上的箭头控制步进电机了

关于界面操作请参考下面链接里的51hei那个,已经很详细了。
唯一需要注意的是下面这三个黄色标记的机械参数

它们的含义是步进电机带动滑块运动1mm控制器需要给出的脉冲个数。
公式如下   参数=((360/步进电机步距角)X驱动器选择细分数)/丝杆的螺距,例如下面这个步距角就是1.8度

这里顺便说下CNC盾板的针脚配置

MS0 , MS1 , MS2 跳线说明:(默认低电平,悬空或接地线,使用全步进模式)
表中分别是全步进,1/2步进,1/4步进,1/8步进,1/16步进模式。
例如本步进电机走一步是1.8度,一圈就是200步。如果使用1/16步进,则需要走3200步才等于一圈。
追求精度就细分,追求速度就全步进!
我做了个实验,当用跳帽设置成不同的细分后,在GrblController中点动轴,所移动的距离也是成比例缩放的。
例如下图X轴采用了1/8细分,在软件中点击轴移动的距离会是不用跳帽的Y轴的1/8

我还没做过实际的应用,也就下面一个实验视频。今天记录就到这里。

发表回复

登录后才能评论
微信群
微信群
联系我们

联系我们

微信:13823392571

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息

微信客服
微信客服
分享本页
返回顶部