开源改变世界!!

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

推推 grbl 2年前 (2023-01-29) 117次浏览
打开
davehines91 打开了这个问题 2018 年 9 月 2 日 · 21条评论
打开

通过 RS485(即第二个串行端口)控制 VFD 主轴。#24

davehines91 打开了这个问题 2018 年 9 月 2 日 · 21条评论

注释

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
戴夫海因91 评论了 2018 年 9 月 2 日  

这是我使用 grbl-Mega 未发表但使用得很好的作品的一个端口

背景:
我目前使用 grbl-Mega 来控制工作区域约为 600mm x 900mm 的 DIY CNC 路由器。
我目前使用的主轴是1.5KW环洋变频驱动(HY01D523B)控制的800w主轴。我在寻找比 Mega 更方便的平台,偶然发现了 ESP32 端口。

测试:
到目前为止,我已经使用面包板中的 ESP32 开发模块对此进行了测试,控制单轴和RS485 模块,通过电平转换器分线板连接到ESP32。(注意,3.3v 版本对我来说效果不佳)。
此设置用于通过 RS485 接口连接到 VFD。

执行:

RS485 链路是两线差分半双工接口。控制器在传输时需要断言发送信号
,我用定时器中断控制了它(我使用了定时器 3)。定时器在传输每个字符时重新启动,因此在发送最后一个字符后传输保持高电平 4mS,然后任务等待响应,无耻地从主串行任务克隆。此任务检查来自 VFD 的正确响应,并且在速度请求的情况下,阻止任何进一步的命令处理,直到主轴达到所需速度。如果达不到要求的速度,电机将发出停止命令,并发出警报 ( 10 )。

grbl 的所有接口都已在 spindle_control.cpp 中实现,并通过当前在 config.h 中定义的宏 RS485_HUANYANG_MOTORCONTROL 启用或禁用。使用的引脚在 cpu_map.h 中定义,这些可能与 grbl 当前用于 pwm 控制的三个引脚相同,但我目前已将这段代码并行放置。

要运行电机,请使用 G 代码命令:
M3 S10000
要停止电机,请使用:
M5 S0
grbl 似乎不喜欢没有速度的 M5 或 M3 之类的命令。

可以通过在 VFD.h 中定义 DEBUGSERIAL 来启用写入 Serial1 的各种调试消息

我已经将波特率硬编码为 38400 二进制 8N1 ,PD164 需要为此
波特率设置为 3。类似地,对于二进制 8N1 通信,PD165 应设置为 3。

PD01 和 PD02 需要设置为 2 以响应
RS485 上的停止/启动和速度命令。

回购目前在https://github.com/davehines91/Grbl_Esp32

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
所有者

凉爽的。我想我有其中一台 VFD。我也许可以测试一下。你有整个设置的示意图吗?

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

我明天会尝试起草一份。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

ESP32-VFD.pdf

这是我的设置的大致示意图。我用过 adafruit 电平转换器,但找不到适用于它的 eagle 库,所以我用sparkfun绘制了它。引出线略有不同。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

我现在已经尝试使用与 sparkfun 等效的电平转换器(克隆

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
所有者

我喜欢你关于使用现有 PWM 引脚的选项的建议。

你用过自动方向控制的RS485收发器吗?

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

:)
在我第一次这样做时,我找不到任何具有自动方向控制的收发器。
对我来说,这也是一个中断 arduino 的练习。在 ESP32 上也是如此。
如果要使用不同的波特率,它也更可配置。
目前正在输入更多说明。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
作者
戴夫海因91 评论了 2018 年 9 月 2 日  

要运行电机,请使用 G 代码命令:
M3 S10000
要停止电机,请使用:
M5 S0
grbl 似乎不喜欢没有速度的 M5 或 M3 之类的命令。

可以通过在 VFD.h 中定义 DEBUGSERIAL 来启用写入 Serial1 的各种调试消息

我已经将波特率硬编码为 38400 二进制 8N1 ,PD164 需要为此
波特率设置为 3。类似地,对于二进制 8N1 通信,PD165 应设置为 3。

PD01 和 PD02 需要设置为 2 以响应
RS485 上的停止/启动和速度命令。

我认为这是我设置的最后一个东西,但大部分是很久以前完成的,虽然我的记忆力很好……
[编辑]
我也将此信息添加到初始的末尾邮政。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
所有者

我认为 RPM 是模态的,就像进给率一样。

S500 ;设置转速但不打开主轴
M3 ;打开 CW
S1000 ; 改变转速
M5 ; 关闭
M3;在 1000 打开

您可以随时通过发送 $G 查看所有模态值

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
所有者
培养 评论了 2018 年 9 月 2 日  

看看这个。

SMAKN® SCM TTL 转 RS485 适配器 485 转串口 UART 电平转换器模块 3.3V 5V https://www.amazon.com/dp/B010723BCE/ref=cm_sw_r_cp_apa_o4.IBbAXJ4E04

3.3v和方向控制

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

是的,我同意 re RPM ,但 grbl 对我来说似乎不太像。

我确信当我使用 grbl-Mega 执行此操作时,没有命令正确地传递到 spindle_control.c 中的任何函数,尽管我将进一步调查此设置。我刚刚将我的 g 代码生成器配置为使用上面列出的完整命令。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

我已经从中国的 ebay 上订购了一对你在上面列出的 485 转换器,每个大约 2 美元。
他们到货后我会试试看,ESP32 的可用引脚有点短,所以我们能节省的任何东西都将是一个奖励

关于节省引脚的问题,你知道是否可以将输入和输出分配给未暴露的 GPIO 引脚,( 20,24,28,29,30,31) (37,38 没有上拉电阻,所以我不会尝试这些)所以他们的别针可以用于其他目的,我想以第 4 轴为例。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
味三 评论了 2018 年 9 月 3 日 通过电子邮件
通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

当我第一次在 Mega 上实施电机控制时,我考虑过这一点,但我认为等到电机达到一定速度后再继续操作更安全。所以需要反馈恕我直言。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

@davehines91让我详细说明一下:对于启动/停止或设置 RPM,如果您同意放弃反馈,则只需要 TX。否则,您需要 3 个 I/O 引脚,并且可能会引发错误条件,例如,主轴未按要求启动,因此工具不会损坏。

我猜想上面的模块确实使用 TX 信号活动来触发定时器以启用驱动器输出,从而节省一个输出引脚。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

@misan我同意,
我正在描述我为 grbl-Mega 实施并成功使用了大约 18 个月,并且刚刚移植到 Grbl_Esp32。
Bart 让我分享我的工作,我非常乐意这样做。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
所有者

@davehines91 未暴露的 GPIO 引脚。

我不知道。#ifdef PROBE_PIN使用诸如释放一些引脚之类的东西可能更容易。

最终将支持低速 I/O 使用 I/O 扩展器,但最初的目标是让所有功能在单芯片 (ESP32) 解决方案中为基本机器工作。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

@bdring #ifdef,是的,我同意,我只是想做最小的改变。

我喜欢 IO 扩展器的想法,尽管到目前为止我对您的端口非常满意。
我期待着在您的电路板到达时实际用它切割一些塑料。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

@davehines91 我没有那么小心。我首先检查 VFD 响应http://fightpc.blogspot.com/2014/10/vfd-control-with-arduino-using-rs485.html但最终在我为 Marlin 固件制作的补丁中忽略了它。有人建议我转发 GRBL 的补丁,我照做了,但被认为是一个过于具体的功能。

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

@misan,是的,我也得到了太具体的功能响应,这就是为什么我只在 spindle_control.cpp 文件中实现了 grbl 的接口,因此任何人都可以轻松放入或取出。
如果你想使用标准 grbl 来运行 vfd,我相信你可以使用模拟输入速度控制,但这对我来说似乎是一种浪费,我想玩 :)

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24
作者
戴夫海因91 评论了 2018 年 9 月 3 日  

@bdring

我认为 RPM 是模态的,就像进给率一样。

我刚刚对我的回购进行了更改,修复了此行为
感谢您推动我 :)

通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24 bdring 添加了 增强 新功能或要求标签 2018 年 9 月 5 日
通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

能否请您将您的huanyang VFD RS485代码发送到本期?terjeio/grblHAL#68

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
增强新功能或要求
项目

还没有

发展

没有分支机构或拉取请求

4人参加
通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24通过 RS485(即第二个串行端口)控制 VFD 主轴。 #24

喜欢 (0)