注释
你好, 您可以尝试使用名为 grbl-servo 的 grbl:https 垫 |
非常感谢你垫。 |
尝试对其进行测试,因为它似乎不起作用(伺服移动但不总是使用相同的 gcode 进行相同的运动)。对我来说,预分频器为 1024 的 pwm 频率太高了。最终频率为16Mhz/1024=15khz。要控制伺服系统,我们需要 1/20ms=50Hz。 |
@mat60PWM 的公式是 我不确定你需要什么来驱动伺服,如果你能告诉我你到底是什么,我可以让你知道如何配置定时器。 |
我想用伺服驱动打印机的 DLP 投影仪的快门。 由于我的设置的限制,它应该转动 120 度左右。 当然,每次快门都在同一个位置上是个好主意,而不是随机的。 感谢所有的想法。我会等待更多的意见/修改。 意思是当我测试它时……伺服只用第一个“M3 Sxx”命令移动。随着“S”值接近预览值,舵机处于嗡嗡声状态,什么都不做。退出此状态是使用“M3 Sxx”,但使用大/小“S”的 2-3 倍。 “M5”不起作用。(当然 M4 也是 ) 我不懂“C”语言,我很难找出预览描述的更改必须在“spindle_control.c”中的何处进行… |
感谢您的答复。所以PWM频率是好的。 我遇到的主要问题是解决了。 代码还是有问题。SXX 命令必须在 15(最小值)和 32(最大值)之间,如果您发送 80,它会起作用…… 注意:M5 适合我 |
@mat60留意 Arduino 上稳压器的温度。它是一个线性稳压器,因此在 12V 的 Vin 和 5V 的 Vout 下,它必须以热量的形式耗散 58% 的输入功率。如果您使用输出电压更接近 7-8V 的稳压电源,它的运行效率会更高。 |
好的。 一切都适用于 spindle_contol.c 文件。为我犯下的所有错误感到抱歉。 您必须输入您将在 gcode 中发送的最小和最大速度。这是在 config.h 文件中: #define SPINDLE_MAX_RPM 100.0 // 最大主轴转速。该值等于 PWM 上的 100% 占空比。 在我的例子中 M3SXX,XX 必须在 0 到 100 之间。你可以根据需要修改这个值(如果你想以度为单位工作,则为 0 到 180 …) 我希望这很清楚。 |
圣诞快乐的人们, 所以我做了很多测试,但实际上结果是一样的。 我变了:
#define RC_SERVO_SHORT 15 – 从 4 到 15
#define SPINDLE_MAX_RPM 100 – 从 100 到 256 初始状态在左下方。 M3 S50 和 M3 S1000 之间的值将伺服器移动到某个位置 – 可能与千值对应。 每个值 > M3 S1000 都不会移动伺服超过 M3 S1000。 更接近的 S 值什么都不做——例如,如果我已经将伺服移动到 M3 S30,发送 M3 S50 什么都不做! 可能我对此一无所知,但直到现在我对 Arduino(Uno、Mega、RAMPS 等)没有任何问题。 我会尝试使用所有结果,但我仍然对这个 PWM 感到困惑。 问候 |
你确定要编译好的文件吗?您是否在 arduino IDE 中使用 GRBL 作为示例? 告诉我怎么了… |
我有 2 个包含 GRBL 文件的文件夹:
我犯了你在第一个文件夹的 spindle_control 中向我展示的“错误”并尝试编译 – 没有错误。然后我在第二个文件夹中做了同样的事情 – 再次没有错误。 可能是我错过了什么 提前致谢 |
你有两个(或更多)GRBL 库,比如 GRBL(经典)和 GRBL Servo 吗? |
非常感谢你 !!! 我真的有 2 * GRBL 库的…我删除了不需要的,一切正常! 再次感谢!!! |
很高兴你让它工作了。但是我想指出,您的解决方案可能并非在所有情况下都有效。原因是因为 RC 伺服不使用与传统相同类型的 PWM。RC 伺服系统真正使用 PPM 或脉冲位置调制。正如您所发现的,许多 RC 伺服系统在标准 PWM 上工作得相当好,但有些则不能。原因是因为 RC PWM(真正的 PPM)应该具有相同的帧速率,只是高端脉冲宽度不同。例如,1.5 毫秒的“开”信号命令中性伺服位置,1 毫秒和 2 毫秒是伺服的极限位置。“关闭”时间会发生变化,以使总帧速率等于 50 Hz 或 20 毫秒。如前所述,许多伺服系统都可以接受标准 PWM,但有些伺服系统,尤其是较旧的伺服系统将无法正常工作。 |
好的,这对 Mega 很容易做到,但对 UNO 很难做到。 |
@chamnitgrbl 伺服支持的官方状态是什么?我正在使用 robotini 的 repo 中的 grbl-servo,但它基于 0.9i(我们已经在 0.9j 上)并且它似乎是对主轴代码的快速破解。我正在考虑将它移植到最新版本(可能移植到 trunk / master 分支),并通过官方配置和自己的代码(不触及主轴代码)使其得到适当的支持。但我首先要问的是现在是否已经完成了任何事情,以及您是否愿意接受代码以供审查(用于进入官方树)。 也许使用引脚 9 或 10(你可以通过加入一些端点来释放引脚),因此使用 timer1。你怎么认为?我仍在阅读代码以了解这是否会造成任何附带影响。由于驱动伺服的分辨率,Timer1 是可取的。 此外,由于伺服支持最终可以与所有其他功能并行工作,我认为这不是像 robotini 那样劫持主轴代码的最佳选择(因为 M03 和 M05 可能同时用于主轴本身时间)。伺服器可能有不同的 gcode。我知道在 3d 打印机世界中也有一些定义(它是用于设置角度的 M280 和用于设置微秒的 M340)。也许一些配置选项可以选择禁用主轴并将 M03 和 M05 操作映射到特定位置的伺服器,以供那些无法更改生成 gcode 的软件并希望通过主轴开/关动作控制伺服器的人使用。你怎么认为? |
@token47:不可否认,由于 328p Arduino 处理器的内存和闪存限制以及即将推出的 v1.0,我一直非常自私地囤积我可以获得的任何闪存和内存。当它完成时,我会更愿意接受拉取请求,尤其是在 Grbl-Mega 回购中,那里对 Mega2560 没有这样的限制。 Timer1 由 328p 上的步进算法使用。所以不要去那里。 |
亲爱的会员, 请帮我! 如何配置 spindle_control.c 文件以使其正常工作? 和伺服占空比? M03参数可以给什么值? 谢谢! |
@token47是的,请!为 grbl 1.1 添加伺服支持!我和这里的许多其他人在同一个地方:我可以让我的设置 (CoreXY Plotter) 与 robottini 0.9 版本一起工作,但我真的很想使用 1.1。 如果您或其他人可以将伺服控制添加到 GRBL 1.1,我将永远感激 |
嗨,我刚刚测试了 cprezzi 的 grbl-servo,它运行良好。它是 grbl 1.1f,现在我可以连接 laser web 4。这是下载链接https://github.com/cprezzi/grbl-servo。 |
cprezzi 的代码看起来很干净,带有 |
我只知道它如何与我的 cnc 和 servo 一起工作, |
@MinSoeVertex你能告诉我们你在 LaserWeb4 中使用什么设置来通过 Grbl-servo 控制伺服吗?如何为 Tool_on 和 Tool_off 位置设置所需的角度? |
我有伺服第一次工作会但现在不工作?你帮忙 |
我没有在使用 Arduino Mega2560 和 GRBL 固件的 Ramps 1.4 上获得任何 PWM 输出,我想知道你从哪个输出引脚获得 PWM 输出并且你是否更改了代码。等待您的回复。谢谢 |
请告诉你如何在 Ramps 1.4 Mega 上运行伺服?GRBL 运行的输出引脚和 G 代码是什么? |
你好,
是否可以在 Arduino Uno 上控制 X、Y 电机 + 伺服(用于投影仪的快门)?
M03 Sxx / M04 Sxx 做一些动作,但是可以正确使用它们吗?
提前致谢。