开源改变世界

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

推推 grbl 3年前 (2022-10-30) 268次浏览 0个评论
关闭
onekk 打开了这个问题 on 24 Dec 2014 · 29 条评论
关闭

有一些官方项目可以在带有 RAMPS 的 Arduino Mega 上移植 GRBL#561

onekk 打开了这个问题 on 24 Dec 2014 · 29 条评论

注释

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

我在互联网上找到了一些项目,但它们与 GRBL 不太同步,很遗憾没有使用/支持从 reprap 到 CN 使用的广泛且廉价的电子产品。
我知道有更多的项目可以使用它,但努力的碎片化是开源项目的地狱。

问候

卡罗 D. (onekk)

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 on 25 Dec 2014

谢谢,我知道了,但是源代码以一种奇怪的方式修改,与主代码库不太集成。

卡罗 D. (onekk)

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
贡献者

精英工程师 评论 on 25 Dec 2014

目前 GRBL 不正式支持 MEGA,我一直在尽我所能支持 MEGA 并保持 MEGA 代码的完整功能。

GRBL 写入到步进和方向端口非常高效,并使其非常高效,所有步进引脚都在一个端口上,所有方向引脚都在一个端口上。

RAMPS 板的兼容性问题是所有步进和方向引脚几乎都位于随机端口上,以最适合 PCB 的布线。

关于重写代码部分以允许步进引脚和方向引脚位于完全独立的端口(这会降低一些效率但获得兼容性)的谈话正在进行中,这很可能发生在版本 1.0

归根结底,这并不难,但所需的额外代码将超过 UNO 的闪存空间(官方支持的板)

如果我有时间我会调查一下。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

确定会超过flash?如果是这样,那就是错误的方法。
它只需要
在执行某些操作后添加 STEP_PORT ram 变量 (uchar8_t):
STEP_PORT = (STEP_PORT & ~STEP_MASK) | (step_port_invert_mask & STEP_MASK);
update_step_pins(); // 更新引脚,必须在每次使用 STEP_PORT 后添加

在 328 分支上,update_step_pins() 没有操作,因为应该有一个
#define update_step_pins()
而在 mega2560 上,update_step_pins() 在 cpu_map.c
#ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560)中定义@EliteEng
void
update_step_pins() {
STEP_PORT&bit(X_AXIS)?bit_true(X_STEP_PORT,bit(X_STEP_PIN)):bit_false(X_STEP_PORT,bit(X_STEP_PIN));
STEP_PORT&bit(Y_AXIS)?bit_true(Y_STEP_PORT,bit(Y_STEP_PIN)):bit_false(Y_STEP_PORT,bit(Y_STEP_PIN));
//… 其他轴
}
#endif

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

也许不将其命名为 CPU_MAP_ATMEGA2560 ,而是将其命名为 PU_MAP_ATMEGA260_RAMPS_1_4
以免破坏任何东西。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 26 日

这将是一个非常有用的改进,尽管它在市场上很容易买到,例如对于 shapeoko,从美国发货的 gshield 将花费 50 美元加上 50 美元的运费(并且它缺少 Arduino)RAMPS 与 Arduino MEGA 2560,加上 3 个终点站,加上电缆和风扇将花费 80 欧元加上 10 欧元的运费(从西班牙到意大利)(它有 5 个 poulu 驱动程序和一个 Arduino MEGA)。

问候

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

你能写下引脚映射吗,使用斜坡 wiki 上的常量进行引脚分配。
格式为:假设它是 PF4 或 PORTF4 并且没有 invert ,PF4 是错误的假设,就像示例
#define X_STEP_PIN F,4,0
如果引脚应该反转
#define X_STEP_PIN F,4,1

我可以对其进行编码,但无法对其进行测试。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 27 日

是的,我可以写下你的引脚,但我无法测试它,因为我的卡还没有到,让我看看这是否是你想要的?

// 对于 RAMPS 1.4
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2

#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15

#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19

#define E_STEP_PIN 26
#define E_DIR_PIN 28
#define E_ENABLE_PIN 24

#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13

#define FAN_PIN 9

#define PS_ON_PIN 12
#define KILL_PIN -1

#define HEATER_0_PIN 10
#define HEATER_1_PIN 8
#define TEMP_0_PIN 13 // 模拟编号
#define TEMP_1_PIN 14 // 模拟编号

这是维基上的内容。
wiki 上的一个小注释说“RAMPS 1.4 使用与 RAMPS 1.3 相同的引脚定义”所以也许这些设置也适用于 RAMPS 1.3。

TIA 和关注

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

是的,这是我用 awk 提取的。“//”之后是“NA”的行是错误的,因为它是 -1
只是获取文件的一个技巧。例如#define SDPOWER A,7,0 // NA – 就是这样一个。
SDPOWER 的功能是什么以及为什么它是-1。? TEMP_0/1 是什么模拟通道
你把探针放在哪里?

// 对于 ,,0 // RAMPS —
#define X_STEP_PIN F,0,0 // 54 —
#define X_DIR_PIN F,1,0 // 55 —
#define X_ENABLE_PIN D,7,0 // 38 —
#define X_MIN_PIN D,3,0 // 3 —
#define X_MAX_PIN D,2,0 // 2 —

#define Y_STEP_PIN F,6,0 // 60 —
#define Y_DIR_PIN F,7,0 // 61 —
#define Y_ENABLE_PIN F,2,0 // 56 —
#define Y_MIN_PIN C,0,0 // 14 —
#define Y_MAX_PIN C,1,0 // 15 —

#define Z_STEP_PIN L,3,0 // 46 —
#define Z_DIR_PIN L,1,0 // 48 —
#define Z_ENABLE_PIN K,0,0 // 62 —
#define Z_MIN_PIN C,4,0 // 18 —
#define Z_MAX_PIN C,5,0 // 19 —

#define E_STEP_PIN A,5,0 // 26 —
#define E_DIR_PIN A,3,0 // 28 —
#define E_ENABLE_PIN A,7,0 // 24 —

#define SDPOWER A,7,0 // NA —
#define SDSS B,0,0 // 53 —
#define LED_PIN B,5,0 // 13 —

#define FAN_PIN B,1,0 // 9 —

#define PS_ON_PIN B,4,0 // 12 —
#define KILL_PIN B,4,0 // 不适用 —

#define HEATER_0_PIN B,2,0 // 10 —
#define HEATER_1_PIN B,0,0 // 8 —
#define TEMP_0_PIN D,5,0 // 13 — 模拟编号
#define TEMP_1_PIN D,6,0 / / 14 — 模拟编号

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 27 日

cri-s 请这些设置是为 cpu_map.h 中的 PU_MAP_ATMEGA260_RAMPS_1_4 奠定基础的基础?

我已经查看了 hte 源代码,但没有看到其中的格式有任何相似之处,例如我有 #ifdef CPU_MAP_ATMEGA2560 // (Arduino Mega 2560) 工作@EliteEng

// 串口引脚
#define SERIAL_RX USART0_RX_vect
#define SERIAL_UDRE USART0_UDRE_vect

// 增加缓冲区以使用额外的 SRAM
//#define RX_BUFFER_SIZE 256
//#define TX_BUFFER_SIZE 128
//#define BLOCK_BUFFER_SIZE 36
//#define LINE_BUFFER_SIZE 100

//定义步进脉冲输出引脚。注意:所有步进位引脚必须在同一个端口上。
#define STEP_DDR DDRA
#define STEP_PORT PORTA
#define STEP_PIN PINA
#define X_STEP_BIT 2 // MEGA2560 数字引脚 24
#define Y_STEP_BIT 3 // MEGA2560 数字引脚 25
#define Z_STEP_BIT 4 // MEGA2560 数字引脚 26
#define STEP_MASK ((1<< X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // 所有步骤位

等等。
我在 C 编程方面不太熟练,(我的技能有点 pyhton,我可以从源代码编译并为我喜欢的发行版 Void-Linux 编写模板),但我可以在 cpu_map.h 中添加这样的描述映射 RAMPS 上的引脚)

非常感谢你的好意

问候

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 27 日

快速查看代码上的注释,在 RAMPS 的引脚上,我注意到“注意:所有步进位引脚必须在同一个端口上。”,也许我可以使用 RAMPS 屏蔽(有 5 个驱动程序来驱动步进器)并根据 ATMEGA 2560 引脚排列,使用扁平电缆和两个连接器手动连接它们@EliteEng在代码中(如果它是功能性的)。
目前,这似乎是可行的解决方案,而不会过多干扰 GRBL 的代码库(假设 EliteEng 的 ATMEGA 2560 正在工作)
并且副作用是我也许可以驱动双 Y 轴电机,将两个步进驱动器连接到 Y 引脚(步骤 dir 和 en)端口和接线步进器反转线圈。

问候

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

如果输入/输出引脚的操作是#defines,则应该很容易更改不同平台的底层代码,并且不会更改主 grbl 的任何内容

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

Langwalt,您的陈述似乎与此对话中的某些帖子所述不正确:

GRBL 写入到步进和方向端口非常高效,并使其非常高效,所有步进引脚都在一个端口上,所有方向引脚都在一个端口上。

RAMPS 板的兼容性问题是所有步进和方向引脚几乎都位于随机端口上,以最适合 PCB 的布线。

我看到的唯一解决方案是接受此声明并使用扁平电缆和一些连接器手动接线,将信号连接到步进电机以及从 Mega 到 RAMPS 的限位开关,保持连接短或使用一些屏蔽电缆,也许每个 dir 和 step 信号都有一些音频屏蔽电缆,但我对其他替代方案持开放态度,Mega 2560 有一些实现,但代码被修改为在主要代码更改困难时维护它。

谢谢卡罗
D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

嗨,伙计们,

与其费心创建一些奇怪的电线解决方案来将 Arduino
Mega2560 板连接到 RAMPS1.4 步进板,不如看看
我目前使用的解决方案:
https ://github.com/maaadbob/ Arduino_Mega2560-RAMPS1.4

该板夹在 Arduino 和 RAMPS 之间。
信号路由信息可以在项目的文件夹中找到。
设计可以使用 Eagle 的免费版本进行编辑,因此您可以根据
需要对其进行修改。
然后只需将 .brd 文件发送给您首选的 PCB 制造商,并
从 AdaFruit 采购 Arduino 接头/插座。

我这里也有 4 轴 GRBL 代码:(针对我的设置进行了修改)
https://github.com/maaadbob/openpnp-grbl

再次; 采取和修改您的要求。

我没有时间支持任何技术查询。

最好的问候,
鲍勃 B。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

嗨,鲍勃,您的解决方案非常好,将是满足我需要的一个非常快速的解决方案,pcb 制造商的解决方案似乎是一个可行的解决方案,但不适用于单板,如果它仅来自 pcb 或可能在套件中,这是一个很好的解决方案,也许我以外的其他人对此感兴趣,您是否为它做过一些营销。

非常感谢和最好的问候,
Carlo D.

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

有没有人可以把 arduino uno shield 放在 arduino mega 上,如果可以的话,可以把它拿出来。
没有归位。
否则我只需要更改斜坡的定义。我刚刚从那个位
定义开始,只是因为在另一个问题线程上有一个非常好的表。
如何发送十六进制文件而不是在文件共享网站上发布?

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

对于 uno 盾牌:
http ://www.datafilehost.com/d/508e96ad

对于坡道:
http ://www.datafilehost.com/d/40a2811b

uno 版本修改较少。
如果可能的话,先托盘这个。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

嗨 cri-s,我已经注意到链接,但现在我还没有板子,你能给我发个源链接吗,你可能在 github 上修改过,所以我可以看到它们,等待真正的板子到达?

TIA 和问候。

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

实际上我只做了一步,目录和启用引脚。
还有进一步的工作需要做,但首先要修改移动。
它使用预处理,因此如果所有引脚都在同一个端口上,则处理性能更高。
实际上 step 和 dir 引脚是耦合的。
如果您想查看源代码,这是差异。

189a190,216

静态无效启用(字符 c){
#ifdef STEPPER_DISABLE_PORT
STEPPERS_DISABLE_DDR |= 1<<STEPPERS_DISABLE_BIT;
if(c)
//if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE))
bit_true(STEPPERS_DISABLE_PORT,STEPPERS_DISABLE_BIT);
否则
bit_false(STEPPERS_DISABLE_PORT,STEPPERS_DISABLE_BIT);
#else
#ifdef X_ENABLE_PIN
pin_out(X_ENABLE_PIN);
if(c) pin_hi(X_ENABLE_PIN); 否则 pin_lo(X_ENABLE_PIN);
#endif
#ifdef Y_ENABLE_PIN
pin_out(Y_ENABLE_PIN);
if(c) pin_hi(Y_ENABLE_PIN); 否则 pin_lo(Y_ENABLE_PIN);
#endif
#ifdef Z_ENABLE_PIN
pin_out(Z_ENABLE_PIN);
如果(c)pin_hi(Z_ENABLE_PIN);否则 pin_lo(Z_ENABLE_PIN);
#endif
#ifdef A_ENABLE_PIN
pin_out(A_ENABLE_PIN);
如果(c)pin_hi(A_ENABLE_PIN);否则 pin_lo(A_ENABLE_PIN);
#endif
#endif
}
196,197c223
< if (bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE)) { STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT); }

< else { STEPPERS_DISABLE_PORT &= ~(1<<STEPPERS_DISABLE_BIT); }

启用(bit_istrue(settings.flags,BITFLAG_INVERT_ST_ENABLE));
238,239c264
< if (pin_state) { STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT); }

< else { STEPPERS_DISABLE_PORT &= ~(1<<STEPPERS_DISABLE_BIT); }

启用(pin_state);
296a322
#ifdef STEP_PORT
297a324,331
#else
if(st.dir_outbits&bit(X_AXIS)) pin_hi(X_DIR_PIN); 否则 pin_lo(X_DIR_PIN);
if(st.dir_outbits&bit(Y_AXIS)) pin_hi(Y_DIR_PIN); 否则 pin_lo(Y_DIR_PIN);
if(st.dir_outbits&bit(Z_AXIS)) pin_hi(Z_DIR_PIN); 否则 pin_lo(Z_DIR_PIN);
#ifdef A_STEP_PIN
if(st.dir_outbits&bit(A_AXIS)) pin_hi(A_DIR_PIN); 否则 pin_lo(A_DIR_PIN);
#endif
#endif
301c335

< st.step_bits = (STEP_PORT & ~STEP_MASK) | st.step_outbits; // 存储 out_bits 以防止覆盖。

// 移动
302a337
#ifdef STEP_PORT
303a339,346
#else
if(st.step_outbits&bit(X_AXIS)) pin_hi(X_STEP_PIN);
if(st.step_outbits&bit(Y_AXIS)) pin_hi(Y_STEP_PIN);
if(st.step_outbits&bit(Z_AXIS)) pin_hi(Z_STEP_PIN);
#ifdef A_STEP_PIN
if(st.step_outbits&bit(A_AXIS)) pin_hi(A_STEP_PIN);
#endif
#endif
430a474
#ifdef STEP_PORT
431a476,483
#else
pin_lo(X_STEP_PIN);
pin_lo(Y_STEP_PIN);
pin_lo(Z_STEP_PIN);
#ifdef A_STEP_PIN
pin_lo(A_STEP_PIN);
#endif
#endif
442c494,503

< STEP_PORT = st.step_bits; //开始步进脉冲。

#ifdef STEP_PORT
STEP_PORT = (STEP_PORT & ~STEP_MASK) | st.step_outbits; // 存储 out_bits 以防止覆盖。
#else
if(st.step_outbits&bit(X_AXIS)) pin_hi(X_STEP_PIN);
if(st.step_outbits&bit(Y_AXIS)) pin_hi(Y_STEP_PIN);
if(st.step_outbits&bit(Z_AXIS)) pin_hi(Z_STEP_PIN);
#ifdef A_STEP_PIN
if(st.step_outbits&bit(A_AXIS)) pin_hi(A_STEP_PIN);
#endif
#endif
478a540
#ifdef STEP_PORT
480a543,562
#else
pin_lo(X_STEP_PIN);
pin_lo(Y_STEP_PIN);
pin_lo(Z_STEP_PIN);
pin_out(X_STEP_PIN);
pin_out(Y_STEP_PIN);
pin_out(Z_STEP_PIN);
#ifdef A_STEP_PIN
pin_lo(A_STEP_PIN);
pin_lo(A_DIR_PIN);
pin_out(A_STEP_PIN);
pin_out(A_DIR_PIN);
#endif
pin_lo(X_DIR_PIN);
pin_lo(Y_DIR_PIN);
pin_lo(Z_DIR_PIN);
pin_out(X_DIR_PIN);
pin_out(Y_DIR_PIN);
pin_out(Z_DIR_PIN);
#endif
487a570
#ifdef STEP_PORT
489d571
< STEPPERS_DISABLE_DDR |= 1<<STEPPERS_DISABLE_BIT;
490a573,574
#endif
启用(0);
861a946

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

谢谢,我明天去看看

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

cri-s 你在修改什么文件,在 Markdown 中粘贴代码太糟糕了,你能给我一个文件的要点吗?

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 28 日

cri-s 我在 github 上找到了这个版本,也许它会成为未来开发的基础?

https://github.com/LETARTARE/Grbl-xx_with_Arduino/tree/master/Grbl9fMega2560

问候

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 29 日

cri-s
我看过你的代码,但我无法弄清楚很多事情,因为它与主要代码是隔离的(你在修补什么版本?)我非常喜欢它。

此致

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

@cri-s@onekk: 虽然很有趣,但这个线程已经有点失控了。能否请您直接就细节相互沟通并简单更新进度?谢谢你。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 29 日

chamnit 这对我来说没问题。

问候
卡洛 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2014 年 12 月 29 日

我刚刚购买了 Arduino Uno 解决方案,目前 Mega2560 是一个停滞不前的项目,也许我会在上面用 marlin 建立一个 reprap。

非常感谢所有人,但 Mega 和坡道似乎是个好主意,但从现在开始我想要一个现成的解决方案,这台机器旨在成为一匹工作马,所以不费吹灰之力做好准备是最可行的解决方案。

问候
卡洛 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL

请查看我的仓库https://github.com/EliteEng/grbl master 分支。

我增加了在不同端口上设置步进和方向引脚的功能,这将允许使用 RAMPS 板。

我已经开始将 RAMPS 板添加到 cpu_map.h,但仍然需要一些工作才能将所有引脚放在正确的位置。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
作者

onekk 评论 2015 年 1 月 2 日

非常感谢您的回复,当我收到板子和机器时(eShapeoko 还没有回答我,也不知道什么时候),我会尝试您的解决方案。正如主持人告诉我的那样,这个步骤变得太长并且往往是题外话,还有另一种交流方式吗?

问候

卡罗 D。

有一些官方项目可以使用 RAMPS #561在 Arduino Mega 上移植 GRBL
喜欢 (0)

您必须 登录 才能发表评论!