Marlin固件之—:基础入门与測试
一、Marlin的简介
Marlin固件是一个3D打印的开源固件,3D打印固件有很多,Marlin最为健全和强大,当然相对也会复杂一些。使用Gcode控制爱。Gcode是数控机床等工控控制使用范围较广的一种指令协议。
在这里介绍一些Marlin的入门经验。
Marlin固件的下载地址:https://github.com/MarlinFirmware/Marlin
Marlin配置与软件具体解释:
http://www.slideshare.net/roboard/3d-printer-marlin
Gcode解读:http://www.3ddayin.net/3ddayinjiceping/1141_2.html
RepRap网址:http://reprap.org/wiki/RepRap_Options#Slicing_Software
二、Marlin的配置
我使用的是MKS BASE开发板。arduino2560,简单罗列一下我觉得比較重要的固件配置:
Marlin固件的基本配置:Configuration.h
#define SERIAL_PORT 0 //串口号
#define BAUDRATE 250000 //波特率
#define MOTHERBOARD BOARD_RAMPS_13_EFB //板级型号
#define CUSTOM_MENDEL_NAME "UARMBOT" //液晶屏显示内容
#define EXTRUDERS 1 //挤出头个数
#define TEMP_SENSOR_0 1 //挤出头1,温度传感器型号
#define TEMP_SENSOR_1 0 //没有则为0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_BED 0
#define HEATER_0_MINTEMP 5 //喷嘴1的最低温度
#define HEATER_1_MINTEMP 5
#define HEATER_2_MINTEMP 5
#define BED_MINTEMP 5
#define HEATER_0_MAXTEMP 50 //喷嘴1的最高温度
#define HEATER_1_MAXTEMP 50
#define HEATER_2_MAXTEMP 50
#define BED_MAXTEMP 50
#define DISABLE_X false //失能某一个轴
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false
#define DISABLE_INACTIVE_EXTRUDERtrue
#define INVERT_X_DIR false //转动方向
#define INVERT_Y_DIR false
#define INVERT_Z_DIR false
#define INVERT_E0_DIR false
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define X_HOME_DIR 1 //home的方向和起始位置:1=MAX, -1=MIN
#define Y_HOME_DIR 1 //可是MANUAL_HOME_POSITIONS定义之后起始位置就能够自己设定
#define Z_HOME_DIR 1
#define X_MAX_POS 500 //xyz的最大最小值
#define X_MIN_POS -500
#define Y_MAX_POS 500
#define Y_MIN_POS -500
#define Z_MAX_POS 500
#define Z_MIN_POS -500
#define MANUAL_X_HOME_POS 0 //home的起始坐标,须要宏定义
MANUAL_HOME_POSITIONS
#define MANUAL_Y_HOME_POS 0
#define MANUAL_Z_HOME_POS 0
#define NUM_AXIS 4 //轴的数量和回home时的速度
#define HOMING_FEEDRATE {5*600, 5*600,5*600, 0}
//单位1mm距离所相应的脉冲数,移动1mm的step数
#define DEFAULT_AXIS_STEPS_PER_UNIT {50.0,50.0,50.0,192.59924}
#define DEFAULT_MAX_FEEDRATE {5000, 5000, 5000,5000} //最大速度(mm/sec)
#define DEFAULT_MAX_ACCELERATION {9000,9000,9000,9000} //最大加速度
#define DEFAULT_ACCELERATION 1000 //默认的打印加速度
#define DEFAULT_RETRACT_ACCELERATION 1000 //默认的收缩加速度
//单次最大加速度的速度,小则打的细腻可是慢。大则粗糙但快
#define DEFAULT_XYJERK 200.0 // (mm/sec)
#define DEFAULT_ZJERK 200.0 // (mm/sec)
#define DEFAULT_EJERK 200.0 // (mm/sec)
三、Marlin特殊机械结构的坐标计算
由于我调试的机械是一个三轴的机械臂,我的calculate_delta也是自己计算的
voidcalculate_delta(float cartesian[3])
{
double _stretch =sqrt(sq(cartesian[Y_AXIS]+lenght_oright_to_home+lenght_center_to_origin)+sq(cartesian[X_AXIS]))-lenght_center_to_origin;
double _height = cartesian[Z_AXIS]+height_oright_to_home;
double xx =_stretch*_stretch+_height*_height;
double xxx=ARM_B2-ARM_A2+xx;
double angleB=acos((_stretch*xxx+_height*sqrt(4.0*ARM_B2*xx-xxx*xxx))/(xx*2.0*ARM_B))*RAD_TO_DEG;
xxx=ARM_A2-ARM_B2+xx;
double angleA=acos((_stretch*xxx-_height*sqrt(4.0*ARM_A2*xx-xxx*xxx))/(xx*2.0*ARM_A))*RAD_TO_DEG;
delta[X_AXIS]=atan(cartesian[X_AXIS]/(cartesian[Y_AXIS]+lenght_oright_to_home+lenght_center_to_origin))*RAD_TO_DEG;// 21是圆心到原点的Y轴偏移
delta[Y_AXIS] =(angleA - angle_lower_arm); delta[Z_AXIS]=(angleB - angle_upper_arm) ;
//将角度转换为脉冲数
delta[X_AXIS] *= pulse_UNIT_angle;
delta[Y_AXIS] *= pulse_UNIT_angle;
delta[Z_AXIS] *= pulse_UNIT_angle;
}
四、測试例如以下:
1、首先在网上下载一些简笔图画或者自己在电脑的画画板写上字。保证背景纯白色(图像处理的简单一些)
2、使用b2g软件生成Gcode代码,然后使用文本打开Gcode,手动调整一下Gcode的写字画画的高度和速度。
3、使用pronterface软件与机械臂相连并发送生成的Gcode。
4、效果图:图上的文字和图片都是机械臂画出来的
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Marlin固件之—:基础入门与測试的更多相关文章
- Mahout学习之Mahout简单介绍、安装、配置、入门程序測试
一.Mahout简单介绍 查了Mahout的中文意思--驭象的人,再看看Mahout的logo,好吧,想和小黄象happy地玩耍,得顺便陪陪这位驭象人耍耍了... 附logo: (就是他,骑在象头上的 ...
- 做QA的日子——iOS測试入门(四)
坦言,做QA的这半年我没有成长,就算有成长也非常少,我非常难过.和身边的人讲事实上并没有谁能真正理解自己的难过,事实上还是自己不够努力.对自己不够狠,以前认为自己不够幸运,想有一个更好的指路人,事实上 ...
- LoadRunner使用入门 进行Webservice负载測试
1.什么是LoadRunner LoadRunner是HP公司的一款付费工具,该工具是一种预測系统行为和性能的负载測试工具. 通过模拟上千万用户实施并发负载来确认和查找问题. 2.什么是负载測试 通过 ...
- Tensorflow MNIST 数据集測试代码入门
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50614444 測试代码已上传至GitH ...
- 在Eclipse中使用JUnit4进行单元測试(0基础篇)
本文绝大部分内容引自这篇文章: http://www.devx.com/Java/Article/31983/0/page/1 我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能 ...
- [WebGL入门]十九,遮挡剔除和深度測试
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:],另外.鄙人webgl研究还不够深入,一些专业词语,假设翻译有误.欢迎大家指 ...
- [单元測试]_[VC2010使用gtest单元測试入门]
场景: 1. gtest作为C++的单元測试工具非常优秀了,它集成了非常多标准assert所没有的功能,比方让流程继续运行的EXPECT,仅仅測试特定測试用例的--gtest_filter, 输出xm ...
- UIAutomation使用測试入门
自己主动化測试的优点: 1.自己主动化能够自己主动測试,不须要人的干预.同一时候还能够不断地反复某一个动作. 2.自己主动化測试在添加了新的功能之后.还能够回归到原理的功能,使其原来的功能不会受到影响 ...
- 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践
这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...
随机推荐
- nginx进程属主问题讨论
文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6107096.html 转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点,如 ...
- [HNOI2010]CHORUS 合唱队 (区间DP)
题目描述 对于一个包含 NN 个整数的数列 AA ,我们可以把它的所有元素加入一个双头队列 BB . 首先 A1A1 作为队列的唯一元素,然后依次加入 A2∼ANA2∼AN ,如果 Ai<Ai− ...
- 大逃杀(树上dp)
这道题和宝藏差不多吧,转移的时候比较麻烦的. 代码中分量很多种情况. h更新比较麻烦 这两幅图表示了双边更新中3,4连个h更新,下面比较好理解的吧. #include<cstring> # ...
- Log4j2同步异步性能比较以及教程和问题(坑)汇总
线程数:500个 每个线程日志输出次数: 500次 log4j2其实有两个输出异步日志的方式:AsyncLogger和AsyncAppend 他两的区别在于: AsyncLogger使用的是无锁高 ...
- shell按日期自动切割nginx日志脚本
shell按日期自动切割nginx日志脚本 参考:自学it网 http://www.zixue.it/. #nginx日志切割脚本 #author:ce #!/bin/bash #设置日志文件存放目录 ...
- laravel的视图
//输出视图 //建立控制器方法public function hello_test(){ return view('member/hello_test',['name'=>'张三','age' ...
- android Paint属性
** * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本和图形 ...
- 搭建Redis环境以及所遇问题(CentOS7+Redis 3.2.8)
一.安装步骤 1. 首先需要安装gcc,把下载好的redis-3.2.8-rc2.tar.gz 放到/usr/local文件夹下 2. 进行解压 tar -zxvf redis-3.2.8-rc2.t ...
- LR(1)文法分析器 //c++ 实现
1.先读入终结符,非终结符,和所有产生式. 2.预处理:初始化:getpp()获得每个非终结符在产生式左边时的产生式编号, 记录在 string getp[]中(可以多个). 3.获得所有的符号的fi ...
- 关于错误Access Violation和too many consecutive exceptions 解决方法
关于错误Access Violation和too many consecutive exceptions 解决方法 “如果DLL中用到了DELPHI的string类型,则DLL和主程序中都需要加上Sh ...