Contact me: hankecnc@gmail.com

支持分立步进驱动器和 H 桥 #56

推推 grbl 3年前 (2022-10-31) 300次浏览 0个评论
关闭
nullsub 打开了这个问题 on 4 Feb 2012 · 18 条评论
关闭

支持分立式步进驱动器和 H 桥#56

nullsub 打开了这个问题 on 4 Feb 2012 · 18 条评论

注释

@nullsub

嗨,
我目前正在使用带有 2 个 ULN2003 晶体管阵列(每个步进器)的 grbl。
步进器的连接方式如下http://ssecganesh.blogspot.com/2008/05/driving-stepper-motor-using-uln2003.html
我还使用 L293D H 桥接器测试了我的代码,它运行良好。这可以降低 grbl 步进驱动板的价格。

这个功能在 grbl 中受欢迎吗?它需要一个配置选项来决定是编译步进驱动程序还是 H 桥代码。
谢谢

@chamnit
成员

尚尼特 评论 on 4 Feb 2012

有趣的!看到 grbl 被破解以支持和做不同的事情真是太棒了。但是,目前,在所有开发正在进行的情况下,很难支持一切。当代码库稳定在 v1.0 时(希望到夏天),事情可以开始向前推进,支持不同的事情。

主要是确保它适用于特定架构,我们或某人必须拥有硬件并测试和支持它。我不知道使用 Github 的分叉是否是一个好方法。我认为开始讨论我们或其他人如何管理使用 grbl 与其他硬件并仍然保持连贯性是一个好主意。也许按照社区支持的网站/wiki 的方式设置一些东西,人们可以在其中发布他们的黑客和流程。

@chamnit
成员

尚尼特 评论 on 4 Feb 2012

另外,当您说价格较低的 grbl 板时。Pololu 和 easydriver 步进电机驱动器每个大约 12-15 美元。这会更便宜和/或更强大吗?

@nullsub
作者

空子 评论 on 4 Feb 2012

我知道目前将太多(未使用)的东西放入 grbl 并不是一个好主意。我想我会在 wiki 上添加一个注释。
uln2003 晶体管阵列(如果像我一样使用背负式)可以在高达 36V 的电压下驱动 1.2 安培,但它没有电流限制(这通常是一个问题)。它肯定更便宜,因为一个 uln2003 的价格约为 0.5 美元。
我估计 3 轴驱动板的价格为 5 美元

@simen
成员

四门 评论 on 7 Feb 2012

我还使用 grbl 来对 H 桥进行 bit-bang H 桥以低速运行步进器。我的经验是它工作得很好,并且比简单的驱动程序更可靠(至少我的,我对它们有一些噪音问题)。我同意这对于维基来说是一个不错的小东西,也许粘贴了修改后的代码?

@jgeisler0303
贡献者

jgeisler0303 评论 on 16 May 2012

我们应该把它移到维基上吗?

@buddhikgayan

如何将 grbl 与 arduino mega 2560 和 uln2003 步进驱动器一起使用?

@jongscx

这个想法被放弃了吗?我在 Wiki 上发现没有提到这一点。

@hipatetik

我也有兴趣修改代码以将 ULN2003 与 Mega2560 一起使用……有人这样做了吗?

@whitetd

个人使用步进驱动器的优势远远超过
使用分立元件的优势,成本差异与
代码更改的复杂性,一个是巨型必须管理微步进
控制并为每个步进使用 4 个引脚。
特里怀特

2014 年 8 月 23 日星期六下午 5:20,hipatetik notifications@github.com写道:

我也有兴趣修改代码以将 ULN2003 与 Mega2560 一起使用……
有人这样做了吗?


直接回复此邮件或在 GitHub
#56 上查看(评论)

@ygornac

大家好。

我真的很感激在任何地方有任何代码,所以我可以让我的机器运行。我直观地“设计”了它,最终在类似的问题上苦苦挣扎。后来我发现 grbl 旨在以步进/方向而不是时钟相位方式驱动步进器。

我想将其构建为概念验证,这样我就可以学习和练习足够的知识来构建更好更大的模型。

支持分立步进驱动器和 H 桥 #56
支持分立步进驱动器和 H 桥 #56
支持分立步进驱动器和 H 桥 #56

就个人而言,我不知道确切的原因,但我听说了一些关于 L298N 缺乏电流感应的问题,显然是通过更换 easydriver(或类似的东西)解决了,添加 L297 IC 进行编码/解码(不确定正确这里的词)从 4 针相位时钟到步进/方向的信号。我也听说过并阅读过早期版本的 grbl 以这种方式工作,但我在 GitHub、Google 搜索和 IRC 上尽可能多地挖掘了该代码,但找不到任何线索。

有一段机器运行硬编码的视频。:(
http://youtu.be/r4sJaOgYkec

如果可能,请提供给我们。

谢谢,

@hipatetik

有一个使用 Arduino UNO 使用 ULN2003 或任何其他晶体管阵列的 grbl 0.7 版本,但没有限制开关或电流限制。但是,我认为这可以使用具有更多引脚的 Mega2560 来解决,但我刚刚找到了一个用于 Mega2560 的 GRBL 0.8 版本,仅带有 STEP/DIR……也许是带有 GRBL 0.8 的 Mega2560,带有晶体管阵列和限制引脚。 ..有趣,至少对我来说!我正在尝试“合并”这些东西……

@DanielePas

有谁知道这个故事是如何结束的(如果它结束了)?我正在尝试查找有关如何将 grbl 与 ULN 一起使用的一些信息,但最近似乎没有人在这方面工作……但我也找不到有关有人谈论的能够做某事的先前版本的信息。
谢谢。

@cri-s

这很容易,但是需要 4 个引脚而不是 2 个引脚,并且可能启用
也需要是 pwm
引脚,以便在 pwm 中使用更高的电压。

格林威治标准时间 2015 年 2 月 27 日 20: 25,Daniele Pasciuto通知@github.com :

有谁知道这个故事是如何结束的(如果它结束了)?我正在尝试查找
有关如何将 grbl 与 ULN 一起使用的一些信息,但最近似乎没有人
在这方面工作……但我也没有找到有关有人
谈论能够做某事的先前版本的信息。
谢谢。


直接回复此邮件或在 GitHub 上查看:
#56(评论)

@cri-s

http://arduino.cc/en/Reference/StepperUnipolarCircuit
用于 3 轴步进器,您可以在六角逆变器 ic 上使用,然后
您只需要
两个 uln 而不是 3 个,并且没有电阻。另外 4 uln 是免费的,或者如果
使用 uln2003 2 uln 是
免费的,您可以将其用于继电器。
顺序为:
Step C0 C1
1 0 0
2 0 1
3 1 1
4 1 0
其中C0是dir,C1是step pin
STEP_PULSE_DELAY必须注释掉

您必须更改此代码:
if (st.counter_x > st.exec_block->step_event_count) {
st.step_outbits |= (1<<X_STEP_BIT);
st.counter_x -= st.exec_block->step_event_count;
if (st.exec_block->direction_bits & (1<<X_DIRECTION_BIT)) {
sys.position[X_AXIS]–; }
其他 { sys.position[X_AXIS]++; }
}
对此,另外两个轴也用 Y 和 Z 代替 X:
if (st.counter_x > st.exec_block->step_event_count) {
st.step_outbits |= (1<<X_STEP_BIT);
st.counter_x -= st.exec_block->step_event_count;
if (st.exec_block->direction_bits & (1<<X_DIRECTION_BIT)) {
#ifdef UNIPOLAR
uint8_t t; t=STEP_PORT;// 假设 STEP==DIRECTION PORT
bit_false(st.dir_outbits,bit(X_DIRECTION_BIT));
bit_false(st.step_outbits,bit(X_STEP_BIT));
if(bit_false(t,bit(X_DIRECTION_BIT)))
bit_true(st.dir_outbits,bit(X_STEP_BIT));
if(bit_true(t,bit(X_STEP_BIT)))
bit_true(st.dir_outbits,bit(X_DIRECTION_BIT));
#endif
sys.position[X_AXIS]–;
}
else {
#ifdef UNIPOLAR
uint8_t t; t=STEP_PORT;// 假设 STEP==DIRECTION PORT
bit_false(st.dir_outbits,bit(X_DIRECTION_BIT));
bit_false(st.step_outbits,bit(X_STEP_BIT));
if(bit_false(t,bit(X_STEP_BIT)))
bit_true(st.dir_outbits,bit(X_DIRECTION_BIT));
if(bit_true(t,bit(X_DIRECTION_BIT)))
bit_true(st.dir_outbits,bit(X_STEP_BIT));
#endif
sys.position[X_AXIS]++;
}
}

并且在DIRECTION_PORT =的每一行上,
您都应该将其附在
#ifndef UNIPOLAR
DIRECTION_PORT =
#endif
中,st_reset() 内的代码除外
,当然不要反转 step 和 dir 引脚。

这应该足够了。

2015-02-27 20:39 GMT,Cri S phone.cri@gmail.com

这很容易,但是需要 4 个引脚而不是 2 个引脚,并且可能启用
也需要是 pwm
引脚,以便在 pwm 中使用更高的电压。

格林威治标准时间 2015 年 2 月 27 日 20: 25,Daniele Pasciuto通知@github.com :

有谁知道这个故事是如何结束的(如果它结束了)?我正在尝试
查找
有关如何将 grbl 与 ULN 一起使用的一些信息,但最近似乎没有人

这方面工作……但我也没有找到有关有人
谈论能够做某事的先前版本的信息。
谢谢。


直接回复此邮件或在 GitHub 上查看:
#56(评论)

@AutomatedPumpkin

ygornac,你有没有让它工作?您的设置看起来与我的相同,我想知道您是否设法使用 GRBL 获得它。如果它工作会非常酷。

@langwadt

@cri-s那个电路太可怕了,你必须在非常低的电压下运行它并且变得无用地慢,或者调高电压并让晶体管在几秒钟内自毁

大多数步进器都是几欧姆的,需要在超过几伏的电源电压下进行恒流驱动,并且需要高压恒流驱动,否则它们会非常缓慢。

@dpw19

嗨,有些人使用其他 arduino 制作 uln2003 驱动程序以具有 STEP、DIR、行为。
这是一个很好的解决方案。
对于两个轴:
https
://github.com/latonita/SoftwareStepDirUnipolarDriver/blob/master/SoftwareStepDirUnipolarDriver.ino#L46 对于树轴:
latonita/SoftwareStepDirUnipolarDriver@ 3b91208

@whitetd

@hanke-cnc
喜欢 (0)

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