使用Marlin1.1.x固件进行多电机控制(4轴联动+5个挤出机)

    有必要发一个博客,这几天做实验没啥进展,烦。写东西清理思路,整理思维。

     这篇博文为了交流,为两种读者,第一种是做3d打印机想要给机器增加5个挤出机的人,第二种是遇到运动控制任务但不想浪费时间从底层写起的开发者。文章如果出现错误和偏差请留言,我会改正,谢谢。

如果按照我的方式进行配置,基于mega2560+ramps1.4的微控制器将有以下运动控制功能

    其一,四轴联动功能,比如通过串口调试助手向板子发送“G1 X10 Y10 Z10 E100 F200”  主控所控制的xyze电机就会同时以一定速度用直线往一个地方走。其中G1的意义为直线插补,在xyz想要走出一条曲线是,总是要用多个直线去拟合为一个曲线,拟合次数越大,分辨率也就越大,相应的G代码的数量也就越多。F后面的数值指定了速度,越大越快。联动功能意味着在笛卡尔坐标系中的任意两点之间可以直线运动,不用浪费时间走直角。

如上图,不同分辨率的插补

其二,E轴切换运动,在代码中E轴如果要挤出1mm,就需要这一句“G1 E1 F200”用200的速度把E轴挤搞到1mm位置上。如此说来,假设有第二个挤出机只要动用“G1 E2 1 F200”是不是就把第二个挤出机挤出1mm了?                                                           噗噗噗,当然不是。启动第二个挤出机要单另拎出来一个“T1”,挤出机的顺序是0、1、2、3、4五个,那么要控制他们之前必须用T+编号来激活,不加编号默认是第一个挤出机。比如,应该第三个挤出电机运动,“T2”换行“G1 E10 F200”。切换运动控制模式节约了主控算力。可以用在很多简单的场合。

 

 

 

    1)准备材料

1.arduino mega2560一块

2.ramps1.4或者ramps1.5一块

3.电源,电机,驱动自备

4.arduino IDE 1.8.x

5.marlin固件 地址https://github.com/MarlinFirmware/Marlin

   2)介绍marlin固件

marlin固件为3D打印运动控制而生,可以同时进行三个温度pid控制,4轴联动控制,5挤出头切换控制。通过arduino的TTL串口通讯,接受G代码,可以轻松的完成复杂任务,自带路径规划和数据缓冲,可以轻易的更改步每毫米脉冲数,波特率。(arduino的串口通讯就是uart串口,如果上位机用python的pyserial包来写,可以衔接的算法和gui真的很多,如果安装在某些小型linux主板上,比如自带python的raspberry pi ,那么就可以很大程度上节约开发时间和机器空间,完成上位机下位机分离,上层逻辑和下层执行统一,对于医疗仪器,小型移液装置来说简直快的不要不要的)

下载固件,装好arduino ide,打开marlin.ino。配置好Configuration.h里面的文件,插上板子上传固件即可。

 

  3)configuration的文件配置重要部分如下(针对5个挤出机这一特性)

使用Marlin1.1.x固件进行多电机控制(4轴联动+5个挤出机)_第1张图片

拓展板配置,ramps1.4/1.5都是填“-14-EFF”.只有一个挤出头。继续。。。

使用Marlin1.1.x固件进行多电机控制(4轴联动+5个挤出机)_第2张图片

挤出机数量填5,往下继续

这句前面的“//”去掉使其生效

以上配置的意思是5个挤出机共用一个加热头,也就是五条线就往一个孔里桶(有点污。。。)某宝上有卖3合一挤出机的。

4)如果只是两个喷头好说,现在需要5个,针脚要重新指定。打开 pins.RAMPS .h这个文件,这里吧所有的步进电机信号的引脚的片选全部删除,按照下列方式复制黏贴

#define X_STEP_PIN         54
#define X_DIR_PIN          55
#define X_ENABLE_PIN       38

#define Y_STEP_PIN         60
#define Y_DIR_PIN          61
#define Y_ENABLE_PIN       56

#define Z_STEP_PIN         46
#define Z_DIR_PIN          48
#define Z_ENABLE_PIN       62

#define E0_STEP_PIN        26
#define E0_DIR_PIN         28
#define E0_ENABLE_PIN      24

#define E1_STEP_PIN        36
#define E1_DIR_PIN         34
#define E1_ENABLE_PIN      30

#define E2_STEP_PIN        40
#define E2_DIR_PIN         63
#define E2_ENABLE_PIN      42


#define E3_STEP_PIN        64
#define E3_DIR_PIN         59
#define E3_ENABLE_PIN      44

#define E4_STEP_PIN        57
#define E4_DIR_PIN         1
#define E4_ENABLE_PIN      58

你可能感兴趣的:(快速硬件开发,marlin固件,3D打印,下位机,运动控制,arduino)