有必要发一个博客,这几天做实验没啥进展,烦。写东西清理思路,整理思维。
这篇博文为了交流,为两种读者,第一种是做3d打印机想要给机器增加5个挤出机的人,第二种是遇到运动控制任务但不想浪费时间从底层写起的开发者。文章如果出现错误和偏差请留言,我会改正,谢谢。
如果按照我的方式进行配置,基于mega2560+ramps1.4的微控制器将有以下运动控制功能
其一,四轴联动功能,比如通过串口调试助手向板子发送“G1 X10 Y10 Z10 E100 F200” 主控所控制的xyze电机就会同时以一定速度用直线往一个地方走。其中G1的意义为直线插补,在xyz想要走出一条曲线是,总是要用多个直线去拟合为一个曲线,拟合次数越大,分辨率也就越大,相应的G代码的数量也就越多。F后面的数值指定了速度,越大越快。联动功能意味着在笛卡尔坐标系中的任意两点之间可以直线运动,不用浪费时间走直角。
![âlinear interpolationâçå¾çæç´¢ç»æ](http://private.codecogs.com/users/1/linear-378.png)
如上图,不同分辨率的插补
其二,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个挤出机这一特性)
![](https://img-blog.csdnimg.cn/20181102114445777.png)
拓展板配置,ramps1.4/1.5都是填“-14-EFF”.只有一个挤出头。继续。。。
![](https://img-blog.csdnimg.cn/20181102114707230.png)
挤出机数量填5,往下继续
![](https://img-blog.csdnimg.cn/20181102114814532.png)
这句前面的“//”去掉使其生效
以上配置的意思是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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)