找回密码
 注册

快捷登录

楼主: stanlyaaa

自己写一个雕刻机程序?

[复制链接]
 楼主| 发表于 2017-5-25 18:24:39 | 显示全部楼层
本帖最后由 stanlyaaa 于 2017-5-25 18:27 编辑
  y+ v# P  {* K4 `
! n/ I5 r1 B3 s1 A3 k/ u2009 年,Simen Svale Skogsrud 受惠于开源社区的贡献编写并向所有人发布了 Grbl 的早期版本(灵感来自于 Mike Ellery 的 Arduino G 代码解释器)。2011 年以来,Grbl 在 Sungeun K. Jeon 博士务实的领导下作为一个社区驱动的开源项目在推进。
, z$ a% B  Y. \Grbl是性能高,成本低,基于并口运动控制,用于CNC雕刻。它可以运行在Vanilla Arduino (Duemillanove/Uno) 只要它配备了Atmega 328型芯片。 控制器由C编写并优化,利用了AVR 芯片的每一个灵巧特性来实现精确时序和异步控制。它可以保持超过30kHz的稳定、无偏差的控制脉冲 它接受标准的G代码而且通过了数个CAM工具的输出测试。弧形、圆形和螺旋的运动都可以像其他一些基本G代码命令一样完美支持。函数和变量目前并不支持,但是会作为预处理器包含在将来发布的版本之中。 Grbl 包含完整的前瞻性加速度控制。它意味着控制器将提前16到20个运动来规划运行速度,以实现平稳的加速和无冲击的转弯。
5 D  Q0 x  i# d
, x# d0 f. _( g0 w4 P
/*
/ R" x& x( V/ A8 r1 @=========================; V( Y! H9 ?3 {7 {. I) f4 j
借鉴一下了3 {! i0 N5 V+ N& y4 [
···
6 B6 C; l/ j9 x=========================' ~) Y+ q# w# Z" X: V5 W4 e
*/
" N8 I( `' P+ e; U4 U
发表于 2017-5-25 18:26:06 | 显示全部楼层
stanlyaaa 发表于 2017-5-25 16:25! X# H7 Z* n0 i3 B2 H  e
1、走直线的(Z轴无变化)比较好理解哦,比如F1000走下去就是,直到不断刀;
+ K9 v' `. O: D& _) P) M# y2、走弧线的 ...
9 _. z2 P5 T4 U
走弧线也可以当作走直线,有些系统压根就不能执行G02 G03之类的圆弧,所以你可以先不虑圆弧插补,只需要直线插补就可以了
% e- [0 b# X3 l( J
发表于 2017-5-25 18:29:10 | 显示全部楼层
stanlyaaa 发表于 2017-5-25 18:08
2 O; z# O$ O/ C- }" Q  K' A7 Z5 e- H好,看看GRBL,是c++写的吗?

- M# L# V9 g, w" _4 ?GRBL是C语言写的 运行平台是AVR  你的思路有问题,GRBL是G代码解析,而你说的的灰度控制步进电机要分两步,先用一个软件转换为G代码 然后再用GRBL控制电机,当然 这是标准的做法,你如果只需要这一个功能可以写一个专用的程序
% S! V. ]) F, k9 b
发表于 2017-5-25 18:30:16 | 显示全部楼层
 楼主| 发表于 2017-5-25 18:34:54 | 显示全部楼层
kenshudemayi 发表于 2017-5-25 18:29
7 N0 X" p+ p: hGRBL是C语言写的 运行平台是AVR  你的思路有问题,GRBL是G代码解析,而你说的的灰度控制步进电机要分两步 ...

( N0 ~& w, y. q7 [  g* V想做到的是这样的:" m" P  {+ {% o% O, ^
1、采集灰度图或者3D软件生成的文件之数据,去生成G代码或者自定义的代码;
4 c5 e: E: t1 ?$ ^( s* U2、基于1中生成的代码去驱动各轴协同工作;2 G5 Q! q  h3 e; {/ m
发表于 2017-5-25 18:39:23 | 显示全部楼层
stanlyaaa 发表于 2017-5-25 18:34" z. i5 N) K( j7 ?9 a/ ^- a
想做到的是这样的:
, S+ l. J: d5 F8 x8 d& E1、采集灰度图或者3D软件生成的文件之数据,去生成G代码或者自定义的代码;' ]; j, H: G/ F3 A* }
2、基 ...

% F& `  g$ F/ ]  B) z" x依我看你没必要生成什么中间文件了 因为G代码只是一种语言,沟通设计者和加工者之间的语言而已,你想要自己用没必要生成成一个所谓的符号,只需要控制硬件出脉冲就可以了
发表于 2017-5-25 18:42:32 | 显示全部楼层
kenshudemayi 发表于 2017-5-25 18:39( c2 ]  d. Z3 [8 s( P( }
依我看你没必要生成什么中间文件了 因为G代码只是一种语言,沟通设计者和加工者之间的语言而已,你想要自 ...

' P) i$ I& o8 s4 b就比如现在的玩具激光雕刻机,导入图片,电击开始,等着就行了" m6 [! R2 T9 \% g, l. c
发表于 2017-5-25 18:47:58 | 显示全部楼层
lhc8552003 发表于 2017-5-24 16:14 % @) K0 O, j: [7 h* e
类似于grblcontrol的开源软件不在少数……这至少能够说明
  U) K/ t: t8 Y- S  q1.开发一个雕刻机的软件的复杂度是个人开发者可以 ...

* s2 J1 k8 I# l& ~* V" v; p  F然而可以实用的来源软件一般都不是一个写的,基本都是一个人写个内核,或者大体框架,然后好多人参与进来在他的主导一块完善优化,解决BUG,增加模块。功能复杂的完善稳定的软件真不是一个人能写的。
. f2 g, J* |/ ~4 {6 g
 楼主| 发表于 2017-5-25 18:54:28 | 显示全部楼层
kenshudemayi 发表于 2017-5-25 18:39
7 u  A! B# q3 L# b% f依我看你没必要生成什么中间文件了 因为G代码只是一种语言,沟通设计者和加工者之间的语言而已,你想要自 ...

) u* D" o0 P3 G灰度图或者3D文件总需要转换成刀路什么的
* x! m3 V7 n" y不生成中间文件的话,如何记录x、y、z等轴的运动信息?
$ E# l% N- X- S/ `5 _: L, y4 t" K, Y( {& B. ?, |& @; Y: G& ]
灰度图或者3D文件  ---->>  中间文件(含有x、y、z等轴运行信息)  ---->> 硬件运行
! b3 B8 `* m1 y% I! F3 }6 \1 N8 [$ j+ @) U- S
灰度图或者3D文件  ---->>  硬件运行  ?0 T7 P$ h- ~4 n
发表于 2017-5-25 19:08:09 | 显示全部楼层
stanlyaaa 发表于 2017-5-25 18:54- _, y: `7 A: e7 g" y. e6 ?
灰度图或者3D文件总需要转换成刀路什么的
! s8 ~+ u5 l7 _7 a& M不生成中间文件的话,如何记录x、y、z等轴的运动信息?
3 e7 _. q0 V. o1 k: _$ y" {5 _0 E
你可以这样想,G代码解释器就是解析G代码然后控制电机,所以你应该设计一个“文件解释器”输入文件控制电机
 楼主| 发表于 2017-5-25 19:10:36 | 显示全部楼层
kenshudemayi 发表于 2017-5-25 19:08/ f2 c* E. j- a# @' X) h. M
你可以这样想,G代码解释器就是解析G代码然后控制电机,所以你应该设计一个“文件解释器”输入文件控制电 ...
1 D; m& z3 q* D1 F, _
嗯,明白您意思6 ]# K. p: r# n3 V; `( G
也需要把源文件生成一组数据,就是您说的文件解释器的功能,是吧?, r) p) ?% V1 A) h) d
发表于 2017-5-25 19:20:04 | 显示全部楼层
stanlyaaa 发表于 2017-5-25 19:10
  o1 d5 a& ~$ v- Z" Q, S嗯,明白您意思9 U5 h% z% ]  S1 u; v
也需要把源文件生成一组数据,就是您说的文件解释器的功能,是吧?

  n3 f! T* \7 I7 L$ R) W. y- H比如激光雕刻机吧,输入灰度图,你的解释器让激光头从上到下从左到右运行,同时去读图片的灰度值,假设你的激光头可以调节功率,就可以在运行的过程中根据灰度的大小去调节激光功率的大小,这样就能画图了; E7 a. g+ U7 b  v' f
发表于 2017-5-25 19:23:08 | 显示全部楼层
当然也可以换种思路,图片就是一个个的像素点,你的激光头依次从一个点到另一个点,根据灰度值调整激光的照射时间也能画图
发表于 2017-5-25 19:25:23 | 显示全部楼层
可以把这些做在一个软件里,然后调用系统IO,和mach3一样控制并口输出脉冲就可以控制步进电机了
 楼主| 发表于 2017-5-25 19:45:15 | 显示全部楼层
本帖最后由 stanlyaaa 于 2017-5-25 19:46 编辑 7 g/ E( k" I& G9 d7 O7 g' f3 D1 E
kenshudemayi 发表于 2017-5-25 19:25$ H" L0 [1 P) R. [% V6 ~
可以把这些做在一个软件里,然后调用系统IO,和mach3一样控制并口输出脉冲就可以控制步进电机了

8 M& Y- W8 g; W$ Z, ?$ B0 a您的思路很有启发。  ~4 [& z; @4 E& ]! W& X# O
xyz等轴协同工作,如要达到一定的精度,对各轴的运行距离与时间应该进行精确控制计算,
* J$ P# t3 K7 I4 sZ轴无动作的时候,比较好理解,匀速就可以了
0 j; i7 h3 S/ X) X% T1 n1 g1 r/ L. o一旦Z轴有动作,比如,有阳纹圆弧或者阴纹圆弧等,估计要打破起始所设定的速度,否则圆弧可能被削平等等问题,
& D: U* O5 f3 I不知说的对不对?! R2 k3 w6 J" r# f& X" x) p3 R

, o9 O, m6 m' [7 ^2 ~/ I8 F% [+ ]7 G) O  M1 g& o  l, ~

- b9 a3 \1 N" t7 ~+ b! ?1 ^4 p. c" o3 E% M& k3 @# |4 d! n
您需要登录后才可以回帖 登录 | 注册

本版积分规则


快速回复 返回顶部 返回列表